Page 1 ?
UML及软件建模
主讲人, 李 唯
clx7000@163.com
Page 2 ?
第十三章 扩展组件
什么 是 扩展组件
扩展组件包含哪些内容
如何 应用 扩展组件
Page 3 ?
1、概述
UML提供了几种扩展机制,允许建模者在不用改变基
本建模语言的情况下做一些通用的扩展。这些扩展机制
已经被设计好,以便于在不需理解全部语义的情况下就
可以存储和使用。由于这个原因,扩展可以作为字符串
存储和使用。对不支持扩展机制的工具来说,扩展只是
一个字符串,它可以作为模型的一部分被导入、存储,
还可以被传递到其他工具。我们期望后端工具设计成能
够处理各种扩展,这些工具会为它们需要理解的扩展定
义特定的语法和语义。
Page 4 ?
这种扩展的方法很可能不能满足出现的多种要求,但是它
以一种易于实现的简单方式容纳建模者对 UML裁制的大部分
要求。
一定要记住扩展是违反 UML的标准形式的, 并且使用它们
会导致相互影响 。 在使用扩展机制之前, 建模者应该仔细权衡
它的好处和代价, 特别是当现有机制能够合理工作时 。 典型地
,扩展用于特定的应用域或编程环境, 但是它们导致了 UML
方言的出现, 包括所有方言的优点和缺点 。
扩展机制包括约束, 标记值和构造型 。
Page 5 ?
约束是用文字表达式表示的语义限制。每个表达式有一种
隐含的解释语言,这种语言可以是正式的数学符号,如 set-
theoretic表示符号;或是一种基于计算机的约束语言,如 OCL;或是一种编程语言,如 C++;或是伪代码或非正式的自然语
言。当然,如果这种语言是非正式的,那么它的解释也是非正
式的,并且要由人来解释。即使约束由一种正式语言来表示,
也不意味着它自动为有效约束。
2、约束
Page 6 ?
约束可以表示不能用 UML表示法来表示的约束和关系。
当陈述全局条件或影响许多元素的条件时约束特别有用。
约束用大括弧内的字符串表达式表示。约束可以附加在表
元素、依赖关系,或注释上。下图表示了几种约束。
Page 7 ?
Page 8 ?
标记值是一对字符串 — 一个标记字符串和一个值字符串 — 存
储着有关元素的一些信息。标记值可以与任何独立元素相关
,包括模型元素和表达元素。标记是建模者想要记录的一些
特性的名字,而值是给定元素的特性的值。例如,标记可以
是 author,而值是对元素负责的人的名字,如 Charles
Babbage。
标记值可以用来存储元素的任意信息,对于存储项目管
理信息尤其有用的,如元素的创建日期、开发状态、截止日
期和测试状态。除了内部元模型属性名外,任何字符串可以
作为标记名(这是因为标记和属性在一起会被认为是一个元
素的属性并且可以被工具一起访问),而一些标记名已经被
预定义了。
3、标签值
Page 9 ?
标记值还提供了一种方式将独立于实现的附加信息与元素联系起
来。例如,代码生成器需要有关代码种类的附加信息以从模型中
生成代码。通常,有几种方式可以用来正确地实现模型,建模者
必须提供做出何种选择的指导。有些标记可以用做标志告诉代码
生成器使用哪种实现方式。其他标记可为加入工具使用,如项目
计划生成器和报表书写器。
标记值也可以用来存储有关构造型模型元素的信息。
标记值用字符串表示,字符串有标记名、等号和值。它们被规则
地放置在大括弧内,如图 下图所示。在图表中标记值经常被省略
,只显示在下拉表格中。
Page 10 ?
Page 11 ?
4,构造型
许多建模者希望为了一种特定的应用域裁制一种建模
语言,这带来一些风险,因为被裁制的语言不易普遍为人
理解,但人们仍然试图这么做。
构造型是在一个已定义的模型元素的基础上构造的一
种新的模型元素。构造型的信息内容和形式与已存在的基
本模型元素相同,但是含义和使用不同。例如,商业建模
领域的建模者希望将商业对象和商业过程作为特殊的建模
元素区别开来,这些元素的使用在特定的开发过程中是不
同的。它们可以被看作特殊的类 — 它们有属性和操作,但
是在它们与其他元素的关系上和它们的使用上有特殊的约
束。
Page 12 ?
构造型建立在已存在的模型元素基础上,构造型元素的
信息内容与已存在的模型元素相同。这样便可允许工具以相同
的方式存储和使用新元素和已存在的元素。构造型元素可以有
它自己的区别符号,并且这很容易由工具所支持。例如,一个

商业组织, 可以有一个看起来像一组人的图标。构造型也可以

一组适用于它的使用的约束。例如,一个, 商业组织, 可能只

与另一个, 商业组织,,而不能与任何其他类联合。不是所有

约束都能被多用途工具自动地确定,但是它们可以被用手动执
行或被理解构造型的加入工具确定。
Page 13 ?
构造型可以用标记值来存储不被基本模型元素所支持的附加
特性。
构造型用双尖括号内的文字字符串表示,它可以放在表示基
本模型元素的符号的里边或旁边,如下图所示。建模者也可以
为特殊的构造型创建一个符号,这个符号替代了原来的基本模
型元素的符号。
Page 14 ?
Page 15 ?
5、裁制 UML
约束的扩展机制、标记值和构造型使得为了特殊的应用域而
裁制 UML轮廓成为可能。并已经形成了几种轮廓,此外用户
还提出了其他。这种裁制建模语言的能力意味着应用域的用
户可以使建模语言适应应用域的需要,还能够共享在所有领
域中通用的概念。
Page 16 ?
6、扩展组件的应用实例
下图举例说明了约束、构造型,和标记值的使用。
对剧目类的约束保证了剧目具有唯一的名称。下图说明
了两个关联的异或约束,一个对象某一时刻只能具有两个关
联中的一个。用文字表达约束效果较好,但 UML的概念不直
接支持文字描述。
Page 17 ?
TicketdDB构件构造型表明这个是一个数据库构件,允
许省略该构件的接口说明,因为这个接口是所有数据库都支
持的通用接口。建模者可以增加新的构造型来表示专门的模
型元素。一个构造型可以带有多个约束、标记值或者代码生
成特性。如图所示,建模者可以为命名的构造型定义一个图
标,作为可视化的辅助工具。尽管如此,可以使用文字形式
说明。
Scheduling包中的标记值说明 Frank Martin要在年底世
纪前完成计划的制定。可以将任意信息作为标记值写于一个
模型元素中建模者选定的名字之下。使用文字有益于描述项
目管理和代码生成参数。大部分标记值保存为编辑工具中的
弹出信息,在正式打印出的图表中通常没有标记值。
Page 18 ?