Tragatschnig, S. (2009). Ein Ansatz zur Auflösung von Konflikten bei der Versionierung von Modellen [Diploma Thesis, Technische Universität Wien]. reposiTUm. http://hdl.handle.net/20.500.12708/185677
In der modernen Softwareentwicklung werden Modelle nicht nur zur Dokumentation eingesetzt sondern auch zur Generierung von Quellcode. Syntaxfehler und Inkonsistenzen im Modell wirken sich daher direkt auf den Quellcode aus. Bearbeitet nur ein Entwickler ein Modell, so kann ein zumindest in sich konsistentes Modell durch die von der Entwicklungsumgebung zur Verfügung gestellten Werkzeuge gewährleistet werden. Arbeiten jedoch mehrere Entwickler kollaborativ an einem Modell, was der realistischere Fall ist, muss dieses unter Versionskontrolle (version control system, VCS) gestellt werden. Herkömmliche textbasierte Ansätze zur Versionierung sind für graphische Modelle jedoch nicht ausreichend. Die Verwendung von konventionellen VCS zur Versionierung von Modellen bringt zwei grundlegende Probleme mit sich. Das erste Problem bezieht sich auf die auftretenden Konflikte zwischen zwei Modellversionen, z.B. wenn mehrere Entwickler gleichzeitig dasselbe Modellelement ändern. Diese Konflikte müssen durch die Entwickler manuell aufgelöst werden, da für eine Zusammenführung der Änderungen keine Werkzeugunterstützung existiert. Treten bei der manuellen Zusammenführung der Änderungen Fehler auf, hat dies direkten Einfluss auf den generierten Quellcode. Das zweite Problem bezieht sich auf Information, die während der Konfliktauflösung entsteht, aber für zukünftige ähnliche Konfliktsituationen nicht gespeichert wird und daher nicht wiederverwendet werden kann. Diese Information könnte jedoch dem Entwickler bei späteren Konfliktauflösungen hilfreich sein. Außerdem könnten auf Basis dieser Information über mögliche Konfliktsituationen Entwurfsrichtlinien für die Erstellung eines Modells vorgegeben werden. Der in dieser Arbeit vorgestellte Ansatz zur Konfliktauflösung ermöglicht eine Beschreibung von Auflösungsstrategien für syntaktische und statisch semantische Konflikte. Zur Beschreibung der syntaktischen Konflikte und deren Auflösung wird eine modellbasierte, deskriptive Sprache vorgestellt. Zur Auflösung der statisch semantischen Konflikte werden Graph-Produktionsregeln bzw. Muster mittels OCL genutzt. Durch den modellbasierten Ansatz der Sprachdefinition für die Beschreibung der Auflösungsstrategien ist eine einfache und flexible Erweiterung bzw. Änderung der Strategien möglich. Die gemeinsame Struktur bildet die Grundlage für eine Protokollierung der Benutzerentscheidungen. Aus diesen können zusätzliche Informationen zur Unterstützung des Benutzers bei der Entscheidungsfindung der passenden Auflösungsstrategie gewonnen werden. Die Prüfung auf Einhaltung von Entwurfsrichtlinien ist ebenfalls möglich. Durch die erhöhte Qualität der zusammengeführten Modellversionen werden beim generierten Code Fehler zur Compile- und Laufzeit reduziert.
In modern software development, models are used for documentation and particularly for source code generation. Thus, syntax errors and inconsistencies within a model directly affect the generated source code. If only one developer is working on a model, it is easier to ensure the consistency of the model, because of tools provided by the development environment. If several developers are working collaboratively on one model, which is the more realistic case, a version control system (VCS) has to be used. Unfortunately, conventional textbased approaches for versioning are not sufficient for versioning models. Concerning conflict resolution two major drawbacks exist when using conventional VCSs. The first drawback concerns conflicts which arise between two versions of models when several developers are concurrently changing the same model elements. These conflicts must be resolved manually by the developer, because there is currently no tool support for merging conflicting models. Errors caused by the manual merge of the model versions have negative impact on the quality of the generated source code. The second drawback stems from lost information which is generated during conflict resolution and which may be of use in future conflicting situations. However, this information is currently not saved in VCS and so it gets lost. Thus, generated knowledge concerning conflict resolution cannot be reused and the usage of design guidelines for developing future models cannot be provided. Therefore, prior decisions of developers for conflict resolution cannot be reused and the usage of design guidelines for developing models cannot be verified. The approach introduced in this thesis facilitates the description of resolution strategies for syntactic and static semantic conflicts, which allows a semiautomatic resolution of conflicts. To describe syntactic conflicts and their resolutions, a model based, descriptive language is introduced. To resolve static semantic conflicts, graph transformation and patterns expressed in the Object Constraint Language(OCL) are employed. Because of the model based approach for describing resolution strategies, simple and flexible adaptations of the strategies are possible. The common structure of the resolution patterns facilitates the recording of the developer's decisions. Analysis of the recorded decisions provides further information which may support the developer finding the appropriate resolution strategy for a conflict and verifying the usage of design guidelines. Finally, the increased quality of the merged model versions reduces errors within the generated source code.
en
Additional information:
Abweichender Titel laut Übersetzung der Verfasserin/des Verfassers Zsfassung in engl. Sprache