22
1 Software ubiquitärer Systeme Aspektorientierte Programmierung Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund [email protected] http://ess.cs.uni-dortmund.de/~os/ http://ess.cs.tu-dortmund.de/DE/Teaching/SS2009/SuS/

Software ubiquitärer Systeme - ess.cs.tu-dortmund.de · Aspekte vermeiden oft Code-Replikation im Komponentencode der Komponentencode realisiert nur die „eigentliche Funktion“

  • Upload
    votu

  • View
    219

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Software ubiquitärer Systeme - ess.cs.tu-dortmund.de · Aspekte vermeiden oft Code-Replikation im Komponentencode der Komponentencode realisiert nur die „eigentliche Funktion“

11

Software ubiquitärer SystemeAspektorientierte Programmierung

Olaf SpinczykArbeitsgruppe Eingebettete Systemsoftware

Lehrstuhl für Informatik 12TU Dortmund [email protected]://ess.cs.uni-dortmund.de/~os/

http://ess.cs.tu-dortmund.de/DE/Teaching/SS2009/SuS/

Page 2: Software ubiquitärer Systeme - ess.cs.tu-dortmund.de · Aspekte vermeiden oft Code-Replikation im Komponentencode der Komponentencode realisiert nur die „eigentliche Funktion“

03.3 – Aspektorientierte Programmierung 22

Inhalt● Querschneidende Belange

● Aspektorientierte Programmierung

● Beispiel: AspectC++

● Zusammenfassung

Page 3: Software ubiquitärer Systeme - ess.cs.tu-dortmund.de · Aspekte vermeiden oft Code-Replikation im Komponentencode der Komponentencode realisiert nur die „eigentliche Funktion“

03.3 – Aspektorientierte Programmierung 33

Inhalt● Querschneidende Belange

● Aspektorientierte Programmierung

● Beispiel: AspectC++

● Zusammenfassung

Page 4: Software ubiquitärer Systeme - ess.cs.tu-dortmund.de · Aspekte vermeiden oft Code-Replikation im Komponentencode der Komponentencode realisiert nur die „eigentliche Funktion“

03.3 – Aspektorientierte Programmierung 44

Was ist ein Belang (concern)?

Belange können sehr unterschiedlich sein:● „Pi soll auf 20 Dezimalstellen genau berechnet werden“● „Reaktion erfolgt nach spätestens 5 µs“● „detaillierte Fehlerinformationen im Fehlerfall ausgeben“

Belang = Anforderung? Nicht ganz.● Anforderungen sind „dokumentierte Belange“

„A concern is an area of interest or focus in a system.“

Glossar bei www.aosd.net

Page 5: Software ubiquitärer Systeme - ess.cs.tu-dortmund.de · Aspekte vermeiden oft Code-Replikation im Komponentencode der Komponentencode realisiert nur die „eigentliche Funktion“

03.3 – Aspektorientierte Programmierung 55

Lösungsraum (Implementierung)

Problemraum (Anforderungen)

Belange auf dem Weg in die Lösung

Belang

Belang

BelangBelang

Entwicklungsprozess(Methoden, z.B. OO)

KlasseKlasse

Page 6: Software ubiquitärer Systeme - ess.cs.tu-dortmund.de · Aspekte vermeiden oft Code-Replikation im Komponentencode der Komponentencode realisiert nur die „eigentliche Funktion“

03.3 – Aspektorientierte Programmierung 66

Lösungsraum (Implementierung)

Problemraum (Anforderungen)

Belange auf dem Weg in die Lösung

Belang

Belang

BelangBelang

Entwicklungsprozess(Methoden, z.B. OO)

KlasseKlasse

Dieser Belang wirkt sich„nur“ auf den Entwicklungs-prozess aus.

Page 7: Software ubiquitärer Systeme - ess.cs.tu-dortmund.de · Aspekte vermeiden oft Code-Replikation im Komponentencode der Komponentencode realisiert nur die „eigentliche Funktion“

03.3 – Aspektorientierte Programmierung 77

Lösungsraum (Implementierung)

Problemraum (Anforderungen)

Belange auf dem Weg in die Lösung

Belang

Belang

BelangBelang

Entwicklungsprozess(Methoden, z.B. OO)

KlasseKlasse

Für die Realisierung dieserBelange findet sich in derImplementierung Code.

Was passiert hier beiAnforderungsänderungen?

Page 8: Software ubiquitärer Systeme - ess.cs.tu-dortmund.de · Aspekte vermeiden oft Code-Replikation im Komponentencode der Komponentencode realisiert nur die „eigentliche Funktion“

03.3 – Aspektorientierte Programmierung 88

Lösungsraum (Implementierung)

Problemraum (Anforderungen)

Belange auf dem Weg in die Lösung

Belang

