12.3 Prolies
12.3.1 概要
本节描述元类可以被扩展以适应不同目标的能力。这包括对UML元模型进行裁减以用于不同平台(例如J2EE或.NET)或领域(例如实时或面向服务架构)的能力。本节与OMG MOF是一致的。
12.3.1.1 相比元模型、MOF和UML,Profiles的定位
UML在OMG的建模规范中的不同元层上都被复用。例如,MOF使用它来提供元模型建模能力。本节讨论的用例差不多对应于MOF的元元层,这比超结构规范的其它部分高一层。为此,该参考模型必须被定义为UML(遵照它使用MOF的定义)的一个实例。因此,当定义一个UML Profile时,该Profile的stereotypes被定义为在UML元模型(XMI的序列化可参考附录E)的规范化版本内扩展UML类。
Profiles不是一阶扩展结构(即,它不允许创建新的元模型)。相反,Profiles的目的是为使用特定领域、平台或方法相关的构造块来适配已有元模型提供一个直接的机制。每个这样的适配都组织到一个Profile中。使用Profile不能删除UML中已有的约束,但是可以增加Profile特定的新约束。本章节介绍Profiles的内在约束,除此之外没有其它方式可以限定元模型被定制的方法。
一阶扩展能力由MOF来处理,MOF中的元模型层没有任何限制;可以按序增加子类和关联。
通常扩展UML具有如下原因:
- 提供一个平台或领域特定的术语(例如,EJB术语,像Home接口、EJB,以及Archives);
- 为没有一个表示法的构造块(例如动作)提供一个语法;
- 为已存在的符号提供一个不同的表示法(例如,使用一个计算机图片而不是一个普通节点的图片来表示一个网络中的计算机);
- 为UML或特定的元类增加额外语义;
- 增加UML中没有的类型(例如,定义一个定时器、时钟或持续的时间);
- 增加限制UML构造块如何被使用的约束(例如,不允许多继承);
- 增加模型相互转换中可以使用的信息(例如模型到Java代码之间的映射规则)。
对于什么时候创建一个新的元模型、何时创建一个新的profile,或者何时同时创建两者(一个用于UML工具,另一个用于基于MOF的工具)没有简单的答案。