I. Introduction
Model Driven Engineering (MDE) holds the promise of raising the level of abstraction when designing systems by promoting domain specific modelling languages, model transformation techniques and code generation. The use of models above the code level is promoted as a method for handling the complexity of software development. Although there is a large body of research and industrial successes, there are still challenging issues especially with respect to keeping code in sync with the models [1]–[3].