Diplomarbeit: Advanced Refactoring

Werkzeuggestützte Problemidentifikation und -behebung in objektorientierten Systemen

Meine Diplomarbeit für das Informatik-Studium habe ich 2003 erstellt. Da der Titel wie bei allen solchen Arbeiten kompliziert klingt, möchte ich kurz erklären, worum es geht.

Die Elemente von objektorientierter Software läßt sich als Struktur darstellen. Beispielsweise können Klassen, Methoden und Attribute als Einheiten dargestellt werden, ein Methodenaufruf könnte eine mögliche Beziehung zwischen zwei Methoden oder auch zwischen einer Methode und einer Klasse in dieser Struktur sein. Auf diese Weise dargestellt, läßt sich ein solches Stukturmodell auf Strukturprobleme hin untersuchen. Ein Strukturproblem ist dabei die die Formulierung des Aussehens einer Teilstruktur, die als problematisch anzusehen ist.

In der Arbeit wurde eine Methode entwickelt, die - im Gegensatz zu vorhandenen Ansätzen - eine integrierte Problemidentifikation und -behebung erlaubt, also das Finden von Strukturproblemen und deren Beseitigung verbindet. Die Methode ist erweiterbar für beliebige Strukturprobleme und betrachtet Softwarequalität differenziert.

Download der Diplomarbeit als geZIPtes PDF (102 Seiten, 1,3 MB)

Im Rahmen der Arbeit habe ich eine prototypische Implementierung angefertigt. Mit dieser kann man vorhandene, im Quelltext vorliegende Java-Programme auf Strukturprobleme hin untersuchen.


Aus der Einleitung

Software unterliegt während der Entwicklung teilweise starken Anforderungsänderungen. Ein grundsätzliches Problem ist, dass diese nie vollständig vorhersehbar sind. So entspricht selbst ein anfänglich gutes Design später einmal nicht mehr den Anforderungen. Während der Implementierung ändert sich somit die Vorstellung, wie die Software am Ende aufgebaut sein sollte. Durch Änderungen an der Software wird oft die Struktur der Software verschlechtert, was negative Auswirkungen auf Software-Qualitätskriterien wie Verständlichkeit, Analysierbarkeit und Modifizierbarkeit hat. Der weitere Entwicklungsaufwand wird erhöht. Um dem entgegen zu wirken, werden mit wachsender Größe einer Software unterstützende Werkzeuge zur Analyse von Software, zur Identifikation von Problemstellen und zur Reorganisation von Software verwendet. Zur Identifikation von Strukturproblemen werden Softwarestrukturen auf als problematisch bekannte Teilstrukturen hin überprüft. Zur Bereinigung von Strukturproblemen eignen sich Refaktorisierungen, die vom Entwickler gezielt ausgeführte kleinere Änderungen darstellen. Ebenso hilfreich zum Erreichen höherer Softwarequalität ist das Anwenden von Entwurfsmustern, da sie bewährte Entwurfsentscheidungen beinhalten und zum besseren Verständnis der Implementierung beitragen. Diese können auch nachträglich mit Hilfe von Refaktorisierungen in bestehende Software eingebaut werden.

Für diese Teilaufgaben gibt es also bereits existierende Ansätze. Was allerdings fehlt, ist die sinnvolle Verschmelzung dieser Aktivitäten, welche den Softwareentwickler von der Implementierungsphase bis zur Wartungsphase dahingehend unterstützt, Problemkandidaten in seinen Programmen zu finden, Lösungsvorschläge aufzuzeigen und die notwendigen Transformationen durchzuführen. Dabei sollen angegebene Software-Qualitätskriterien positiv beeinflusst werden.

Es fehlt eine integrierte, qualitätsgetriebene, erweiterbare Methode zur Identifikation und Behebung von beliebigen Strukturproblemen. In dieser Arbeit wird eine solche Methode entwickelt. Eine bereits lauffähige Software kann als Eingabe verwendet und auf Strukturprobleme hin überprüft werden. Problemkandidaten werden automatisch erkannt. Lösungen werden passend zum Problem vorgeschlagen und in Form von Transformationen automatisch durchgeführt. Die Softwarequalität wird durch das Anwenden der entwickelten Methode bezüglich der vorher angegebenen Qualitätskriterien verbessert.