SuperMod – Versionskontrolle und Softwareproduktlinien in der modellgetriebenen Softwareentwicklung

Projektleiter: Prof. Dr. Bernhard Westfechtel
Ansprechpartner: Felix Schwägerl M. Sc.

Projektstart: 2015 Geldgeber: Landesmittel

Software Engineering hat seine wachsende Bedeutung vor allem einer Fülle von Unterdisziplinen zu verdanken, die auf die Verbesserung der Qualität sowohl der Softwareentwicklung als auch der entstehenden Software selbst abzielen. Zwei dieser Disziplinen sind Versionskontrolle (VK) und Softwareproduktlinienentwicklung (SPLE), die sich mit der Kontrolle von zeitlicher bzw. räumlicher Variabilität befassen. Obwohl die Integration von Ansätzen zur zeitlichen und räumlichen Versionierung zunächst vielversprechend klingt, wurde sie bisher wenig erforscht. Der Hauptgrund hierfür ist die schwer zu überschauende Komplexität, der der Benutzer ausgesetzt ist, wenn es darum geht, Softwareinkrementen ihre zugehörigen logischen Varianten zuzuordnen.

SuperMod-logo-final

Der Forschungsprototyp SuperMod (Superimposition von Modellen) zielt auf eine integrierte Lösung ab. Durch den Einsatz von Modellen wird der Abstraktionsgrad gesteigert; die angesprochene Komplexität wird dem Benutzer durch die Automatisierung eines großen Teils des Versionsmanagements abgenommen. Das Werkzeug wurde modellgetrieben entwickelt und spricht seinerseits primär modellgetriebene Projekte an, ist jedoch auch auf Nicht-Modell-Artefakte wie Text- oder XML-Dateien anwendbar. Das Eclipse Modeling Framework (EMF) bildet den technologischen Unterbau des Werkzeugs, das sich daher nahtlos in die Entwicklungsumgebung Eclipse integriert.

Die Benutzerschnittstelle orientiert sich insofern an Versionskontroll-Metaphern als sie dem wohlbekannten Check-out/Modify/Commit-Paradigma folgt, um die Kommunikation zwischen einem lokalen Workspace und einem Repository zu realisieren. In letzterem wird die Gesamtheit aller verfügbaren Produktversionen abgelegt. Zusätzlich zur zeitlichen Abstraktion des Revisionsgraphen werden in SuperMod die aus dem SPLE-Kontext bekannten Featuremodelle verwendet, um logische Varianten und deren Beziehungen darzustellen. Um einzelne Produktvarianten zu beschreiben, werden wiederum Featurekonfigurationen verwendet, die die in den Featuremodellen definierte Variabilität binden. Ein typisches Softwareinkrement wird in drei Schritten entwickelt:

  1. Check-Out: Der/die Entwickler/-in gibt eine Featurekonfiguration an, die eine bestimmte Version beschreibt, welche im Folgenden im Workspace verfügbar ist – die sogenannte Choice.
  2. Modify: Im Workspace kann der/die Entwickler/-in das ausgecheckte Projekt nun mit einem beliebigen Modell- oder Nicht-Modell-Editor weiterentwickeln.
  3. Commit: Um die durchgeführten Änderungen nun für weitere verwandte Varianten sichtbar zu machen, muss der/die Entwickler-/in nun eine sogenannte Ambition angeben – eine partielle Featurekonfiguration, die den logischen Gültigkeitsbereich der Änderung beschreibt. Die Änderungen werden automatisch in das Repository übertragen.

Folgendes Beispiel illustriert diese Vorgehensweise: Zunächst wird eine bestimmte Version eines Klassendiagramms für Graphen ausgescheckt, ein gerichteter gewichteter Graph. Im Anschluss wird das Feature „colored“ (gefärbte Graphen) im Featuremodell definiert und im Klassendiagramm umgesetzt. Zum Schluss werden diese Änderungen unter einer Featurekonfiguration übertragen, die die Änderungen mit dem Feature „colored“ verknüpft. Infolgedessen werden die erbrachten Änderungen nur für Varianten gültig sein, die das Feature „colored“ enthalten.

