比较基础的东西,不过还是说明一下:

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,那还画那条代表依赖的实线干嘛?

UseCase中include和extend的区别相关推荐

  1. uml里的extend和include_解析UML用例图中include与extend的区别

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

  2. PHP中include和require的区别详解

    PHP中include和require的区别详解 1.概要  require()语句的性能与include()相类似,都是包括并运行指定文件.不同之处在于:对include()语句来说,在执行文件时每 ...

  3. UML 用例图中include,extends,uses的区别

    区别extends . use.include extends是对已有用例的扩展 use是使用了另一个用例 include,是指一个用例包含另一个用例 extends的关键在于,他不会修改原有的用例说 ...

  4. [转载] python中append和extend函数区别

    参考链接: Python中的append和extend append和extend都是python内置函数,都有扩展列表的元素功能,但两者的扩展方式是不同的. 通过使用?list.append命令查看 ...

  5. PHP中include()与require()的区别说明

    require 的使用方法如 require("MyRequireFile.php"); .这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require ...

  6. Python中append和extend的区别

    编者注:本文主要参考了<Python核心编程(第二版)> 网上有很多对这两个函数的区别讲解,但我觉得都讲的不是很清楚,记忆不深刻.这样解释清楚且容易记住. list.append(obje ...

  7. php中的require(),PHP中include()与require()的区别说明

    require的使用方法如 require("MyRequireFile.php"); .这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require ...

  8. Python中append()与extend()的区别

    列表方法append()和extend()之间的差异: append:在最后追加对象 x = [1, 2, 3] x.append([4, 5]) print (x) 结果 [1, 2, 3, [4, ...

  9. 用例图中include和extend的含义

    用例与用例之间有三种关系:包含,扩展,泛化 1.Include include即包含关系,在多个用例包含同一子用例时,可以把子用例独立出来,并且在执行父用例时必须执行子用例 当一个用例包含过多子功能时 ...

最新文章

  1. javaScript 之 蚁人微任务
  2. R语言实战应用精讲50篇(二十七)-R语言实现随机森林(附R语言代码)
  3. 外设驱动库开发笔记26:nRF24L01无线通讯驱动
  4. 文件上传至将File转换成MultiPartFile
  5. 补习系列(4)-springboot 参数校验详解
  6. git merge分支不合并_合并分支使用Merge还是Rebase?
  7. TKDE2022 | 最新深度学习推荐系统综述:从协同过滤到信息增强的推荐系统
  8. Jquery 实现动态添加输入框编号
  9. Java Web学习总结(6)Cookie/Session
  10. MyBatis逆向工程生成代码(附源码)
  11. android跑马灯源码,Android跑马灯的简单实现方式
  12. 6种摆脱百度竞价恶意点击的技巧
  13. 10年攒一百万回老家一个月6千利息,现实么
  14. 现实迷途 第三十六章 互相摊牌
  15. java 数组总结(赋值,反转,添加,查找)
  16. YoloV5 训练长方形图像
  17. iPhone用android充电头,iPhone 6s用什么充电头充电最快?安卓快充头可以混用吗?
  18. 洲际酒店集团加速布局粤港澳大湾区,与华侨城酒店集团达成合作
  19. twig html不转义,twig输出转义
  20. 中国支付结算系统发展简史

热门文章

  1. 如何制作PechaKucha的PPT?
  2. ceo是什么职位(coo是什么职位)
  3. MATLAB绘图合集:stairs绘图
  4. 运行Appium+Python Clinet + 夜神模拟器
  5. 面试趣味题整理(一)
  6. SQL基础查询笔记【动力节点的视频】
  7. 怎么修改sqlserver用户密码_新版tplink路由器怎么修改管理员登录密码【修改方法】...
  8. 安卓手机安装使用linux,手机linux,轻量linux服务器
  9. 相同局域网,如何实现windows远程桌面
  10. JavaScript 递归之深度优先和广度优先