元对象机制(Meta-Object Facility,简称MOF)起源于统一建模语言(UML)。对象管理机构(Object Management Group|OMG)需要一种元模型结构来定义UML。
MOF被设计为4层次的结构。位于顶部的是元元模型层,即M3层。M3模型是MOF创建元模型(被称为M2模型)的语言。M2模型最明显的例子是UML元模型,该模型描述UML。M2模型描述M1层以及M1层的要素,例如,UML模型。最后一层是M0层或数据层。它描述真实世界的物体。
除了M3模型,MOF还提供创建、操作模型、元模型的方法,通过定义CORBA接口描述这些操作。由于MOF M3模型和UML结构模型相似,MOF M3元模型通常建模为UML类图。MOF的支持标准是XMI,它定义一种基于XML的M3、M2、M1层模型交换格式。
MOF是一个封闭元模型结构,它定义描述自身的M3模型。MOF是严格的元模型架构,每一层的每个模型元素都严格对应的上层模型元素。MOF只提供定义结构或语言、数据的抽象语法的方法。定义元模型时,MOF如同EBNF层定义编程语言语法。MOF是用于定义元模型的域特定语言(DSL),就像EBNF定义语法的DSL。同样,MOF也可以在自身定义。
MOF使用MOF::Classes (不要与UML::Classes混淆)在元层上定义概念(模型元素),如同众所周知的面向对象。MOF可用于定义面向对象元模型(如UML)以及非面向对象元模型(如Petri网或Web服务元模型) 。
截至2006年5月,OMG定义了两种类型的MOF:
2006年6月,征求建议书定义了第三种:SMOF(语义MOF) 。
Eclipse Modeling Framework中定义的ECore或多或少向OMG的EMOF靠拢。
另一个相关的标准是OCL,一种用谓词逻辑定义模型的限制条件的正式语言。
一个非常重要的新标准是QVT,描述查询,视图和基于MOF的模型变换的方法(详情参见模型转换语言章节) 。
MOF现在是一个国际标准:ISO/IEC 19502:2005 Information technology—Meta Object Facility (MOF)
MOF可视为写元模型的标准,例如,建模领域专用语言的抽象语法。Kermeta扩展MOF,可以执行附在EMOF元模型的动作,从而可以建模DSL操作语义并很容易得到对它的解释。
JMI定义Java API,控制MOF模型.
OMG的MOF不能与托管对象格式(Managed Object Format)混为一谈,托管对象格式由分布式管理任务组(DMTF)在公共信息模型(CIM)基础规范 的第3节中定义。