Belang

BelangBelang

Entwicklungsprozess(Methoden, z.B. OO)

KlasseKlasse

Für die Realisierung dieserBelange findet sich in derImplementierung Code.

Was passiert hier beiAnforderungsänderungen?

Prinzip der Trennung der Belange(separation of concerns - SoC):

„Dinge, die nichts miteinander zu tun haben, sind auch getrennt unterzubringen und zu behandeln.“

Ziel: Jedes Artefakt der Implementierung istein Modell genau eines Belangs

Page 9: Software ubiquitärer Systeme - ess.cs.tu-dortmund.de · Aspekte vermeiden oft Code-Replikation im Komponentencode der Komponentencode realisiert nur die „eigentliche Funktion“

03.3 – Aspektorientierte Programmierung 99

Lösungsraum (Implementierung)

Problemraum (Anforderungen)

Belange auf dem Weg in die Lösung

Belang

Belang

BelangBelang

Entwicklungsprozess(Methoden, z.B. OO)

KlasseKlasse

Dieser Belang lässt sich trotzaller Mühe nicht getrenntimplementieren. Es ist einquerschneidender Belang.

Page 10: Software ubiquitärer Systeme - ess.cs.tu-dortmund.de · Aspekte vermeiden oft Code-Replikation im Komponentencode der Komponentencode realisiert nur die „eigentliche Funktion“

03.3 – Aspektorientierte Programmierung 1010

Querschneidende Belange - Beispiele● „auf einen Fehlerzustand nach Aufruf einer libc Funktion

soll mit dem Werfen einer exception reagiert werden“

● nach jedem libc Funktionsaufruf muss ein Test erfolgen

● querschneidend in der Instruktionsabfolge (dynamisch)

● „garbage collection durch reference counting“

● jedes Objekt jeder Klasse muss einen Zähler enthalten

● quer schneidend in der Programmstruktur (statisch)

● „vor dem Betreten des BS-Kerns durch die Anwendung muss ein lock gesetzt werden.“

●alle system calls werden abgesichert

Page 11: Software ubiquitärer Systeme - ess.cs.tu-dortmund.de · Aspekte vermeiden oft Code-Replikation im Komponentencode der Komponentencode realisiert nur die „eigentliche Funktion“

03.3 – Aspektorientierte Programmierung 1111

Lösungsraum (Implementierung)

Problemraum (Anforderungen)

Belange auf dem Weg in die Lösung

Belang

Belang

BelangBelang

Entwicklungsprozess(Methoden, z.B. OO)

KlasseKlasse

Dieser Belang lässt sich trotzaller Mühe nicht getrenntimplementieren. Es ist einquer schneidender Belang.

Aber warum?

Querschneidender Belang(crosscutting concern - CCC):

„Ein quer schneidender Belang ist dadurch charakterisiert, dass er in der

gewählten Modellierungssprache nicht als eigenständige Entität ausdrückbar ist“

Ziel: Auch querschneidende Belangemodular im Sinne des SoC implementieren

Page 12: Software ubiquitärer Systeme - ess.cs.tu-dortmund.de · Aspekte vermeiden oft Code-Replikation im Komponentencode der Komponentencode realisiert nur die „eigentliche Funktion“

03.3 – Aspektorientierte Programmierung 1212

Inhalt● Querschneidende Belange

● Aspektorientierte Programmierung

● Beispiel: AspectC++

● Zusammenfassung

Page 13: Software ubiquitärer Systeme - ess.cs.tu-dortmund.de · Aspekte vermeiden oft Code-Replikation im Komponentencode der Komponentencode realisiert nur die „eigentliche Funktion“

03.3 – Aspektorientierte Programmierung 1313

Lösungsraum (AO-Modell)

Problemraum (Anforderungen)

Belange auf dem Weg in die Lösung

Belang

Belang

BelangBelang

Entwicklungsprozess(Methoden, z.B. OO)

KlasseKlasse

Mit Hilfe der aspektorientiertenProgrammierung (AOP) lassensich auch quer schneidendeBelange modular implementieren

Aspekt

Page 14: Software ubiquitärer Systeme - ess.cs.tu-dortmund.de · Aspekte vermeiden oft Code-Replikation im Komponentencode der Komponentencode realisiert nur die „eigentliche Funktion“

03.3 – Aspektorientierte Programmierung 1414

OO-Modell

Lösungsraum (AO-Modell)

Die Rolle des Aspektwebers

KlasseKlasse

Aspekt-weber

KlasseKlasse

Aspekt

Page 15: Software ubiquitärer Systeme - ess.cs.tu-dortmund.de · Aspekte vermeiden oft Code-Replikation im Komponentencode der Komponentencode realisiert nur die „eigentliche Funktion“

03.3 – Aspektorientierte Programmierung 1515

