现在的位置: 首页 > 综合 > 正文

UML用例图中用例间关联关系

2018年03月19日 ⁄ 综合 ⁄ 共 1212字 ⁄ 字号 评论关闭

用例图中只有3种元素,分别是“角色(actor)”“用例(use
case)”
“关联(association)”

所谓的“角色”就是有哪些人员或者事物使用你的系统,就是做一些操作的物。
例如,你去ATM机器取钱。那么在这个用例图中,你和ATM机器就是“角色”

“用例”就是动作,操作,或者说是触发的事件。
  例如,上例所示,“输入密码”就是一个用例。

“关联”,就是“角色”和“用例”或者“角色“和”角色“之间的关系。
”关联“又分几种类型,下边一一介绍。

include / using
(包含):基用例与包含用例之间的关系。说明如何将包含用例中定义的行为插入基用例定义的行为中。基用例可以看到包含用例,并依赖于包含用例的执行结果。但是二者不能访问对方的属性。

extend(扩展):指扩展用例与基用例之间的关系,说明如何将扩展用例定义的行为插入基用例定义的行为序列。扩展用例以模块化的方法递增地修改基用例。

generalization(泛化):一个较广泛元素和一个较特殊元素之间的类元关系。较特殊元素完整地包含了较广泛元素,并含有更多信息。较特殊元素的实例可以用于任何使用较广泛元素的地方。

说明
其中include/using比较好理解,就是指把多个用例(UseCase A'加撇号表示是在提取公共部分之前的原UseCase ,
UseCase C')都使用到的相同的部分提取出来单独作为一个用例(UseCase B),然后再在分离之后的用例A,
C调用B,画上连线。

extend和generization容易搞混,至于原因可能在于Java语言中的继承(也就是UML中的泛化)使用了extends这个词的缘故。网
上有不少文章把generization直接当作了extend,对学习者造成了误导;也有文章说extend和generization是特殊和一般的
关系,下面我举个具体的例子来说明。

举例
从这幅图中,我们可以看到:
“包含”比较好理解,二者之间可以认为是一个"HAS A"的关系。
“泛化”是一般的“抽象和具体”之间的关系,子用例(较特殊用例)完整包含了父用例(较一般用例),是一个"IS
A"关系。“用邮件报告错误”和“用短信报告错误”都是一种具体的“报告错误”。
“扩展”的扩展用例和基用例之间既不是"HAS A"关系也不是"IS
A"关系,而是“以模块化的方法递增地修改基用例”,以提供一些附加的功能。

 

在以下几种情况下,可使用扩展用例:

  a.表明用例的某一部分是可选的系统行为(这样,您就可以将模型中的可选行为和必选行为分开);

  b.表明只在特定条件(如例外条件)下才执行的分支流;

  c.表明可能有一组行为段,其中的一个或多个段可以在基本用例中的扩展点处插入。所插入的行为段和插入的顺序取决于在执行基本用例时与主角进行的交互。

图2.3给出了一个扩展关系的例子,在还书的过程中,只有在例外条件(读者遗失书籍)的情况下,才会执行赔偿遗失书籍的分支流。

抱歉!评论已关闭.