Verschmelzen von Modellen
Projektleiter: Prof. Dr. Bernhard Westfechtel
Projektstart: 2012 Geldgeber: Landesmittel
Projektbeschreibung:
Die Bedeutung von Modellen in der Softwareentwicklung steigt in den letzten Jahren kontinuierlich an. Während Modelle einst hauptsächlich der Dokumentation dienten und zusätzlich zum eigentlichen Softwareprojekt erzeugt und gepflegt wurden, verspricht der Paradigmenwechsel zur modellgetriebenen Softwareentwicklung eine Produktivitätssteigerung durch die Behandlung von Modellen als „Softwareartefakte erster Klasse“. Ziel ist die automatisiere Generierung von Quelltext aus Modellen, z.B. aus UML-Klassendiagrammen, um den Großteil der Implementierungsarbeit auf der Abstraktionsebene der Modelle zu bewerkstelligen. Eine Modellierungs-Plattform, die sich nicht nur im akademischen Bereich etabliert hat, ist das Eclipse Modeling Framework (EMF). Der Standard XMI (XML Metadata Interchange) beschreibt die vereinheitlichte Serialisierung von Modellen auf Basis von XML.
Versionskontrollsysteme sind seit längerem im Repertoire der meisten Softwareentwicklungs-Teams. Sie erlauben die Koexistenz verschiedener Versionen desselben Software-Artefakts und die Synchronisation in einem gemeinsamen Repository. Sobald jedoch zu einem Zeitpunkt mehrere Versionen desselben Software-Artefakts existieren, können Konflikte durch konkurrierende Änderungen auftreten. Dieses Probleme kann auf zwei verschiedene Arten gelöst werden: Pessimistische Strategien versuchen durch das Sperren von Resourcen im Vorhinein zu verhindern, dass dasselbe Software-Artefakt von unterschiedlichen Entwicklern modifiziert wird. Optimistische Strategien hingegen lassen zunächst konkurrierende Änderungen zu, müssen jedoch im Falle von Konflikten die Änderungen einer der beiden Alternativversionen verwerfen. Drei-Wege-Verschmelzungsverfahren ziehen neben den konkurrierenden Alternativversionen zusätzlich die letzte gemeinsame Vorgängerversion in Betracht, um möglichst viele Verschmelzungsentscheidungen automatisiert zu treffen. In einigen Fällen lassen sich Konflikte dennoch nur mit Hilfe von Benutzerinteraktion auflösen.
Gängige Versionskontrollsysteme sind auf die Versionierung von Quelltext angepasst und arbeiten mehrheitlich Zeilenbasiert. Mehrere Änderungen in derselben Zeile werden als atomar angesehen, genauso wie das Hinzufügen oder Löschen von Zeilen. Bei der Versionierung von Modellen kommt es durch diese Approximation jedoch zu unterschiedlichen Problemen: Zum einen liegt die zum sinnvollen Verschmelzen nötige Granularität von Modellen, die z.B. als XMI-Datei vorliegen, deutlich unter der von Quelltextzeilen. Zum anderen kommt es bei Modellen viel häufiger als bei Quelltext zur Schachtelung oder zur Referenzierung von zuvor deklarierten Elementen. Dies kann bei der Verwendung von gängigen Versionskontrollsystemen etwa zu Inkonsistenzen im Verschmelzungsergebnis führen, etwa wenn eine UML-Klasse in einer Version gelöscht und in der anderen um ein zusätzliches Attribut ergänzt wird. Drei-Wege-Verschmelzungsverfahren, die die kontextfreien und kontextsensitiven Eigenschaften von Modellen berücksichtigen, könnten beide Probleme lösen.
In diesem Projekt wird ein auf EMF-Modelle zugeschnittenes Drei-Wege-Verschmelzungsverfahren entwickelt. Die theoretischen Grundlagen des Verfahrens wurden bereits in vorausgehenden Publikationen untersucht. Hier wurden verschiedene Arten von kontextfreien und kontextsensitiven Verschmelzungskonflikten beschrieben, sowie ein Verfahren vorgeschlagen, welches ein konsistentes Verschmelzungsergebnis garantiert. Im Forschungsprototypen „BTMerge“ wird das untersuchte Verfahren zunächst auf Basis des EMF implementiert. Zusätzliches Augenmerk soll auf geeignete Strategien zur Identifikation sowie auf möglichst Effiziente Auflösung von Konflikten durch den Benutzer gelegt werden. Im Gegensatz zu existierenden Implementierungen soll das Verfahren rein zustandsbasiert arbeiten, d.h. nur die Zustände und nicht mögliche Operationsfolgen, die zu den Alternativversionen geführt haben, berücksichtigen. Dies macht das Verschmelzungswerkzeug unabhängig von der verwendeten Modellierungsumgebung. Ein weiteres Forschungsthema wird die Erkennung und Auflösung semantischer Konflikte sein, die sich je nach verwendetem Metamodell unterscheiden können. In einem UML-Klassendiagramm könnte ein solcher Konflikt etwa auftreten, wenn in zwei Alternativversionen entgegengesetzt gerichtete Vererbungsbeziehungen zwischen zwei Klassen eingefügt werden, sodass das Verschmelzungsergebnis einen Vererbungszyklus enthält. Schließlich soll der Forschungsprototyp in ein existierendes Versionskontrollsystem eingebettet oder um weitere Versionskontroll-Aspekte (Update, Commit, Branch, ...) ergänzt werden.
Der Forschungsprototyp „BTMerge“ befindet sich derzeit in Entwicklung. In regelmäßigen Abständen werden stabile Versionen auf der Eclipse-Update-Site zur Verfügung gestellt. Eine Installationsanleitung in Englischer Sprache liegt den Screencasts bei.
Links
- Eclipse Juno Modeling Update Site: http://btn1x4.inf.uni-bayreuth.de/btmerge/update
- Screencasts: http://btn1x4.inf.uni-bayreuth.de/btmerge/screencasts