用例图 UML从入门到放弃系列之三

1.说明

        关于用例图,这篇文章我将直接照搬罗伯特.C.马丁老爷子在《敏捷开发》一书种的第17章,并配上自己的理解,因为这一章写的实在是太精彩了,希望能够分享给大家,共勉。以下是老爷子的原文中文翻译以及豆芽的个人解读。

2.怎么看待用例

        用例的思路非常好,却被过度复杂化了。我总是看到一些开发团队围坐在一起,讨论用例该如何写。一般来说,这种团队更多的是在关注形式而非内容。他们在前置条件、后置条件、主参与者、辅助参与者以及一堆根本不重要的事情上争论不休。(豆芽解读:看到没有,老爷子一直是一个非常注重实践,任何复杂而无用的理论都应该丢到垃圾桶)。    

         使用用例真正的窍门就是保持用例简单。不要担心用例的格式;简单把它们写在空白纸、字处理器的空白页或空白的索引卡片上就行了。不要担心所有的细节。细节只有到了很后期才有用。不必为记录所有的用例而烦恼,因为那是一项不可能完成的任务。关于用例,有一点要牢记:明天,它们将会变化。不管你多么努力地记录它们,不管你在记录细节方面多么地一丝不苟,不管你考虑地多么全面,不管你在研究和分析需求上投入了多少精力:明天,它们都要变化。如果有些东西明天会变化,那么就不必在今天就记录下它的细节。事实上,你要做的就是把细节的记录推迟到最后一刻。可以请把用例看作是即时需求。(豆芽解读:敏捷开发面对的是变化,也就是需求的变化,用例同样无法固化,所以不要妄图用任何形式固化它。)

3.怎么写用例

        请注意本节的标题。我们是要写用例,而不是要画它们。用例不是图示。用例是从一个特定视角进行编写的关于行为需求的文本描述。

        “等等!”你喊道,“我知道UML中有用例图,我见过。”

        不错,UML中确实有用例图。不过从这些图中你根本看不出任何有关用例的内容。它们根本不包含任何关于行为需求的信息,而这正是用例该记录的内容。UML中的用例图记录的完全是其他一些东西。(豆芽解读:老爷子的这段话我个人感觉比较极端,虽然说用例图没有比文本描述要强上多少,但是老爷子说用例图完全没有用,我觉得还是过于极端了。主要他想表达的是用例图确实无法表示用例的实现细节,对测试和编码来说确实用处不大,但是对需求分析和系统设计而言还是具备一定的指导意义的。)

4.用例图有什么用

        我们下面来看看老爷子所说的用例图是不是那么没用。用例图至少有以下四个应用场景,即需求分析、 系统设计、 测试、 文档编写。我们先看下一个用例通过用例图和文本描述分别是什么样的。例如,下面是销售终端系统的一个典型用例,卖出商品的用例。

文本表示:

  1. 收银员在扫描仪上划过商品,扫描仪读取UPC码。
  2. 商品的价格、描述以及当前价格总数出现在朝向顾客的显示器上。价格和描述也出现在收银员的屏幕上。
  3. 价格和描述打印在收银条上。
  4. 系统发出可以听到的“确认”声以通知收银员UPC码正确读取。

用例图表示:

        额,这确如老爷子所说,我竟然不知道如果绘制以上文本描述的用例图。因为如果我用更详细的图示表示的话会发现文字还是更加直观且完整。

        用文本表示用例已经完成表示了用例的基本流程。不需要任何更复杂的东西。事实上,如果用例不是一会儿就要实现,那么即使是上面这几个简单的步骤可能也过于详细了。如果用例不需要在几天或者一周内就要实现,我们是不希望记录这种细节的。如果不记录下用例的细节,如何对它进行估算呢?你可以去问利益相关者有关细节的内容,不必把它记录下来。这会为你提供进行粗略估算所需要的信息。既然要去询问利益相关者一些细节方面的内容,为什么不把它们记录下来呢?因为明天,细节将会变化。难道变化不会影响到估算吗?会影响,不过对大量的用例来说,这些影响会相互抵消。过早记录下细节是完全不划算的。如果我们现在不记录用例的细节,那要记录什么呢?如果不写下一些东西,我们又如何得知存用例呢?记下用例的名称即可。在电子表格或者文档中保持用例名字的代码清单。更好的做法是,把用例的名称写在索引卡片上,保存在一起,等临近实现时再填入细节。

