Detailseite
Projekt Druckansicht

Fragmentbasierte Konsolidierung von Modellvarianten

Antragsteller Professor Dr. Udo Kelter
Fachliche Zuordnung Softwaretechnik und Programmiersprachen
Förderung Förderung von 2017 bis 2021
Projektkennung Deutsche Forschungsgemeinschaft (DFG) - Projektnummer 330452222
 
Erstellungsjahr 2020

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)

 
 

Zusatzinformationen

Textvergrößerung und Kontrastanpassung