1 / 22

Vortrag im Überblick

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

akina
Download Presentation

Vortrag im Überblick

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. 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

  3. 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

  4. 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

  5. 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

  6. 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(); } }

  7. 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 >>

  8. 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)

  9. 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

  10. 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

  11. 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()

  12. 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

  13. + 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();

  14. 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

  15. 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); }

  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. 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

  18. DAOP in Vergleich wichtige (vergessene) Qualitäten

  19. DAOP in Vergleich wichtige Qualitäten

  20. 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

  21. 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

  22. Danke für die Aufmerksamkeit

More Related