Subjektorientierte Programmierung

Das Konzept der subjektorientierten Programmierung (SOP) wurde durch Arbeiten am Watson Research Center der Firma IBM begründet. Die subjektorientierte Programmierung kann als Ergänzung des objektorientierten Paradigmas um Subjekte verstanden werden. Der Ansatz impliziert, dass die Bedeutung eines Objekts auch von der Sichtweise seines Betrachters und dessen Kontext abhängt. Ein Beispiel ist ein spezielles Objekt Mitarbeiter, das aus einer Perspektive Produktionsplanung eine ganz andere Stellung einnimmt als aus der Sicht Personalwesen. Die SOP formuliert somit zu jedem Objekt zusätzlich eine vom Betrachter abhängige subjektive Sicht.


In Folge früherer Ansätze u.a. der objektorientierten Programmierung sind Software-Anwendungen heute problembehaftet durch Mechanismen der Datenkapselung, häufiger Vererbung oder ungenügender Modularisierung. Dies führt auch zu Einschränkungen bei der Entwicklung von größeren Anwendungen vor allem dann, wenn unabhängige und bereits bestehende Anwendungen integriert werden sollen. Diesem Zustand kann zum Teil beispielsweise durch Refactoring auf konventionelle Weise begegnet werden, oder durch neue Ansätze, wie der der aspektorientierten Programmierung oder der subjektorientierten Programmierung.

Die subjektorientierte Programmierung (SOP) stellt hierzu folgende Lösungsansätze zur Verfügung:

  • Anwendungen sollen getrennt entwickelt und ggf. kombiniert werden können.
  • Es sollen keine festen Abhängigkeiten zwischen Anwendungen existieren.
  • In jedem Fall ist eine sogenannte Kooperation zwischen Anwendungen möglich.
Diesen Prinzipien folgend werden durch die SOP-Programmierung grundsätzlich objektorientierte Programme hinsichtlich sogenannter Subjekte differenziert. Dabei kann ein Subjekt möglicherweise ein unvollständiges Programm sein, jedoch ist durch das Subjekt selbst eine subjektive Sicht auf die zu modellierenden Sachverhalte möglich. Dabei integriert sich ein Subjekt u.U. auch konkret in die Kapselung eines Objektes, so dass dadurch eine Sicht im Detail realisiert wird.

Objekte und Subjekte

Objekte und Subjekte

Die Abbildung verdeutlicht einen solchen Fall, indem durch Dekomposition eines Programms sowohl unter dem Gesichtspunkt der Funktionalität als auch dem der Subjektivierung. Das Objekt wird dann durch die Komposition der Subjekte 1.1, 1.2, und 1.3 realisiert.

Das Verhalten von Objekten

Ein Subjekt definiert neben dem Status auch das Verhalten eines Objektes aus einer speziellen Sicht der Anwendung. Ein Subjekt hat keine inneren Eigenschaften, diese müssen in einem getrennten Subjekt modelliert werden. Die Subjekte identifizieren sich untereinander über eine Objekt-Identifikation (OID). Die Aktivierung der Subjekte erfolgt bei Aufruf der Anwendung in einer vorgegebenen Reihenfolge. Ein wesentlicher Unterschied zur objektorientierten Sichtweise (OOP) ist, dass das Verhalten eines Subjekts sich zwischen den einzelnen Aktivierungen ändern kann. Bei der objektorientierten Programmierung (OOP) ist das Verhalten durch die jeweilige Struktur der Klasse festgelegt.

Sofern die Subjekte isoliert sind - d.h. nicht Teil eines Objektes sind - gibt es keinerlei Unterschied zur OOP. Die Interaktion zwischen Subjekten erfolgt mittels festgelegter Kompositionsregeln, die auch die Reihenfolge der zu aktivierenden Subjekte definieren. Die Interaktion setzt entsprechend gestaltete Interfaces zwischen den Subjekten voraus. Subjekte selbst sind als Container für Klassen und Subjekte zu verstehen, die mittels ihrer Schnittstellen nach außen interagieren. Ein wesentlicher Aspekt ist es, das mehrere Subjekte auch parallel agieren können und sich dabei über Nachrichten synchronisieren.

Informationen zum Artikel
Deutsch: Subjektorientierte Programmierung
Englisch: subject oriented programming - SOP
Veröffentlicht: 01.11.2013
Wörter: 495
Tags: #Programmiersprachen
Links: Aspekt, Aspektorientierte Programmierung, Container, Datenkapselung, Interaktion