Fragmentbasierte Konsolidierung von Modellvarianten
Zusammenfassung der Projektergebnisse
Softwaresysteme werden heute vielfach modellbasiert entwickelt, Beispiele sind eingebettete Systeme in der Automatisierungstechnik und der Automobil- und Avionik-Industrie sowie betriebliche Informationssysteme. In vielen Anwendungsszenarien entstehen langfristig parallel existierende Varianten der Systeme, die kundenspezifisch autonom weiterentwickelt werden (“clone and own”-Ansatz). Die Wartung einer solchen Produktfamilie verursacht einen hohen Aufwand, da i.w. die gleichen Wartungsarbeiten an jeder Variante einzeln und erneut durchgeführt werden müssen. Um diesen Aufwand zu reduzieren, müssen die Varianten regelmäßig wieder aneinander angeglichen bzw. konsolidiert werden (”growand-prune-Modell”). Bei diesem Reengineering der Produktfamilie sollen Revisionen der Varianten entstehen, die syntaktisch ähnlicher werden, also mehr gemeinsame Anteile enthalten, semantisch aber unverändert bleiben. Erheblichen Aufwand verursacht auch die wiederholte Qualitätssicherung einer sich weiterentwickelnden modellbasierten Produktfamilie mit Modelcheckern oder jeweils einzeln zu generierenden Test-Suiten. Dieser Aufwand kann erheblich reduziert werden, wenn man die Produktfamilie in eine konsolidierte Gesamtdarstellung als dynamische Software-Produktlinie (SPL) überführt und hierauf neue Verfahren für familienbasierte Analysen anwendet. Dadurch können Gemeinsamkeiten zwischen den jeweiligen Varianten im Rahmen der Analysen wiederverwendet werden. Für beide Probleme konnte im Projekt eine gemeinsame Lösung entwickelt werden. Die temporäre Überführung der Modellvarianten in eine dynamische SPL ist überraschenderweise auch beim Reengineering der einzig sinnvolle Ansatz. Zentral für die Lösung ist eine Standard-Architektur in Form einer mehrphasigen Pipeline. Ausgangspunkt sind n gegebene Modellvarianten. In diesen werden mit einem n-Wege-Matcher korrespondierende Modellelemente bestimmt. Unter bestimmten Bedingungen, die in einer eigenen Phase überprüft und sichergestellt werden, können korrespondierende Modellelemente zu einem einzigen Modellelement zusammengefaßt werden. Ergebnis hiervon ist eine statische SPL. Diese SPL wird dann in eine dynamische SPL transformiert: Modellanteile, die nicht in allen Modellvarianten auftreten, werden durch Auswahlmechanismen der jeweiligen Modellierungssprache dynamisch ausgewählt. Die eigentliche Konsolidierung findet am Ende mit Hilfe sogenannte struktureller Refactorings statt. Die Konsolidierungspipeline wurde für Kontrollflußautomaten und für Klassendiagramme komplett realisiert, sie ist an weitere Modelltypen anpaßbar. Die Wirksamkeit der Konsolidierung wurde empirisch mit Kontrollflußautomaten nachgewiesen: das so ermöglichte familienbasierte Testen der Kontrollflußautomaten erwies sich als wesentlich weniger aufwendig als das sonst notwendige Testen der einzelnen Modellvarianten.
Projektbezogene Publikationen (Auswahl)
- Automated N-way Program Merging for Facilitating Family-based Analyses of Variant-rich Software; ACM Trans. Softw. Eng. Methodol. 28(3): 13:1-13:59; 2019
Reuling, Dennis; Kelter, Udo; Bürdek, Johannes; Lochau, Malte
(Siehe online unter https://doi.org/10.1145/3313789) - FlexiPLE - A Tool for Flexible Binding Times in Annotated Model-Based SPLs; p. 57:1-57:4 in: Proc. 23rd Int. Systems and Software Product Line Conf. (SPLC’19), Paris, France. Sept 9-13, 2019, Volume B; ACM; 2019
Reuling, Dennis; Pietsch, Christopher; Kelter, Udo; Ohrndorf, Manuel
(Siehe online unter https://doi.org/10.1145/3307630.3342395) - From Imprecise N-Way Model Matching to Precise N-Way Model Merging; p.8:1-20 in: Proc. European Conf. Modelling Foundations and Applications (ECMFA 2019); Journal of Object Technology 18:2; 2019
Reuling, Dennis; Lochau, Malte; Kelter, Udo
(Siehe online unter https://doi.org/10.5381/jot.2019.18.2.a8) - Towards projectional editing for model-based SPLs; p.25:1-25:10 in: Proc. 14th Int. Working Conf. on Variability Modelling of Software-intensive Systems (VaMoS 2020), Magdeburg, February 5-7, 2020; ACM; 2020
Reuling, Dennis; Pietsch, Christopher; Kelter, Udo; Kehrer, Timo
(Siehe online unter https://doi.org/10.1145/3377024.3377030)