Modellgetriebene Entwicklung

Versionierung: Die Herausforderung bei der Modellierung

Seite: 2/2

Firmen zum Thema

Vergleichen von Modellen

Durch das Aufkommen der Modellierung und der modellgetriebenen Softwareentwicklung in den letzten Jahren werden Modelle nicht nur für Brainstorming und Analyse verwendet, sondern sind integraler Bestandteil in allen Stadien des Entwicklungsprozesses.

Diese Modelle setzt man meist unter Versionskontrolle, sie werden von einem Entwicklerteam parallel weiterentwickelt. Da dies mit herkömmlichen Werkzeugen ein sehr aufwendiger und mühsamer Prozess ist, wurde der Ruf der Industrie nach Werkzeugen für die Versionierung und parallele Entwicklung von Modellen immer lauter [1] [4].

Bildergalerie

Allerdings erwiesen sich die zeilen- und textbasierenden Ansätze, die sich für Source Code durchgesetzt haben, als nicht ausreichend. Vielmehr ermöglicht erst ein fein-granularer 3-Wege-Vergleichsalgorithmus, der die Graphenstruktur der Modelle berücksichtigt, einen genauen Vergleich zwischen zwei Modellen.

Erst dieser 3-Wege-Vergleich für Modelle, der die Basisversion berücksichtigt, erlaubt es, die Änderungen der jeweiligen Modellversionen so zu berechnen, dass sie der Benutzer nachvollziehen kann. Für jede Version ist dabei zu berechnen, welche Eigenschaft eines Modellelements sich verändert hat (Update), welches Element verschoben wurde (Move), welches hinzugekommen ist (Insert), referenziert wird (Use) oder gelöscht wurde (Delete).

Die Berechnung und Darstellung möglicher Konflikte zwischen zwei Versionen ist integraler Bestandteil eines Merge-Werkzeugs. Eine Kategorisierung der möglichen Konflikte ist in Bild 2 (siehe Bildergalerie) dargestellt [5].

Darstellung von Änderungen und Konflikten

Konflikte zwischen zwei Versionen sind zur Erreichung einer konsolidierten Version aufzulösen. Um diesen Vorgang zu automatisieren, entstanden zwar die unterschiedlichsten Strategien, jedoch ist die manuelle Auflösung durch einen Benutzer oft unumgänglich. Dazu müssen Änderungen und Konflikte allerdings für den Benutzer leicht verständlich dargestellt werden.

Da Änderungen an grafischen Modellen meist auch auf Diagramm-Ebene erfolgen, ist es hier besonders wichtig, Änderungen auch im Diagramm darzustellen. Bild 3 (siehe Bildergalerie) zeigt einen Screenshot des LieberLieber Model Versioner, der die berechneten Unterschiede zweier Enterprise Architect Modelle fein-granular nebeneinander auflistet und diese auch im jeweiligen Diagramm visualisiert.

Eine der größten Herausforderungen bei diesem Vorgang ist die Performance (Geschwindigkeit und Ressourcenverbrauch), wenn etwa Modelle mit vielen Hunderttausenden Modellelementen und Konnektoren zu vergleichen sind. Gerade auch bei der Kombination mit einem Versionierungssystem wie Subversion oder Git ist daher zu gewährleisten, dass der Entwickler, der seine Änderungen in das Repository einchecken möchte, nicht in seiner täglichen Arbeit aufgehalten wird.

Darüber hinaus ist auf die Korrektheit des Modells bei der Zusammenführung paralleler Änderungen zu achten, damit es bei diesem komplexen Vorgang nicht zu Verfälschungen kommt. Unter allen Umständen ist zu vermeiden, dass sich das Modell nach der Zusammenführung im Modellierungseditor nicht mehr öffnen lässt. Obwohl semantische Inkonsistenzen oder optische Unschönheiten beim Layout zusammengeführter Diagramme auch ein wichtiges Thema darstellen, sollten sie in diesem Stadium nicht vorrangig behandelt werden.

Zusammenfassung

Versionierungssysteme sind heute bei der Entwicklung von Systemen oder auch Software nicht mehr wegzudenken. Jedoch reichen traditionelle zeilen- bzw. textbasierte Ansätze nicht aus, um auch für Modelle eine Unterstützung zu bieten. Vielmehr bedarf es eines Werkzeugs, das einen präzisen Vergleich zwischen (grafischen) Modellen zur Verfügung stellt und Konflikte feingranular berechnet, um verschiedene Versionen von Modellen effizient und nutzerfreundlich zu verwalten.

Darüber hinaus ist eine native Integration in bestehende Versionierungssysteme unabdingbar, um Modellierer in ihrer täglichen Arbeit zu unterstützen. Neben der Performance ist die nutzerfreundliche Darstellung von Diagrammänderungen sowie die Wahrung der Validität der Modelle ein wichtiger Bestandteil eines zeitgemäßen Modellversionierungssystems.

Literatur- und Quellenverzeichnis

[1] L. Bendix, P. Emanuelsson: Requirements for Practical Model Merge - An Industrial Perspective. MoDELS 2009: pp.167-180, 2009.

​[2] J. Estublier, D. Leblang, A. Hoek, R. Conradi, G. Clemm, W. Tichy, and D. Wiborg-Weber. Impact of software engineering research on the practice of software configuration management. ACM Transactions on Software Engineering and Methodology, vol. 14, no. 4, pp. 383-430, 2005.

​[3] Mens, Tom: A State-of-the-Art Survey on Software Merging. IEEE Transactions on Software Engineering, vol. 28, no. 5, pp. 449-462, 2002.

​[4] K. Wieland, G. Fitzpatrick, G. Kappel, M. Seidl, M. Wimmer: "Towards an Understanding of Requirements for Model Versioning Support"; International Journal of People-Oriented Programming (IJPOP), 2; 1 – 23, 2011.

​[5] K. Wieland, P. Langer, M. Seidl, M. Wimmer, G. Kappel: "Turning Conflicts into Collaboration - Concurrent Modeling in the Early Phases of Software Development"; Computer Supported Cooperative Work: The Journal of Collaborative Computing, 22 (2013), 2-3; 181 - 240.


* Dr. Konrad Wieland arbeitet seit 2012 bei LieberLieber als Consultant und Produktmanager im Bereich Modellierung und modellgetriebene Software- und Systementwicklung.

(ID:44106527)