1、什么是版型
版型是建模元素的一种类型,扩展UML的语义。版型必须以UML中已经定义的元素为基础,可以扩展语义但不能扩展已存在的元素结构。版型不是给元素增加新的属性或约束,而是直接在已有元素中增加新的语义,这种机制可以看作是已有元素进行专有化。版型的表示方法是在模型元素的旁边添加一个版型的名称,版型名称使用双括号括起来,《版型名》。版型是一种非常好的扩展机制他避免了UML语义过于复杂化,同时也使得UML能够适应各种需求。
通常人们在特定方法或特定的应用领域中使用UML时,会使用版型。有些概念、方法或特定领域特有标注UML不支持,用户就可以自定义。自定义版型时需要作以下工作:描述自定义版型的基础是哪个元素;对该元素语义的影响;给出使用该版型的例子。
利用UML的扩展机制对UML进行扩展是已经非常有意义的工作,有时我们需要使用UML来建模,但是UML本身提供的元素满足不了我们的需要,此时并不意味者UML没有用了,而是需要我们应用UML的扩展机制来实现自定义元素,从而实现建模。
1.1 数据建模
我们在进行数据建模时经常使用的建模工具是ERWin、Power Designer、ERStudio等。既然UML功能强大使用UML可以进行数据建模吗?当然可以,此时我们需要UML的扩展机制。对于关系型数据库来说,可以用类图描述数据库模式,用类描述数据库表,用类的操作来描述触发器和存储过程。
进行数据库设计时有一些关键概念我们需要用UML来表示,他们是模式(schema)、主键、外键、域、关系、约束、索引、触发器、存储过程、视图等。从某种意义上说,使用UML进行数据库建模就是要确定如何使用UML中的元素来表示这些概念。同时考虑引用完整性、范式等要求。下面是使用版型来表示这些元素。
数据库中的概念 | 版型 | 对应UML元素 |
数据库 | 《database》 | 组件 |
模式 | 《schema》 | 包 |
表 | 《table》 | 类 |
视图 | 《view》 | 类 |
域 | 《domain》 | 类 |
索引 | 《index》 | 操作 |
主键 | 《PK》 | 操作 |
外键 | 《FK》 | 操作 |
唯一约束 | 《Unique》 | 操作 |
检查约束 | 《check》 | 操作 |
触发器 | 《trigger》 | 操作 |
存储过程 | 《SP》 | 操作 |
表之间非确定性关系 | 《Non-Identifying》 | 关联,聚合 |
表之间非确定性关系 | 《Identifying》 | 组合 |
1.2 Web建模
对Web应用程序建模时需要利用UML的扩展机制对UML的建模元素进行扩展,对Web建模主要是利用了UML的版型这个扩展机制,在类和关联上定义一些版型以解决Web应用系统建模的问题。Jim Conallen提出的扩展方法影响比较大,称为WAE(Web application extension for UML)。WAE定义了一些常见的Web建模元素的版型,但他并没有也不可能预先定义所有的版型,如果我们在开发中遇到WAE没有提供的版型,完全可以根据UML的扩展机制定义自己的版型。
1.3 业务建模
用UML进行业务建模需要对UML做一些扩展,可以通过在UML的核心建模元素上定义版型来满足业务建模的需要。目前用的比较多的是Eriksson和Penker定义的一些版型称为Eriksson-Penker业务扩展。Eriksson-Penker扩展方法主要是利用UML的扩展机制对UML的核心元素进行扩展,这些扩展可分为几个方面的内容:业务过程方面的元素、业务资源方面的元素、业务规则方面的元素、业务目标方面的元素以及其他一些元素。
2、标记值
标记值是一对字符串包括标记字符串和值字符串也就是一个键值对,它存储着有关元素的一些信息。标记值可以与任何元素相关联,包括模型元素和表达元素。标记表示建模者想要记录的名字,值是给定元素的值。通常使用类似下面的方式表示:
{Name=“Tom”}
如果标记是个布尔类型,可以省略其值,默认为真。除了布尔类型以外其它的类型都必须明确写出值。
3、约束
约束是用文字表达式表示的语义限制,它应用于元素。约束显示在{}内,可以直接放在图中或者独立出来。约束可以是UML预定义的,也可以之自定义的。描述约束的语言可以是正式的数学符号、OCL语言、伪代码或自然语言。如果这种语言是非正式的,那么它的解释也是非正式的,并且要由人来解释。即使约束由一种正式语言来表示,也不意味着它自动为有效约束。