UML 用例图_包含关系和扩展关系和泛化关系

来源:互联网 发布:金枪鱼代理软件 编辑:程序博客网 时间:2024/06/07 12:25
UML 用例图_包含关系和扩展关系和泛化关系
1.包含关系是从基本用例到包含用例的关系,
它指定如何将为包含用例定义的行为明确地插入到为基本用例定义的行为中。
示例:      在 ATM 系统中,用例 Withdraw Cash(提款)、Deposit Cash(取款)和 Transfer Funds(转账)都需要包含系统识别客户的方式。可以将此行为抽取到一个名为 Identify Customer(识别客户)的新包含用例中,这三个基本用例都包含此用例。这些基本用例独立于用于标识的方法,因此将此方法封装在包含用例中。从基本用 例的角度来看,标识方法是否会读取银行磁卡或执行视网膜扫描并不重要。它们仅依赖于 Identify Customer 的结果,即客户的身份。反之亦然,从 Identify Customer 用例的角度来看,基本用例如何使用客户身份或者在执行包含用例之前基本用例中发生了什么并不重要:标识方法都会完全相同。

在 ATM 系统中,用例 Withdraw Cash、Deposit Cash 和 Transfer Funds 中都包含用例 Identify Customer。

2.扩展关系是从扩展用例到基本用例的关系,
它说明为扩展用例定义的行为如何插入到为基本用例定义的行为中。它是以隐含形式插入的,也就是说,扩展用例并不在基本用例中显示。
示例:


用例“召开电话会议”和“显示呼叫方身份”是基本用例“打电话”的两个扩展用例。

      在电话系统中,为用户提供的主要服务通过用例“打电话”来表示。可选服务的示例包括:
      能让第三方加入通话(召开电话会议)。
      允许接收方看到呼叫方的身份(显示呼叫方身份)。
      我们可以将这些可选服务所需的行为表示为基本用例“打电话”的扩展用例。这是扩展关系的一种正确应用:由于“打电话”本身就具有意义,您无需阅读扩展用例的说明就可理解基本用例的主要目的,并且扩展用例具有可选字符。

3.泛化关系代表一般于特殊的关系。
它的意思和继承的概念是类似的。不同的是继承使用在实施阶段,泛化使用在分析、设计阶段。在泛化关系中子用例继承了父用例的行为和含义,子用例也可以增加新的行为和含义或者覆盖父用例中的行为和含义。


4.真的有必要在用例图中表示这些关系吗?
最初,
通常先获得基本用例,然后在此基础上,作如下考虑:
4.1 如果需要重复处理两个或多个用例时可以考虑使用包含关系,实现一个基本用例对另一个的引用。
4.2 当处理正常行为的变形是偶尔描述时可以考虑泛化关系。
4.3 当描述正常行为的变形希望采用更多的控制方式时,可以在基本用例中设置扩展点,使用扩展关系。

5.分层的用例图
5.1 首先构造最高层的用例,以需求作为基础,划分出系统边界,明确各个角色的任务,记录系统提供的功能等。
构造出第O层用例图。
5.2 在此基础上,进一步分析每个用例的内容,对此用例,划分出系统边界,明确与该用例相关的角色,分解该用例的功能。构造出第一层用例图。
5.3 分析5.2构造的用例图,是否还可以并且有必要继续分解用例,如果可以,重复5.2的步骤,构造出第二~N层用例。
5.4 终止条件:决定条件是粒度。是否已经是开发人员可理解可执行的程度。

6.目的
需求可跟踪、转换,
交流,
管理复杂程度。