如果有人想把自己的头脑搞晕,最简单的方法是尝试理解 UML 元模型的建模方法(元模型建模被 OMG 用来描述 UML )
元建模( metamodelin )方法意味着 “ 一个元模型( metamodel )被用于定义模型( model ), UML 就是被元模型定义的模型之一 ” 。 这种方法被认为 “ 为大多数工具开发者和应用建模者提供了更直观和更实用的形式 ” 。 让我们来看看这种方法的一些细节。
UML 规范( UML specification )分为两卷 “UML 2: 基础设施 ( Infrastructure ) ” 和 “UML 2: 上层结构 ( Superstructure ) ” 。
UML Infrastructure 由两个包表示 : 基础设施库 ( Infrastructure Library ) 和基本类型 ( Primitive Types ) 。 Infrastructure Library 由两个包 Core 和 Profiles 组成 。
UML Infrastructure 的 Core 包是为高复用性而设计的,和其同一级别还有其他元模型 …… 既可以导入,也可以特化它的指定的元类( metaclass )。 MOF 、 UML 和 CWM 都依赖于公共的 Core 包。
基础架构库( Infrastructure Library )定义了实际的元类( metaclass ),这些元类可以被用于实例化 UML 、 MOF 、 CWM 的元素,以及基础架构库( Infrastructure Library )本身的元素。 在这方面,基础设施库( Infrastructure Library )被认为是自描述的,或者是可以反射的。 这里一个明显的问题是, UML Infrastructure 被用来定义 MOF ,而 MOF 又被用来定义 UML Superstructure 。 如果 Infrastructure 是可复用的和通用的,那么它应该与 UML 分开定义。
OMG 认为一个模型( model )可以被用作元模型( metamodel ) , 例如 , Infrastructure Library 有时被当作 meta-metamodel ( M3 ) 来使用,有时候又被当作 metamodel ( M2 ) 来使用。这样,它就同时作为 M2 和 M3 元级别( metalevel )被复用。
Meta Meta Models,UML and Profiles
OMG说:
元 - 元建模层( meta-metamodeling layer )构成了元建模( metamodeling )层次结构的基础。 这一层的主要职责是定义用于指定元模型( metamodel )的语言。 该层通常被称为 M3, MOF 是 meta-metamodel 的一个实例。 |
请继续阅读 : 在四层元模型( metamodel )层次结构中, MOF 通常被称为元 - 元模型( meta-metamodel ),尽管严格地说它是一个元模型( metamodel )。 Infrastructure Library 有时是元元模型( meta-metamodel ),有时是元模型( metamodel )。同样的, MOF 通常是元元模型( meta-metamodel ),而实际上它是元模型( metamodel ) !
MOF 不仅被用作 UML 的元元模型( meta-metamodel ),还被用作其他语言的元元模型,例如公共仓库元模型 ( CWM ) 。 上图中的 UML 包就是 UML Superstructure 元模型。 UML 被定义为一个基于 MOF 的模型( model )。 UML 的每个模型元素都是 MOF 中一个模型元素的实例。 一个模型( model )是一个元模型( metamodel )的实例。 UML 是一种语言规范 ( 元模型 ) ,用户可以使用 UML 建立自己的模型。
Infrastructure Library 的 Profiles 包具有允许从现有元模型( metamodel )中扩展元类( metaclass )以适应不同目的的机制,例如,修改 UML 元模型以便适应不同平台 ( 如 J2EE 或 .net) 或领域。 因此,它可以被考虑在与 MOF 相同的元元级别( meta-metalevel )上 —— 比 UML 元模型高一个级别。
UML Superstructure ——来自辅助构造( Auxiliary Constructs )的 Profiles 包合并了 Infrastructure Library 的 Profiles 包。一个 profile 是元模型( metamodel )的一种受限制的形式,他必须扩展一些引用的元模型(被从 MOF 创建,例如 UML 或 CWM )。
|