OO-Modell

Die Rolle des Aspektwebers

Der Aspektcode ...• beschreibt wo und wie die

anderen Komponentenbeeinflusst werden

• kann auf viele Komponentenwirken (quantification)

Lösungsraum (AO-Modell)

KlasseKlasse

Aspekt-weber

KlasseKlasse

Aspekt

Page 16: Software ubiquitärer Systeme - ess.cs.tu-dortmund.de · Aspekte vermeiden oft Code-Replikation im Komponentencode der Komponentencode realisiert nur die „eigentliche Funktion“

03.3 – Aspektorientierte Programmierung 1616

OO-Modell

Die Rolle des Aspektwebers

Der Komponentencode ...• wird durch Aspekte beein-

flusst.• muss nicht speziell präpariert

sein (obliviousness)

Lösungsraum (AO-Modell)

KlasseKlasse

Aspekt-weber

KlasseKlasse

Aspekt

Page 17: Software ubiquitärer Systeme - ess.cs.tu-dortmund.de · Aspekte vermeiden oft Code-Replikation im Komponentencode der Komponentencode realisiert nur die „eigentliche Funktion“

03.3 – Aspektorientierte Programmierung 1717

OO-Modell

Lösungsraum (AO-Modell)

KlasseKlasse

Aspekt-weber

KlasseKlasse

Aspekt

Die Rolle des Aspektwebers

Der Aspektweber ...• fügt Aspekt- und

Komponentencode anden Verbindungs-punkten (join points)zusammen.

• kann zu unterschiedlichenZeitpunkten weben, z.B.

• Übersetzungszeit• Ladezeit• Laufzeit

Page 18: Software ubiquitärer Systeme - ess.cs.tu-dortmund.de · Aspekte vermeiden oft Code-Replikation im Komponentencode der Komponentencode realisiert nur die „eigentliche Funktion“

03.3 – Aspektorientierte Programmierung 1818

Was bringt AOP [1]?● Wiederverwendbarkeit

● der Komponentencode kann u.U. auch ohne den Aspektcode(und umgekehrt) genutzt werden

● Lesbarkeit● Aspekte vermeiden oft Code-Replikation im Komponentencode● der Komponentencode realisiert nur die „eigentliche Funktion“

● Erweiterbarkeit und Wartbarkeit● Ein „gut formulierter“ Aspekt bezieht zukünftige Erweiterungen

„automatisch“ mit ein

● Qualität● Policies können durch Aspekte oftmals explizit ausgedrückt und

durchgesetzt werden

● Konfigurierbarkeit● bei Konfigurierung des Aspektcodes kann ein kleiner

Konfigurierungseingriff große Wirkung haben

Page 19: Software ubiquitärer Systeme - ess.cs.tu-dortmund.de · Aspekte vermeiden oft Code-Replikation im Komponentencode der Komponentencode realisiert nur die „eigentliche Funktion“

03.3 – Aspektorientierte Programmierung 1919

Inhalt● Querschneidende Belange

● Aspektorientierte Programmierung

● Beispiel: AspectC++

● Zusammenfassung

Page 20: Software ubiquitärer Systeme - ess.cs.tu-dortmund.de · Aspekte vermeiden oft Code-Replikation im Komponentencode der Komponentencode realisiert nur die „eigentliche Funktion“

03.3 – Aspektorientierte Programmierung 2020

Inhalt● Querschneidende Belange

● Aspektorientierte Programmierung

● Beispiel: AspectC++

● Zusammenfassung

Page 21: Software ubiquitärer Systeme - ess.cs.tu-dortmund.de · Aspekte vermeiden oft Code-Replikation im Komponentencode der Komponentencode realisiert nur die „eigentliche Funktion“

03.3 – Aspektorientierte Programmierung 2121

Zusammenfassung● Mit Hilfe von AOP können auch quer schneidende

Belange modular implementiert werden● „Obliviousness“

● „Quantification“

● Gerade im Hinblick auf konfigurierbare Software verspricht AOP Vorteile● ein Aspekt(modul) kann leicht weggelassen werden

● konfigurierbare Aspekte versprechen eine große Wirkung

● Beim Entwurf von feingranular konfigurierbarer Systemsoftware für ubiquitäre Systeme sollte AOP berücksichtigt werden.

Page 22: Software ubiquitärer Systeme - ess.cs.tu-dortmund.de · Aspekte vermeiden oft Code-Replikation im Komponentencode der Komponentencode realisiert nur die „eigentliche Funktion“

03.3 – Aspektorientierte Programmierung 2222

Literatur[1] R.E. Filman, T. Elrad, S. Clarke, and M. Aksit (eds).

Aspect-Oriented Software Development. Addison-Wesley, 2005, ISBN 0-321-21976-7.