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 数据建模

我们在进行数据建模时经常使用的建模工具是ERWinPower DesignerERStudio等。既然UML功能强大使用UML可以进行数据建模吗?当然可以,此时我们需要UML的扩展机制。对于关系型数据库来说,可以用类图描述数据库模式,用类描述数据库表,用类的操作来描述触发器和存储过程。

进行数据库设计时有一些关键概念我们需要用UML来表示,他们是模式(schema)、主键、外键、域、关系、约束、索引、触发器、存储过程、视图等。从某种意义上说,使用UML进行数据库建模就是要确定如何使用UML中的元素来表示这些概念。同时考虑引用完整性、范式等要求。下面是使用版型来表示这些元素。

数据库中的概念

版型

对应UML元素

数据库

database

组件

模式

schema

table

视图

view

domain

索引

index

操作

主键

PK

操作

外键

FK

操作

唯一约束

Unique

操作

检查约束

check

操作

触发器

trigger

操作

存储过程

SP

操作

表之间非确定性关系

NonIdentifying

关联,聚合

表之间非确定性关系

Identifying

组合

 

1.2 Web建模

Web应用程序建模时需要利用UML的扩展机制对UML的建模元素进行扩展,对Web建模主要是利用了UML的版型这个扩展机制,在类和关联上定义一些版型以解决Web应用系统建模的问题。Jim Conallen提出的扩展方法影响比较大,称为WAEWeb application extension for UML)。WAE定义了一些常见的Web建模元素的版型,但他并没有也不可能预先定义所有的版型,如果我们在开发中遇到WAE没有提供的版型,完全可以根据UML的扩展机制定义自己的版型。

1.3 业务建模

UML进行业务建模需要对UML做一些扩展,可以通过在UML的核心建模元素上定义版型来满足业务建模的需要。目前用的比较多的是ErikssonPenker定义的一些版型称为ErikssonPenker业务扩展。ErikssonPenker扩展方法主要是利用UML的扩展机制对UML的核心元素进行扩展,这些扩展可分为几个方面的内容:业务过程方面的元素、业务资源方面的元素、业务规则方面的元素、业务目标方面的元素以及其他一些元素。

2.         标记值

标记值是一对字符串包括标记字符串和值字符串也就是一个键值对,它存储着有关元素的一些信息。标记值可以与任何元素相关联,包括模型元素和表达元素。标记表示建模者想要记录的名字,值是给定元素的值。通常使用类似下面的方式表示:

Name=Tom”}

如果标记是个布尔类型,可以省略其值,默认为真。除了布尔类型以外其它的类型都必须明确写出值。

 

3.         约束

约束是用文字表达式表示的语义限制,它应用于元素。约束显示在{}内,可以直接放在图中或者独立出来。约束可以是UML预定义的,也可以之自定义的。描述约束的语言可以是正式的数学符号OCL语言、伪代码或自然语言。如果这种语言是非正式的,那么它的解释也是非正式的,并且要由人来解释。即使约束由一种正式语言来表示,也不意味着它自动为有效约束。

 

原文地址:https://www.cnblogs.com/hobe/p/258687.html