EvoZilla - longitudinal evolution analysis of large scale software systems

Michael D. Fischer · reposiTUm (TU Wien) · 2006

Langlebige Computerprogramme repräsentieren wichtige Vermögenswerte, welche möglichst flexibel auf die sich beständig ändernden Bedürfnisse ihrer Anwender reagieren müssen.Konsequenterweise muss die Prüfungen auf Unregelmäßigkeiten in der Entwicklung eines Computerprogramms ein integraler Bestandteil des gesamten Lebensdauerzykluses sein.Die Entwicklungsanalyse von Computerprogrammen offeriert eine Möglichkeit die strukturelle Stabilität während der Programmentwicklung zu bewerten.Erforderlich ist daher eine Methodik um kritische Programmartefakte noch während der Entwicklung des Systems zu identifizieren und mögliche strukturelle Mängel aufzuzeigen.Die so gewonnenen Informationen repräsentiert Rückmeldungen über die getroffene Entscheidungen in der Entwurfsphase und ermöglicht so deren Validierung.Um das Problem der Informationsgewinnung zu lösen, konzentrieren wir uns in der gegenständlichen Arbeit auf das Potential historischer Daten welche automatisch während der Entwicklung eines Systems aufgezeichnet werden.Primäre Forschungsziele sind daher: (G1) ein effizientes Speichermodell und Werkzeuge welche die Speicherung und Auswertungen historischer und struktureller Daten ermöglichen; (G2) eine schnelle und effiziente Methodik zur Detektierung strukturelle Anomalien basieren auf historischen Daten; und (G3) eine Methodik zur Generierung von Feedback über die wichtigsten Artefakte und deren Abhängigkeiten um das Verständnis über Änderungen und deren Effekte zu verbessern.Unsere Analyseansatz, EvoGraph genannt, dient zur Erkennung von kritischen Artefakten und Mustern im Zuge der Evolution eines Programmsystems basierend auf Änderungsund Problembeschreibungen, Laufzeitdaten und Quellcodeänderungen. Zur effizienten Anwendung unseres Ansatzes werden die zu analysierenden Teile mittels Merkmalsanalyse vorselektiert.Basierend auf der gewählten Untermenge, wird ein Abhängigkeitsgraph erstellt, welcher Gewichtungen aus den historischen Informationen enthält.Mittels Distanzoptimierung können komplexe Abhängigkeiten zwischen den Knoten im Graphen dargestellt werden.Als Resultat werden stark voneinander abhängige Knoten in enger Nachbarschaft zueinander plaziert.Eine nachfolgende Analyse der Änderungen im Quellcode gibt detailiert Auskunft über die Entwicklung des Systems hinsichtlich struktureller Abhändigkeiten.Ergebnis unseres Ansatzes ist eine qualifizierte Untermenge von ausgewählten Quellcodeartefakten gemeinsam mit ihren strukturellen Abhängigkeiten.Sie stellen das evolutionäre Echo der implementierten Architektur des Programmsystems dar.Darüberhinaus werden durch Visualisierungen entsprechende Informationen über Änderungsmuster im Quellcode geboten.Sie erlauben das Ziehen weiterer Schlüsse über die Entwicklung des Systems.EvoGraph stellt einen flexiblen, einfachen und ausreichenden Ansatz dar um die strukturelle Stabilität von großen Programmsystemen zu überprüfen.Unsere Fallstudie mit der Mozilla Application Suite hat gezeigt, dass unser Ansatz praktisch durchführbar sowie effektiv im Aufzeigen der wichtigsten Artefakte und ihrer strukturellen Abhängigkeiten ist.Die Resultate zeigen weiters, dass langlebige Programmsysteme historische Daten in ausreichender Qualtität und Quantität liefern, um die effiziente Identifizierung von Anomalien zu erlauben.Hinsichtlich unserer Fallstudie waren wir in der Lage, Gott-Klassen in der strukturellen Dimension und verschiedene Muster in der entwicklungsmäßigen Dimension zu identifizieren.Sie sind ein Zeichen für strukturelle Instabilitäten welche komplexe und teure Quellcodeänderungen verursachen.

Read the paper · More papers on PaperTik