热门标签 | 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



推荐阅读
  • 本文是对《敏捷软件开发:原则、模式与实践》一书的深度解析,书中不仅探讨了敏捷方法的核心理念及其应用,还详细介绍了面向对象设计的原则、设计模式的应用技巧及UML的有效使用。 ... [详细]
  • 问题描述现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中 ... [详细]
  • 编程解析:CF989C 花朵之雾 (构造算法)
    本文深入探讨了CF989C '花朵之雾'问题的构造算法,提供了详细的解题思路和代码实现。 ... [详细]
  • 本文详细介绍了如何使用C#实现不同类型的系统服务账户(如Windows服务、计划任务和IIS应用池)的密码重置方法。 ... [详细]
  • 本文探讨了Python类型注解使用率低下的原因,主要归结于历史背景和投资回报率(ROI)的考量。文章不仅分析了类型注解的实际效用,还回顾了Python类型注解的发展历程。 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • 洛谷 P4009 汽车加油行驶问题 解析
    探讨了经典算法题目——汽车加油行驶问题,通过网络流和费用流的视角,深入解析了该问题的解决方案。本文将详细阐述如何利用最短路径算法解决这一问题,并提供详细的代码实现。 ... [详细]
  • Android与JUnit集成测试实践
    本文探讨了如何在Android项目中集成JUnit进行单元测试,并详细介绍了修改AndroidManifest.xml文件以支持测试的方法。 ... [详细]
  • 在尝试加载支持推送通知的iOS应用程序的Ad Hoc构建时,遇到了‘no valid aps-environment entitlement found for application’的错误提示。本文将探讨此错误的原因及多种可能的解决方案。 ... [详细]
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • JUnit下的测试和suite
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • LeetCode 204: 计算质数
    本题要求计算小于给定非负整数n的所有质数的数量。感谢@mithmatt为此问题提供测试案例。 ... [详细]
  • 深入理解Java SE 8新特性:Lambda表达式与函数式编程
    本文作为‘Java SE 8新特性概览’系列的一部分,将详细探讨Lambda表达式。通过多种示例,我们将展示Lambda表达式的不同应用场景,并解释编译器如何处理这些表达式。 ... [详细]
  • Logging all MySQL queries into the Slow Log
    MySQLoptionallylogsslowqueriesintotheSlowQueryLog–orjustSlowLog,asfriendscallit.However,Thereareseveralreasonstologallqueries.Thislistisnotexhaustive:Belowyoucanfindthevariablestochange,astheyshouldbewritteninth ... [详细]
  • 本文详细探讨了BCTF竞赛中窃密木马题目的解题策略,重点分析了该题目在漏洞挖掘与利用方面的技巧。 ... [详细]
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社区 版权所有