Upload
rein-hempfling
View
113
Download
0
Embed Size (px)
Citation preview
Kombination von AOP und FOP
Ein Vortrag für das Seminar erweiterte Programmiertechniken
von Samuel Simeonov im Sommersemester 2007
Samuel Simeonov - Kombination von AOP und FOP
2/18
Inhalt
• Einleitung
• Überblick: AspectJ
• Schrittweise Entwicklung
• AOP als algebraisches Modell
• Ausblick
• Zusammenfassung
Samuel Simeonov - Kombination von AOP und FOP
3/18
Einleitung
• AspectJ bringt einige Vorteile sowie erhebliche Nachteile mit sich
• Aspekte gar nicht bzw. beschränkt wiederverwendbar
• Aspektverhalten schwer vorhersagbar• Aspekteinflechtung schwer
nachvollziehbar• Damit: Behinderung etablierter
Programmierpraktiken
Samuel Simeonov - Kombination von AOP und FOP
4/18
AspectJ – Static Crosscuts
Als Transformation:
Samuel Simeonov - Kombination von AOP und FOP
5/18
AspectJ – Dynamic Crosscuts
Als Transformation:
Samuel Simeonov - Kombination von AOP und FOP
6/18
AspectJ – Ordnung von aspects
• Unterschiedliche Einflechtungsreihenfolgen führen zu verschiedenem Programmverhalten
• Um Ergebnis vorherzusagen muss man Reihenfolge kennen
• Nur möglich durch declare precedence• Ohne: Programme nicht portierbar
Samuel Simeonov - Kombination von AOP und FOP
7/18
AspectJ – Ordnung von advices
• 2 Regeln: after advices immer entgegengesetzt der Implementierungsreihenfolge, die anderen advices immer in Implementierungsreihenfolge
• 2 Probleme: zirkularität und unvollständigkeit
Samuel Simeonov - Kombination von AOP und FOP
8/18
Incremental Development
Samuel Simeonov - Kombination von AOP und FOP
9/18
AOP als algebraisches ModellVorüberlegung
• Alle introductions müssen explizit sein• Advice und introduction müssen getrennt
werden pure advice
Samuel Simeonov - Kombination von AOP und FOP
10/18
AOP als algebraisches ModellSumme von introductions
+ ist die Vereinigung disjunkter Mengen, also ergibt sich:
Identität: 0 ist das leere Programm:
Kommutativität: gegeben weil die Mengenvereinigung kommutativ ist
Assoziativität: gegeben, weil die Mengenvereinigung assoziativ ist
+ erlaubt anders als AspectJ kein overriding von membern
Samuel Simeonov - Kombination von AOP und FOP
11/18
AOP als algebraisches Modellweaving
Identität: id ist das null pure advice, ein advice das keine join points hat
Distributivität: weaving ist distributiv über introduction SummenDies ist die zentrale Eigenschaft von AOP
Assoziativität: weaving ist rechtsassoziativ
Samuel Simeonov - Kombination von AOP und FOP
12/18
AOP als algebraisches ModellSumme von advices
• Advices können als Funktionen angesehen werden
• Verknüpfung von advices wird als Funktionsverknüpfung modelliert
Identität: id ist das null pure advice, wenn a pure advice
Kommutativität: die Reihenfolge der advices spielt eine Rolle, ● ist nicht kommutativ, es sei denn die advices haben keine gemeinsamen join points
Assoziativität: gegeben, weil die Funktionsverknüpfung assoziativ ist
Samuel Simeonov - Kombination von AOP und FOP
13/18
AOP als algebraisches ModellModellierung von Aspects als Tupel
Samuel Simeonov - Kombination von AOP und FOP
14/18
AOP als algebraisches Modellaspect composition ◊
Samuel Simeonov - Kombination von AOP und FOP
15/18
AOP als algebraisches ModellDas funktionale Modell
Samuel Simeonov - Kombination von AOP und FOP
16/18
Ausblick
• Die Ordnungsregeln für Advices in AspectJ sollten eliminiert werden
• Die Ordnungsregeln für Aspects in AspectJ sollten geändert werden
• Wenn Aspekte Kommutativ sind: keine Ordnung mehr nötig
• Existierende Compiler und Tools sollten dahingehend nachgerüstet werden
Samuel Simeonov - Kombination von AOP und FOP
17/18
Zusammenfassung
• Limitierung von AspectJ
• Darstellung der Komplexität der Verknüpfung von aspects
• Entwicklung eines algebraischen Modells um die Quelle des Problems zu finden
• Lösung des Problems in Ansätzen
Samuel Simeonov - Kombination von AOP und FOP
18/18
Vielen Dank für eure Aufmerksamkeit
• Quellen:
• Roberto Lopez-Herrejon, Don Batory, Christian Lengauer: A disciplined approach to aspect composition