Friday, 3. July 2015
SW-Archäologie mit AspectJ (1)
Motivation

1. Die klassische Herangehensweise

Meist ist die Dokumentation oft die erste Anlaufstelle, um sich mit einer Alt-Anwendung vertraut zu machen. Auch wenn sie oftmals von der Realität abweicht, gibt sie doch einen wertvollen Einblick und wichtige Informationen, die den Einstieg in die Thematik erleichtern.

1.1. Der Ideal-Fall

Im Ideal-Fall ist eine aktuelle Dokumentation vorhanden, die diesen Namen auch verdient und verschiedene Sichten auf die Anwendung erlaubt. Vor allem Übersichts-Dokumente über die Architektur, Infrastruktur und Randbedingen sind hier für die Einarbeitung, aber auch als Nachschlagewerk sehr hilfreich.

Um festzustellen, inwieweit der Code tatsächlich mit der Dokumentation übereinstimmt, sind Testfälle (sofern vorhanden) von eminenter Bedeutung. Sie bilden den Ausgangspunkt, um verschiedene Programmteile zu erkunden und deren Verhalten zu studieren. Die meisten Schwierigkeiten bestehen meist darin, die Testfälle zum Laufen zu bringen.

Hat man die Tests am Laufen, kann man sich an Refactoring-Maßnahmen wagen mit dem Ziel, die Businesslogik stärker zum Vorschein zu bringen und die Lesbarkeit und Wartbarkeit zu erhöhen. Vor allem JEE-Anwendungen sind oftmals over-designed, was eine Einarbeitung meist erschwert.

Mit den neuen Erkenntnisse sollte nochmals die Dokumentation begutachtet werden: welche Dokumente müssen überarbeitet, welche Dokumente können aussortiert oder/und in Form von neuen Testfällen ausgedrückt werden.

1.2. Der Normal-Fall

Die Realität sieht oft ganz anders aus: Die Dokumentation ist oft Teil des Problems und nicht der Lösung. Ehemalige Entwickler sind samt KnowHow im Bermuda-Dreieck des Outsourcings verschwunden und als Test-Umgebung dient das Produktiv-System. Da heißt es dann im Code graben und die Mosaikstücke der ursprünglichen Architektur richtig zu deuten. Alles, was mir dabei hilft, den Source-Code zu verstehen, hilft mir bei der Rekonstruktion des Gesamt-Systems.

Auch die wenigen Test-Ruinen, die man dabei oft noch findet, sind von unschätzbarem Wert, geben Sie doch einen Einblick auf die dynamischen Zusammenhänge. Zusammen mit Aspektorientierten Code-Injektionen kann man darauf aufbauend neue Erkenntnisse über den Zusammenhalt der Code-Bereich gewinnen.

2. Abstecher in die Welt von AOP

... comment