Model-Driven Engineering (MDE) proposes an active use of models and transformations as central artifacts throughout the software life cycle in order to cope with the steadily increasing complexity of software systems. The models have to conform to their associated metamodels that, for a certain domain, define the concepts, their relationships as well as constraints among each other. Besides models, transformations between the models play a vital role to systematically transform and generate models, e.g., to create platform-specific models from platform-independent ones or to translate models into different domains. Together, metamodels, models, and transformations form a so called modeling ecosystem, comprising also other artifacts like editors, whereby metamodels play a central role all other artifacts depend on.
However, just like any other software artifact, also the artifacts of the modeling ecosystem are subject to constant evolution, e.g., due to changing requirements. In particular, metamodels can undergo changes that disrupt the conformance between the metamodel and all dependent artifacts, thus, having severe impact on the modeling ecosystem. Consequently, these dependent artifacts have to be migrated accordingly to (re-)conform to the new version of the metamodel, i.e., they have to co-evolve. In this context, it is of great importance that all instances of all kinds of dependent artifacts are migrated to restore the conformance of all artifacts in the ecosystem to the metamodel. However, migration shall not restore just conformance arbitrarily. Since there is often no single, unique way for artifact migration, in fact, different options respecting different intentions, e.g., preventing information loss, are possible. Thus, artifact migration needs to reflect the intention of the modeler when migrating the artifacts. In this context, it has to be ensured that the same intention is respected when migrating all dependent artifacts and this across different kinds of artifacts, thus, assuring a consistent co-evolution. Failing in doing so causes the modeling ecosystem to become inconsistent, hindering a systematic processing, e.g., since transformations that do not follow the intention of the modeler generate models not respecting this intention. Ultimately, manual intervention is required to fix this and to bring the ecosystem back into a consistent state.
Over the last years, several approaches for the migration of different kinds of dependent artifacts have been proposed, however, falling short in supporting co-evolution for all kinds of metamodel changes and dealing with possible alternative options during migration, as well as supporting a consistent migration across more than one kind of artifact. In more detail, current approaches lack assistance when dealing with all kinds of metamodel changes, since existing approaches support an incomplete change set, only, thus migration is only supported for changes in this set. Consequently, for the rest of the changes, migration has to be performed without any support, leading to unwanted user intervention during co-evolution, which is prone to errors. Although different migration options are possible, current approaches offer a single, fixed solution, only, leaving other possibilities unexplored, thus, overlooking potentially more appropriate solutions which might suit better. Since there might be different alternative options for migration for a change, inconsistencies within (intra-artifact inconsistencies) or between kinds of artifacts (inter-artifact inconsistencies) might arise not least since different artifact-specific approaches might migrate differently. Current approaches treat changes as monolithic units endangering intra-artifact consistency since migrations can not be reused for different changes, and mostly support one specific kind of artifact in isolation, only, compromising an intra-artifact consistent co-evolution.
To tackle the aforementioned problems, this thesis brings forward the following contributions: In order to support all different metamodel changes during co-evolution, as an initial first step, a complete but minimal set of metamodel changes has been elaborated as a basis for the identification and definition of potential migrations for each change of this set. For finding the migration best suitable for the modelers, an approach for the selection of migration options has been devised, thus, allowing an exploration of the solution space to find the most appropriate migration option for the given scenario. In order to support the modeler in consistently migrating different kinds of dependent artifacts, a framework ensuring intra- as well as inter-artifact consistency has been designed and implemented for models and transformations, being the most prominent dependent artifacts. Finally, these approaches have been elaborated on the basis of case-studies and experiments, demonstrating their strengths when dealing with different migration options on the one hand and consistency when migrating artifacts of the same or different kind on the other hand.