热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

软件工程需求分析_软件工程专题:UML用例图

关注BeTester,学习更多知识让碎片成体系,让测试更专业1、前言当很多测试工程师谈及用例时,会默认用例测试用例。但这是非常片面的理解&
8c45e57dd456eec1fa0a584a69ef0e7a.png

关注BeTester,学习更多知识

让碎片成体系,让测试更专业

4d60db321aa1b314544c7e302c32ff3f.png

1、前言

当很多测试工程师谈及用例时,会默认 用例 = 测试用例 。但这是非常片面的理解,因为在软件工程领域,Use Case(用例)和 Test Case(测试用例)是完全不同的概念。

在《黑盒测试设计专题》及《测试用例专题》中我们对测试用例做了详细的讲解,那 Use Case 是什么,与 Use Case Diagram 有什么关系?本文将一一解答。

2、概述

当我们要弄清楚需求时,往往使用5W2H方法协助分析,其中Who和What的问题可以通过用例图来解决。

  1. 这个系统在用?
  2. 这些人通过这个系统能做什么?
5W2H又叫七问分析法,为发现解决问题的线索提供思路。通常的5W2H分别为:What/Who/When/Where/Why 和 How/How Much。

用例图(Use Case Diagram)是描述用例参与者以及它们之间关系的图。

用例是外部可见的系统功能,即用户可感知到的功能,文章下面讲到。

用例图是从用户的角度来描述对信息系统的需求,分析产品的功能和行为。

用例图是系统的蓝图,呈现参与者,用例,以及它们之间的关系,主要用于对系统、子系统或类的功能行为进行建模。

3、用例图元素

用例图有三个部分:参与者(Actor)、用例(Use Case) 和 关系。

3.1 参与者(Actor)

参与者是对系统使用者的抽象。参与者是与系统交互的人或另一个系统,如果是人可以称为“角色”。在分析系统时,应该先思考什么角色会用这个系统,然后逐一思考不同的角色对系统有什么需求。

在UML中,通常使用以下表示方法:

actor 测试工程师 as te

b3c7b27b201ceb832651a5279b8cc06e.png
在UML中,参与者一般使用人形图案来表示,参与者不仅限于人,还可以是外部交互系统。

3.2 用例

用例是外部可见的系统功能,对系统提供的服务进行描述。用例通常使用动宾结构(动词+名词)来描述,如 编写测试用例、编写代码 等描述来说明用例。每个用例提供了一个或多个场景,该场景说明了系统是如何与最终用户或其它系统互动,也就是谁可以用系统做什么,从而获得一个明确的业务目标。

在UML中,通常使用以下表示方法(括号):

te --> (编写测试用例)

2ce39d195eafb7045dc42d5ce8b00b4d.png
在UML中,用例使用一个椭圆形来表示,使用 (Use Case Name) 表示

3.3 关系

用例图中常用关系有:参与者的继承、关联、泛化、包含(include)、扩展(extend)。

关联(Association):线条是指参与者与用例之间线条,有三种:无箭头,指向用例的箭头,指向执行者的箭头。一般来说,箭头的尾部用来表示启动交互的一方,头部用来表示被启动的一方。

3.3.1 包含

包含关系描述的是一个用例需要某种功能&#xff0c;而该功能被另外一个用例定义&#xff0c;那么在用例的执行过程中&#xff0c;就可以调用已经定义好的用例。表示符号&#xff1a;<> 。通常用 基用例 表示包。

&#64;startuml
(设计测试用例) --> (分析需求) : <>
(设计测试用例) --> (分析测试点) : <>
(设计测试用例) --> (建立模型) : <>
(设计测试用例) --> (编写测试用例) : <>
&#64;enduml

a1084e9fc7892415ae0f4dd36710a671.png

3.3.2 泛化

子用例继承了父用例所有的结构、行为和关系&#xff0c;是父用例的一种特殊形式。

&#64;startuml
actor 测试工程师 as te
te --> (执行测试用例)
(执行测试用例) <|-- (执行功能测试用例)
(执行测试用例) <|-- (执行性能测试用例)
&#64;enduml

87c178da4184f031029b8bf2d134bbb1.png

3.3.3 扩展

用一个用例&#xff08;可选&#xff09;扩展另一个用例&#xff08;基本例&#xff09;的功能&#xff0c;将一些常规的动作放在一个基本用例中&#xff0c;将可选的或只在特定条件下才执行的动作放在它的扩展用例中。表示符号&#xff1a;<>

actor 测试工程师 as te
te --> (执行测试用例)
(执行测试用例) <.. (提交Bug) : <>

9268898e397ecedddb67245a3379d44f.png

4、小结

用例图对于需求分析有着十分重要的意义&#xff0c;它能够通过包含、泛化、扩展的关系展示出需求的概览&#xff0c;让我们能够对需求有快速的认知&#xff0c;进而为后续所开展的更细致的分析活动提供参考。

用例图不是唯一提供需求分析的工具&#xff0c;但是它能够将我们所有的建模统一化、规范化&#xff0c;因此使用用例图是十分必要的。

—— 更多文章 ——

  • 软件工程专题&#xff1a;UML类图
  • 软件工程专题&#xff1a;Plant UML实践
  • 软件工程专题&#xff1a;UML简介
  • 软件工程专题&#xff1a;看板
  • 软件工程专题&#xff1a;Scrum框架
  • 软件工程专题&#xff1a;极限编程
  • 软件工程专题&#xff1a;敏捷开发流程
  • 软件工程专题&#xff1a;软件工程概述
9d787d67d7c8cb8fa3ef99f3518d06bb.png



推荐阅读
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • 使用C++编写程序实现增加或删除桌面的右键列表项
    本文介绍了使用C++编写程序实现增加或删除桌面的右键列表项的方法。首先通过操作注册表来实现增加或删除右键列表项的目的,然后使用管理注册表的函数来编写程序。文章详细介绍了使用的五种函数:RegCreateKey、RegSetValueEx、RegOpenKeyEx、RegDeleteKey和RegCloseKey,并给出了增加一项的函数写法。通过本文的方法,可以方便地自定义桌面的右键列表项。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文介绍了一种划分和计数油田地块的方法。根据给定的条件,通过遍历和DFS算法,将符合条件的地块标记为不符合条件的地块,并进行计数。同时,还介绍了如何判断点是否在给定范围内的方法。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 本文介绍了解决二叉树层序创建问题的方法。通过使用队列结构体和二叉树结构体,实现了入队和出队操作,并提供了判断队列是否为空的函数。详细介绍了解决该问题的步骤和流程。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • Postgresql备份和恢复的方法及命令行操作步骤
    本文介绍了使用Postgresql进行备份和恢复的方法及命令行操作步骤。通过使用pg_dump命令进行备份,pg_restore命令进行恢复,并设置-h localhost选项,可以完成数据的备份和恢复操作。此外,本文还提供了参考链接以获取更多详细信息。 ... [详细]
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
  • 使用圣杯布局模式实现网站首页的内容布局
    本文介绍了使用圣杯布局模式实现网站首页的内容布局的方法,包括HTML部分代码和实例。同时还提供了公司新闻、最新产品、关于我们、联系我们等页面的布局示例。商品展示区包括了车里子和农家生态土鸡蛋等产品的价格信息。 ... [详细]
author-avatar
fuchen201101
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有