1 aspekte und modellierung seminar “component and aspect engineering“ ws2003/2004 univ.-prof....

28
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

Upload: renate-peters

Post on 06-Apr-2016

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 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:

1

Aspekte und Modellierung

Seminar “Component and Aspect Engineering“WS2003/2004

Univ.-Prof. Dr. Armin B. CremersDr. Günter KnieselDaniel Speicher

Referentin: Anastasija Eifer

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

2

Gliederung

Einführung Modellierung mit UMLAnwendungsfälle und AspekteObjektorientierte Modellierung mit UMLAspektorientierte Modellierung mit UMLErweiterung von UML für AOMZusammenfassung

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

3

Einführung (1/2)

Objektorientierte Programmierung und objektorientierteModellierung:

Entwurfsmodelle oft groß und monolithisch die Umsetzung der Anforderungen schwierig zu

verfolgen Entwürfe nicht immer wiederverwendbar und schwer

zu warten

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

4

Einführung (2/2)

Aspektorientierte Programmierung und aspektorientierteModellierung:

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

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

5

Modellierung mit UML

Standard-Objektmodellierungssprache Notationen und Metamodelle

Klassendiagramm Anwendungsfalldiagramm Aktivitätsdiagramm Sequenzdiagramm Zustandsdiagramm Kollaborationsdiagramm Komponentendiagramm Verteilungsdiagramm

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

6

Modellierung mit UML

Kommunikation klare Darstellung der Konzepte eine Übersicht über das System Konzentration auf die wichtigen Details

Warum Analyse und Entwurf?

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

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, whichmerged with Rational in 1995. He departed recently from Rational as an employee, but he is still an executive technical consultant of the company.

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

8

Analysiere Risiko

Preis für Handelbestimmen

Handel festmachen

Grenzen überschritten

Bewertung

<<include>>

<<include>>

Händler

Verkäufer

Abb.1: Anwendungsfalldiagramm (use case diagram)

Anwendungsfälle und Aspekte (1/6)

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

9

Stammkunde

Kaufe ein Produkt

ErweiterungsstellenZahlungsdatenVersanddaten

<<extend>>

(Zahlungsdaten, Versanddaten)

Abb.2: Erweitert-Beziehung mit Erweiterungsstellen (extension points)

Anwendungsfälle und Aspekte (2/6)

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

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)

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

11

UML-Begriffe Äquivalente AOP- Begriffe

extension aspect

extension points join points

list of extension points

pointcuts

Anwendungsfälle und Aspekte (4/6)

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

12

Interface

Interface

InterfaceInterface

Cash Withdrawal

Cash Withdrawal

Cash

Cash

CashTransfer Funds Transfer FundsTransfer Funds

Withdraw Cash

Deposit Funds Deposit Funds Deposit Funds

Abb.3: Scattering and Tangling

Use Cases Use Case Realization Components

Anwendungsfälle und Aspekte (5/6)

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

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

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

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);

}

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

15

a : Accountc : Customer

1: withdraw(50)

Abb.4: UML-Kollaborationsdiagramm

Objektorientierte Modellierung mit UML (2/3)

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

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)

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

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)

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

18

Account

-balance: int

+withdraw(amount:int)+deposit(amount:int)

ownedAccount

owner

1..*

0..*

Customer

-name: String

<<interface>>Loggable

+setLog(fileName:String)

Log

+println()+flush()

0..1

1myLog

Abb.6: Klassendiagramm für Account Logging Aspect

Aspektorientierte Modellierung mit UML (2/4)

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

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)

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

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)

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

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

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

22

Account

balance: int

+withdraw(amount:int) +deposit(amount:int)

Customer

-name: String

<<aspect>>AccountLogging

-Account::myLog: PrintWriter

+Account::setLog(fileName:String)

Adviceafter(c:Customer, a:Account):methodCall(c,a)

Log

+println(s:String)+flush()

Abb.9: Klassendiagramm für Account Logging Aspect

LogCall

Callpublic void a.myLog.println(“..“);public void a.myLog.flush(..);

<<pointcut>>methodCall

a: Account c: Customer

Call call(public*Account.*(..))&&this(c)

&&target(a);

-myAccount

0..*

<<binding>><<binding>>

<<binding>>

Erweiterung UML für AOM (2/7)

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

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)

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

24

Account

-balance: int

+withdraw(amount:int) +deposit(amount:int)

Customer

-name: String

<<aspect>>AccountLogging

-Account::myLog: PrintWriter

+Account::setLog(fileName:String)

Adviceafter(c:Customer, a:Account): methodCall(c,a)l

Log

+println(s:String) +flush()

Abb.10: Aspekt-Design-Modell

LogCall

Callpublic void a.myLog.println(“..“);public void a.myLog.flush(..);

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

<<binding>><<binding>>

<<binding>>

O O

O

Erweiterung UML für AOM (4/7)

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

25

:Account

:Log

:Customer<<aspect>>

:AccountLoggingaccountport customerport

accountbinding customerbinding

Outputbinding

logport

Abb.11: Konfigurationsmodell vor dem Einweben

Erweiterung UML für AOM (5/7)

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

26

a:Account

myLog:Log

c:Customeraport:AccountPort

cport:

CustomerPortlogport: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)

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

27

:Account

:Log

:Customer

Abb.13: Komposition von Aspekten im Konfigurationsmodell

<<aspect>>:Blocking

<<aspect>>:Logging

Erweiterung UML für AOM (7/7)

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

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