The main concepts of MDE are beginning to be identified. A model represents a particular aspect of a system under construction, under operation or under maintenance. A model is written in the language of one specific metamodel. A metamodel is an explicit specification of abstraction, based on shared agreement. A metamodel acts as a filter to extract some relevant aspects from a system and to ignore all other details. A metametamodel defines a language to write metamodels. There are several possibilities to define a metametamodel. Usually the definition is reflexive, i.e. the metametamodel is self defined.
2. The MOF
A metametamodel is based at least on three concepts (entity, association, package) and a set of primitive types. The OMG MDA postulates the use of the MOF as the unique metametamodel for all IT-related purposes (closed world hypothesis). The MOF contains all universal features, i.e. all those that are not specific to a particular domain language. Among those features we find all that is necessary to build metamodels. Maintaining a specific tool for the MOF would be costly, so the MOF is aligned on the CORE part (infrastructure) of one of its specific metamodels: UML. UML thus plays a privileged role in the MDA architecture. As a consequence, any tool intended to create UML models can easily be adapted to create MOF metamodels. A metamodel is composed of three parts: terminological, assertional and pragmatics. The terminological part corresponds to UML class diagrams. The assertional part corresponds to OCL (Object Constraint Language) assertions that may decorate the various elements of the meta-model. The pragmatics corresponds to details that could not fit into the previous parts. Example of a pragmatic item is for example how to draw some particular concepts or relations. In UML 2.0 a tentative has been made in the presentation RFP to separate the content aspects from the presentation aspects in a given metamodel. This shows the tendency to reduce the pragmatic part by integrating the corresponding aspects into separate metamodels. Usually the pragmatics elements are expressed in natural language informal descriptions. A metamodel defines a specific domain language. It may be compared to the formal grammar of a programming language. In the case of UML the need to define variants of the base language was expressed. The UML meta-model was then equipped with extension mechanisms (stereotypes, tagged values, constraints) and this allows defining specialization of the basic meta-models as so called profiles. The MOF contains features to serialize models and metamodels in order to provide a standard external representation. The XMI standard defines the way serialization is performed. This is a way to exchange models between geographical locations, humans, computers or tools. When a tool reads a XMI serialized model (a UML model for example), it needs to check the version of the metamodel used and also the version of the XMI applied scheme.