Chapter written by P.-A. Muller,
IRISA / INRIA Rennes, France
Model transformation takes place in the context of model-driven engineering, which is an attempt to raise the level of abstraction of software application development, by using models built in terms close to the concepts of the problem domain at hand, rather than program instructions as found in general purpose third generation programming languages.
There are many reasons to transform a model. Typical examples include the translation from a given kind of model to another, the inclusion of platform details, or the merge from different aspects or points of view.
Automation is key to productivity, and model-driven engineering is fundamentally based on the automation of model transformation. This is a significant difference from earlier uses of modeling languages in which the primary purpose of models was to aid in understanding and communicating. In model-driven engineering, the models are no longer handed over to programmers to implement, but rather automatically transformed into executable code (including all the execution artifacts). Platform independence is achieved by making the transformations aware of the platform details, while keeping the models independent.
Model transformation is likely to play a key role in a wide spectrum of activities in the model-driven field. Figure 3.1 is shown ...