The Meta-Object Facility (MOF) is an Object Management Group (OMG) standard developed as a meta-modeling architecture to define the UML, and so provides a means to define the structure or abstract syntax of a language or of data. The MOF is designed as a four-layered architecture; being a closed, strict meta-modeling architecture, every model element on every layer is strictly an instance of a model element of the layer above.
Simplified, the MOF uses Classes to define concepts (model elements) on a meta-layer. These Classes (concepts) can then be instantiated through objects (instances) of the model layer below. Because an element on the M2 layer is an object (instance of an M3 model element) as well as a Class (an M2 layer concept) the notion of a clabject is used - a merge of the words Class and Object.
Because of the similarities between the MOF model and UML structure models, the MOF meta-models are usually modeled as UML Class diagrams. You can also use the 'Metamodel' page of the Diagram Toolbox (click on the 'Hamburger' icon and select 'Metamodel') to create MOF model elements and connectors.
The layered architecture of the Meta Object Facility is illustrated in this diagram.
- A supporting standard of MOF is XMI, which defines an XML-based exchange format
- From Enterprise Architect, you can export Packages to XMI under the MOF 1.3 or MOF 1.4 XMI file specifications
- A related standard is the Object Constraint Language (OCL), which describes a formal language that can be used to define model constraints by means of predicate logic; OCL makes a MOF model more precise by associating assertions with its meta-elements