ringvorlesung 24.6.2004stefan jähnichen, stephan herrmann, katharina mehner aspekte in der...
TRANSCRIPT
![Page 1: Ringvorlesung 24.6.2004Stefan Jähnichen, Stephan Herrmann, Katharina Mehner Aspekte in der Softwareentwicklung Stefan Jähnichen, Stephan Herrmann, Katharina](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bcf49/html5/thumbnails/1.jpg)
Ringvorlesung 24.6.2004 Stefan Jähnichen, Stephan Herrmann, Katharina Mehner
Aspekte in der Softwareentwicklung
Stefan Jähnichen, Stephan Herrmann, Katharina Mehner
Ringvorlesung „Modellbasierte Softwareentwicklung“
SoSe 2004, Humboldt Universität
![Page 2: Ringvorlesung 24.6.2004Stefan Jähnichen, Stephan Herrmann, Katharina Mehner Aspekte in der Softwareentwicklung Stefan Jähnichen, Stephan Herrmann, Katharina](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bcf49/html5/thumbnails/2.jpg)
Ringvorlesung 24.6.2004 Stefan Jähnichen, Stephan Herrmann, Katharina Mehner #2
Wartungsproblematik
![Page 3: Ringvorlesung 24.6.2004Stefan Jähnichen, Stephan Herrmann, Katharina Mehner Aspekte in der Softwareentwicklung Stefan Jähnichen, Stephan Herrmann, Katharina](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bcf49/html5/thumbnails/3.jpg)
Ringvorlesung 24.6.2004 Stefan Jähnichen, Stephan Herrmann, Katharina Mehner #3
AspectBrowser
![Page 4: Ringvorlesung 24.6.2004Stefan Jähnichen, Stephan Herrmann, Katharina Mehner Aspekte in der Softwareentwicklung Stefan Jähnichen, Stephan Herrmann, Katharina](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bcf49/html5/thumbnails/4.jpg)
Ringvorlesung 24.6.2004 Stefan Jähnichen, Stephan Herrmann, Katharina Mehner #4
Crosscutting Concerns
● Problemanalyse – Tangling: Vermischung verschiedener Anforderung in einem Modul
●Schwierig, Modul zu ändern– Scattering: Verstreuung einer Anforderung über ein Modulgeflecht
●Schwierig, Aspekt zu ändern
● Problemklasse Aspekte– Crosscutting Concerns
●Logging ●Synchronisation● IT-Sicherheit ●Persistenz●Caching●Profiling●Verteilung ...
![Page 5: Ringvorlesung 24.6.2004Stefan Jähnichen, Stephan Herrmann, Katharina Mehner Aspekte in der Softwareentwicklung Stefan Jähnichen, Stephan Herrmann, Katharina](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bcf49/html5/thumbnails/5.jpg)
Ringvorlesung 24.6.2004 Stefan Jähnichen, Stephan Herrmann, Katharina Mehner #5
Aspektorientierte Programmierung
● Erweiterung objektorientierter Programmier-sprachen
● Trennung von Aspekt und Basisfunktionalität– Aspektmodule für querschneidende Anforderung
● Problem: Bezüge sind nicht mehr zu erkennen● Integration
– Weben: Integration von Klassen und Aspekten
©Ursus Wehrli
![Page 6: Ringvorlesung 24.6.2004Stefan Jähnichen, Stephan Herrmann, Katharina Mehner Aspekte in der Softwareentwicklung Stefan Jähnichen, Stephan Herrmann, Katharina](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bcf49/html5/thumbnails/6.jpg)
Ringvorlesung 24.6.2004 Stefan Jähnichen, Stephan Herrmann, Katharina Mehner #6
Beispiel Sicherheit
● Basisfunktionalität:
● Authentisierung:– Nur angemeldete Benutzer dürfen Operationen auf Konten ausführen
● Authorisierung:– Unterschiedliche Benutzerrollen haben verschiedene Zugriffsrechte für Konten
getBalance debit credit transfer
Owner x x x x
Employee x o x x
User o o x o
![Page 7: Ringvorlesung 24.6.2004Stefan Jähnichen, Stephan Herrmann, Katharina Mehner Aspekte in der Softwareentwicklung Stefan Jähnichen, Stephan Herrmann, Katharina](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bcf49/html5/thumbnails/7.jpg)
Ringvorlesung 24.6.2004 Stefan Jähnichen, Stephan Herrmann, Katharina Mehner #7
Authentisierung in AspectJ
public aspect Authentication {
pointcut requireAuthentication() : execution(public * Account.* (..));
before() : requireAuthentication(){
if (LoginContext.getInstance().getUser() == null)authenticateUser(); //Benutzer anmelden
}}
// Benutzer wird an anderer Stelle wieder abgemeldet
Prädikat über Ausführungspunkte
Zusätzlich auszuführender Code
„bei welchen Ausführungen“
„vor“ diesen Ausführungen
Ausführungen einer Methode
![Page 8: Ringvorlesung 24.6.2004Stefan Jähnichen, Stephan Herrmann, Katharina Mehner Aspekte in der Softwareentwicklung Stefan Jähnichen, Stephan Herrmann, Katharina](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bcf49/html5/thumbnails/8.jpg)
Ringvorlesung 24.6.2004 Stefan Jähnichen, Stephan Herrmann, Katharina Mehner #8
Authorisierung in AspectJ
public aspect Authorization { declare precedence : Authentication, Authorization; //Authorisierung verwendet Ergebnis der Authentisierung pointcut requireOwner(Account acnt) :
execution(public * Account.debit(..)) && !cflowbelow(execution(public * Account.*(..)))&& target(acnt);
before(Account acnt) : requireOwner(acnt){ System.out.println("RequireOwner"); if (!LoginContext.getInstance().getUser().equals(acnt.getOwner()))
{throw new AccessDeniedException("No valid user logged in!");}
}
ReihenfolgeNicht, wenn debit aus einer anderen
Methode von Account
aufgerufen wurdeParameter
Owner Überprüfung
Bindung
![Page 9: Ringvorlesung 24.6.2004Stefan Jähnichen, Stephan Herrmann, Katharina Mehner Aspekte in der Softwareentwicklung Stefan Jähnichen, Stephan Herrmann, Katharina](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bcf49/html5/thumbnails/9.jpg)
Ringvorlesung 24.6.2004 Stefan Jähnichen, Stephan Herrmann, Katharina Mehner #9
Integration
● Compilezeit– Statisches Weben (engl. Weaving)
● Übersetzen der Aspekte nach Java● Transformation der Basisklassen
● Laufzeit– Ausführung auf einer Standard JVM
● Varianten– Dynamisches Weben zur Laufzeit
Basisfunktionalität
Authorisierung
Authentisierung
![Page 10: Ringvorlesung 24.6.2004Stefan Jähnichen, Stephan Herrmann, Katharina Mehner Aspekte in der Softwareentwicklung Stefan Jähnichen, Stephan Herrmann, Katharina](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bcf49/html5/thumbnails/10.jpg)
Ringvorlesung 24.6.2004 Stefan Jähnichen, Stephan Herrmann, Katharina Mehner #10
Aspekt-Strukturen
● Aspekt– Wenig Zusammenhang
– Wirksam an vielen Stellen
● Geeignet für eine bestimmte Klasse von Anforderungen● Basisklassen müssen nicht geändert werden
![Page 11: Ringvorlesung 24.6.2004Stefan Jähnichen, Stephan Herrmann, Katharina Mehner Aspekte in der Softwareentwicklung Stefan Jähnichen, Stephan Herrmann, Katharina](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bcf49/html5/thumbnails/11.jpg)
Ringvorlesung 24.6.2004 Stefan Jähnichen, Stephan Herrmann, Katharina Mehner #11
Defizite
● Keine Ausdrucksmöglichkeit für Abhängigkeiten– Aspekt setzt anderen Aspekt voraus
– Aspekte schliessen sich gegenseitig aus
● Keine Unterstützung für– Stark strukturierte Anforderungen
● Komplexe Workflows
● Kollaborationen
– Wiederverwendung von Aspekten
– Aspektkomposition
● Allgemeinere Lösung– Symmetrie von Aspekten und Klassen
● Komposition
● Vererbung
● Instanziierung
![Page 12: Ringvorlesung 24.6.2004Stefan Jähnichen, Stephan Herrmann, Katharina Mehner Aspekte in der Softwareentwicklung Stefan Jähnichen, Stephan Herrmann, Katharina](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bcf49/html5/thumbnails/12.jpg)
Ringvorlesung 24.6.2004 Stefan Jähnichen, Stephan Herrmann, Katharina Mehner #12
Separation of Concerns
●Komplexe Relationen beherrschen●Getrennte Definition von Sichten
![Page 13: Ringvorlesung 24.6.2004Stefan Jähnichen, Stephan Herrmann, Katharina Mehner Aspekte in der Softwareentwicklung Stefan Jähnichen, Stephan Herrmann, Katharina](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bcf49/html5/thumbnails/13.jpg)
Ringvorlesung 24.6.2004 Stefan Jähnichen, Stephan Herrmann, Katharina Mehner #13
Sichten als Sprachkonzept
● Modularisierung der Anforderungen nach Sichten– Funktional (z.B. OOA Use Cases, Klassendiagramm, …)
● Struktur und Verhalten– Nicht-funktional
● Spezielle Sicht auf Struktur und Verhalten
● Modularisierung im Design nach Sichten– Nach Form
● Struktur, Dynamik, Funktion [OMT]– Nach Inhalt
● Kollaborationsbasiertes OO-Design mit Rollen [Catalysis, OORAM]
● Objektorientierte Programmiersprachen– Nach Form (Klassen = Einheit von Daten und Methoden)– Fokus auf Algorithmik
![Page 14: Ringvorlesung 24.6.2004Stefan Jähnichen, Stephan Herrmann, Katharina Mehner Aspekte in der Softwareentwicklung Stefan Jähnichen, Stephan Herrmann, Katharina](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bcf49/html5/thumbnails/14.jpg)
Ringvorlesung 24.6.2004 Stefan Jähnichen, Stephan Herrmann, Katharina Mehner #14
Nahtlose Entwicklung?
● Paradigmen und Medienbrüche→Übergänge erfolgen nur als Gesamtheit
→schlecht erweiterbar
→schlecht umkehrbar
→Erweiterungen zerstören Strukturierung
● Durch OO nur teilweise nahtloser Übergang OOD-> OOP „nahtlos“,
OOA->OOD problematisch● OOA: Use Cases und Aktivitätsdiagramme getrennt von Objekten● OOD: Objektorientierte Methoden● Im Allgemeinen keine Modularisierung von Kollaborationen
![Page 15: Ringvorlesung 24.6.2004Stefan Jähnichen, Stephan Herrmann, Katharina Mehner Aspekte in der Softwareentwicklung Stefan Jähnichen, Stephan Herrmann, Katharina](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bcf49/html5/thumbnails/15.jpg)
Ringvorlesung 24.6.2004 Stefan Jähnichen, Stephan Herrmann, Katharina Mehner #15
Herausforderung
● Durchlässigkeit erreichen durch ein einheitliches Paradigma
● Übergänge zwischen Modellen müssen durchlässig sein– Nahtloser Übergang zwischen Artefakten verschiedener Aktivitäten
● Inkrementell● Bidirektional● Beliebig oft
– Analoge Strukturierung/Modularisierung der Artefakte
● Querbezüge und Sichten-Integration innerhalb eines Modells– Möglichkeit, um Querbezüge zu beschreiben– Vollständigkeit
● Paradigma der Sichten soll sich in allen Modellen wiederfinden– „Traditionelle Aspekte“– Kollaborationen
![Page 16: Ringvorlesung 24.6.2004Stefan Jähnichen, Stephan Herrmann, Katharina Mehner Aspekte in der Softwareentwicklung Stefan Jähnichen, Stephan Herrmann, Katharina](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bcf49/html5/thumbnails/16.jpg)
Ringvorlesung 24.6.2004 Stefan Jähnichen, Stephan Herrmann, Katharina Mehner #16
Komplexe Aspekte
Wiederverwendung??
Wartung??
Verständnis??
● Beispiel: Geschäftsfälle– Flugbuchung
– Bonusprogramm
● Konventionelle LösungJede Buchungsoperation muß
– Buchung durchführen
– Bonusmeilen gutschreiben
● Problem– Geschäftsfälle sind nicht unabhängig
– Kaskaden von Fallunterscheidungen● Welche Fluggesellschaft?● Passagier registriert?● Welcher Status?
![Page 17: Ringvorlesung 24.6.2004Stefan Jähnichen, Stephan Herrmann, Katharina Mehner Aspekte in der Softwareentwicklung Stefan Jähnichen, Stephan Herrmann, Katharina](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bcf49/html5/thumbnails/17.jpg)
Ringvorlesung 24.6.2004 Stefan Jähnichen, Stephan Herrmann, Katharina Mehner #17
Flugbuchung+-bonus ist MikadoSoftware aufräumen
Lösung: Programmiermodell Object Teams
![Page 18: Ringvorlesung 24.6.2004Stefan Jähnichen, Stephan Herrmann, Katharina Mehner Aspekte in der Softwareentwicklung Stefan Jähnichen, Stephan Herrmann, Katharina](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bcf49/html5/thumbnails/18.jpg)
Ringvorlesung 24.6.2004 Stefan Jähnichen, Stephan Herrmann, Katharina Mehner #18
Kollaborationsmodule (1)
●FlightBooking– Gewöhnliches Paket
– Abgeschlossen
– Lauffähig
– Soll nicht verändert werden!
![Page 19: Ringvorlesung 24.6.2004Stefan Jähnichen, Stephan Herrmann, Katharina Mehner Aspekte in der Softwareentwicklung Stefan Jähnichen, Stephan Herrmann, Katharina](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bcf49/html5/thumbnails/19.jpg)
Ringvorlesung 24.6.2004 Stefan Jähnichen, Stephan Herrmann, Katharina Mehner #19
● Bonus– Unvollständiges Paket
– Enthält verschiedene Rollen
– Interaktion zwischen Rollen
– Kollaboration kann instanziiert werden
Team!public team class Bonus {
class Subscriber { ... }class BonusItem { ... }private int accumulator;
}
Kollaborationsmodule (2)
![Page 20: Ringvorlesung 24.6.2004Stefan Jähnichen, Stephan Herrmann, Katharina Mehner Aspekte in der Softwareentwicklung Stefan Jähnichen, Stephan Herrmann, Katharina](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bcf49/html5/thumbnails/20.jpg)
Ringvorlesung 24.6.2004 Stefan Jähnichen, Stephan Herrmann, Katharina Mehner #20
A-Posteriori-Integration
● IntegrationZerlegen ist einfach, aber ...
● Konnektor– Weitgehend deklarativ
– Sonderfälle imperativ ausprogrammieren
– Drei Ebenen der Bindung:● Klassen● Methoden● Parameter
![Page 21: Ringvorlesung 24.6.2004Stefan Jähnichen, Stephan Herrmann, Katharina Mehner Aspekte in der Softwareentwicklung Stefan Jähnichen, Stephan Herrmann, Katharina](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bcf49/html5/thumbnails/21.jpg)
Ringvorlesung 24.6.2004 Stefan Jähnichen, Stephan Herrmann, Katharina Mehner #21
Flexible Kopplung
● Rolle-Basis-Beziehung „playedBy“– Unabhängigkeit
● Basis „ignorant“● Beliebige Anzahl Rollen pro Basis
– Integration● Rolle + Basis = Konzeptionelle Einheit● Objektbasierte Vererbung● Realisiert u.a. durch unsichtbaren Link RoleBasis
● Rollen sind Aspekte der Basis– Vergleiche auch: Entwurfsmuster Decorator!
class Subscriber playedBy Passenger { ... }class BonusItem playedBy Segment { ... }
![Page 22: Ringvorlesung 24.6.2004Stefan Jähnichen, Stephan Herrmann, Katharina Mehner Aspekte in der Softwareentwicklung Stefan Jähnichen, Stephan Herrmann, Katharina](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bcf49/html5/thumbnails/22.jpg)
Ringvorlesung 24.6.2004 Stefan Jähnichen, Stephan Herrmann, Katharina Mehner #22
Bidirektionale Schnittstelle
● Analogie CORBA Components:– expected/provided interface
● Zwei Richtungen von Methodenbindungen– Aus Sicht der Rolle
(Basis bleibt ignorant)
● Vollständige Interaktion zwischen Paketen– Wo ruft das Team Basisfunktionalität auf?
– Wo läßt sich das Team aus der Basis heraus aufrufen?
![Page 23: Ringvorlesung 24.6.2004Stefan Jähnichen, Stephan Herrmann, Katharina Mehner Aspekte in der Softwareentwicklung Stefan Jähnichen, Stephan Herrmann, Katharina](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bcf49/html5/thumbnails/23.jpg)
Ringvorlesung 24.6.2004 Stefan Jähnichen, Stephan Herrmann, Katharina Mehner #23
Forwarding: Callout
●Rolle leitet Aufrufe an Basis weiterclass BonusItem playedBy Segment {
getPoints -> getPrice;}
●Empfänger der Nachricht bleibt implizit– Rolle-Basis-Link nicht direkt zugreifbar
– Vermeidung von Inkonsistenzen
●ParametermappingsFalls Signaturen nicht passen
– Deklarative Abbildung von Parametern und Resultat
– Kann einfache Berechnungen enthalten
![Page 24: Ringvorlesung 24.6.2004Stefan Jähnichen, Stephan Herrmann, Katharina Mehner Aspekte in der Softwareentwicklung Stefan Jähnichen, Stephan Herrmann, Katharina](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bcf49/html5/thumbnails/24.jpg)
Ringvorlesung 24.6.2004 Stefan Jähnichen, Stephan Herrmann, Katharina Mehner #24
Aspektbindung: Callin
●Einflechten von Triggern in die Basisclass BonusItem playedBy Segment {
collectCredit() <- after book;}
Effekt:
– Nach jeder Ausführung von Segment.book() wird BonusItem.collectCredit() aufgerufen
●An welchem Objekt?– Implizites Aufsuchen „des richtigen“ Rollenobjektes.
– Mechanismus „lifting“
– Vollständig automatisiert
![Page 25: Ringvorlesung 24.6.2004Stefan Jähnichen, Stephan Herrmann, Katharina Mehner Aspekte in der Softwareentwicklung Stefan Jähnichen, Stephan Herrmann, Katharina](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bcf49/html5/thumbnails/25.jpg)
Ringvorlesung 24.6.2004 Stefan Jähnichen, Stephan Herrmann, Katharina Mehner #25
Dynamische Aktivierung
●Teaminstanzen– Repräsentieren Bonusprogramme versch. Fluggesellschaften
– Einzeln aktivieren/deaktivieren
– Passagiere einzeln bei Teaminstanzen registrieren
●Aktivierung bedeutet– Einschalten aller callin-Bindungen des Teams
– Deaktiviertes Team ist als Aspekt wirkungslos
![Page 26: Ringvorlesung 24.6.2004Stefan Jähnichen, Stephan Herrmann, Katharina Mehner Aspekte in der Softwareentwicklung Stefan Jähnichen, Stephan Herrmann, Katharina](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bcf49/html5/thumbnails/26.jpg)
Ringvorlesung 24.6.2004 Stefan Jähnichen, Stephan Herrmann, Katharina Mehner #26
Teamvererbung
● Konsistente Verfeinerung einer Kollaboration– Virtuelle Klassen, Class Overriding, Family Polymorphism
(typsichere Kovarianz!)
– Kann als Framework-Vererbung eingesetzt werden
– Verfeinerung kann als Konnektor fungieren
– Beliebige Mischformen:● Hinzufügen von Implementierung● Hinzufügen von Bindungen
● Neue Form von WiederverwendungBeispiel:
– FlightBonusVIP als Spezialisierung von FlightBonus
– Komplette Kollaboration wird geerbt (Rollen und ihre Interaktionen)
– Gezielte Anpassungen im Team und/oder seinen Rollen möglich
![Page 27: Ringvorlesung 24.6.2004Stefan Jähnichen, Stephan Herrmann, Katharina Mehner Aspekte in der Softwareentwicklung Stefan Jähnichen, Stephan Herrmann, Katharina](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bcf49/html5/thumbnails/27.jpg)
Ringvorlesung 24.6.2004 Stefan Jähnichen, Stephan Herrmann, Katharina Mehner #27
Was Teams noch leisten
●Vereinigung Paket & Klasse– Dateistruktur + Objektstruktur
– Eigene Attribute und Methoden
– Vererbung
●Kapselung– Rollen können effektiv vor Zugriff geschützt werden
– Team ist Fassade
– Techniken der Alias Control:Typsystem berücksichtigt Instanzen
![Page 28: Ringvorlesung 24.6.2004Stefan Jähnichen, Stephan Herrmann, Katharina Mehner Aspekte in der Softwareentwicklung Stefan Jähnichen, Stephan Herrmann, Katharina](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bcf49/html5/thumbnails/28.jpg)
Ringvorlesung 24.6.2004 Stefan Jähnichen, Stephan Herrmann, Katharina Mehner #28
Object Teams im Kontext
● Implementierung– Compiler
1. Version: erprobt in Diplomarbeiten und einer Lehrveranstaltung
2. Version: Erweiterung des Java Compilers von Eclipse
– Laufzeitumgebung
Load-time weaving: Späte Aspekt-Bindung
– Entwicklungsumgebung
Eclipse-Erweiterung:
● Editieren
● Compilieren
● Navigieren
● ...
![Page 29: Ringvorlesung 24.6.2004Stefan Jähnichen, Stephan Herrmann, Katharina Mehner Aspekte in der Softwareentwicklung Stefan Jähnichen, Stephan Herrmann, Katharina](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bcf49/html5/thumbnails/29.jpg)
Ringvorlesung 24.6.2004 Stefan Jähnichen, Stephan Herrmann, Katharina Mehner #29
Object Teams im Kontext (2)
● PraxiseinführungVerbundprojekt TOPPrax (TUB, TUD, FIRST, GEBIT, Daedalos)
– Evaluierung in vergleichenden Fallstudien
– Konsolidierung von Konzepten und Werkzeugen
– Umfassende Entwicklungsmethode
– Bewertung: Hilft AOP mit Object Teams für
●Qualität
●Verständlichkeit
●Wartung und Evolution?