supermod

Im Verborgenen werden Versionskontroll- und SPLE-Konzepte auf Aussagenlogik abgebildet. Dies ermöglicht eine wohldefinierte Prüfung von Workspace-Konsistenzbedingungen. Beispielsweise stellen aussagenlogische Bedingungen im Hintergrund sicher, dass die Menge von Versionen, die als Ambition angegeben wird, mit der zuvor angegebenen Choice konsistent bleibt.

Darüberhinaus ermöglicht SuperMod kollaboratives SPLE, indem es die Synchronisations-Operationen Push und Pull zur Verfügung stellt, die Änderungen innerhalb meherer Kopien eines Repositorys abgleichen. Die Synchronisation wird von einem auf einem zentralen Server liegenden Repository durchgeführt. SuperMod’s Server-Komponente wurde als REST-Webservice implementiert, wobei das Kommunikationsprotokoll HTTP verwendet wird.

Der beschriebene Ansatz unterscheidet sich in einigen Punkten vom Stand der Forschung in SPLE: Zunächst steht SuperMod für eine iterative Entwicklungsweise, wohingegen traditionelle SPLE-Ansätze die Entwicklung strikt in die beiden Phasen Domänenentwicklung und Anwendungsentwicklung trennen. Zweitens arbeitet der/die Entwickler-/in stets in einer Einzelvariantensicht, während von der aktuellen Änderung unabhängige Varianten ausgeblendet werden. Daraus resultieren zwei weitere Vorteile: Werkzeugunabhängigkeit und uneingeschränkte Variabilität.

Der Prototyp SuperMod befindet sich derzeit in Entwicklung und wird als Eclipse-Plugin zur Verfügung gestellt. Aktuell gibt es Einschränkungen in Bezug die Unterstützung von XML-Dateien sowie auf die Granularität der Konfiktauflösung im Produktraum. Ziel von zukünftigen Arbeiten ist, diese Einschränkungen aufzuheben.

Links

Update-Site (Eclipse Modeling Kepler or higher): http://btn1x4.inf.uni-bayreuth.de/supermod/update

Screencasts:  http://btn1x4.inf.uni-bayreuth.de/supermod/screencasts

Publikationen: (mehr Details finden Sie auf unserer Publikationsseite: http://btn1x4.inf.uni-bayreuth.de/publications/content/AI1Publications.html )

  • Felix Schwägerl and Bernhard Westfechtel:
    SuperMod: Tool Support for Collaborative Filtered Model-Driven Software Product Line Engineering
    in: Proceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering (ASE 2016).
  • Felix Schwägerl and Bernhard Westfechtel:
    Collaborative and Distributed Management of Versioned Model-driven Software Product Lines
    in: Proceedings of the 11th International Conference on Software Paradigm Trends (ICSOFT-PT 2016).
  • Felix Schwägerl, Thomas Buchmann and Bernhard Westfechtel:
    Filtered Model-Driven Product Line Engineering with SuperMod: The Home Automation Case
    in: Communications in Computer and Information Science (CCIS), Volume 586.
  • Felix Schwägerl, Thomas Buchmann, Sabrina Uhrig and Bernhard Westfechtel:
    Realizing a Conceptual Framework to Integrate Model-Driven Engineering, Software Product Line Engineering, and Software Configuration Management
    in: Communications in Computer and Information Science (CCIS), Volume 580.
  • Felix Schwägerl, Thomas Buchmann, Sabrina Uhrig and Bernhard Westfechtel: 
    Towards the Integration of Model-Driven Engineering, Software Product Line Engineering, and Software Configuration Management
    in: Proceedings of the 3rd International Conference on Model-Driven Engineering and Software Development (MODELSWARD 2015).
  • Felix Schwägerl, Thomas Buchmann and Bernhard Westfechtel:
    SuperMod - A Model-Driven Tool that Combines Version Control and Software Product Line Engineering
    in: Proceedings of the 10th International Conference on Software Paradigm Trends (ICSOFT-PT 2015).

Universität Bayreuth -