Subjektorientierte Programmierung

Im Computer, Subjektorientierte Programmierung ist ein objektorientierter Software -Paradigma in dem der Zustand (Felder) und Verhalten (Methoden) von Objekten nicht als wesentlich für die Objekte selbst angesehen wird, sondern durch verschiedene subjektive Wahrnehmungen ("Subjekte") der Objekte. Der Begriff und die Konzepte wurden erstmals im September 1993 in einem Konferenzpapier veröffentlicht[1] Dies wurde später als eines der drei einflussreichsten Artikel anerkannt, die zwischen 1986 und 1996 auf der Konferenz präsentiert werden.[2] Wie in diesem Artikel dargestellt, wird eine Analogie mit dem Kontrast zwischen den philosophischen Ansichten von gemacht Plato und Kant In Bezug auf die Eigenschaften von "realen" Objekten, aber auf Software angewendet. Während wir beispielsweise einen Baum als messbare Größe, Gewicht, Blattmasse usw. aus der Sicht eines Vogels wahrnehmen können, kann ein Baum auch Maßnahmen zum relativen Wert für Nahrung oder Nistzwecke haben, oder Aus der Sicht eines Steueranassisors kann es in einem bestimmten Jahr einen bestimmten steuerpflichtigen Wert haben. Weder der Vogel- noch die zusätzlichen staatlichen Informationen des Vogelbeschäftigten müssen als intrinsisch für den Baum angesehen werden, sondern werden durch die Wahrnehmung des Vogels und des Steueranassuchers hinzugefügt, und aus Kants Analyse kann dies auch der gleichen Eigenschaften sein, an die wir denken, an die wir denken als intrinsisch.

Subjektorientierte Programmierung befürwortet die Organisation des Klassen das beschreibt Objekte in "Subjekte", die zu größeren Probanden bestehen können. An Punkten des Zugangs zu Feldern oder MethodenEs können mehrere Beiträge mehrerer Probanden komponiert werden. Diese Punkte wurden als die charakterisiert Beiträge[3] der Themen. Wenn beispielsweise ein Baum gesenkt wird, müssen die miteinander verbundenen Methoden möglicherweise das Verhalten in den Probanden des Vogel- und Steueranassifer mit denen des Baumes verbinden. Es ist daher grundsätzlich eine Ansicht der kompositorischen Natur der Softwareentwicklung im Gegensatz zur algorithmischen (prozeduralen) oder repräsentativen (Objekt-) Natur.

Beziehungen

Beziehung zu aspektorientiertem Programmieren

Die Einführung von Aspekt-orientiertes Programmieren in 1997[4] Aufgeworfene Fragen zu ihrer Beziehung zu der subjektorientierten Programmierung und zu dem Unterschied zwischen Probanden und Aspekten. Diese Fragen waren für einige Zeit unbeantwortet, wurden jedoch im Patent über die im Jahr 1999 eingereichte Aspekt-orientierte Programmierung behandelt[5] in denen zwei Punkte als charakteristische Unterschiede zu früherer Kunst hervorgehen:

  • Das Aspektprogramm umfasst sowohl a) eine Kreuzung, die einen Punkt in der Ausführung umfasst, an dem das Verhalten des Überschneidungsverhaltens einbezogen werden soll. und b) eine Kreuzungs-Aktion, die eine mit dem Cross-Cut verbundene Implementierung umfasst, die Implementierung umfasst, die Computer-lesbare Programmcode umfasst, die das Verhalten des Kreuzschneides implementiert.
  • Der Aspekt erzwingt das Übergangsverhalten transparent auf Objektklassen und anderen Softwareentitäten

In der subjektorientierten Sichtweise kann die Kreuzkürzung getrennt vom Aspekt (Subjekt) platziert werden und das Verhalten wird nicht durch den Aspekt erzwungen, sondern durch Kompositionsregeln bestimmt. Nachsicht[6] Ermöglicht es auch möglich, eine actuellorientierte Programmierung durch die Einführung und Ausbeutung des Konzepts eines abfragenden ähnlichen zu unterscheiden Pointcut extern die Join-Punkte auferlegen, die von Aspekten allgemein verwendet werden.

Bei der Präsentation von Subjekt-orientierten Programmierungen waren die Join-Punkte absichtlich auf den Zugriff auf Feldzugriffe und die Methode beschränkt, weil dies die Punkte waren, an denen gut gestaltete Frameworks eine funktionale Erweiterung zuzulassen. Die Verwendung von extern auferlegten Punkten ist eine wichtige sprachliche Fähigkeit, bleibt jedoch eines der umstrittensten Merkmale der Aspekt-orientierten Programmierung.[7]

