Forschung und Lehre Architektur- und Code-Management von Software-Varianten

Autor / Redakteur: Prof. Dr. Rainer Koschke, Universität Bremen* / Martina Hafner

Dieser Artikel beschreibt Techniken, um Software-Varianten, die durch ungeplante Wiederverwendung entstanden sind, zu konsolidieren und in eine Produktlinienplattform zu integrieren, um so Wartungs- und Weiterentwicklungskosten einzusparen. Die Techniken stammen aus der Forschung und wurden in industriellen Fallstudien bei der Robert-Bosch GmbH erprobt.

Anbieter zum Thema

Bei Software-Herstellern im Bereich eingebetteter Systeme, deren Produkte große Gemeinsamkeiten, aber auch Spezifika aufweisen, entstehen häufig Software-Varianten durch ungeplante Wiederverwendung. Der Code eines Produkts wird für ein anderes Produkt kopiert und an die Anforderungen des neuen Einsatzes angepasst. Die resultierenden Varianten erfahren eine eigene Weiterentwicklung. Bei einer großen Zahl von Varianten erhöhen sich dabei die Wartungskosten, weil notwendige Änderungen im gemeinsamen Code, z.B. zur Fehlerbehebung, in allen Varianten individuell analysiert, nachgezogen, dokumentiert und getestet werden müssen. Die Wartung und Weiterentwicklung einer großen Anzahl von Varianten ist auf Dauer kaum mehr beherrschbar.

13107990

Die Wiederverwendung vorhandener Software-Komponenten wird - neben generativen Ansätzen - grundsätzlich als aussichtsreichster Weg gesehen, um Ziele wie Time-to-Market“ bzw. „Time-to-Delivery“, niedrige Entwicklungskosten, hohe Software-Qualität, niedrige Wartungs- und Evolutionskosten und hohe Vorhersagbarkeit bei Projektablauf und Qualität zu realisieren. Opportunistische, weitgehend ungeplante Wiederverwendung hat sich aber als ungeeigneter Weg erwiesen. Vielmehr ist eine aktive Gestaltung der wiederverwendbaren Komponenten notwendig, die auch Variabilität zur Anpassung an die spezifischen Erfordernisse des Einzelprodukts vorsieht.

Software-Varianten konsolidieren

Softwareproduktlinien sind Familien von Softwaresystemen, bei denen die Gemeinsamkeiten der von den Systemen zur Verfügung gestellten Funktionen die Unterschiede deutlich überwiegen. Sie können effizient implementiert werden, indem sie eine gemeinsame Codebasis wiederverwenden. Oft organisiert man die Implementierung in einen gemeinsamen Kern aller Systeme sowie in die produktspezifischen Erweiterungen.

Speziell für Firmen, deren einzelne Softwareprodukte große Gemeinsamkeiten aufweisen, liegt dieser Weg nahe. Andererseits scheuen viele Firmen diesen Weg, weil sie bereits beträchtliche Summen Geld in die Entwicklung ihrer Einzelsysteme investiert haben. Sie können es sich nicht leisten, eine neue Software-Produktlinie aufzusetzen, ohne existierende Implementierungen einzubeziehen. Dies würde zu viel Entwicklungszeit verlangen und ein zu hohes Risiko darstellen. Ein gangbarer Weg ist es, die Produktlinie stattdessen evolutionär und inkrementell einzuführen, indem existierende System konsolidiert und schrittweise in eine Produktlinie integriert werden. Hierzu werden Techniken für die Analyse existierender Software-Varianten benötigt.

Durch kontrolliertes Management von Varianten in Software-Produktlinien können die Probleme der Variantenbildung vermieden werden. Jedoch müssen hierzu die existierenden Varianten erst zu einer Produktlinie konsolidiert werden. Dazu müssen Gemeinsamkeiten und Unterschiede der Varianten – Variabilitäten genannt – identifiziert werden.

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)