Upload
votu
View
219
Download
0
Embed Size (px)
Citation preview
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/
03.3 – Aspektorientierte Programmierung 22
Inhalt● Querschneidende Belange
● Aspektorientierte Programmierung
● Beispiel: AspectC++
● Zusammenfassung
03.3 – Aspektorientierte Programmierung 33
Inhalt● Querschneidende Belange
● Aspektorientierte Programmierung
● Beispiel: AspectC++
● Zusammenfassung
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
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
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.
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?
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
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.
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
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
03.3 – Aspektorientierte Programmierung 1212
Inhalt● Querschneidende Belange
● Aspektorientierte Programmierung
● Beispiel: AspectC++
● Zusammenfassung
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
03.3 – Aspektorientierte Programmierung 1414
OO-Modell
Lösungsraum (AO-Modell)
Die Rolle des Aspektwebers
KlasseKlasse
Aspekt-weber
KlasseKlasse
Aspekt
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
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
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
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
03.3 – Aspektorientierte Programmierung 1919
Inhalt● Querschneidende Belange
● Aspektorientierte Programmierung
● Beispiel: AspectC++
● Zusammenfassung
03.3 – Aspektorientierte Programmierung 2020
Inhalt● Querschneidende Belange
● Aspektorientierte Programmierung
● Beispiel: AspectC++
● Zusammenfassung
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.
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.