220 likes | 383 Views
Vortrag im Überblick. Aspekte & Komponenten im Kontext der Entwicklung programmiersprachlicher Technologie und SE-Methodologien. CBSD als Ansatz zur Modularisierung von „Crosscutting Concerns“ und Probleme dieses Ansatzes. AOP in aller Kürze, eigener Ansatz
E N D
Vortrag im Überblick Aspekte & Komponenten im Kontext der Entwicklung programmiersprachlicher Technologie und SE-Methodologien CBSD als Ansatz zur Modularisierung von „Crosscutting Concerns“ und Probleme dieses Ansatzes AOP in aller Kürze, eigener Ansatz und Vergleich mit anderen AOP Ansätzen und CBSD
Aspektorientierung in aller Kürze These • “Crosscutting”: inherente Eigenschaft komplexer Systeme • “Crosscutting-Concerns” haben klares Ziel und eigene Struktur • Beteiligte Abstraktionen, mit ihren Definitionen • Kontroll- und Datenfluss • Daher: “Crosscutting Concerns” modularisieren! • Programmiersprachen- und Werkzeugunterstützung • “Crosscutting”: inherente Eigenschaft komplexer Systeme • “Crosscutting-Concerns” haben klares Ziel und eigene Struktur • Beteiligte Abstraktionen, mit ihren Definitionen • Kontroll- und Datenfluss • Daher: “Crosscutting Concerns” modularisieren! • Programmiersprachen- und Werkzeugunterstützung • Modularisierung auf programmiersprachlicher Ebene (statt Konventionen) • Aspekte können jederzeit hinzukommen / entfernt werden (statt vordefinierte Menge von Diensten) • Anwendungsspezifische- und System-Aspekte uniform behandelt
Aspektorientierung in aller Kürze Idee: Crosscutting Modelle und Verbindungspunkte Modell 2 Modell 1 * wenn Ausführung in einem bestimmten Punkt des Aufrufgraphen ist rufe eine bestimmte Methode auf
ein Rückgabewert oder eine Ausnahme wird von diesem Objekt empfangen Ein Methodenaufruf wird von diesem Objekt empfangen Ein Wert wird von diesem Objekt zurückgegeben oder eine Ausnahme wird geworfen dispatch Eine Methode wird von diesem Objekt aufgerufen Ein Wert wird von dieser Methode zurückgegeben oder eine Ausnahme wird geworfen Eine Methode wird von innerhalb dieser Methode aufgerufen Ein Wert oder eine Ausnahme wird innerhalb dieser Methode empfangen Eine Methode wird ausgeführt das Objekt wird erzeugt Aspektorientierung in aller Kürze Idee: Crosscutting Modelle und Verbindungspunkte vordefinierte Punkte im Aufrufgraphen
Aspektorientierung in aller Kürze Entwurfsraum der AO Sprachen • VP-Modell • Statisch: Punkte im Programtext • Dynamisch: Punkte im dynamischen Aufrufgraph • Programmiersprachliche Mittel zur Spezifikation der VPs • Mittel für Spezifikation des Verhaltens an den VPs • Mittel für die Strukturierung der obengenannten Elemente
Aspekte sind in der eigenen Modulstruktur (Ontologie) definiert: Menge von Typen und deren Beziehungen deklariert in Kollaborationsschnittstellen (CI) Graph << CI >> PI Edge << CI >> Vertex << CI >> EI Darmstädter AOP (DAOP) Ansatz Aspekttypen als Kollaborationsschnittstellen (CI) • Provided-Interface (PI) : zur Verfügung gestellte Dienste • Expected-Interface (EI) : Erwartungen an die Einsatzumgebungen interface Graph { provided shortestPaths(); interface Vertex { expected Edge[] edges(); } interface Edge { expected Vertex getV1(); expected Vertex getV2(); } }
PI PI PI ColoredGraph << CI >> EI EI EI MatchedGraph << CI >> DAOP Ansatz Aspekttypen als Kollaborationsschnittstellen (CI) Verschiedene Graph-Typen interface ColoredGraph extends Graph { provided minColoring(Vertex v[]); override Vertex { expectedvoid setColor(int c); expectedint getColor(); } override Edge { provided float getBadness(); } } Graph << CI >> Edge << CI >> Vertex << CI >>
PI EI EI DAOP Ansatz Aspekt Implementierungen ColoredGraph << CI >> << implements >> SuccessiveAugmentation void minColoring( Vertex v[] ) Vertex Edge badness: float isLegalColor(int color) getBadness() setBadness(float)
PI EI EI EI EI DAOP Ansatz Aspekt Implementierungen • Verschiedene Graphfärbung-Algorithmenals PI-Facetten von ColoredGraph • Alle parametrisiert durch die EI-Facette von ColoredGraph ColoredGraph << CI >> << implements >> ... SuccessiveAugmentation SimulatedAnnealing
PI binding class Aspekt‘s CI Basis Software * Callback Operationen rufe eine bestimmte Methode in PI auf DAOP Ansatz Aspekt Bindungen wenn Ausführung in einem bestimmten Punkt des Aufrufgraphen ist
PI PI after calls(Teacher.assignCourse(*)) || StudentYear.addRequired(*) { minColoring(...);} callback PI CourseScheduling Vertex Edge c1, c2: Course c: Course EI Vertex(Course) edges(): Edge[] setColor(int) Edge(Course, Course) getV1(): Vertex getV2(): Vertex DAOP Ansatz Aspekt Bindungen UniversitätsVerwaltung ColoredGraph << CI >> << binds >> void courseAssignmentAboutToChange()
PI EI DAOP Ansatz Aspekt Bindungen • Verschiedene Graph-Bindungen an die Universitäts-verwaltung-Software als EI-Facetten von ColoredGraph • Alle parametrisiert durch die PI-Facette von ColoredGraph ColoredGraph << CI >> << binds >> ... CourseScheduling StudentContact PI PI PI
+ DAOP Ansatz Komponieren von Implementierungen und Bindungen • + Operator komponiertEI- / PI-Facettenunderzeugt vollständige Implementierung von CI‘s class Sched1 = SuccAugmentation + CourseSched; class Sched2 = SimAnnealing + CourseSched; Sched1 courseSched = new Sched1();
Sched1 Vertex Vertex Edge Edge ..Edge.. ..Edge.. ..Vertex.. ..Vertex.. DAOP Ansatz Komponieren von Implementierungen und Bindungen Umbindung der Typen virtuellen Typen UniversitätsVerwaltung ColoredGraph << CI >> + SuccessiveAugmentation CourseScheduling
cg kann von Typ CourseScheduling oder StudentContact sein void display(ColoredGraph cg) { // display a colored graph on the screen } DAOP Ansatz Implementierung und Bindung dynamisch variieren cs kann von Typ SuccessiveAugmentation oder SimulatedAnnealing sein void sched(CourseScheduling cs, Course c[]) { cs.minColoring(courses); }
DAOP Ansatz Ausführen bestehend. Code im Kontext eines Aspektes ... if onlineSchedOn() { SchedulingGraph sg = getStrategy(); apply (sg) in { startUniversitySW(); ... } } else { startUniversitySW(); } ein Aufruf von Teacher.assignCourse innerhalb der transitiven Hülle der Ausführung in diesem Block verursacht die Ausführung der callback-Operation in SchedulingGraph
Aspekt‘s CI Impl Impl Binding1 Impl Basis Applikation 1 Base Applikation 1 Binding2 Impl DAOP Ansatz Dimensionen der Wiederverwendbarkeit generische wiederverwendbare Aspekte Bindungen Anwendungen Basis Applikation Binding Aspekt‘s CI
DAOP in Vergleich wichtige (vergessene) Qualitäten
DAOP in Vergleich wichtige Qualitäten
PCA & JADE (´99,´00) neues OO Kompositionsmodell, Latte Machiatto (´01, ´02) Delegation Layers (´02) konzeptuell ausgearbeitet konzeptuell ausgearbeitet (´02) DAOP Ansatz Stand der Dinge Basis Applikation Binding Aspekt‘s CI Minos, LAC (´01, ´02) prototypische Realisierungen der kontextuellen Ausführung. Kooperation, Siemens CT prototypische Realisierung (´02) des vollständigen Modells. Kooperation, Siemens CT
Das machen wir doch schon die ganze Zeit ! Eureka! AOSD ist die Lösung! Es gibt noch viel zu tun ... Es wird nie funktionieren ! Es ist trivial ! Zusammenfassung