Globale Programm- und Architekturanalysen zur Konsolidierung von Software-Varianten zu Software-Produktlinien
Zusammenfassung der Projektergebnisse
Kundenspezifische Anpassungen, Anpassungen an unterschiedliche Software- und Hardware-Plattformen oder Spezialisierungen für bestimmte Märkte zwingen Software-Hersteller zur Entwicklung nicht nur einzelner Produkte sondern Familien ähnlicher Produkte, die gleichzeitig gewartet werden müssen. Die Produkte einer solchen Produktfamilie haben viele Gemeinsamkeiten, jedoch auch einige Unterschiede. In solchen Kontexten entstehen häufig Software-Varianten durch ungeplante Wiederverwendung und unzureichendes Konfigurationsmanagement. Der Code eines Produkts wird hierbei für ein anderes Produkt im großen Stil kopiert und an die besonderen Anforderungen des neuen Einsatzes angepasst. Die resultierenden Varianten erfahren eine eigene Weiterentwicklung. Bei einer großen Zahl von Varianten erhöhen sich hierbei 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. In diesem Projekt wurden Analysemethoden untersucht, mit deren Hilfe Software-Varianten auf den Ebenen ihres Quelltextes, ihrer Architektur und ihrer Produktmerkmale auf Gemeinsamkeiten und Unterschiede untersucht werden können. Dieses Wissen hilft, die Varianten konsistent und kostenezient zu warten oder durch angemessene Implementierungstechniken für Produktlinien zu konsolidieren. Die Gemeinsamkeiten durch Copy&Paste zwischen Varianten manifestieren sich als gleicher oder ähnlicher Quelltext, auch Klone genannt. Mittels der angepassten Klonerkennungstechniken, die in diesem Projekt entwickelt wurden, kann man solche Gemeinsamkeiten auch für sehr große Code-Basen effizient und effektiv identifizieren. Die Gemeinsamkeiten und Unterschiede auf der Architekturebene lassen sich durch unsere Erweiterung der Reflexionsmethode bestimmen. Die Erweiterung erlaubt es, inkrementell vorzugehen. Dabei wird das Vorwissen aus bereits analysierten Varianten auf noch zu analysierende Varianten übertragen. Auf diese Weise können die Architekturen der Varianten effizienter rekonstruiert und zu übergreifenden Produktlinienarchitekturen zusammen gefasst werden. Im Rahmen von industriellen Fallstudien haben wir die Relevanz und die Praxistauglichkeit der Methoden nachgewiesen. Neuere Techniken zur sogenannten Feature-Lokalisierung, mit deren Hilfe man im Code die Stellen findet, die ein bestimmtes Produktmerkmal implementieren, lassen sich mit unserem Ansatz integrieren. Hier sollte sich die zukünftige Forschung noch dem Problem widmen, wie diese Zusammenhänge von der Code- auf die Architekturebene abstrahiert werden können. Zudem sind Techniken von Interesse, die die Variabilitäten in der Implementierung der Produktmerkmale in den verschiedenen Varianten analysieren. Sind die Gemeinsamkeiten und Unterschiede bekannt, ist zu untersuchen, wann eine Konsolidierung der varianten Implementierungen einer parallelen Wartung aus ökonomischen Gründen vorzuziehen ist und welche Mechanismen sich dafür am besten eignen. Best Paper Award bei der IEEE Working Conference on Reverse Engineering (WCRE) 2009 von 87 eingereichten Beiträgen für den Artikel 'Extending the Reection Method for Consolidating Software Variants into Product Lines'. Best Paper Award bei der IEEE Conference on Software Maintenance and Reengineering (CSMR) 2009 von 70 eingereichten Beiträgen für den Artikel 'Incremental Clone Detection'.
Projektbezogene Publikationen (Auswahl)
-
An Evaluation of Code Similarity Identication for the Grow-and-Prune Model. Journal on Software Maintenance and Evolution. 2009; 21(2):143-169
T. Mende, R. Koschke, F. Beckwermert
-
Extending the reexion method for consolidating software variants into product lines. Software Quality Journal ; 17(4), 2009, Seiten 331-366
Rainer Koschke, Pierre Frenzel, Andreas P.J. Breu, Karsten Angstmann
-
Incremental Clone Detection. In: Proceedings of the IEEE Conference on Software Maintenance and Reengineering (CSMR) 2009, IEEE Computer Society Press, Seiten 219-228
Nils Göde, Rainer Koschke
-
Incremental Reexion Analysis. Journal of Software: Evolution and Process 2013; 25(6):601-638
R. Koschke