Die modellgetriebene Softwareentwicklung im Team erfordert entsprechende Technologien zur Analyse von Modelldifferenzen sowie zur Vereinigung verschiedener Modelle. Dieser Artikel stellt die in diesem Kontext von der ikv++ technologies ag entwickelten Konzepte und Losungen vor. Teamwork und modellgetriebene Softwareentwicklung Modellgetriebene Softwareentwicklungstechnologien vereinfachen und verbessern viele Aspekte der Softwareentwicklung. So konnen beispielsweise Modelltransformatoren den Output einer Entwicklungsphase automatisiert in den Input der nachsten Phase uberfuhren, und die automatische Erzeugung von Programmcode direkt aus detaillierten Implementierungsmodellen rationalisiert die Programmierarbeit. Dem gegenuber entstehen jedoch neue Probleme und Herausforderungen. So mussen die in der modellgetriebenen Softwareentwicklung verwendeten Werkzeuge unter anderem die Unterstutzung paralleler Entwicklung bieten. Die hierfur benotigten Modellvergleiche und Modellvereinigungen sind deutlich komplexer als die traditionellen, auf Programmcode operierenden Verfahren. Die ikv++ technologies ag ist in ihren Aktivitaten auf dem Gebiet der modellbasierten Optimierung und Automatisierung von Systementwicklungsprozessen diesen Herausforderungen durch die Entwicklung einer Technologie zur Versionierung von Modellelementen, zur Analyse von Unterschieden zwischen Modellen und zum automatisierten Zusammenfuhren von unterschiedlichen Modellen fruh begegnet. Diese Technologie basiert auf der Definition einer Modellierungssprache, dem sog. Metamodell. So konnen beispielsweise UMLModelle miteinander auf der Basis des UML-Metamodells und kundenspezifische Modelle auf der Basis des kundenspezifischen Metamodells verglichen und zusammengefuhrt werden. Diese Technologie wird bereits zur Unterstutzung von Teamarbeit, zum automatisierten Zusammenfuhren von Modellen nach Modelltransformationen sowie fur das Importieren von Modellteilen in andere Modelle praktisch in Kundenprojekten eingesetzt. Im Folgenden werden die benotigten Vorraussetzungen sowie die Funktionen des von der ikv++ technologies ag entwickelte Ansatzes am Beispiel eines exemplarischen Werkzeugs zur Differenzanalyse und zur Vereinigung von Modellen erlautert. Die hier beschriebene Technologie ist Teil der medini Basistechnologie der ikv. Grundlagen und Prozesse Der Prozess des Zusammenfuhrens zweier verschiedener Modellversionen kann in drei grundsatzliche Schritte unterteilt werden: Zuerst mussen die Unterschiede zwischen den beiden beteiligten Modellen festgestellt werden, einschlieslich eventueller Konflikte. Dafur mussen die Modelle aus dem Dateisystem oder einer eventuell vorhandenen Versionsverwaltung importiert werden. Im Anschluss daran ist ein Zielmodell zu erzeugen, welches alle benotigten Elemente der Ursprungsmodelle enthalt und dabei die aufgetretenen Konflikte bestmoglich lost. Dieses Zielmodell wird im letzten Schritt wieder im Dateisystem 1 Unter http://www.ikv.de/index.php?option=com_content&task=view&id=4 9&Itemid=74&limit=1&limitstart=1 sind zwei Demonstrationsvideos verfugbar, welche die hier beschriebene Technologie zum Modellvergleich und zum Zusammenfuhren von Modellen am Beispiel von medini component modeler naher bringen. bzw. der Versionsverwaltung abgelegt, von wo aus es weiterbearbeitet werden kann. Die entsprechende ikv Technologie basiert zum einen auf der Definition von Modelldifferenzen im Kontext von Metamodellen, zum anderen auf einigen Grundvoraussetzungen. Definition von Modelldifferenzen Im gegebenen Kontext gelten folgende (vereinfachte) Definitionen: Die kleinsten als Differenz zu betrachtenden Einheiten sind die Eigenschaften der Objekte (Attributwerte und Referenzen auf andere Objekte, wie im MOF Standard beschrieben). Ein Metaobjekt (Element des Metamodells) kann sog. Referenzen definieren. Zwei solche Referenzen sind unterschiedlich, wenn sie unterschiedliche Objekte referenzieren und/oder unterschiedliche Vielfachheiten besitzen, und/oder wenn im Falle von Listen die Elemente anderes geordnet sind. Zwei Modellelemente sind unterschiedlich, wenn ihre Eigenschaften (Attribute/Referenzen) unterschiedlich sind, oder wenn ihre eindeutige Identifikation (im Falle von medini base Technologie eine eindeutige UUID) unterschiedlich ist. Basierend auf diesem intuitiv verstandlichen Differenzkonzept kann medini Modellunterschiede erkennen und auswerten. Grundvoraussetzungen Modellelemente werden auf Basis ihrer UUID verglichen. Daher gehen wir davon aus, dass zunachst eine initiale Version des Modells erzeugt und diese dann an die beteiligten Modellierer weitergegeben wird. Somit konnen Anderungen erkannt und bei der Differenzanalyse korrekt ausgewertet werden. Weiterhin werden alle am Prozess beteiligten Modelle in einem versionierten medini Repository abgelegt. Dieses Repository unterstutzt zum einen die Teamarbeit in verschiedenen Entwicklungszweigen, zum anderen bietet es die entsprechenden Schnittstellen, um Modelle auszulesen und deren Elemente zu traversieren. 2 Siehe „Meta Object Facility Specification Version 1.4“ (Document ptc/02-04-03) unter http://www.omg.org/docs Eine grose Rolle beim Ablauf des Vergleichsalgorithmus spielt auch das Wissen um das den Modellen zugrundeliegende Metamodell, beispielsweise zur Auswertung der Hierarchie der Modellelemente. Modellvergleich und Modellvereinigung mit medini Auf Grundlage der gegebenen Definitionen und Grundvoraussetzungen kann man nun mit Hilfe von medini den oben genannten dreistufigen Modellvergleichsund Modellvereinigungsprozess durchfuhren. Das Werkzeug unterstutzt dabei durch folgende Funktionen: Laden der beiden ausgewahlten Modellversionen aus einem medini Repository und Umsetzung in eine interne Reprasentation Berechnung der Differenzen auf Basis der Differenzdefinition, Anzeige der vollstandigen Modelle in einer Baumstruktur sowie Hervorhebung aller Differenzen Navigation der Modelle und Differenzen in beiden Modellversionen auf Basis der internen Reprasentation Funktionen zum Kopieren und Loschen von Modellelementen innerhalb der grafischen Oberflache sowie Funktionen zur Markierung der im Folgenden zu vereinigenden Elemente Vereinigung der Modelle in einem Zielmodell und Speicherung im Versions-Repository Das unter www.ikv.de erhaltliche ausfuhrlichere White Paper beschreibt diese Funktionen im Detail.
[1]
C. Schneider.
CoObRA - a small step for development tools to collaborative environments
,
2004,
ICSE 2004.
[2]
Letizia Tanca,et al.
Logic Programming and Databases
,
1990,
Surveys in Computer Science.
[3]
Marco Sinnema,et al.
Configuration in industrial product families - the ConIPF methodology
,
2006
.
[4]
Jeffrey G. Gray,et al.
Model Comparison : A Key Challenge for Transformation Testing and Version Control in Model Driven Software Development
,
2004
.
[5]
Klaus Schmid,et al.
Configuration in Industrial Product Families - The ConIPF Methodology
,
2007,
Künstliche Intell..
[6]
Udo Kelter,et al.
A Generic Difference Algorithm for UML Models
,
2005,
Software Engineering.
[7]
Lothar Hotz,et al.
Configuration State of the Art and New Challenges
,
2003
.
[8]
Paul Clements,et al.
Software product lines - practices and patterns
,
2001,
SEI series in software engineering.
[9]
Ivan Porres,et al.
Difference and Union of Models
,
2003,
UML.
[10]
Sven Wenzel.
Automatic Detection of Incomplete Instances of Structural Patterns in UML Class Diagrams
,
2005,
Nord. J. Comput..
[11]
Jürgen Münch,et al.
Process Model Difference Analysis for Supporting Process Evolution
,
2006,
EuroSPI.
[12]
Uli Kutter,et al.
Literatur.
,
1941,
Subjekt.
[13]
René L. Krikhaar,et al.
Architecture analysis tools to support evolution of large industrial systems
,
2002,
International Conference on Software Maintenance, 2002. Proceedings..
[14]
J. Köbler,et al.
The Graph Isomorphism Problem: Its Structural Complexity
,
1993
.
[15]
Andreas Zeller,et al.
Mining Version Histories to Guide Software Changes
,
2004
.
[16]
Michele Lanza,et al.
Object-Oriented Reverse Engineering —- Coarse-grained, Fine-grained, and Evolutionary Software Visualization
,
2003
.
[17]
Dirk Ohst,et al.
Versionierungskonzepte mit Unterstützung für Differenz- und Mischwerkzeuge
,
2006
.