元对象机制

科技工作者之家 2020-11-17

元对象机制(MOF,Meta-Object Facility)起源于统一建模语言(UML)。对象管理机构(Object Management Group|OMG)需要一种元模型结构来定义UML。

概观开发MOF是为了提供一个用于CORBA体系结构的类型系统,一组模式,通过它们可以定义对象的结构,含义和行为,以及一组CORBA接口,通过这些接口可以创建,存储和操作这些模式。

MOF设计为四层架构。它在顶层提供了一个元元模型,称为M3层。这个M3模型是MOF用来构建元模型的语言,称为M2模型。第2层MOF模型最突出的例子是UML元模型,即描述UML本身的模型。这些M2模型描述了M1层的元素,因此描述了M1模型。例如,这些是用UML编写的模型。最后一层是M0层或数据层。它用于描述现实世界的对象。

除了M3模型之外,MOF还描述了通过定义描述这些操作的CORBA接口来创建和操作模型和元模型的方法。由于MOF M3模型和UML结构模型之间的相似性,MOF元模型通常被建模为UML类图。 MOF的支持标准是XMI,它为M3-,M2-或M1-层上的模型定义了基于XML的交换格式。

结构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节中定义。

元模型架构MOF是一个封闭的元模型架构;它定义了一个符合自身的M3模型。 MOF允许严格的元建模架构;每层上的每个模型元素严格对应于上面层的模型元素。 MOF仅提供定义语言或数据的结构或抽象语法的方法。为了定义元模型,MOF完全扮演EBNF用于定义编程语言语法的角色。 MOF是用于定义元模型的域特定语言(DSL),就像EBNF是用于定义语法的DSL一样。与EBNF类似,MOF可以在MOF中定义1。

简而言之,MOF使用MOF :: Classes的概念(不要与UML :: Classes混淆),如从面向对象中所知,来定义元层上的概念(模型元素)。 MOF可用于定义面向对象的元模型(例如,作为UML)以及非面向对象的元模型(作为Petri网或Web服务元模型)。

截至2006年5月,OMG已为MOF定义了两个合规点:

1、基本MOF的EMOF。

2、完整MOF的CMOF。

2006年6月,OMG发布了第三个变体SMOF(语义MOF)的提案请求。在Eclipse Modeling Framework中定义的变体ECore或多或少地与OMG的EMOF对齐。

另一个相关标准是OCL,它描述了一种可用于根据谓词逻辑定义模型约束的形式语言。

QVT引入了查询,查看和转换基于MOF的模型的方法,是一个非常重要的标准,于2005年获得批准。有关详细信息,请参阅模型转换语言。

国际标准MOF是一个国际标准:

MOF 2.4.2:ISO / IEC 19508:2014信息技术 - 对象管理组元对象设施(MOF)核心。

MOF 1.4.1:ISO / IEC 19502:2005信息技术 - 元对象设施(MOF)。

MOF可以被视为编写元模型的标准,例如为了模拟领域特定语言的抽象语法。 Kermeta是MOF的扩展,允许将可执行动作附加到EMOF元模型,因此可以对DSL操作语义进行建模并为其轻松获取解释器。

JMI定义了一个用于操作MOF模型的Java API。

不要将OMG的MOF与分布式管理任务组(DMTF)在公共信息模型(CIM)基础结构规范2.5.0版的第6节中定义的托管对象格式(MOF)相混淆。

本词条内容贡献者为:

王慧维 - 副研究员 - 西南大学

科技工作者之家

科技工作者之家APP是专注科技人才,知识分享与人才交流的服务平台。