UseCase中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,那还画那条代表依赖的实线干嘛?
UseCase中include和extend的区别相关推荐
- uml里的extend和include_解析UML用例图中include与extend的区别
本文和大家重点讨论一下UML用例图中include与extend的区别,include是指用例中的包含关系,通常发生在多个用例中,有可以提取出来的公共部分,而extend则恰好相反.下面请看本文详细介 ...
- PHP中include和require的区别详解
PHP中include和require的区别详解 1.概要 require()语句的性能与include()相类似,都是包括并运行指定文件.不同之处在于:对include()语句来说,在执行文件时每 ...
- UML 用例图中include,extends,uses的区别
区别extends . use.include extends是对已有用例的扩展 use是使用了另一个用例 include,是指一个用例包含另一个用例 extends的关键在于,他不会修改原有的用例说 ...
- [转载] python中append和extend函数区别
参考链接: Python中的append和extend append和extend都是python内置函数,都有扩展列表的元素功能,但两者的扩展方式是不同的. 通过使用?list.append命令查看 ...
- PHP中include()与require()的区别说明
require 的使用方法如 require("MyRequireFile.php"); .这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require ...
- Python中append和extend的区别
编者注:本文主要参考了<Python核心编程(第二版)> 网上有很多对这两个函数的区别讲解,但我觉得都讲的不是很清楚,记忆不深刻.这样解释清楚且容易记住. list.append(obje ...
- php中的require(),PHP中include()与require()的区别说明
require的使用方法如 require("MyRequireFile.php"); .这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require ...
- Python中append()与extend()的区别
列表方法append()和extend()之间的差异: append:在最后追加对象 x = [1, 2, 3] x.append([4, 5]) print (x) 结果 [1, 2, 3, [4, ...
- 用例图中include和extend的含义
用例与用例之间有三种关系:包含,扩展,泛化 1.Include include即包含关系,在多个用例包含同一子用例时,可以把子用例独立出来,并且在执行父用例时必须执行子用例 当一个用例包含过多子功能时 ...
最新文章
- javaScript 之 蚁人微任务
- R语言实战应用精讲50篇(二十七)-R语言实现随机森林(附R语言代码)
- 外设驱动库开发笔记26:nRF24L01无线通讯驱动
- 文件上传至将File转换成MultiPartFile
- 补习系列(4)-springboot 参数校验详解
- git merge分支不合并_合并分支使用Merge还是Rebase?
- TKDE2022 | 最新深度学习推荐系统综述:从协同过滤到信息增强的推荐系统
- Jquery 实现动态添加输入框编号
- Java Web学习总结(6)Cookie/Session
- MyBatis逆向工程生成代码(附源码)
- android跑马灯源码,Android跑马灯的简单实现方式
- 6种摆脱百度竞价恶意点击的技巧
- 10年攒一百万回老家一个月6千利息,现实么
- 现实迷途 第三十六章 互相摊牌
- java 数组总结(赋值,反转,添加,查找)
- YoloV5 训练长方形图像
- iPhone用android充电头,iPhone 6s用什么充电头充电最快?安卓快充头可以混用吗?
- 洲际酒店集团加速布局粤港澳大湾区,与华侨城酒店集团达成合作
- twig html不转义,twig输出转义
- 中国支付结算系统发展简史
热门文章
- 如何制作PechaKucha的PPT?
- ceo是什么职位(coo是什么职位)
- MATLAB绘图合集:stairs绘图
- 运行Appium+Python Clinet + 夜神模拟器
- 面试趣味题整理(一)
- SQL基础查询笔记【动力节点的视频】
- 怎么修改sqlserver用户密码_新版tplink路由器怎么修改管理员登录密码【修改方法】...
- 安卓手机安装使用linux,手机linux,轻量linux服务器
- 相同局域网,如何实现windows远程桌面
- JavaScript 递归之深度优先和广度优先