Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

1 Aspekte und Modellierung Seminar “Component and Aspect Engineering“ WS2003/2004 Univ.-Prof. Dr. Armin B. Cremers Dr. Günter Kniesel Daniel Speicher Referentin:

Ähnliche Präsentationen


Präsentation zum Thema: "1 Aspekte und Modellierung Seminar “Component and Aspect Engineering“ WS2003/2004 Univ.-Prof. Dr. Armin B. Cremers Dr. Günter Kniesel Daniel Speicher Referentin:"—  Präsentation transkript:

1 1 Aspekte und Modellierung Seminar “Component and Aspect Engineering“ WS2003/2004 Univ.-Prof. Dr. Armin B. Cremers Dr. Günter Kniesel Daniel Speicher Referentin: Anastasija Eifer

2 2 Gliederung Einführung Modellierung mit UML Anwendungsfälle und Aspekte Objektorientierte Modellierung mit UML Aspektorientierte Modellierung mit UML Erweiterung von UML für AOM Zusammenfassung

3 3 Einführung (1/2) Objektorientierte Programmierung und objektorientierte Modellierung:  Entwurfsmodelle oft groß und monolithisch  die Umsetzung der Anforderungen schwierig zu verfolgen  Entwürfe nicht immer wiederverwendbar und schwer zu warten

4 4 Einführung (2/2) Aspektorientierte Programmierung und aspektorientierte Modellierung:  Entwurf und Code hinsichtlich verschiedener Anforderungen zu trennen (separation of concerns)  sog. nichtfunktionale Anforderungen in Aspekten zu kapseln  Modelle stärker entsprechend den Anforderungen zu spezifizieren  bisher kein “Standard“ für die Modellierung

5 5 Modellierung mit UML  Standard-Objektmodellierungssprache  Notationen und Metamodelle  Klassendiagramm  Anwendungsfalldiagramm  Aktivitätsdiagramm  Sequenzdiagramm  Zustandsdiagramm  Kollaborationsdiagramm  Komponentendiagramm  Verteilungsdiagramm

6 6 Modellierung mit UML  Kommunikation  klare Darstellung der Konzepte  eine Übersicht über das System  Konzentration auf die wichtigen Details Warum Analyse und Entwurf?

7 7 Modellierung mit UML Grady Booch, Ivar Jacobson, Jim Rumbaugh Ivar Jacobson is a father of the following techniques: use cases, component-based development, the Unified Modeling Language, the Rational Unified Process, and business modelling with use cases and objects. He founded the Swedish company Objectory AB, which merged with Rational in 1995. He departed recently from Rational as an employee, but he is still an executive technical consultant of the company.

8 8 Analysiere Risiko Preis für Handel bestimmen Handel festmachen Grenzen überschritten Bewertung > Händler Verkäufer Abb.1: Anwendungsfalldiagramm (use case diagram) Anwendungsfälle und Aspekte (1/6)

9 9 Stammkunde Kaufe ein Produkt Erweiterungsstellen Zahlungsdaten Versanddaten > (Zahlungsdaten, Versanddaten) Abb.2: Erweitert-Beziehung mit Erweiterungsstellen (extension points) Anwendungsfälle und Aspekte (2/6)

10 10  join points – die Stellen, an denen Aspekte mit dem normalen Javacode interagieren können  pointcuts – beschreiben joint points und spezifizieren zusätzliche Anweisungen (in advice-Block) Grundbegriffe von AspectJ: Anwendungsfälle und Aspekte (3/6)

11 11 UML-Begriffe Äquivalente AOP- Begriffe extension aspect extension points join points list of extension points pointcuts Anwendungsfälle und Aspekte (4/6)

12 12 Interface Cash Withdrawal Cash Transfer Funds Withdraw Cash Deposit Funds Abb.3: Scattering and Tangling Use Cases Use Case Realization Components Anwendungsfälle und Aspekte (5/6)

13 13 Anwendungsfälle und Aspekte (6/6)  Anwendungsfälle (use cases):  use case realizations und components:  Grundlage für Gespräche zwischen Kunden und Entwicklern  repräsentieren externe Perspektive auf das System  Mit Hilfe von extensions können Aspekte modelliert werden  repräsentieren interne Struktur des Systems ( design model)  im Moment keine Konstrukte für extensions to use-case realizations und extensions to components in UML

