Recent years have seen the rise of another application area for metamodelling in software engineering. Initiated by OMG in terms of their Model-Driven Architecture (MDA) vision [21,27], it has broader application in what might be called “model-driven engineering” (MDE), “model-driven development” (MDD) or “model transformation”. We will use here MDE, the most generic of these various acronyms.
The vision is that high-level models will be created by humans and then transformed by machines, in several steps, until source code is reached; with the consequence that software developers will spend their time using transformation tools and writing transformation rules rather than writing code.
The underpinning idea of MDE is that we should move the focus of software development from coding to model building. Just as no-one (or almost no-one) codes in assembler languages these days but rather uses a high-level, language that is automatically transformed into object code, the future (it is said) should be that of models that are automatically compiled to object code with no manual interference. The automatic transformation of models, via a number of machine (not manual) steps, into object code requires significant formality. This formality, it is argued within the MDE community, can be supplied in the form of metamodels .
Metamodels underpin each element of the MDE strategy. Typically, it is envisaged that a series of models will be applied ...