Beziehung zur Aspekt-orientierten Softwareentwicklung

Nach der Turn des Jahrtausends war klar, dass eine Reihe von Forschungsgruppen unterschiedliche Technologien verfolgten, die die Zusammensetzung oder den Anhang von separat verpacktem Zustand und Funktion zur Bildung von Objekten einsetzten.[8] Um das gemeinsame Interessensfeld von der Aspekt-orientierten Programmierung mit seinen speziellen Patentdefinitionen zu unterscheiden und zu betonen, dass die Zusammensetzungstechnologie mehr als nur die Codierungsphase der Softwareentwicklung befasst, wurden diese Technologien unter dem Begriff zusammen organisiert Aspektorientierte Softwareentwicklung,[9] und eine Organisation und Serie über internationale Konferenzen zu diesem Thema begonnen. Wie aspektorientierte Programmierung, subjektorientierte Programmierung, Kompositionsfilter, Featuresorientierte Programmierung und adaptive Methoden gelten als Aspekt-orientierte Softwareentwicklungsansätze.

Maße

Mehrdimensionale Trennung von Bedenken, Hyper/J und die Bedenken manipulationsumgebung

Die ursprüngliche Formulierung der subjektorientierten Programmierung stellte sich absichtlich als Verpackungstechnologie vor-so dass der Bereich der Funktionen und Datentypen in beiden Dimensionen erweitert werden kann. Die ersten Implementierungen waren für C ++.[10] und SmallTalk.[11] Diese Implementierungen nutzten die Konzepte von Softwarebezeichnungen und Kompositionsregeln, um die Verbindung von Themen zu beschreiben.

Um die Sorge zu beantworten, dass eine bessere Grundlage für die Analyse und Zusammensetzung von Software nicht nur in Bezug auf ihre Verpackung, sondern auch in Bezug auf die verschiedenen Bedenken, die diese Pakete behandelt haben Dimensionale "Matrix", in der Bedenken mit den Softwareeinheiten zusammenhängen, die sie implementieren. Diese Organisation heißt mehrdimensionale Trennung von Bedenkenund das Papier, das es beschreibt[12] wurde als das einflussreichste Papier der ICSE 1999 -Konferenz anerkannt.[13]

Dieses neue Konzept wurde zum Komponieren implementiert Java Software, die den Namen verwendet Hyper/j für das Werkzeug.[14]

Die Komposition und das Konzept des Subjekts können auf Software -Artefakte angewendet werden, die keine ausführbaren Semantik haben, z. B. Anforderungspezifikationen oder Dokumentation. Ein Forschungsfahrzeug für Finsternis, genannt Betreff der Manipulationsumgebung (CME) wurde beschrieben[15] in welchen Tools für Abfrage, Analyse, Modellierung,[16] und die Komposition werden auf Artefakte in jeder Sprache oder Darstellung unter Verwendung geeigneter Plug-in-Adapter angewendet, um die Darstellung zu manipulieren.

Ein Nachfolger der Hyper/J -Kompositionsmotor[17] wurde als Teil von CME entwickelt, das einen allgemeinen Ansatz für die verschiedenen Elemente einer Zusammensetzungsmotor verwendet:

  • Eine Abfragesprache mit Vereinigung, um Join -Punkte zu identifizieren,
  • Ein flexibles Modell der Strukturabrechnung,
  • Eine verschachtelte Graphspezifikation zur Bestellung identifizierter Elemente,
  • und eine vorrangige Bestellspezifikation zur Lösung von Konflikten zwischen widersprüchlichen Regeln.

Sowohl Hyper/J als auch CME sind von AlphaWorks erhältlich[18] oder SourceForge,[19] jeweils, aber auch nicht aktiv unterstützt.

Probandenorientierte Programmierung als "dritte Dimension"

Der Methode -Versand in der objektorientierten Programmierung kann als "zweidimensional" in dem Sinne betrachtet werden, dass der ausgeführte Code sowohl vom Methodennamen als auch vom betreffenden Objekt abhängt. Dies kann kontrastiert werden[20] Bei einer prozeduralen Programmierung, bei der ein Verfahrensname direkt oder eine Dimension auf eine Unterprogramme auflöst, und auch für die von Subjekte orientierte Programmierung, wobei der Absender oder das Subjekt auch für den Versand relevant ist, was eine dritte Dimension darstellt.

