元对象机制

元对象机制（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： 
 EMOF（基本MOF）
 CMOF（完全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节中定义。

相关条目 
 模型驱动架构
 模型驱动工程
 统一建模语言

参考资料

计算机语言
建模语言
软件工程
数据建模
ISO