Forschung und Lehre

Architektur- und Code-Management von Software-Varianten

Seite: 3/3

Anbieter zum Thema

Die Reflexionsmethode haben wir für Software-Varianten erweitert (Frenzel, 2007). Hierzu sind sowohl konzeptuelle Erweiterungen an der Ausdrucksmächtigkeit für Soll-Architekturen (die in diesem Kontext zur Produktlinienarchitektur wird) als auch an der Abbildung der Implementierungskomponenten auf Komponenten der Produktlinienarchitektur notwendig.

Da die Abbildung von Implementierung auf die Architektur ein manueller und arbeitsintensiver Anteil ist, minimieren wir den Aufwand, indem wir nur die Unterschiede zwischen bereits betrachteten Varianten und der als nächstes zu analysierenden Variante neu analysieren. Hierbei nutzen wir die hohe Code-Ähnlichkeit zwischen Varianten aus. Wenn wir durch die Klonerkennung eine Korrespondenz zwischen zwei Implementierungsvarianten V1 und V2 identifiziert haben und wir bereits eine Abbildung von V1 auf eine Architekturkomponente A haben, können wir diese Abbildung für V2 übertragen. Sind V1 und V2 genau gleich, so wird auch V2 auf A abgebildet. Sind V1 und V2 nur ähnlich, wird V2 auf eine neue Architekturkomponente A‘ abgebildet, die eine Variante von A darstellt. Auf diese Weise entsteht inkrementell eine Beschreibung der Produktlinienarchitektur. Diesen Ansatz haben wir mit einer Produktlinie der Robert-Bosch GmbH evaluiert.

Konsolidierung

Auf Basis der identifizierten Gemeinsamkeiten und Unterschiede können die Varianten konsolidiert werden. Hierzu müssen geeignete Abstraktionen für die Unterschiede gefunden werden können. Die Implementierungsmechanismen für die Variabilitäten reichen von Macros, bedingter Übersetzung, Parametrisierung, Generizität, Komponenten, Entwurfsmuster, Polymorphismus bis hin zu generativer Programmierung.

Architekturmanagement von Produktlinien

Wenn die Konsolidierung abgeschlossen ist, muss darauf geachtet werden, dass die Varianten nicht wieder auseinander driften. Hierzu können wieder Klonerkennungstechniken kontinuierlich benutzt werden, die Ähnlichkeiten zwischen Varianten und Produktlinienkern identifizieren. Die gleichen Teile können dann in den Produktlinienkern gezogen werden. Dieses Vorgehen unterstützt die so genannte Grow-and-Prune-Methode, bei der Kopieren von Code benutzt wird, um explorativ Features zu implementieren bzw. wiederzuverwenden (Grow) und einer nachgeschalteten Konsolidierungsphase (Prune), in der im Falle eines Erfolgs die Redundanz weitgehend beseitigt wird (Mende, 2007).

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)