Fachorientierte Programmierung - Subject-oriented programming

In der Informatik ist subjektorientierte Programmierung ein objektorientiertes Softwareparadigma, bei dem der Zustand (Felder) und das Verhalten (Methoden) von Objekten nicht als den Objekten selbst intrinsisch angesehen werden, sondern durch verschiedene subjektive Wahrnehmungen ("Subjekte") bereitgestellt werden. der Objekte. Der Begriff und die Konzepte wurden erstmals im September 1993 in einem Konferenzpapier veröffentlicht, das später als eines der drei einflussreichsten Papiere anerkannt wurde, die auf der Konferenz zwischen 1986 und 1996 präsentiert wurden Kontrast zwischen den philosophischen Ansichten von Platon und Kant in Bezug auf die Eigenschaften von "realen" Objekten, die jedoch auf Software-Objekte angewendet werden. Während wir zum Beispiel alle einen Baum mit einer messbaren Höhe, Gewicht, Blattmasse usw aus Sicht eines Steuerprüfers kann es in einem bestimmten Jahr einen bestimmten steuerpflichtigen Wert haben. Weder die zusätzlichen Zustandsinformationen des Vogels noch des Steuerprüfers müssen als baumimmanent betrachtet werden, sondern werden durch die Wahrnehmungen des Vogels und des Steuerprüfers hinzugefügt, und nach Kants Analyse kann das gleiche auch für Eigenschaften gelten, an die wir denken als intrinsisch.

Subjektorientierte Programmierung befürwortet die Organisation der Klassen , die Objekte beschreiben , in "Subjekte", die zu größeren Subjekten zusammengesetzt werden können. An Zugängen zu Feldern oder Methoden können Beiträge mehrerer Fächer zusammengestellt werden. Diese Punkte wurden als die gekennzeichnet verbinden Punkte der Probanden. Wenn beispielsweise ein Baum gefällt wird, müssen die beteiligten Methoden möglicherweise das Verhalten der Versuchspersonen des Vogels und des Steuerprüfers mit dem des eigenen Baumes verbinden. Es ist daher im Grunde eine Ansicht der kompositorischen Natur der Softwareentwicklung im Gegensatz zur algorithmischen (prozeduralen) oder darstellungsverbergenden (Objekt-) Natur.

Beziehungen

Bezug zur aspektorientierten Programmierung

Die Einführung der aspektorientierten Programmierung im Jahr 1997 wirft Fragen nach ihrem Verhältnis zur subjektorientierten Programmierung und nach dem Unterschied zwischen Fächern und Aspekten auf. Diese Fragen blieben lange Zeit unbeantwortet, wurden aber im 1999 eingereichten Patent zur Aspektorientierten Programmierung angesprochen, in dem zwei Punkte als charakteristische Unterschiede zum Stand der Technik hervortreten:

  • das Aspektprogramm umfasst sowohl a) einen Querschnitt, der einen Punkt in der Ausführung umfasst, an dem ein Querschnittsverhalten enthalten sein soll; und b) eine Cross-Cut-Aktion, die einen dem Cross-Cut zugeordneten Implementierungsteil umfasst, wobei der Implementierungsteil computerlesbaren Programmcode umfasst, der das Cross-Cutting-Verhalten implementiert.
  • der Aspekt erzwingt transparent das Querschnittsverhalten auf Objektklassen und andere Softwareentitäten

In der subjektorientierten Sicht kann der Querschnitt getrennt vom Aspekt (Subjekt) platziert werden und das Verhalten wird nicht durch den Aspekt erzwungen, sondern durch Kompositionsregeln bestimmt. Hindsight macht es auch möglich, aspektorientierte Programmierung zu unterscheiden, indem es das Konzept eines abfrageähnlichen Pointcuts einführt und ausnutzt , um die Join-Points, die von Aspekten auf allgemeine Weise verwendet werden, extern aufzuerlegen.

Bei der Darstellung subjektorientierter Programmierung wurden die Join-Points bewusst auf den Feldzugriff und den Methodenaufruf beschränkt, da an diesen Stellen gut gestaltete Frameworks für eine funktionale Erweiterung konzipiert wurden. Die Verwendung von extern auferlegten Pointcuts ist eine wichtige sprachliche Fähigkeit, bleibt jedoch eines der umstrittensten Merkmale der aspektorientierten Programmierung.

