Meta-Object Facility
From Free net encyclopedia
MOF, the Meta-Object Facility, is an Object Management Group (OMG) standard for Model Driven Engineering. MOF originated in the Unified Modeling Language (UML); the OMG was in need of a Meta-Modeling architecture to define the UML. MOF is designed as a four-layered architecture. It provides a meta-meta model at the top layer, aka the M3 layer. This M3-model is the language used by MOF to build meta-models, called M2-models. The most prominent example of a Layer 2 MOF model is the UML meta-model, the model that describes the UML itself. These M2-models describe elements of the M1-layer, and thus M1-models. These would be, for example, models written in UML. The last layer is the M0-layer or data layer. It is used to describe application data, and are thus instances of M1-models.
Beyond the M3-model, MOF describes the means to create and manipulate (meta-)models by defining CORBA interfaces that describe those operations. Because of the similarities between the MOF M3-model and UML structure models, MOF meta-models are usually modeled as UML class diagrams. A supporting standard of MOF is XMI, which defines an XML-based exchange format for models on the M3-, M2-, or M1-Layer.
MOF is a closed meta-modelling architecture; it defines an M3-model, which conforms to itself. MOF is a strict meta-modelling architecture; every model element on every layer is strictly in correspondence with a model element of the layer above. MOF only provides a means to define the structure, or abstract syntax of a language or of data.
Simplified, MOF uses the notion of MOF::Classes (not to be confused with UML::Classes), as known from object orientation, to define concepts (model elements) on a metalayer. These classes (concepts) can then be instantiated through objects (instances) of the model layer below. Due to the fact that an element on the M2 layer is an object (instance of an M3 model element) as well as a class (it is an M2 layer concept) the notion of a clabject is used.
Another related standard is OCL, which describes a formal language that can be used to define model constraints by means of predicate logic.
It is now an international standard:
See also
- Meta-Modeling
- Domain Specific Language
- Model Driven Architecture
- Model Driven Engineering
- SPEM
- Unified Modeling Language
- CWM
- XMI
- QVT