The difference between two data models in the evolution of an application can be expressed in terms of primitive edit operations such as addition or removal of elements. However, these low-level edit operations don’t express the intent of the evolution and are therefore not suitable as starting point for database migration. In this paper, which has been accepted for the SLE 2011 conference, an algorithm for reconstructing complex evolutions from a primitive evolution trace is presented.
Sander Vermolen, Guido Wachsmuth, Eelco Visser. Reconstructing Complex Metamodel Evolution. In Uwe Aßmann, Anthony M. Sloane, editors, Software Language Engineering, Fourth International Conference, SLE 2011, Braga, Portugal, July, 2011, Revised Selected Papers. Springer, 2011.
Abstract Metamodel evolution requires model migration. To correctly migrate models, evolution needs to be made explicit. Manually describing evolution is error-prone and redundant. Metamodel matching offers a solution by automatically detecting evolution, yet detects primitive evolution steps only. In practice, primitive evolution steps are jointly applied to form a complex evolution step, which has the same effect on a metamodel as the sum of its parts, yet generally has a different effect in migration. Detection of complex evolution is therefore needed. In this paper we present an approach to reconstructing complex evolution between two metamodel versions, using a matching result as input. It supports operator dependencies and mixed, overlapping and incorrectly ordered complex operator components. It also supports interference between operators, where the effect of one operator, is partially, or completely hidden from the target metamodel by other operators.