UML扩展机制

 为了避免UML语言整体的复杂性,UML没有吸收所以的面向对象的建模机制和技术而是设计了扩展机制,通过扩展机制用户可以定义使用自己的元素。在前边介绍UML构成的时候,提到了UML的扩展机制(extensibility mechanism):版型(stereotype)、标记值(tagged value)和约束(constraint)。在很多情况下我们利用UML的版型这种机制对UML进行扩展,使其能够应用到更广泛的领域。 
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语言、伪代码或自然语言。如果这种语言是非正式的,那么它的解释也是非正式的,并且要由人来解释。即使约束由一种正式语言来表示,也不意味着它自动为有效约束。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/royal_coffee/archive/2007/01/28/1496318.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值