包含用例和扩展用例的区别
852
包含用例(抽象用例)一般不单独存在,描述在执行基本用例的用例实例中插入的行为段;当一个用例有多个子流程时,可以用扩展关系对其进行扩展,使得基本用例的不同子流程能在不同的情形下以扩展用例的形式被激活,基本用例可以独立于扩展用例单独存在。
一、包含用例和扩展用例的区别
包含用例:
- 当在两个或多个独立用例重复自已并希望避免重复时
- 在基本用例上插入附加行为并具有明确的描述
- 包含用例作为基本用例自身行为的一部分
- 包含关系是无条件的
- 包含用例是共用的用例
- 一个基本用例可以有多个包含用例
- 一个包含用例可以包含在若干基本用例中
- 很难在包含关系上对系统进行维护修改
扩展用例:
- 当表述关于正常行为的一个变化情况时
- 在基本用例上插入基本用例不能说明的扩展部分
- 扩展用例作为基本用例的增量扩展
- 扩展用例是按条件要求执行的
- 扩展用例不是共用的用例
- 把可选行为从必须行为中分离出来
- 有条件地扩展已有用例的行为
- 基本用例可以独立于扩展用例单独存在
- 适合于功能需求的增加(基本用例的增量扩展)
二、包含关系概念
包含关系用于提取共用的用例(通用的功能段)。包含关系是从基本用例到包含用例(抽象用例)的关系,它指定如何将为包含用例定义的行为明确地插入到为基本用例定义的(指定位置)行为中。在具备包含关系的两个用例中,包含用例(抽象用例)一般不单独存在。包含用例总是抽象的。它描述在执行基本用例的用例实例中插入的行为段。基本用例可控制与包含用例的关系,并可依赖于执行包含用例所得的结果,但基本用例和包含用例都不能访问对方的属性。从这种意义上讲,包含用例是被封装的,它代表可在各种不同基本用例中复用的行为。
三、扩展关系概念
在不改变原始用例的情况下有条件地扩展已有用例的行为。扩展关系是从扩展用例到基本用例的关系,它说明为扩展用例定义的行为如何插入到为基本用例定义的行为中。扩展关系的优点:
- 原用例描述因为没有随扩展而修改,从而保持了原用例便于理解的特点;
- 扩展行为和其它行为描述界限清晰。
当一个用例有多个子流程时(可选系统行为),可以用扩展关系对其进行扩展,使得基本用例的不同子流程能在不同的情形下以扩展用例的形式被激活,通过这种方式,可以把可选行为从必须行为中分离出来使用扩展关系还可以描述一个只有在给定条件下执行的独立的子流基本用例可以独立于扩展用例单独存在。