Forschung und Lehre

Architektur- und Code-Management von Software-Varianten

Seite: 2/3

Anbieter zum Thema

Im Folgenden werden erste Ergebnisse unserer Forschung vorgestellt, die Methoden und Techniken erarbeitet, um existierende Software-Varianten in Software-Produktlinien zu konsolidieren. Wir untersuchen dieses Problem sowohl auf der Quellcodeebene als auch auf der Architekturebene. Hierbei bauen wir auf einer Reihe von Techniken auf, die wir bereits erfolgreich für die Analyse einzelner Systeme eingesetzt haben. Dazu zählen insbesondere Klonerkennung und reflexionsbasierte Architekturrekonstruktion. Diese Techniken adaptieren und erweitern wir für eine inkrementelle Untersuchung von Varianten.

Das Ziel dieser Erweiterung ist die Unterstützung eines inkrementellen Vorgehens, bei dem zu einem Zeitpunkt, an dem bereits n Systeme untersucht wurden, nur die Unterschiede des nächsten Systems n+1 zu den bisherigen n Systemen gezielt analysiert werden müssen.

Welche Komponenten der Varianten korrespondieren?

Beim Vergleich zweier Varianten stellt sich zunächst die Frage, welche Komponenten der Varianten miteinander korrespondieren. Da wir von Varianten ausgehen, die einer gemeinsamen Code-Basis entstammen, können hier Korrespondenzen über Namen und syntaktische Übereinstimmungen hergestellt werden. Für letztere können Techniken zur Klonerkennung herangezogen werden. Die Klonerkennung findet gleichen und ähnlichen Code zwischen Varianten. Allerdings ist auch der Fall zu erwarten, dass Komponenten in einer Variante komplett re-implementiert wurden. In diesem Fall müssen die Schnittstellen manuell aufeinander abgebildet werden. Letztlich lässt sich nicht automatisch entscheiden, ob zwei Komponenten dieselbe Semantik haben, so dass hierfür auch eine Einbeziehung des Benutzers von Nöten ist.

Architektur aus der Implementierung rekonstruieren

Für große Varianten interessieren nicht nur die Unterschiede und Gemeinsamkeiten auf der Code- sondern auch auf der Architekturebene. Um Unterschiede und Gemeinsamkeiten zwischen Architekturen von Varianten zu finden, müssen entsprechende Architekturbeschreibungen für die Varianten existieren. Dies ist in der Praxis selten der Fall.

Bild 1: Zusammenhang der Ebenen Implementierung, Produktarchitektur und Produktlinienarchitektur und die Techniken für die jeweiligen Abbildungen; Abbildungen sind durch Farben ausgedrückt. (Archiv: Vogel Business Media)

Die von Murphy (2001) entwickelte Reflexionsmethode ist ein leichtgewichtiger Ansatz, um die statische Architektur für ein System aus der Implementierung zu rekonstruieren. Hierbei kann zunächst eine Hypothese für die erwartete Architektur aufgestellt werden. Dabei werden in einer hypothetischen Architektur die Architekturkomponenten und deren zu erwartende Abhängigkeiten angegeben (vergleiche Abbildung 1). Tatsächliche Komponenten – wie Funktionen, Dateien, Klassen oder Packages – und ihre Abhängigkeiten können aus dem Code automatisch hergeleitet werden. In einem dritten Schritt werden die tatsächlichen Komponenten der Implementierung auf die in der hypothetischen Architektur manuell abgebildet. Durch automatischen Abgleich der extrahierten tatsächlichen Abhängigkeiten zwischen den Implementierungskomponenten lassen sich dank dieser Abbildung Unterschiede von Erwartung und Ist feststellen.

Jetzt Newsletter abonnieren

Verpassen Sie nicht unsere besten Inhalte

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

(ID:299965)