Bezug zur aspektorientierten Softwareentwicklung

Um die Jahrtausendwende war klar, dass eine Reihe von Forschungsgruppen unterschiedliche Technologien verfolgten, die die Zusammensetzung oder Anbringung von getrennt verpackten Zuständen und Funktionen nutzten, um Objekte zu bilden. Um das gemeinsame Interessengebiet von der Aspect-Oriented Programming mit seinen besonderen Patentdefinitionen abzugrenzen und zu betonen, dass die Compositional Technology mehr als nur die Codierungsphase der Softwareentwicklung behandelt, wurden diese Technologien unter dem Begriff Aspect-Oriented Software Development zusammengefasst . und eine Organisation und Reihe von internationalen Konferenzen zu diesem Thema begonnen. Als aspektorientierte Softwareentwicklungsansätze gelten neben der aspektorientierten Programmierung auch die subjektorientierte Programmierung, Kompositionsfilter, Feature-orientierte Programmierung und adaptive Verfahren.

Maße

Mehrdimensionale Trennung von Bedenken, Hyper/J und der Umgebung zur Manipulation von Bedenken

Die ursprüngliche Formulierung der subjektorientierten Programmierung sah sie bewusst als Verpackungstechnologie vor, die es ermöglicht, den Raum von Funktionen und Datentypen in beiden Dimensionen zu erweitern. Die ersten Implementierungen waren für C++ und Smalltalk. Diese Implementierungen nutzten die Konzepte von Softwarelabels und Kompositionsregeln, um das Verbinden von Subjekten zu beschreiben.

Um dem Anliegen Rechnung zu tragen, eine bessere Grundlage für die Analyse und Zusammenstellung von Software nicht nur im Hinblick auf die Verpackung, sondern auch im Hinblick auf die verschiedenen Anliegen dieser Pakete zu schaffen, wurde eine explizite Gliederung des Materials im Sinne einer Multi- dimensionale "Matrix", in der sich die Anliegen auf die Softwareeinheiten beziehen, die sie implementieren. Diese Organisation wird als multidimensionale Trennung von Anliegen bezeichnet , und das Papier, das sie beschreibt, wurde als das einflussreichste Papier der ICSE-Konferenz 1999 anerkannt.

Dieses neue Konzept wurde für die Erstellung von Java- Software implementiert , wobei der Name Hyper/J für das Tool verwendet wurde.

Komposition und Subjektkonzept können auf Softwareartefakte angewendet werden, die keine ausführbare Semantik haben, wie z. B. Anforderungsspezifikationen oder Dokumentation. Ein Forschungsinstrument für Eclipse , das als Concern Manipulation Environment (CME) bezeichnet wird, wurde beschrieben, in dem Werkzeuge für Abfrage, Analyse, Modellierung und Komposition auf Artefakte in jeder Sprache oder Darstellung angewendet werden, indem geeignete Plug-in-Adapter verwendet werden, um die Darstellung manipulieren.

Im Rahmen von CME wurde ein Nachfolger der Hyper/J Composition Engine entwickelt, der einen allgemeinen Ansatz für die verschiedenen Elemente einer Composition Engine verwendet:

  • eine Abfragesprache mit Vereinheitlichung, um Verbindungspunkte zu identifizieren,
  • ein flexibles Struktur-Anbindungs-Modell,
  • eine Nested-Graph-Spezifikation zum Ordnen identifizierter Elemente,
  • und eine Prioritätsordnungsspezifikation, um Konflikte zwischen widersprüchlichen Regeln zu lösen.

Sowohl Hyper/J als auch CME sind von alphaWorks bzw. sourceforge erhältlich, werden jedoch nicht aktiv unterstützt.

Fachorientierte Programmierung als „dritte Dimension“

Der Methodenversand in der objektorientierten Programmierung kann in dem Sinne als "zweidimensional" angesehen werden, dass der ausgeführte Code sowohl vom Methodennamen als auch vom fraglichen Objekt abhängt. Dies kann der prozeduralen Programmierung gegenübergestellt werden, bei der ein Prozedurname direkt oder eindimensional in ein Unterprogramm aufgelöst wird, und auch der subjektorientierten Programmierung, bei der der Sender oder das Subjekt auch für den Versand relevant ist und eine dritte Dimension darstellt.

Siehe auch

Verweise

Externe Links