Download - Vortrag im Überblick
1
Vortrag im Überblick
AOP in aller Kürze, eigener Ansatzund Vergleich mit anderen AOP Ansätzen
und CBSD
CBSD als Ansatz zur Modularisierung von „Crosscutting Concerns“ und Probleme
dieses Ansatzes
Aspekte & Komponenten im Kontext der Entwicklung programmiersprachlicher
Technologie und SE-Methodologien
2
“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
Aspektorientierung in aller KürzeThese
Modularisierung auf programmiersprachlicher Ebene (statt Konventionen)
Aspekte können jederzeit hinzukommen / entfernt werden (statt vordefinierte Menge von Diensten)
Anwendungsspezifische- und System-Aspekte uniform behandelt
“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
3
Modell 1
Modell 2
*
wenn Ausführung in einem bestimmten Punktdes Aufrufgraphen ist
rufe einebestimmte Methode auf
Idee: Crosscutting Modelle und VerbindungspunkteAspektorientierung in aller Kürze
4
dispatch
das Objektwird
erzeugt
Ein Wert wird von dieser Methode zurückgegeben
odereine Ausnahme wird geworfen
ein Rückgabewert oder eine Ausnahme
wird von diesem Objekt empfangen
Ein Wert wird von diesem Objekt zurückgegeben
oder eine Ausnahme wird
geworfen
Ein Methodenaufruf wird von diesem
Objekt empfangen
Ein Wert oder eine Ausnahme wird innerhalb dieser
Methode empfangen
Eine Methode
wird ausgeführt
Eine Methode wird von
innerhalb dieser Methode
aufgerufen
Eine Methodewird von diesem Objekt
aufgerufen
Idee: Crosscutting Modelle und VerbindungspunkteAspektorientierung in aller Kürze
vordefinierte Punkte im Aufrufgraphen
5
Entwurfsraum der AO SprachenAspektorientierung in aller Kürze
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
6
Aspekte sind in der eigenen Modulstruktur (Ontologie) definiert: Menge von Typen und deren Beziehungen deklariert in Kollaborationsschnittstellen (CI)
Edge<< CI >>
Vertex<< CI >>
Graph<< CI >>
interface Graph { provided shortestPaths(); interface Vertex { expected Edge[] edges(); } interface Edge { expected Vertex getV1(); expected Vertex getV2(); }}
EIPI
Darmstädter AOP (DAOP) Ansatz Aspekttypen als Kollaborationsschnittstellen (CI)
Provided-Interface (PI) : zur Verfügung gestellte Dienste
Expected-Interface (EI) : Erwartungen an die Einsatzumgebungen
7
DAOP Ansatz
Edge<< CI >>
Vertex<< CI >>
Graph<< CI >>
interface ColoredGraph extends Graph { provided minColoring(Vertex v[]); override Vertex { expected void setColor(int c); expected int getColor(); } override Edge { provided float getBadness(); }}
Verschiedene Graph-Typen
EIPI
ColoredGraph<< CI >>
EIPI
MatchedGraph << CI >>
EIPI
Aspekttypen als Kollaborationsschnittstellen (CI)
8
DAOP Ansatz
ColoredGraph<< CI >>
SuccessiveAugmentation
VertexisLegalColor(int color)
Edgebadness: float
<< implements >>
Aspekt Implementierungen
EI
getBadness()setBadness(float)
void minColoring( Vertex v[] )
EIPI
9
DAOP Ansatz
ColoredGraph<< CI >>
SuccessiveAugmentation
<< implements >>
Aspekt Implementierungen
EISimulatedAnnealing ...
EI EI
Verschiedene Graphfärbung-Algorithmen als PI-Facetten von ColoredGraph
Alle parametrisiert durch die EI-Facette von ColoredGraph
EIPI
10
DAOP Ansatz Aspekt Bindungen
Basis Software
Aspekt‘s CI
*
binding class
CallbackOperationen
rufe einebestimmte Methode in PI auf
PI
wenn Ausführung in einem bestimmten Punktdes Aufrufgraphen ist
11
CourseScheduling
DAOP Ansatz Aspekt Bindungen
Vertexc: CourseVertex(Course)edges(): Edge[]setColor(int)
Edgec1, c2: CourseEdge(Course, Course)getV1(): VertexgetV2(): Vertex
ColoredGraph<< CI >>
EIPI
<< binds >>
void courseAssignmentAboutToChange()
PIcallback
after calls(Teacher.assignCourse(*)) || StudentYear.addRequired(*) { minColoring(...);} PI
UniversitätsVerwaltung
12
DAOP Ansatz
ColoredGraph<< CI >>
CourseScheduling
<< binds >>
Aspekt Bindungen
PIStudentContact ...
PI PI
Verschiedene Graph-Bindungen an die Universitäts-verwaltung-Software als EI-Facetten von ColoredGraph
Alle parametrisiert durch die PI-Facette von ColoredGraph
EIPI
13
+
DAOP Ansatz Komponieren von Implementierungen und Bindungen + Operator komponiert EI- / PI-Facetten und
erzeugt vollständige Implementierung von CI‘s
class Sched1 = SuccAugmentation + CourseSched;class Sched2 = SimAnnealing + CourseSched;Sched1 courseSched = new Sched1();
14
Sched1
DAOP Ansatz Komponieren von Implementierungen und Bindungen
UniversitätsVerwaltungColoredGraph
<< CI >>
SuccessiveAugmentation CourseScheduling
Edge..Vertex..
Vertex..Edge..
Edge..Vertex..
Vertex..Edge..
+
Umbindung der Typen virtuellen Typen
15
DAOP Ansatz Implementierung und Bindung dynamisch variieren
void sched(CourseScheduling cs, Course c[]) {cs.minColoring(courses);
}
cs kann von Typ SuccessiveAugmentation oder SimulatedAnnealing sein
void display(ColoredGraph cg) { // display a colored graph on the screen}
cg kann von Typ CourseScheduling oder StudentContact sein
16
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
17
Binding Basis Applikation
DAOP Ansatz Dimensionen der Wiederverwendbarkeit
Aspekt‘s CI
Impl
Impl
Aspekt‘s CI
Impl
Impl
Binding1
Binding2Base Applikation 1Basis Applikation 1
generischewiederverwendbare Aspekte Bindungen Anwendungen
18
Qualität Viele AO Sprachen CBSDKommunikation über Schnittstellen
Abhängigkeiten von Implementierungsdetails
statische Typisierung ddsj
Strings / Reflection, Typumwandlungen
Subtyp-Polymorphie, dynamisches Binden ddsj
Code-Transformationen, statisches globales Binden
Konventionen,kontextuelles statisches Binden
getr. Kompilierung, „Open World“-Annahme
globale Kompilierung, „Closed World“Annahme
Orthogonalität, Uniformität der PS
ad-hoc Spracherweiterungen
ad-hoc, Außersprachlich
wichtige (vergessene) Qualitäten DAOP in Vergleich
19
Qualität DAOPKommunikation über Schnittstellen statische Typisierung
Subtyp-Polymorphie, dynamisches, kontextuelles Binden Getr. Kompilierung, „Open World“ Orthogonalität, Uniformität der PS
wichtige Qualitäten DAOP in Vergleich
20
Binding Basis Applikation
DAOP Ansatz Stand der Dinge
Aspekt‘s CI
Minos, LAC (´01, ´02) prototypische Realisierungen der kontextuellen Ausführung. Kooperation, Siemens CT
PCA & JADE (´99,´00)neues OO Kompositionsmodell, Latte Machiatto (´01, ´02)
konzeptuell ausgearbeitet (´02)
prototypische Realisierung (´02) des vollständigen Modells. Kooperation, Siemens CT
Delegation Layers (´02)konzeptuell ausgearbeitet
21
Eureka! AOSD ist die Lösung!
Es wird nie funktionieren !
Es ist trivial !
Das machen wirdoch schon die ganze Zeit !
Es gibt noch viel zu tun ...
Zusammenfassung
22
Danke für die Aufmerksamkeit