Scandinavian Network of Excellence
Software Configuration Management
Presenter: Antonio Martini
Title: Merge of models: an XMI approach
Time: Wednesday, August 25th, 2010, 13:00-13:45
Place: Lund Institute of Technology, Building E, room E:2116 - the department seminar room
Lately industries has been increasing the use of Model Driven Architecture, creating models to auto-generate code. Nevertheless, the environment is not yet mature enough to support adequately the parallel work of the developers, especially when they modify the same artifact simultaneously and they need to merge their changes, resolving possible conflicts. Moving from a code centric development strategy to a model centric one showed that former textual-based merge tools do not work appropriately with models.
Models are serialized using the standard XMI, a language which creates documents containing structured data: thus the comparison of text lines is not the best choice anymore. Newer model merge tools are not precise enough either. Moreover, all of them are oriented towards interactivity, which means that the developer has to follow the entire merge process, conflict by conflict, instead of creating an “ad hoc” solution for the whole set of connected changes.
In this thesis we analyze the feasibility of an environment independent process which is able to perform the merge of two modified XMI files produced throughout a simultaneous change of their common ancestor. We present a 5-step process and an algorithm which, produces a valid XMI file but only under certain restrictions, due to the inhomogeneity of the given XMI artifacts. The provided merge solution includes annotations, alternatives and warnings to represent all changes, conflicts, XMI syntax violations and some contex-related problems. We rely only on the information extracted from the syntax of XMI itself, without any additional information about model semantic. The output can be analyzed and elaborated subsequently by the developer or by further tools in order to provide the final merge.