用例的泛化,包含,扩展关系的比较

来源:互联网 发布:mac大写字母切换知乎 编辑:程序博客网 时间:2024/05/18 03:44
一般来说可以用is a和has a来判断使用哪种关系。泛化关系和扩展关系表示的是用例之间的is a关系,包含关系表示的是用例之间的has a关系。扩展关系和泛化关系相比,多了扩展点的概念,也就是说,一个扩展用例只能在基本用例的扩展点上进行扩展。

在扩展关系中,基本用例是一个well formed的用例,即是可以独立存在的用例。一个基本用例执行时,可以执行,也可以不执行扩展部分。

在包含关系中,基本用例可能是,也可能不是well formed。在执行基本用例时,一定会执行包含用例(inclusion use case)部分。

如果需要重复处理两个或多个用例时,可以考虑使用包含关系,实现一个基本用例对另一个用例的引用。
当处理正常行为的变型而且只是偶尔描述时,可以考虑只用泛化关系。

当描述正常行为的变型而且希望采用更多的控制方式时,可以在基本用例中设置扩展点,使用扩展关系。
扩展关系是UML中较难理解的一个概念,如果把扩展关系看作带有更多规则限制的泛化关系,则可以帮助理解。事实上,在UML specification 1.1版本以前,扩展关系就是泛化关系的版型表示的,在1.3版本后,扩展关系改为用依赖关系的版型表示。

在这里总结一下UML中关系(relationship),关联(association),泛化(generalization),依赖(dependency)这几个概念之间的区别和联系。

关系是模型元素之间具体的语义联系。关系可以分为关联,泛化,依赖等几种,另外还有一个关系是实现。
关联是两个或多个类元(classifier)之间的关系,它描述了类元的实例之间的联系。这里所说的类元是一种建模元素,常见的类元包括类(class),参与者(actor),组件(component),数据类型(data type),接口(inferface),结点(node),信号(signal),子系统(subsystem),用例(use case)等,其中类是最常见的类元。

泛化关系表示的是两个类元之间的关系。这两个类元中,一个相对通用,一个相对特殊。相对特殊的类元的实例可以出现在相对通用的类元的实例能出现的任何地方,也就是说,相对特殊的类元在结构和行为上与相对通用的类元是一致的,但相对特殊的类元包含更多的信息。

依赖关系表示的是两个元素和元素集之间的一种关系,被依赖的元素称作目标元素,依赖元素称作源元素。当目标元素改变时,源元素也要做相应的改变。包含关系和扩展关系都属于依赖关系。