1 Vortrag im Überblick AOP in aller Kürze, eigener Ansatz und Vergleich mit anderen AOP Ansätzen und CBSD CBSD als Ansatz zur Modularisierung von „Crosscutting.

Slides:



Advertisements
Ähnliche Präsentationen
Software Engeniering II
Advertisements

der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
Objektorientierte Programmierung
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
der Universität Oldenburg
Kombinatorische Topologie in der 3d Geomodellierung
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Anfragesprachen – Dipl. Ing. Ulrich Borchert / FH Merseburg1/7 Datenbanken werden als Anhäufung von Werten eines Wertebereiches aufgefasst und Datenbankabfragen.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 4 Vererbung Sommersemester 2003 Lars Bernard.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Christian Kästner Modellgetriebene Softwareentwicklung Eclipse Modelling Framework.
Einführung in die OOP in Java
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Programmieren mit JAVA
Programmieren mit JAVA
PRJ 2007/1 Stefan Dissmann Motivation Problem: Benutztes Objekt kennt den Kontext seiner Nutzung nicht. Daher kann es in besonderen Situationen keine Entscheidung.
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
1 Analyse von Software-statisch- Darmstadt,den Presentation: Sebastian Schikowski Steve Kenfack.
Explizite und editierbare Metainformationen für Software Muster.
DVG Einführung in Java1 Einführung in JAVA.
Abstrakte Klassen, Interface
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Weiteres Programm Studium des Breitendurchlaufs Hierzu
Wir müssen also überlegen: Implementierung der Knoten, Implementierung der Kanten, daraus: Implementierung des Graphen insgesamt. Annahme: die Knoteninhalte.
Klassen und Schnittstellen Klasse: Definiert Zustandsraum ihrer Instanzen vollständig (Implementierung der Struktur, soweit Voraussetzung für die Methoden-
UML Begleitdokumentation des Projekts
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
1. Verhalten der Objekte: Operationen Werden in den Klassen definiert Werden (i.d.R.) auf einem Objekt aufgerufen Wird das Empfängerobjekt genannt Weitere.
Generalisierung/Spezialisierung Subtypisierung/Vererbung
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Variablenkonzept Klassisch, in Java Basistyp
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Voyager Eigenschaften/Vorzüge Universalität: –ROI-Modelle: CORBA, RMI, DCOM –verschiedene Namens-, Verzeichnisdienste Nachrichtentypen: synchron, oneway,
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Einführung in die Programmierung mit Java
Objektorientierte Komponenten Auf der Basis des Artikels „Integrating Independent Components with On- Demand Remodularization“ von M. Mezini und K. Ostermann.
Objektorientierte Programmierung Was ist das eigentlich ?
Vortrag Einführung in AspectJ. Gliederung 1 Einleitung 2 Querschnittsfunktionalitäten in AspectJ 2.1 Sprachelemente 3 Beispiel 4 Join Point Modell 5 Weaving.
Tutorium Software-Engineering SS14 Florian Manghofer.
Dr. Wolfram Amme, Virtuelle Vererbung, Informatik II, FSU Jena, SS Auflösung von Konflikten bei Mehrfachvererbung Umbenennung mehrdeutiger Methoden.
Einführung in AspectJ ● Inhalt: 1)Überblick 2)Elemente des crosscuttings in AspectJ 3)„Hello World“ in AspectJ 4)Wie Aspekte in Java verwoben werden 5)Join.
Objektorientierung Gliederung von Daten und Funktionen zu Objekten
Java-Kurs - 5. Übung Das Paradigma der Objektorientierung (OO)
Implementieren von Klassen
 Präsentation transkript:

1 Vortrag im Überblick AOP in aller Kürze, eigener Ansatz und 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ürze These  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 Punkt des Aufrufgraphen ist rufe eine bestimmte Methode auf Idee: Crosscutting Modelle und Verbindungspunkte Aspektorientierung in aller Kürze

4 dispatch das Objekt wird erzeugt Ein Wert wird von dieser Methode zurückgegeben oder eine 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 Methode wird von diesem Objekt aufgerufen Idee: Crosscutting Modelle und Verbindungspunkte Aspektorientierung in aller Kürze vordefinierte Punkte im Aufrufgraphen

5 Entwurfsraum der AO Sprachen Aspektorientierung 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 > Vertex > Graph > 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 > Vertex > Graph > 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 > EIPI MatchedGraph > EIPI Aspekttypen als Kollaborationsschnittstellen (CI)

8 DAOP Ansatz ColoredGraph > SuccessiveAugmentation Vertex isLegalColor(int color) Edge badness: float > Aspekt Implementierungen EI getBadness() setBadness(float) void minColoring( Vertex v[] ) EIPI

9 DAOP Ansatz ColoredGraph > SuccessiveAugmentation > Aspekt Implementierungen EI SimulatedAnnealing... 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 Callback Operationen rufe eine bestimmte Methode in PI auf PI wenn Ausführung in einem bestimmten Punkt des Aufrufgraphen ist

11 CourseScheduling DAOP Ansatz Aspekt Bindungen Vertex c: Course Vertex(Course) edges(): Edge[] setColor(int) Edge c1, c2: Course Edge(Course, Course) getV1(): Vertex getV2(): Vertex ColoredGraph > EIPI > void courseAssignmentAboutToChange() PI callback after calls(Teacher.assignCourse(*)) || StudentYear.addRequired(*) { minColoring(...);} PI UniversitätsVerwaltung

12 DAOP Ansatz ColoredGraph > CourseScheduling > Aspekt Bindungen PI StudentContact... 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(); class Sched1 = SuccAugmentation + CourseSched; class Sched2 = SimAnnealing + CourseSched; Sched1 courseSched = new Sched1();

14 Sched1 DAOP Ansatz Komponieren von Implementierungen und Bindungen UniversitätsVerwaltung ColoredGraph > SuccessiveAugmentationCourseScheduling 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); } 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 } 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 Aspekt‘s CI Impl Binding1 Binding2 Base Applikation 1 Basis Applikation 1 generische wiederverwendbare Aspekte BindungenAnwendungen

18 QualitätViele AO SprachenCBSD Kommunikation ü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ätDAOP Kommunikation ü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 wir doch schon die ganze Zeit ! Es gibt noch viel zu tun... Zusammenfassung

22 Danke für die Aufmerksamkeit