5.怎么画用例图

        虽然以上的大量篇幅看起来都在劝退各位不要使用用例图,但是我们还是需要教会大家怎么画用例图,因为当你评价一个事物前,首先要了解它,我说的。

        用例图中包括四种元素:参与者、用例、它们之间的关系、系统边界。关于参与者与用例的解析,详见下表:

系统边界,主要描述需要系统实现的功能集合,一般使用矩形框将系统边界标注出来。

各元素之前的关系如下

6.总结

你对用例的态度一定要保持这种简洁性。如果陷入用例复杂性的黑暗面,就会被它牢牢控制。运用原力,保持用例的简单化。

引用

《敏捷开发》——罗伯特.C.马丁

如何画用例图(UML) (baidu.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/101770.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ (Chapter 1)

C (一) 1.C的命名空间 先来看一个C语言的例子: 下面这段代码是可以正常运行的. #include<stdio.h> int rand 0; int main() {printf("%d \n", rand);return 0; }但是,包含了一个头文件之后,甚至无法通过编译. #include<stdio.h> #include<stdli…

大数据Doris(八):启动FE步骤

文章目录 启动FE步骤 一、配置环境变量 二、​​​​​​​创建doris-mate

排序算法-插入排序法(InsertSort)

排序算法-插入排序法&#xff08;InsertSort&#xff09; 1、说明 插入排序法是将数组中的元素逐一与已排序好的数据进行比较&#xff0c;先将前两个元素排序好&#xff0c;再将第三个元素插入适当的位置&#xff0c;也就是说这三个元素仍然是已排序好的&#xff0c;接着将第…

剖析伦敦银最新价格走势图

国际金融市场瞬息万变&#xff0c;伦敦银的价格走势会受到诸多因素的影响&#xff0c;比如重要经济数据的公布&#xff0c;国际间的政治博弈&#xff0c;突发的政经大事&#xff0c;都可以令白银价格的走势&#xff0c;在短时间内暴涨暴跌的情况。 要在伦敦银市场实现良好的收益…

Linux文件目录总结

众所周知&#xff0c;Linux系统文件目录是树状结构&#xff0c;如下图所示&#xff1a; 英文缩写的目录下到底存放的是什么文件&#xff0c;善于做归纳总结的逍遥哥哥来解释一下&#xff1a; /bin&#xff1a;bin是Binary的缩写&#xff0c;这个目录存放着最经常使用的命令。 …

NEFU离散数学实验1-排列组合

相关概念 在离散数学中&#xff0c;组合数是一种用于计算从n个不同元素中选取m个元素的方式。以下是一些与组合数相关的概念&#xff1a; 排列&#xff1a;从n个不同元素中选取m个元素进行排列&#xff0c;排列数用P(n, m)表示&#xff0c;计算公式为P(n, m) n! / (n - m)! …

nodejs+vue家教管理系统

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1nodejs简介 4 2.2 express框架介绍 6 2.3 B/S结构 4 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性…

基于YOLO算法的单目相机2D测量(工件尺寸和物体尺寸)

1.简介 1.1 2D测量技术 基于单目相机的2D测量技术在许多领域中具有重要的背景和意义。 工业制造&#xff1a;在工业制造过程中&#xff0c;精确测量是确保产品质量和一致性的关键。基于单目相机的2D测量技术可以用于检测和测量零件尺寸、位置、形状等参数&#xff0c;进而实…

【网络安全】如何保护IP地址?

使用防火墙是保护IP地址的一个重要手段。防火墙可以监控和过滤网络流量&#xff0c;并阻止未经授权的访问。一家网络安全公司的研究显示&#xff0c;超过80%的企业已经部署了防火墙来保护他们的网络和IP地址。 除了防火墙&#xff0c;定期更新操作系统和应用程序也是保护IP地址…

学信息系统项目管理师第4版系列24_整合管理

1. PMBOK 1.1. 自1987年以来&#xff0c;PMBOK-直是基于过程的项目管理标准的重要代表 1.1.1. 基于过程的方法是项目管理的基石 1.2. 从2021年开始&#xff0c;第7版PMBOK采用了基于原则的标准&#xff0c;其中包含了 12个项目管理基本原则&#xff0c;这些基本原则为有效的…

Python数据攻略-递归方式实现json多层级数据展平

之前介绍过使用pandas如何展平json的多层数据,如果有兴趣可以参考文章 Python数据攻略-Pandas的json_normalize方法 Python数据攻略-递归方式实现json多层级数据展平 今天再介绍一个非常好用的使用递归的方式展平json数据。 文章目录 数据处理目标操作示例核心函数方法操作…

硬件基本功--过流、过压保护电路

1.简介 过流保护(OCP)&#xff1a;当电路电流超过预定最大值时&#xff0c;使保护装置动作的一种保护方式。不允许超过预定最大值电流&#xff0c;不然会烧坏电路的器件。过压保护(OVP)&#xff1a;被保护电路电压超过预定的最大值时&#xff0c;使电源断开或使受控设备电压降低…

AAPT2简介

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、商业变现、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读二、概览三、使用介绍3.3 编译3.2 链接3.3 dump…

ChatGPT AIGC 高效办公自动化案例

根据业务员姓名查找对应月份的科目成绩。 我们让ChatGPT AIGC来完成Excel公式。 Prompt:有一个表格A列为姓名,B列为语文,C列为数学,请根据J2单元格的姓名 ,查找出对应的数学成绩,请写出函数来完成 将生成的vlookup函数公式=VLOOKUP(J2, A:C, 3, FALSE)复制到表格中进行验…

Windows11下清理Docker Desktop与wsl的C盘空间占用

一、清理Docker Desktop的磁盘占用 //【查看docker 占用的空间】 docker system dfTYPE 列出了docker 使用磁盘的 4 种类型&#xff1a; Images&#xff1a;所有镜像占用的空间&#xff0c;包括拉取下来的镜像&#xff0c;和本地构建的。Containers&#xff1a;运行的容器占用…

整理mongodb文档:副本集成员可以为偶数

个人博客 整理mongodb文档:副本集成员可以为偶数 想了下&#xff0c;仲裁节点还是不想直接说太多&#xff0c;怕有的同学想太多&#xff0c;且本身副本集就偏向运维的&#xff0c;新手基本也没什么权限操作&#xff0c;就不多废话了。 文章概叙 文章从MongoDB是否可以用偶数…

【计算机网络笔记】计算机网络的结构

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 文章目录 系列文章目录网络边缘接入网络数字用户线路 (DSL)电缆网络典型家庭网络的接入机构&#xff08;企业&#xff09;接入网络 (Ethernet)无线接入网络 网络核心Internet结构最后 计算机网络的结构…

scratch保护环境 2023年5月中国电子学会图形化编程 少儿编程 scratch编程等级考试一级真题和答案解析

目录 scratch保护环境 一、题目要求 1、准备工作 2、功能实现 二、案例分析

panads操作excel

panads简介 pandas是基于Numpy创建的Python包&#xff0c;内置了大量标准函数&#xff0c;能够高效地解决数据分析数据处理和分析任务&#xff0c;pandas支持多种文件的操作&#xff0c;比如Excel&#xff0c;csv&#xff0c;json&#xff0c;txt 文件等&#xff0c;读取文件之…

android studio 我遇到的Task :app:compileDebugJavaWithJavac FAILED问题及解决过程

前几天一个网友在学习我的一个小项目的时候&#xff0c;发现无法达到目的&#xff0c;在帮他解决问题的过程中发现他用的是最近的giraffe版本的as&#xff0c;我用的是老版本&#xff0c;没办法打开他的项目&#xff0c;没办法只能卸载我的as&#xff0c;安装了最近版的diraffe…