Diese Diplomarbeit untersucht die Praxistauglichkeit der aspektorientierten Programmierung (AOP)
mit Java am Beispiel einer konkreten J2EE Anwendung. Nach einer kurzen Einführung in die
Grundzüge der aspektorientierten Programmierung, werden die verschiedenen Einsatzgebiete,
wie Logging, Pooling, Qualitätssicherung oder Testen von Software vorgestellt. Dabei wird die
AOP Lösung immer mit einer herkömmlichen Java Implementierung verglichen und die Vor- und
Nachteile der beiden Implementierungen untersucht. Als Ergebnis dieser Arbeit soll geprüft
werden, ob AOP inzwischen bereit für den Praxiseinsatz ist und der Nutzen sowie Probleme dieser
Technologie untersucht werden.
Inhaltsverzeichnis
Kapitel 1: Einführung
1.1 Einleitung
1.2 Ziel der Arbeit
1.3 Voraussetzungen
1.4 Motivation
1.5 Aspektorientierte Programmierung
1.6 Weben von Aspekten
1.6.1 statisches Weben
1.6.7 dynamisches Weben
1.7. AspectJ
1.7.1 Schnittpunkte (engl. pointcuts)
1.7.2 Advices
1.7.3 Aspekte
1.7.4 Introductions
1.7.5 Compiler Regeln
1.8. „Hello World“ mit AspectJ
1.9. Zusammenfassung
Kapitel 2: Die Anwengung - iPad
2.1 Anforderungen
2.2 Design
2.2.1 Klassen Design
2.2.2 Datenbank Design
2.2.3 Grafische Oberfläche
2.2.4 Architektur
2.3 Implementierung
2.3.1 Allgemeines
2.3.2 Technologien
2.3.2.1 Hibernate
2.3.2.2 Axis
2.3.2.3 Lucene
2.3.2.4 Eclipse RCP
2.3.2.5 JDIC
2.3.3 Probleme und Erfahrungen
2.3.3.1 SWT
2.3.3.2 Performance
2.4 Bewertung des Designs und Architektur
2.5 Zusammenfassung
Kapitel 3: Tracing und Logging
3.1 Konventionelles Logging
3.2 Logging mit AspectJ
3.2.1 Protokollieren von Methodenaufrufen
3.2.2 Protokollieren von Feldzugriffen
3.2.3 Protokollieren von Exceptions
3.3 Spezielle Logging Anwendungen
3.3.1 Protokollieren von SQL Statements
3.3.2 Protokollieren von Sessions
3.3.3 Protokollieren von Webservice Requests
3.4 Einsatz in der Beispielanwendung
3.5 Zusammenfassung
Kapitel 4: Qualitätssicherung
4.1 Best-Practices Richtlinien
4.2 EJB Richtlinien
4.3 Swing Richtlinien
4.4 Architektur Richtlinien
4.5 Benutzerdefinierte Richtlinien
4.6 Richtlinien für Namenskonventionen
4.7 Weitere Tools
4.8 Einsatz in der Beispielanwendung
4.9 Zusammenfassung
Kapitel 5: Pooling und Caching
5.1 Thread Pool
5.1.1 Java Implementierung
5.1.2 AspectJ Implementierung
5.1.3 Bewertung
5.2 XSLT Cache
5.2.1 Java Implementierung
5.2.2 AspectJ Implementierung
5.2.3 Bewertung
5.3 Einsatz in der Beispielanwendung
Kapitel 6: Design Patterns
6.1 Singleton Pattern
6.1.1 Java Implementierung
6.1.2 AspectJ Implementierung
6.1.3 Bewertung
6.2 Observer Pattern
6.2.1 Java Implementierung
6.2.2 AspectJ Implementierung
6.2.3 Bewertung
6.3 Zusammenfassung
Kapitel 7: Testen mit AspectJ
7.1 Prüfungen privater Variablen
7.2 Austausch von Methoden und Objekten
7.3 Virtuelle Mock Objekte
7.4 Unit Test Coverage
Kapitel 8: Fazit
8.1 Bewertung der Technologie
8.3 Ausblick in die Zukunft
8.4 Zusammenfassung
Zielsetzung & Themen
Diese Diplomarbeit evaluiert die Praxistauglichkeit der aspektorientierten Programmierung (AOP) mit Java am Beispiel einer konkreten J2EE-Anwendung. Im Zentrum steht die Untersuchung, wie querschneidende Anforderungen, die in herkömmlichen objektorientierten Systemen zu einer Vermischung von Geschäftslogik und technischen Aspekten führen, durch AspectJ modular gekapselt und gewartet werden können.
- Evaluation von AOP-Konzepten wie Logging, Pooling und Caching.
- Untersuchung der Qualitätssicherung durch AspectJ-gestützte Compiler-Regeln.
- Analyse von Design Patterns unter Verwendung aspektorientierter Ansätze.
- Erleichterung von Unit-Tests durch Virtuelle Mock-Objekte und Test-Coverage-Aspekte.
- Vergleich von herkömmlicher Java-Implementierung mit AOP-Lösungen hinsichtlich Modularität und Kopplung.
Auszug aus dem Buch
1.1 Einleitung
Der Mensch hätte nur selten Großes erreicht, wenn er alle Frustrationen hinnehmen würde. Treibt doch die Frage „Muss es so sein?“ unseren Erfindungsgeist an. Hieraus erwachsen politische Reformen und wissenschaftliche Erneuerungen. Die Römer mochten Frustrationen nirgendwo hinnehmen. Sie gingen nicht gerne auf schlammigen Straßen, also pflasterten sie diese. Sie verabscheuten die winterliche Kälte und ersannen so die Fußbodenheizung.
Nicht anderes verhält es sich mit dem Prozess der Softwareentwicklung. Die Unzufriedenheit der Programmierer treibt diese dazu, immer wieder neuere und effizientere Wege bei der Softwareentwicklung zu beschreiten.
In den frühen Tagen der Informatik haben die Entwickler ihre Programme direkt in Form von Maschinen-Befehlen eingegeben. Leider verbrachten die Programmierer mehr Zeit damit, über den Befehlsatz für den jeweiligen Prozessor, als über das eigentliche Problem nachzudenken. So entstanden die ersten höheren Programmiersprachen, die eine Abstraktion der zugrunde liegenden Maschine erlaubten.
Mit der Zeit kamen die prozeduralen Sprachen und ermöglichten es, die Probleme in kleinere Teilprobleme zu zerlegen und diese in Prozeduren abzubilden. Da die Komplexität der Programme jedoch ständig anwuchs, wurde bald eine ausgefeiltere Technik benötigt.
Zusammenfassung der Kapitel
Kapitel 1: Einführung: Definiert die grundlegenden Konzepte querschneidender Anforderungen und führt in die aspektorientierte Programmierung mit AspectJ ein.
Kapitel 2: Die Anwengung - iPad: Beschreibt die Anforderungen, das Design und die Architektur der für diese Arbeit entwickelten Beispielanwendung.
Kapitel 3: Tracing und Logging: Analysiert die Vorteile der Kapselung von Logging-Logik in Aspekte im Vergleich zur herkömmlichen Vermischung im Quellcode.
Kapitel 4: Qualitätssicherung: Demonstriert, wie AspectJ eingesetzt werden kann, um Entwicklungsrichtlinien und Architekturvorgaben automatisiert zu überwachen.
Kapitel 5: Pooling und Caching: Untersucht, wie Performance-Optimierungen wie Thread-Pooling oder Caching mittels AOP transparent implementiert werden können.
Kapitel 6: Design Patterns: Diskutiert die Erweiterung und Verbesserung bekannter Design Patterns durch aspektorientierte Ansätze.
Kapitel 7: Testen mit AspectJ: Zeigt den Einsatz von AOP-Techniken zur Vereinfachung von Unit-Tests, beispielsweise durch Virtuelle Mock-Objekte.
Kapitel 8: Fazit: Bewertet die Technologie AOP, diskutiert die Lernkurve sowie den Nutzen im industriellen Umfeld und gibt einen Ausblick.
Schlüsselwörter
Aspektorientierte Programmierung, AOP, AspectJ, Java, J2EE, Softwareentwicklung, Design Patterns, Qualitätssicherung, Unit Testing, Logging, Caching, Pooling, Querschneidende Anforderungen, Cross-cutting concerns, Modularität
Häufig gestellte Fragen
Worum geht es in dieser Diplomarbeit grundsätzlich?
Die Arbeit untersucht die Praxistauglichkeit der aspektorientierten Programmierung (AOP) mit Java und AspectJ anhand einer J2EE-Beispielanwendung.
Welche zentralen Themenfelder behandelt die Arbeit?
Zu den Schwerpunkten gehören Logging, Qualitätssicherung durch Compiler-Regeln, Performance-Optimierung durch Caching und Pooling, der Einsatz von Design Patterns sowie Methoden zur effizienten Software-Testung.
Was ist das primäre Ziel der Untersuchung?
Das Ziel ist die Evaluierung, ob AOP ein geeignetes Werkzeug ist, um querschneidende Anforderungen sauber von der Geschäftslogik zu trennen, ohne die Komplexität des Gesamtsystems unnötig zu erhöhen.
Welche wissenschaftliche Methode wird verwendet?
Der Autor wählt einen anwendungsorientierten Ansatz, bei dem theoretische Konzepte in einer entwickelten Beispielanwendung implementiert und die Vor- und Nachteile gegenüber konventioneller Programmierung analysiert werden.
Welche Inhalte stehen im Hauptteil im Fokus?
Der Hauptteil gliedert sich in konkrete Praxisbeispiele, in denen Logging, Architekturvorgaben, Design-Muster und Testmethoden jeweils klassisch und mit AspectJ implementiert und verglichen werden.
Durch welche Schlüsselwörter lässt sich die Arbeit am besten charakterisieren?
Aspektorientierte Programmierung, AspectJ, Java, J2EE, Modularität, Softwarearchitektur, Qualitätssicherung und Design Patterns sind die prägenden Begriffe.
Welche Rolle spielt die "querschneidende Anforderung" in der Arbeit?
Sie dient als Kernargument für den Einsatz von AOP, da diese Anforderungen (wie Logging oder Transaktionen) das gesamte System durchdringen und in reiner OOP schwer zu kapseln sind.
Warum rät der Autor vom AOP-Einsatz in sehr kleinen Projekten mit Anfängern ab?
Aufgrund der steilen Lernkurve und der erforderlichen Einarbeitungszeit lohnt sich der Einsatz von AOP erst bei einer gewissen Projektgröße und Laufzeit, um den zeitlichen Aufwand zu amortisieren.
- Citar trabajo
- Eduard Hildebrandt (Autor), 2005, Aspektorientierte Programmierung mit Java gezeigt am Beispiel einer konkreten Anwendung, Múnich, GRIN Verlag, https://www.grin.com/document/186013