Aspect Oriented Software Delopment (AOSD)
Dipl. Inf. Oliver L. Böhm
Wahlfach 4. Semester (3 SWS)
Beschreibung
Trotz Einsatz moderner Tools und Generatoren scheitern viele größere
Projekte. Warum? Warum bekommt man die Komplexität nicht in den Griff? Wo
bleiben die versprochenen wiederverwendbaren Komponenten? Fragen, auf die die
Objekt-Orientierung Antworten schuldig geblieben ist. Vor allem die
systemübergreifenden Anforderungen ("crosscutting concerns") sind es, denen
mit konventionellen OO-Mitteln sehr schwer beizukommen ist. Und genau hier
setzt die aspektorientierte Programmierung (AOP) an und liefert Konzepte, um
solch übergreifende Belange in Aspekte kapseln zu können.
Ursprünglich aus Arbeiten an der Northeastern University Mitte der 90er
Jahren hervorgegangen, waren es vor allem Forschungen bei XEROX PARC, die den
Begriff der aspektorientierten Programmierung prägten. Mit AspectJ legte
XEROC PARC zudem den Grundstein für eine aspektorientierte Sprache, die auf
Java aufsetzt und den Beginn der Aspektorientierung einläutet, ähnlich wie
Anfang der 90er Jahre C++ der Objektorientierung zum Durchbruch verhalf.
Lernziele
- Grenzen der Objekt-Orientierten Programmierung (OOP) erkennen
- Grundbegriffe und Konzepte der Aspekt-Orientierten Programmierung
(AOP) anhand von Beispielen kennenlernen
- AspectJ als Aspekt-orientierte Erweiterung von Java erlernen
- mit dem Eclipse AspectJ Development Toolkit (AJDT) entwickeln
und debuggen können
- typische Anwendungsgebiete für AOP erkennen können
- die dunkle Seite von AOP und AspectJ kennen
Voraussetzungen
- OO-Kenntnisse
- praktische Erfahrungen mit Java
- Umgang mit Eclipse als Java-IDE
Prüfungsart
- kleinere Programieraufgaben und Projektarbeit
Vorlesungsinhalte
- Teil I: Einstieg
- Java Essentials (Logging, JUnit, Versionierung)
- Einstieg in die AOP-Begriffswelt
- Übersicht über Entwicklungswerkzeuge
- AOP-Techniken in "pure Java"
- Teil II: AspectJ
- Joinpoints und Pointcuts
- Pointcuts definieren
- Advice
- Intertype-Deklaration
- Aspekte
- Annotations
- Teil III: Weiterführende Konzepte (optional)
- AOP und UML
- Instrumentierung von Bibliotheken
- Runtime-Weaving
- Patterns und Anti-Patterns
letzte Änderung: 20. Oktober 2015