Siehe auch

Verweise

  1. ^ William Harrison und Harold Ossher, Subjektorientierte Programmierung-Eine Kritik an reinen Objekten, Verfahren der Konferenz von 1993 über objektorientierte Programmiersysteme, Sprachen und Anwendungen, September 1993
  2. ^ "Der einflussreichste oopla Paper Award".
  3. ^ Harold Ossher, Peri Tarr. Komposition auf Betriebsebene: Ein Fall in (Join) Punkt, in ECOOP '98 Workshop Reader, 406–409
  4. ^ Kiczales, G.; Lamping, J.; Mendhekar, a.; Maeda, C.; Lopes, C.; Loingtier, J. M.; Irwin, J. (1997). Aspekt-orientiertes Programmieren (PDF). Ecoop'97. Verfahren der 11. Europäischen Konferenz über objektorientierte Programmierung. Lncs. Vol. 1241. S. 220–242. Citeseerx 10.1.1.115.8660. doi:10.1007/bfb0053381. ISBN 3-540-63089-9.
  5. ^ Kiczales; Gregor J.; Lampen; John O.; Lopes; Cristina V.; Hugunin; James J.; Hilsdale; Erik A.; Boyapati; Chandrasekhar, Aspektorientierte Programmierung, US -Patent 6.467.086, 15. Oktober 2002
  6. ^ William Harrison. Dekonstruktion und Wiederaufbau von Aspektorientierung, Siebter jährlicher Workshop zu Grundlagen von Aspektsprachen, Brüssel, Belgien, 1. April 2008, herausgegeben von Gary T. Leavens, ACM Digital Library, 2008, S. 43-50
  7. ^ Friedrich Steimann. Der paradoxe Erfolg der Aspekt-orientierten Programmierung, Verfahren der 21. jährlichen ACM-Sigplane-Konferenz über objektorientierte Programmiersysteme, Sprachen und Anwendungen, Portland, Oregon, USA, 2006, S. 481-497
  8. ^ Kommunikation der ACM, Vol. 44, Nr. 10, Oktober 1994, S. 28-95
  9. ^ http://aosd.net/
  10. ^ Harold Ossher, Matthew Kaplan, William Harrison, Alexander Katz und Vincent Kruskal, subjektorientierte Kompositionsregeln, Verfahren der Konferenz von 1995 über objektorientierte Programmiersysteme, Sprachen und Bewerbungen, Oktober 1995
  11. ^ Hafedh Mili, William Harrison, Harold Ossher, unterstützte subjektorientierte Programmierung in Smalltalk, Proceedings of Tools USA 96, August 1996
  12. ^ Harold Ossher, Peri Tarr, William Harrison, Stanley Sutton, N Grad der Trennung: Mehrdimensionale Trennung von Bedenken, Proceedings der Internationalen Konferenz für Software-Engineering von 1999, Mai 1999
  13. ^ "Sigsoft - ACM Special Interest Group für Software Engineering".
  14. ^ Harold Ossher, Peri Tarr. Hyper/J: Mehrdimensionale Trennung von Bedenken für Java, Proceedings der 23. Internationalen Konferenz für Software -Engineering, Toronto, Ontario, Kanada, 2001, Seiten: 821 - 822
  15. ^ William Chung, William Harrison, Vincent Kruskal, Harold Ossher, Stanley M. Sutton, Jr., Peri Tarr, Matthew Chapman, Andrew Clement, Helen Hawkins, Sian Januar. Das Bedenken Manipulationsumfeld, Proceedings der 27. Internationalen Konferenz über Software -Engineering -Inhaltsverzeichnis, St. Louis, MO, USA, 2005
  16. ^ William Harrison, Harold Ossher, Stanley Sutton, Peri Tarr. Bedenken Modellierung in der Bedenken Manipulationsumgebung, Verfahren des Workshops 2005 zur Modellierung und Analyse von Bedenken in Software, St. Louis, Missouri, 2005
  17. ^ William Harrison, Harold Ossher, Peri Tarr. Allgemeine Komposition von Software-Artefakten, Proceedings of Software Composition Workshop 2006, März 2006, Springer-Verlag, LNCS 4089, Seiten 194-210
  18. ^ "Legacy Communities - IBM Community".
  19. ^ "Bedenken Manipulationsumgebung (CME)".
  20. ^ Journal of Objekttechnologie: Kontextorientierte Programmierung

Externe Links