Software Language Evolution

Sander Vermolen

Promotor: prof.dr. A. van Deursen (TUD)
Co-promotor: dr. E. Visser (TUD)
Technische Universiteit Delft
Date: 1 October, 2012.


Software increases in size and complexity. To cope with continuously increasing complexity and size of software, model driven software development (MDSD) proposes to use domain-specific models, which abstract away from information irrelevant to the context (or domain) of the software and thereby focus on capturing software definition or design in a concise and understandable manner. The structure of a model is defined by its metamodel. Hence, a meta model defines a set of models adhering the defined structure. This set is known as a metamodel’s extension. Inversely, every model in the extension conforms to the meta model.

As any other software artefact, models as well as metamodels tend to evolve. When metamodel evolution occurs, the evolution can either be backward compatible, in which case any existing model still conforms to the evolved meta model, or the evolution can break the conformance relation. When the latter happens, the models need to be adapted to remain usable. Avoiding model migration by downwards-compatible metamodel changes is often a poor solution, since it reduces the quality of the metamodel and thus the modeling language. Due to the size of models, or due to the number of models, manually adapting all models is generally infeasible. In practice, the process of model adaptation is therefore automated by automatic migration.

Developing a model migration is a tedious and error-prone task. When evolution occurs repeatedly, as is typically the case in software maintenance, the construction of migrations requires too much effort and becomes too much of a risk to remain feasible. Metamodel evolutions on the other hand are not single events, similar metamodel evolution steps reoccur across different meta models, or within a life time of the same metamodel. A similar metamodel evolution generally implies the need for a similar model migration. Hence we can couple a reoccurring evolution step to its required migration. We call this coupling a coupled operator. Application of a coupled operator persists the conformance relation. Given a set of coupled operators, we can evolve a metamodel and a set of conforming models in a process known as coupled evolution.

This dissertation focuses on various topics in the context of coupled evolution. It addresses common coupled evolution operators, reconstruction of evolution, a generalization of coupled evolution across application domains, application of coupled evolution to web application development and it provides a formalization of coupled evolution and its domain.