14 14 Objektorientierte Modellierung mit UML (1/3) public class Account { private int balance = 0; public void withdraw (int amount) {...}; public void deposit (int amount) {...}; public int getBalance() {...}; } public class Customer { public String name; // inside some method (a is an account) a.withdraw(50); }

15 15 a : Accountc : Customer 1: withdraw(50) Abb.4: UML-Kollaborationsdiagramm Objektorientierte Modellierung mit UML (2/3)

16 16 Customer -name: String Account -balance: int +withdraw(amount:int) +deposit(amount:int) ownedAccount owner 1..* 0..* Abb.5: UML-Klassendiagramm Objektorientierte Modellierung mit UML (3/3)

17 17 pointcut someName : call(Signature); public aspect Logging { private Log Account.myLog; public void Account.setLog(String fileName) { myLog = new Log(fileName); myLog.println ("This is the logfile for account " + this); } declare parents: Account implements Loggable; pointcut MethodCall(Customer c, Account a) : call (public * Account.*(..)) && this(c) && target(a); after (Customer c, Account a) : MethodCall(c, a) { a.myLog.println(c + " called " + thisJoinPoint.getSignature().getName()); a.myLog.flush(); } Aspektorientierte Modellierung mit UML (1/4)

18 18 Account -balance: int +withdraw(amount:int) +deposit(amount:int) ownedAccount owner 1..* 0..* Customer -name: String > Loggable +setLog(fileName:String) Log +println() +flush() 0..1 1 myLog Abb.6: Klassendiagramm für Account Logging Aspect Aspektorientierte Modellierung mit UML (2/4)

19 19 a : Accountc : Customer 1: withdraw(50) i : Interceptor myLog : Log Abb.7: UML-Kollaborationsdiagramm mit Interceptor 1.1: withdraw(50) 1.2: println(..) 1.3: flush(..) Aspektorientierte Modellierung mit UML (3/4)

20 20 Nachteile des Modells:  Crosscutting concerns können nicht gut modularisiert werden  Keine explizite Modellierung der Grundmodelle von AspectJ (pointcuts, advice)  Inkonsequenz der Diagramme (kein Interceptor-Objekt im Klassendiagramm)  Der Code muss geändert werden  Das Modell zeigt nicht, dass der Account mit oder ohne logging verwendet werden kann Aspektorientierte Modellierung mit UML (4/4)

21 21 c : Customer i : Interceptor a : Account myLog : Log 1.2: println(..) 1.3: flush(..) 1: withdraw(50)1.1: withdraw(50) Erweiterung UML für AOM (1/7) CP1 CP3 CP2 Abb.8: Identifying Connection Points

22 22 Account balance: int +withdraw(amount:int) +deposit(amount:int) Customer -name: String > AccountLogging -Account::myLog: PrintWriter +Account::setLog(fileName:String) Advice after(c:Customer, a:Account):methodCall(c,a) Log +println(s:String) +flush() Abb.9: Klassendiagramm für Account Logging Aspect LogCall Call public void a.myLog.println(“..“); public void a.myLog.flush(..); > methodCall a: Account c: Customer Call call(public*Account.*(..))&&this(c) &&target(a); -myAccount 0..* > Erweiterung UML für AOM (2/7)

23 23 Das Klassendiagramm für Account Logging Aspect : Idee:  Aspekt wird als Komponente modelliert  connection points stellen die Schnittstelle des Aspekts dar  “binding“-Assoziationen spezifizieren, welche Objekte mit dem Aspekt verbunden werden können  das Einweben wird nicht gezeigt  Definiere Ports von Klassen, um die Schnittstellen der einzelnen Elementen darzustellen  In unserem Beispiel: AccountPort, CustomerPort und LogPort  Das Einweben kann gezeigt werden (später im Konfigurationsmodel) Erweiterung UML für AOM (3/7)

24 24 Account -balance: int +withdraw(amount:int) +deposit(amount:int) Customer -name: String > AccountLogging -Account::myLog: PrintWriter +Account::setLog(fileName:String) Advice after(c:Customer, a:Account): methodCall(c,a)l Log +println(s:String) +flush() Abb.10: Aspekt-Design-Modell LogCall Call public void a.myLog.println(“..“); public void a.myLog.flush(..); > methodCall a: Account c: Customer Call call(public*Account.*(..))&&this(c) &&target(a); CustomerPort Requires +withdraw(amount:int) +deposit(amount:int) LogPort Provides +println(s:String) +flush() Requires AccountPort Provides +withdraw(amount:int) +deposit(amount:int) Requires -myAccount 0..* > O O O Erweiterung UML für AOM (4/7)

25 25 :Account :Log :Customer > :AccountLogging accountport customerport accountbindingcustomerbinding Outputbinding logport Abb.11: Konfigurationsmodell vor dem Einweben Erweiterung UML für AOM (5/7)

26 26 a:Account myLog:Log c:Customer aport:AccountPort cport: CustomerPort logport:LogPort Abb.12: Konfigurationsmodell nach dem Einweben AccountPort myLog:Log Provides +withdraw(amount:int) +deposit(amount:int) setLog(fileName:String) Requires O Erweiterung UML für AOM (6/7)

27 27 :Account :Log :Customer Abb.13: Komposition von Aspekten im Konfigurationsmodell > :Blocking > :Logging Erweiterung UML für AOM (7/7)

28 28 Zusammenfassung  UML muss für die aspektorientierte Modellierung angepasst werden: geeignete UML-Elemente für AOP-Konstrukte  Das Aspekt-Design-Modell zeigt die statische Struktur des Aspekts  Das Konfigurationsmodell beschreibt, wie der Aspekt in das System eingewoben wird; nach dem Einweben können jetzt zusätzliche Eigenschaften gezeigt werden


Herunterladen ppt "1 Aspekte und Modellierung Seminar “Component and Aspect Engineering“ WS2003/2004 Univ.-Prof. Dr. Armin B. Cremers Dr. Günter Kniesel Daniel Speicher Referentin:"

Ähnliche Präsentationen


Google-Anzeigen