解析UML用例图中include与extend的区别

开发 架构
UML用例图有很多值得学习的地方,这里向大家简单介绍一下UML用例图中include与extend的区别,希望本文的介绍对你有所帮助。

本文和大家重点讨论一下UML用例图中include与extend的区别,include是指用例中的包含关系,通常发生在多个用例中,有可以提取出来的公共部分,而extend则恰好相反。下面请看本文详细介绍。

UML用例图中include与extend的区别

最近上论坛,看到在争论UseCase中include与extend的区别。其实这两者是很容易区分的。

include是指用例中的包含关系,通常发生在多个用例中,有可以提取出来的公共部分(就象提取公因式一样),例如UseCaseA中包括了a和b两个流程,而UseCaseC中包含了c和b两个流程。为了提高复用性,可以把b提取出来,形成另一个用例UseCaseB,此时,UseCaseAincludeUseCaseB(表现为一条指向UseCaseB的虚线,箭头在UseCaseB侧),UseCaseC也includeUseCaseB。因而,当有include关系时,被include的用例通常会被两个以上的其他用例include(否则就不需要重用,也就不需要提取出来了),UML用例图如下:


在include关系中,“UseCaseA和UseCaseC知道UseCaseB的存在,而UseCaseB根本不知道有UseCaseA和UseCaseC);

extend则恰好相反。假设UseCaseA的功能描述为“发送一条通知”,可是,发送通知的方式可能有许多种,例如通过邮件发送、通过短信发送等。在需求分析阶段,可能无法明确到底有多少种方式,在用例分析阶段,UseCaseA需要留出扩展接口,然后把已知的发送方式作为扩展用例给出,例如UseCaseB是“通过短信发送”,而UseCaseC是“通过邮件发送”,此时,UseCaseB和UseCaseCextend了UseCaseA,表现为两根虚线,箭头指向UseCaseA,UML用例图如下:


在extend关系中,UseCaseA不知道UseCaseB和UseCaseC的存在,但UseCaseB和UseCaseC却是知道UseCaseA并且知道如何在UseCaseA中作扩展的。

另:在UML用例图中,有时会看到两个用例之间有依赖关系(表现为一条单向或双向的实线),这是错误的,说明用例没有提纯。
 


也许有人会问“如果两个用例之间,一个要调用另一个时,怎么办?”(有可能是混淆了用例和模块的关系),那么,首先要区分概念,用例就是用例,用例不是模块,也不是组件(虽然一个用例能发展成为“一个或多个”模块或组件);其次,从用例分析的角度来看,如果用例A确实要调用到用例B,那么,可以进一步分析:A是调用了B的所有流程呢,还是其中一部分流程?

(1)如果是调用了一部分,此时可以把B中的那部分流程提取出来,形成用例C,然后A和B都includeC;

(2)如果是调用了所有流程,那么,A直接includeB即可;

(3)如果A没有调用B中的任何流程……faint,那还画那条代表依赖的实线干嘛?
 

【编辑推荐】

  1. 解析绘制UML用例图的基本步骤
  2. UML用例图实例解析
  3. UML建模:创建UML用例图
  4. 揭秘三大UML用例图关系
  5. 学习笔记 解析UML用例图元素之间的关系

 

 


 

责任编辑:佚名 来源: csdn.net
相关推荐

2010-06-30 17:24:46

UML用例图

2010-06-09 18:38:28

UML用例图

2010-07-02 08:57:45

UML用例图

2010-07-01 13:00:20

UML用例图

2010-06-13 15:43:32

UML用例图

2010-07-02 09:06:29

UML用例建模

2010-06-17 12:48:08

UML用例模型

2010-07-12 12:32:35

UML用例图

2010-06-13 14:51:27

UML实践

2010-06-13 14:37:04

UML实践

2010-07-08 15:48:47

UML用例图

2010-06-18 18:07:19

UML用例图

2010-07-05 11:01:05

常用UML图

2010-06-30 17:46:36

UML用例建模

2010-07-05 12:50:01

用Visio画UML用

2010-06-18 14:56:15

UML综合实例

2010-06-17 12:32:54

UML用例建模

2010-06-30 17:36:58

UML用例图

2010-07-07 14:09:05

UML用例图

2010-06-08 09:30:20

UML图
点赞
收藏

51CTO技术栈公众号