0

用例图中包括三种元素,参与者,用例,它们之间的关系。下面说说参与者与用例之间,用例与用例之间都有哪些关系。

1.关联关系

        定义:参与者与用例之间通常用关联关系来描述。

        表示方法:带箭头的实线,箭头指向用例。

        如图所示:

 

 

2. 泛化关系

        定义:一个用例可以被特别列举为一个或多个子用例,这被称为用例泛化。

        泛化关系在类间也有。

        子用例从父用例处继承行为和属性,还可以添加行为或覆盖、改变已继承的行为。

        表示方法:带空心箭头的实线,箭头指向被泛化(被继承的用例,即父用例。PS:泛化关系的箭头不是指向被泛化,而是指向被继承。泛化和继承是不同的方向。泛化是从下到上的抽象过程,继承是从上到下,从一般到特殊的过程。)

        如图所示:

 

        机房收费系统中可以这样应用:

 

        当系统中具有一个或多个用例是一般用例的特化时,就使用用例泛化。

3.包含关系

        定义:其中一个用例(基础用例)的行为包含了另一个用例(包含用例)的行为。基础用例可以看到包含用例,并依赖于包含用例的执行结果。但是二者不能访问对方的属性。

        表示方法:虚线箭头+<<include>>字样,箭头指向被包含的用例。

        如图所示:

 

        使用情况:

            (1)如果两个以上用例有重复的功能,则可以将重复的功能分解到另一个用例中。其他用例可以和这个用例建立包含关系。

            (2)一个用例的功能太多时,可以用包含关系创建多个子用例。

 

 4.扩展关系(extend)

        定义:是把新行为插入到已有用例的方法。

       个人感觉可以叫做特殊情况处理。比如去食堂用饭卡打饭,绝大部分人是刷卡,拿饭,两个步骤就完成了。但是如果某个学生的饭卡里没钱了,假定不用现金或者借钱或者赊账等等其他的方式来打饭,而是必须用自己的饭卡来打饭。那么他就要先去给饭卡充值。“饭卡充值”就是“刷卡”的一个扩展用例。“饭卡充值”与“刷卡”就是扩展关系。

        表示方法:虚线箭头+<<extend>>字样,箭头指向被扩展的用例(即基础用例)。

       如图所示:

        作用:为处理异常或构建灵活系统框架提供了一种有效的方法。

对比:

        包含与扩展的区别。在扩展关系中,基础用例没有扩展也是完整的,而在包含关系中,基础用例依赖于包含用例的执行结果。

总结:

        所有的箭头指向都是“被”的一端。

        找关系,是一件挺复杂的事儿。从不同的角度看会有不同的结果。找到大前提,再理顺特定环境下的关系,会更加顺手。




扩展(extend): extend关系是对基用例的扩展,基用例是一个完整的用例,即使没有子用例的参与,也可以完成一个完整的功能。extend的基用例中将存在一个扩展点,只有当扩展点被激活时,子用例才会被执行。 extend关系在用例图中使用带箭头的虚线表示(在线上标注<<extend>>),箭头从子用例指向基用例。

包含(include): include为包含关系,当两个或多个用例中共用一组相同的动作,这时可以将这组相同的动作抽出来作为一个独立的子用例,供多个基用例所共享。因为子用例被抽出,基用例并非一个完整的用例,所以include关系中的基用例必须和子用例一起使用才够完整,子用例也必然被执行。include关系在用例图中使用带箭头的虚线表示(在线上标注<<include>>),箭头从基用例指向子用例。

一、包含关系(include):
上面在讲用例粒度时讲到的查询余额(QueryRemainCash)和登录(Login)之间的关系就是包含关系

那么什么是包含关系呢?是不是就像大家想的那样,一个大用例划分为几个小用例,大的包含小的呢?答案是:不是。下面我为大家具体讲一下包含关系。
包含关系用一个虚箭头另加版型(stereotype)《include》表示,从包含用例指向被包含用例,如上图所示
包含关系可以基于以下理由:
1、从基本用例中分解出这样的行为:它对于了解基本用例的主要目的并不是必须的,但是它必须在执行基本用例前先执行,只有它的结果才是比较重要的。如上图所示:对于用户来说,他在了解系统的功能时,“查询余额”是主要的,对于登录,只有它的结果才是重要的,但是用户在查询余额前必须先登录。
2、分解出两个或更多用例所共有的行为,这样可以实现用例的复用,简化用例图。如上图所示:"查询余额"和“查询消费金额”都能抽出一个“登录”用例。
举一个大家最常见的例子:你去银行办业务,无论你办什么业务,都需要你输入账号的密码。假如有人问你:你去银行干什么呀?你的回答可能是取钱,但是绝对没有人回答我去银行输密码和取钱。因为输入密码对于用户了解基本用例的目的不是必须的,只有输入密码的结果才是重要的(但它是取钱时必须执行的步骤),所以取钱和输入密码之间就是包含关系

二、扩展关系(extend)
扩展关系用一个虚箭头外加版型《extend》表示,由扩展用例指向被扩展用例

扩展关系可以基于以下理由:
1、表明用例的某一部分是可选的系统行为,这样就可以将用例图中的可选行为和必选行为分开。
2、表明只在特定条件下才执行的特定分支用例
3、表明多个基本用例中都有可能触发的某个可选用例
extend关系和include关系最明显的区别就是:扩展用例是可选的,包含用例是必选的,如上图所示:手机用户在用自动缴费机充值之后,可以打印小票,也可以不打印,这完全取决于用户的意愿,并不是必须要执行的。
转自:http://blog.csdn.net/ls1645/article/details/42969587
关闭 返回顶部
联系我们
Copyright © 2011. 聚财吧. All rights reserved.