Re-engineering
Aus alt mach neu: Architekturzentriertes Refactoring von objektorientierten und prozeduralen Programmen
Software muss ständig angepasst werden, um neuen Anforderungen zu genügen. Heutige Software-Systeme sind umfangreich und komplex und werden oft unter Zeitdruck entwickelt. Mit der zunehmenden Anzahl von Änderungen wird aber die Software immer schwieriger zu ändern. Das spüren Sie durch höhere Fehlerraten und länger werdende Entwicklungszeiten. Und selbst bei einem vorbildlichem Entwicklungsprozess ist die gegenwärtige Software-Struktur nicht immer optimal geeignet, um die Änderungen mit geringem Aufwand machen zu können. Fehlende oder mangelhafte Dokumentation erschwert diesen Umstand weiter.
Wussten Sie z.B., dass Programmierer durchschnittlich 50-60% ihrer Zeit damit verbringen, die Software erst einmal zu analysieren, bevor sie Ihre Änderungen tatsächlich durchführen und testen können? Dies liegt an mangelnder Dokumentation und dem Umstand, dass einem Wartungsprogrammierer keine adäquaten Werkzeuge zur Verfügung stehen. Überdies steht bei der Weiterentwicklung häufig zu sehr der Quellcode im Vordergrund. Dies gleicht jedoch dem Problem, ein Gebäude durch Betrachtung der einzelnen Mauersteine verstehen zu wollen.
Die Zeit für die Weiterentwicklung ließe sich verkürzen. Durch Refactoring können Sie Ihre Software so restrukturieren, dass sie fit für neue Anforderungen ist. Dazu müssen Sie Ihre Software einem "Gesundheits-Check" unterziehen.
Fragen, die Sie umwälzen werden, sind: Wie lassen sich Code-Anomalien und -Redundanzen finden und vermeiden? Welche Abhängigkeiten existieren zwischen den Programmteilen? Welche tatsächlichen Schnittstellen gibt es zwischen Komponenten? Was für eine Software-Architektur liegt dem System zugrunde bzw. hält sich die Implementierung eigentlich an den Entwurf? Welcher Code ist spezifisch für eine bestimmte Funktionalität?
Dies sind schwierige Fragen, und sie sind umso schwieriger, wenn Sie sich vergegenwärtigen, welche Werkzeuge Ihnen üblicherweise zur Beantwortung dieser Fragen zur Verfügung stehen: textuelle Suche (z.B. grep), Cross-Reference-Tools, Debugger etc.
Gibt es nichts besseres? Doch das gibt es. Im Rahmen des Bauhaus-Projektes, einem Kooperationsprojekt der Universität Bremen und der Universität Stuttgart, werden fortschrittliche Werkzeuge und Methoden entwickelt, die Ihnen bei Ihrer täglichen Arbeit mit existierender Software weiterhelfen können. Und zwar sowohl auf der Ebene des Quellcodes als auch auf der der Software-Architektur. Denn auf der Quellcodeebene sehen Sie oft den Wald vor lauter Bäumen nicht.
Bei der architekturzentrierten Weiterentwicklung steht die Software-Architektur im Zentrum. Sie ist sowohl technisches Hilfsmittel als auch ein wichtiges Instrument des Projektmanagements. Änderungen werden anhand der Software-Architektur geplant. Deren Auswirkungen werden mit Hilfe der Software-Architektur abgeschätzt. Die Änderungen am Quellcode werden gegen die Software-Architektur geprüft. Integrität und Authentizität der Architekturbeschreibung sind hierfür unbedingte Voraussetzungen. Um diese sicher zu stellen, brauchen Sie sowohl Werkzeuge für die Quellcode-Analyse als auch für die Architekturrekonstruktion und -beschreibung.
Der Bauhaus-Werkzeugkasten bietet Ihnen diese Kombination:
- Werkzeuge zur Extraktion der tatsächlichen Komponenten und deren Abhängigkeiten aus dem Quellcode
- automatische Erkennung duplizierten Quellcodes
- Erhebung und Visualisierung von Code-Metriken für Code-Audits
- Architektur- und Quellcode-Browser
- Lokalisierung von Merkmalen (spezifizierte Funktionalität)
- semiautomatische Komponentenerkennung
- semiautomatische Rekonstruktion der Software-Architektur
- automatische Validierung der Architektur
Die Werkzeuge unterstützen gegenwärtig C, C++ und Java (für Ada und Cobol existieren Prototypen) und sind verfügbar für Microsoft-Windows XP und 2000 sowie für GNU/Linux und Solaris.
Weitere Informationen :
zur Arbeitsgruppe Softwaretechnik der Uni Bremen: http://www.informatik.uni-bremen.de/st/
zum Forschungsprojekt Bauhaus http://www.bauhaus-stuttgart.de/
zum professionellen Support von Bauhaus http://www.bauhaus-tec.com/
Prof. Dr. Rainer Koschke



