用例图(Use Case Diagram)是从用户的角度描述系统的功能,并指出各功能的操作者,主要作用有3个:获取需求、指导测试、在整个过程中的其他工作流中期指导作用。用例元素包括参与者和用例,用例间的关系主要是:继承关系、扩展关系和包含关系,这里比较难区分的的是扩展关系和包含关系,比较容易混淆,分析整理一下。

【知识点】

扩展关系(Extend):当某个新用例在原来的用例基础上增加了新的步骤序列,则原来用例被称为基用例,这种关系称为扩展关系,可以这样理解这里的基用例是一个完整的用例,即使没有子用例的参与,也可以完成一个完整的功能,只有当扩展点被激活时,子用例才会被执行。由子用例指向基用例,比如说充值金额查询用例中有导出Excel子用例,离开子用例不影响充值金额查询的功能,这就是扩展关系。

包含关系(include):几个用例可以提取他们共用的用例作为子用例,使其成为自己行为的一部分,因为子用例被提出,基用例并非一个完整的用例,所以include关系中的基用例必须和子用例一起使用才够完整,子用例也必然被执行。由基用例指向子用例,比如几个用例都要用到登录子用例,登录作为子用例没有它的参与,其他用例也无法执行,这就是包含关系。

比较:容易混淆的原因在于不理解扩展和包含的含义,所谓扩展是从基用例的基础上扩展出新的功能(子用例),子用例不影响基用例,基用例本身是完整的,没有子用例的参与也可以完成自己的功能,而包含关系是提取出来的用例是基用例的一部分基用例和子用例必须一起使用才完整。二者的关键在于离开子用例,基用例是否可以完成一个完整的功能。

如图:

                               

UML—用例图的扩展关系和包含关系的区别相关推荐

  1. uml的用例图中扩展关系与包含关系

    扩展关系(extend) 扩展关系用一个虚箭头外加版型<extend>表示,由扩展用例指向被扩展用例 扩展关系可以基于以下理由: 1.表明用例的某一部分是可选的系统行为,这样就可以将用例图 ...

  2. UML 图中 包含关系和扩展关系的联系和区别

    最近在写毕业论文,对于UML图中的包含和扩展的联系和区别一直不是太了解. 一篇博主是这样描述的 联系:都是从现有的用例中抽取出公共的那部分信息,作为一个单独的用例,然后通后过不同的方法来重用这个公共的 ...

  3. UML用例图之关联关系、包含关系、扩展关系、泛化关系详解

    目录 UML定义 UML图结构 用例图定义 用例图中的事物 用例图中的关系 关联关系 包含关系 特点 使用场景 扩展关系 特点 使用场景 泛化关系 特点 使用场景 包含关系和扩展关系的联系和区别 UM ...

  4. UML用例图、活动图、顺序图、类图、对象图、通信图(协作图)、状态机图特点

    UML– 用例图 用例图展现的是一组用例.参与者和扩展关系.包含关系等.该图的作用是描述系统的行为,即该系统在它的上下文环境中所提供的外部可见服务.注:参与者不一定是人,可以是其它除系统以外的事物. ...

  5. 用例图包含关系、扩展关系、泛化关系解析

    一.用例图中的各种关系 a)参与者与用例间的关联关系:参与者与用例之间的通信,也成为关联或通信关系. b)用例与用例之间的关系:包含关系(include).扩展关系(extend).泛化关系. 1.包 ...

  6. UML用例图扩展(extend)的使用及注册和登录的具体关系

    注册和登录之间是扩展关系这是毋庸置疑的,但它们之间谁是谁的扩展呢? 为什么登录不是注册的扩展,不应该是在注册的基础上再登录吗?这是我在刚学用例图时比较困惑的地方. 扩展的概念是在某用例的基础上还可以干 ...

  7. UML 用例图以及UML的八种关系

    首先,一张总体的知识脉络导图献上: 一.什么是用例图? 用例图描述了一组用例.参与者以及它们之间的关系. 使用阶段:软件需求分析 使用者:软件分析人员.软件开发人员 用例模型:表明开发者和用户对需求规 ...

  8. 使用Visio 2007画用例图没有include(包含)关系且包含关系使用的线不是虚线的解决办法...

    使用Visio 2007画用例图没有include(包含)关系且包含关系使用的线不是虚线的解决办法 1 在工具栏选择UML------>选择构造型 如下操作 2 拖动 "扩展" ...

  9. UML用例图间关系说明

    用例间一般存在如下四种关系: 1."通信"关系(<<cmmunicate>>构造型): "通信"关系:使用实心的关联线或带<< ...

最新文章

  1. 2星|《快公司》2018年2-3期:商业人物访谈集
  2. 主流微型计算机,主流微型计算机硬件系统维护
  3. 在FF与IE中使用数据岛
  4. np.squeeze()
  5. 本机Android应用程序教程:WhatsApp克隆
  6. k8s 查看pod流量_Kubernetes K8S之Pod生命周期与探针检测
  7. thttpd服务器修改时间后导致CPU占用率过高
  8. Codeforces.741D.Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths(dsu on tree 思路)
  9. Microsoft .Net Remoting系列专题之二 Marshal、Disconnect与生命周期以及跟踪服务
  10. OpenGL超级宝典(第7版)笔记12 前三章回顾 OpenGL扩展简介
  11. Java筑基24-集合02-List
  12. ansys linux卸载干净,安装了几次ansys14.5,都没有成功,删除重新安装后许可安装不了了...
  13. xml 中的 大于号,小于号
  14. objectbox No value passed for parameter ‘order‘
  15. 应聘华为的朋友小心了,应聘华为的悲惨遭遇!
  16. (转载)一种简单而有趣的数据结构——并查集
  17. 微信生成二维码 PHP
  18. Airtest入门案例-操作网易云音乐
  19. 2021-2027全球与中国太阳能EVA板市场现状及未来发展趋势
  20. CacheCloud的入门运用与实战

热门文章

  1. 社会保障psam卡 是什么_社会卡即服务
  2. 用freemarker生成word文档,并插入图片
  3. python开发12306抢票_如何利用 Python 实现12306抢票?
  4. 回忆录——一份曾经面试“网易AI产品经理”的作品
  5. 我要做-微处理器嵌入式系统设计师
  6. npm install很慢(奇葩)解决方法
  7. 代写计算机ei,骗子 张爱荣 以代写代发EI期刊骗钱 钱收到后QQ不上,手机关机
  8. 64位操作系统注册ocx控件失败,提示:模块加载失败请确保该二进制存储在指定路径中。
  9. 自我提升的10个好习惯
  10. 嵌入式linux kermit,嵌入式开发常用串口工具kermit使用笔记