Model Transformation: A Survey of the State of the Art 1
Rien ne se perd, rien ne se crée, tout se transforme. (Nothing is lost, nothing is created, everything is transformed) Antoine-Laurent de Lavoisier (1743-1794)
1.1. Model-driven engineering
Model-Driven Engineering (MDE) is an approach to software development where the principle artefacts are models (as opposed to source code). It is a natural next step in the evolution of software development to continue to raise the level of abstraction in order to tackle increasingly complex problems. The main goal is to reduce the accidental complexity [BRO 86] of software, caused by the technology, methods and programming languages used to develop software. Of course, the essential complexity that is inherent to the problem to be solved cannot be reduced, no matter which approach, technology or language is adopted.
The basic principle behind MDE is that everything is a model. As such, it provides a generic approach to deal with all possible software artefacts used and produced during the software development life-cycle (e.g. requirement specifications, analysis and design documents, test suites, source code, and so on). Even the languages used to specify the models can be considered as models too, which are referred to as metamodels.
The current state-of-the-practice of tool support for MDE is still in the round-trip engineering stage: the models and the code co-exist, and a change to either of the two artefacts requires ...