FAMILE - Features And Models In Lucid Evolution
Projektleiter: Prof. Dr. Bernhard Westfechtel
PD Dr. Thomas Buchmann
Ansprechpartner: PD Dr. Thomas Buchmann
Projektstart: 2012
Projektmitarbeiter:
Geldgeber: Landesmittel
Das FAMILE-Projekt widmet sich der modellgetriebenen Entwicklung von Software-Produktlinien. Die Werkzeugkette umfasst Werkzeuge, die beim Erzeugen und Verwalten von Feature-Modellen und -Konfigurationen nützlich sind (um die Variabilität innerhalb einer Software-Produktlinie zu erfassen). Außerdem können diese Features anschließend auf beliebige Ecore-basierte Domänenmodelle abgebildet werden. FAMILE bietet umfassende Unterstützung für die (Ko-)Evolution von Feature-, Mapping- und Domänenmodellen. Desweiteren bietet es Mechanismen, die die Wohlgeformtheit von konfigurierten Domänenmodellen sicherstellen.
Die Hauptkomponente von FAMILE ist der F2DMM-Editor (feature to domain mapping model), der fortgeschrittene Mapping-Konzepte unterstützt. Einerseits können Mappings (also Abbildungen zwischen Feature- und Domänen-Modell) in benutzerfreundlicher Weise definiert werden, etwa per Drag-And-Drop oder durch manuelle Eingabe eines sog. Feature-Ausdrucks, der sich auf Features aus dem Feature-Modell beziehen kann. Andererseits zeichnet sich der Editor durch die Unterstützung von Kardinalitäts-basierter Feature-Modellierung aus. Zu diesem Zweck werden adäquate Abbildungsvorschriften, etwa Attribut-Mappings und Kardinalitäts-Constraints, zur Verfügung gestellt.
Obwohl unser Ansatz im Grunde auf negativer Variabilität beruht (Artefakte, die in einer bestimmten Feature-Konfiguration nicht benötigt werden, werden herausgefiltert), können etwaige Beschränkungen der Variabilität, die vom Metamodell des Produkts eingeführt wurden, mit Hilfe von sog. Alternativen-Mappings aufgehoben werden. Zum Beispiel ist es möglich, einen alternativen Namen für eine UML-Klasse zu definieren, der für bestimmte Feature-Konfigurationen gültig wird. Auf diese Weise können Vorteile der positiven Variabilität zum Teil übertragen werden.
Um die Konsistenz von Produkten zu gewährleisten, stellen wir eine textuelle Sprache namens SDIRL (structural dependency identification and repair language) zur Verfügung. Sie erlaubt nicht nur, Abhängigkeiten auf Metamodell-Ebene zu definieren, sondern dient darüberhinaus als Basis für automatisch abgeleitete Reparaturaktionen, die es erlauben, die Konsistenz von Produkten bevor deren Ableitung wiederherzustellen. Das Konzept der Propagations-Strategien stellt sicher, dass Mappings miteinander konsistent sind. Zusätzlich reduzieren sie die Anzahl nötiger Feature-Ausdrücke im Mapping-Modell erheblich.