Meta-Object Facility |
MOF, the Meta-Object Facility, is an Object Management Group (OMG) standard. 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 is a model (or instance) of itself. MOF is a strict meta-modelling architecture; every model element on every layer is strictly an instance of a model element of the layer above. MOF only provides a means to define the structure, or abstract syntax of a languages or of data.
Simplified, MOF uses the notion of classes, as known from object orientation, to define concepts (model elements) on a meta-layer. 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. Clabject is a merge of the words class and object.
Another related standard is OCL, which describes a formal language that can be used to define model constraints by means of predicate logic.
= See also =
= External links =
|
|