5.3 需求分析

需求分析

  • 软件需求
    • 定义
    • 分类
    • 练习题
  • 需求工程
    • 需求获取
      • 练习题
    • 需求分析
      • 状态转化图
      • 数据流图DFD
        • 顶层数据流图
        • 0层数据流图
        • 1层数据流图
      • 练习题
    • 需求规约
      • 需求定义方法
    • 需求验证
    • 需求管理
      • 版本控制
      • 需求跟踪
      • 变更控制
      • 练习题

考试大概3分

软件需求

定义

  • 软件需求:是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。
  • IEEE中的定义是:软件需求指用户解决问题或达到目标所需要的条件或能力,是系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或能力,以及反映这些条件或能力的文档说明。
  • 需求来源:
    • 可以来自于用户(实际的潜在的)、用户的规约、应用领域的专家、相关的技术标准和法规
    • 可以来自于原有的系统、原有系统的用户、新系统的潜在用户
    • 甚至还可以来自于竞争对手的产品

分类

软件需求的分类:软件需求就是软件必须完成的事以及必须具备的品质。需求是多层次的,包括业务需求、用户需求和系统需求,这三者是从目标到具体,从整体到局部,从概念到细节

  • 业务需求:反映企业或客户对系统高层级的目标要求(高层级需求)
  • 用户需求:描述用户的具体目标,用户想要什么,以及要这些做什么(用户需求)
  • 系统需求:从系统的角度说明软件的需求,包括功能需求、非功能需求、设计约束
    • 功能需求:是指系统必须完成的那些事,即为了向它的用户提供有用的功能,产品必须执行的动作
    • 非功能需求:是指产品必须具备的性能或品质,例如,可靠性、容错性等。
    • 设计约束:也称为限制条件、补充规约,通常是对解决方案的一些约束说明,例如,某系统必须采用国有自主知识版权的数据库,必须运行在UNIX系统之下,等等。

软件需求包含

  • 功能需求

  • 性能需求

  • 用户或人的因素

  • 环境需求

  • 界面需求

  • 文档需求

  • 数据需求

  • 资源使用需求

  • 安全保密需求

  • 可靠性需求

  • 软件成本消耗与开发进度需求

  • 其他非功能性要求

  • 质量功能部署(Quality Function Deployment,QFD):是一种将用户要求转化成软件需求的技术。目的是最大限度提升软件工程过程中用户满意度

  • 质量功能部署也叫质量功能展开是指把用户对产品的需求进行多层次的演绎分析,转化为产品的设计需求、工程部件特征、工艺要求、生产要求,用来指导产品设计并保证产品的质量,是一种以用户为导向的质量管理工具。

  • 由于该方法所使用的主要图形就像房屋,所以它也被称为“质量屋”,如
    在这里插入图片描述

  • QFD将软件需求分为三类,分别是

    • 常规需求系统应该做到的功能或性能,实现的越多,用户越满意
    • 期望需求:用户想当然认为系统应该做到,但是不能正确表达的功能,没有实现会让用户不满意
    • 意外需求:用户要求范围外的功能或性能,开发人员控制,实现会高兴,不实现也没关系

练习题

某软件公司正在承担开发一个文字处理器的任务。在需求分析阶段,公司的相关人员整理出一些相关的系统需求其中,”找出文档中的拼写错误并提供一个替换项列表来供选择替换拼错的词“属于(),”显示提供替换词的对话框以及实现整个文档范围的替换“属于(),”用户能有效地纠正文档中的拼写错误“属于()。
A,业务需求 B.用户需求 C,功能需求 D.性能需求
A,业务需求 B.用户需求 C,功能需求 D.性能需求
A,业务需求 B.用户需求 C.功能需求 D.性能需求

答案B C A

需求工程

  • 需求工程:是一个不断反复的需求定义、文档记录、需求演进的过程,并最终在验证的基础上冻结需求。需求工程可以细分为需求获取、需求分析(包括系统建模)、需求规约、需求验证以及需求管理5个阶段。
    • 需求开发:包括需求获取、需求分析、编写规约(系统规格说明书)和需求验证4个阶段。
    • 需求管理:通常包括定义需求基线、处理需求变更及需求跟踪等方面的工作。
  • 需求开发的4个阶段:
    • 在需求开发阶段需要确定产品所期望的用户类型、获取每种用户类型的需求、了解实际的用户任务和目标,以及这些任务所支持的业务需求
    • 同时还包括分析源于用户的信息、对需求进行优先级分类、将所收集的需求编写成为软件规格说明书和需求分析模型,以及对需求进行评审等工作。

需求获取

  • 需求获取:是一个确定和理解不同的项目干系人的需求和约束的过程。在需求获取的过程中,主要解决需求调查的问题。要想做好需求调查,必须清楚地了解三个问题。
    • What:应该搜集什么信息。
    • Where:从什么地方搜集这些信息。
    • HOW:用什么机制或者技术来搜集这些信息。
  • 常见的需求获取方式有:用户访谈、问卷调查、采样、情节串联版、联合需求计划等。
    • 用户访谈:一对一进行访谈,适合于针对有代表性的用户。其形式分为结构化和非结构化两种。
    • 问卷调查:设计问题、制作成用户调查问卷、下发填写、整理分析。适合用户面广、用户需要灵活时间进行回馈
    • 采样:采用统计分析技术,从目标总体中选择出样本集的过程。可以是随机抽样,也可以是非随机抽样。适合用于大量用户信息或者数据信息采集分析,最终得出需求的场景
    • 情节串联板:一系列图片,通过这些图片来讲故事。
    • 联合讨论会:通过联合各个关键用户代表、系统分析师、开发团队代表一起,通过有组织的会议来讨论需求。
    • 需求记录技术:任务卡片、场景说明、用户故事等。

练习题

需求获取是确定和理解不同的项目干系人的需求和约束的过程,需求获取是否科学、准备充分,对获取出来的结果影响很大。在多种需求获取方式中,()方法具有良好的灵活性,有较宽广的应用范围,但存在获取需求时信息量大、记录较为困难、需要足够的领域知识等问题。()方法基于数理统计原理,不仅可以用于收集数据,还可以用于采集访谈用户或者是采集观察用户并可以减少数据收集偏差。()方法通过高度组织的群体会议来分析企业内的问题,并从中获取系统需求。
A用户访谈 B.问卷调查 C.联合需求计划 D采样
A用户访谈 B问卷调查 C,联合需求计划 D采样
A用户访谈 B.问卷调查 C,联合需求计划 D.采样

答案A D C

需求分析

  • 需求分析:一个好的需求应该具有无二义性、完整性、一致性、可测试性、确定性、可跟踪性、正确性、必要性等特性。需求分析人员需要把杂乱无章、真假难辨的用户要求和期望转化为真正的用户需求,最终再将用户需求转化为系统需求,形成最终的需求规约(需求规格说明书)
  • 需求分析:逐步细化所有的软件功能,找出系统各元素间的联系,接口特性和设计上的限制,分析他们是否满足需求,别除不合理部分,增加需要部分。最后综合成系统的解决方案,给出要开发的系统的详细逻辑模型(做什么的模型)。
  • 需求分析的任务:
    • 绘制系统上下文范围关系图
    • 创建用户界面原型
    • 分析需求的可行性
    • 确定需求的优先级
    • 为需求建立模型
    • 创建数据字典
    • 使用QFD(质量功能部署)
  • 目前,已存在的多种需求分析方法引用了不同的分析策略,常用的分析方法有以下两种:
    • 面向数据流的结构化分析方法(SA)
    • 面向对象的分析方法(OOA)
  • 结构化分析方法的特点是:自顶向下、逐步分解、分析的核心是数据字典
  • 结构化分析应该建立三种模型:数据模型、功能模型、行为模型:
    • 数据模型:常用实体关系(E-R)图描述实体、属性,以及实体间的关
      系;
    • 功能模型:常用数据流图(DFD data flow diagram),从数据传输加工的角度,用图形符号描述数据在系统间的传递情况;DFD和QFD不要记错了
    • 行为模型:又称状态模型,常用状态转换图(STD state transform diagram)描述系统状态和引起系统状态转换的事件,表示系统行为,指出作为特定事件的结果将执行哪些动作
      在这里插入图片描述

状态转化图

在这里插入图片描述

数据流图DFD

  • 数据流图(Data Flow Diagram,简称DFD):描述数据在系统中如何被传送或变换,以及如何对数据流进行变换的功能或子功能,用于对功能建模,数据流图相关概念示例如下:
    在这里插入图片描述
  • 数据流图:是可以分层的,根据层级数据流图分为顶层数据流图、中层数据流图和底层数据流图。除顶层数据流图外,其他数据流图从零开始编号。
    • 顶层数据流图只含有一个加工表示整个系统;输出数据流和输入数据流为系统的输入数据和输出数据,表明系统的范围,以及与外部环境的数据交换关系。
    • 中层数据流图是对父层数据流图中某个加工进行细化,而它的某个加工也可以再次细化,形成子图;中间层次的多少,一般视系统的复杂程度而定。
    • 底层数据流图是指其加工不能再分解的数据流图,其加工称为“原子加工”。

在这里插入图片描述

顶层数据流图

在这里插入图片描述

0层数据流图

在这里插入图片描述

1层数据流图

在这里插入图片描述

练习题

结构化分析方法中,数据流图中的元素在()中进行定义。
A,加工逻辑
B,实体联系图
C.流程图
D.数据字典

答案:D

下列关于结构化分析方法的数据字典加工逻辑的叙述中,不正确的是()。
A,对每一个基本加工,应该有一个加工逻辑
B.加工逻辑描述输入数据流变换位输出数据的加工规则
C.加工逻辑必须实现加工的数据结构和算法
D,结构化语言,判定树和判定表可以用来表示加工逻辑

答案:C

绘制分层数据流图(DFD)时需要注意的问题中,不包括()。
A,给图中的每个数据流、加工、数据存储和外部实体命名
B,图中要表示出控制流
C.一个加工不适合有过多的数据流
D,分解尽可能均匀

答案:B

需求规约

  • 软件需求规约:也叫需求定义、软件需求规格说明书SRS,是需求分析任务的最终产物,通过建立完整的信息描述详细的功能和行为描述、性能需求和设计约束的说明、合适的验收标准,给出对目标软件的各种需求。
  • 需求规约作为用户和开发者之间的一个协议,在之后的软件工程各阶段发挥重要的作用。
  • 软件需求规约中通常包含以下内容:
    • 引言。引言陈述软件目标,在基于计算机的系统语境内进行描述。
    • 信息描述。信息描述给出软件必须解决的问题的详细描述,记录信息内容、信息流和信息结构。
    • 功能描述。功能描述用来描述解决问题所需要的每个功能。其中包括为每个功能说明一个处理过程;叙述设计约束;叙述性能特征;用一个或多个图形形象地表示软件的整体结构和软件功能与其他系统元素间的相互影响。
    • 行为描述。行为描述用于描述作为外部事件和内部产生的控制特征的软件操作。
    • 校验标准。检验标准描述检验系统成功的标志,即对系统进行什么样的测试,得到什么样的结果,就表示系统已经成功实现了。检验标准是“确认测试”的基础。
    • 参考书目。参考书目包含了对所有和该软件相关的文档的引用,其中包括其他的软件工程文档、技术参考文献、厂商文献和标准。
    • 附录。附录包含了规约的补充信息,表格数据、算法的详细描述、图表和其他资料。

需求定义方法

  • 严格定义也称为预先定义,需求的严格定义建立在以下的基础假设之上;所有需求都能够被预先定义。开发人员与用户之间能够准确而清晰地交流。采用图形(或文字)可以充分体现最终系统。
  • 原型方法,迭代的循环型开发方式,需要注意的问题:并非所有的需求都能在系统开发前准确的说明。项目干系人之间通常都存在交流上的困难,原型提供了克服该困难的一个手段。特点:需要实际的、可供用户参与的系统模型。有合适的系统开发环境。反复是完全需要和值得提倡的,需求一旦确定,就应遵从严格的方法。

需求验证

  • 需求验证:也称为需求确认,目的是与用户一起确认需求无误。对需求规约进行评审和测试,包括两个步聚:

    • 需求评审:正式评审和非正式评审。
    • 需求测试:设计概念测试用例。
  • 需求验证作为需求开发阶段工作的复查手段,其目的是要检验需求功能的正确性、完整性和清晰性,是否能够反映用户的意愿,由于需求的变化往往使系统的设计和实现也跟着改变,所以由需求问题引起系统变更的成本比修改设计或代码错误的成本高得多。因此,为保证软件需求定义的质量,评审应指定专门的人员负责,并按规程严格进行。除分析人员之外,还要有用户,开发部门的管理者,软件设计、实现、测试的人员参加。

  • 需求验证通过后,要请用户签字确认,作为验收标准之一,此时,这个需求规格说明书就是需求基线,不可以再随意更新,如果需要更改必须走需求变更流程。

  • 需求验证也不可能发现所有的需求问题。在需求验证之后,对遗漏的补充以及对错误理解的更正是不可避兔的,因此需要进行需求管理。

  • 需求验证内容:

    1. 系统定义的目标是否与用户的要求一致
    2. 系统需求分析阶段提供的文档资料是否齐全;文档中的描述是否完整、清晰、准确地反映了用户要求。
    3. 被开发项目的数据流与数据结构是否确定且充足
    4. 主要功能是否已包括在规定的软件范围之内,是否都已充分说明
    5. 设计的约束条件或限制条件是否符合实际
    6. 开发的技术风险是什么
    7. 是否详细地制定了检验标准,它们能否对系统定义进行确认

需求管理

  • 软件需求管理:是一组用于帮助项目组在项目进展中的任何时候去标识、控制和跟踪需求的活动,对需求工程所有相关活动的规划和控制。换句话说,需求管理就是一种获取、组织并记录系统需求的系统化方案,以及一个使用户与项目团队对不断变更的系统需求达成并保持一致的过程。
  • 在需求管理中,每个需求被赋予唯一的标识符,一旦标识出需求,就可以为需求建立跟踪表,每个跟踪表标识需
    求与其他需求或设计文档、代码、测试用例的不同版本间的关系。
    • 特征跟踪表,记录需求如何与产品或系统特征相关联;
    • 来源跟踪表,记录每个需求的来源;
    • 依赖跟踪表,描述需求间如何关联等。
  • 这些跟踪表可以用于需求跟踪。在整个开发过程中,进行需求跟踪的目的是为了建立和维护从用户需求开始到测试之间的一致性与完整性,确保所有的实现是以用户需求为基础,所有的输出符合用户需求,并且全面覆盖了用户需求

版本控制

版本控制:使项目团队和用户达成共识,定义需求基线。通过了评审的需求规约(需求说明书)就是需求基线,下次如果需求变更需求,就需要安装流程来一步步进行。
在这里插入图片描述

需求跟踪

  • 需求跟踪有两种方式:正向跟踪和逆向跟踪
    • 正向跟踪以用户需求为切入点,检查《需求规约》中的每个需求是否都能在后继工作产品中找到对应点;简单点说,就是用户原始需求是否都实现了
    • 逆向跟踪检查设计文档、代码、测试用例等工作产品是否都能在《需求规约》中找到出处。简单点说,就是软件实现的是否都是用户要求的
  • 状态跟踪
    • 整个项目过程中,要始终跟踪需求状态即变更情况

变更控制

  • 变更控制:主要关心需求变更中的需求风险管理,带有风险的做法有:无足够用户参与、忽略了用户分类、用户需求的不断增加、模棱两可的需求、不必要的特性、过于精简的SRS、不准确的估算
  • 变更产生的原因:外部环境的变化、需求和设计做的不够完整、新技术的出现、公司机构重组造成业务流程的变化
  • 变更控制委员会CCB:也称为配置控制委员会,其任务时对建议的配置项变更做出评价、审批,以及监督已经批准变更的事实。
  • 变更控制的内容有:
    • 需求变更需要经过正式评估来决定是否批准
    • 保持项目计划与需求的同步
    • 以可控制的方式将需求变更融入项目中
    • 估计变更需求产生的影响,并协商新的约定

练习题

()是关于需求管理正确的说法。
A.为达到过程能力成熟度模型第二级,组织机构必须具有3个关键过程域
B.需求的稳定性不属于需求属性
C.需求变更的管理过程遵循变更分析和成本计算、问题分析和变更描述、变更实现的顺序
D.变更控制委员会对项目中任何基线工作产品的变更都可以做出决定

答案D

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

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

相关文章

【QT常用技术讲解】tableWidget右键菜单及多进程编程

前言 本文在QT项目的开发框架的基础上(源代码)增加tableWidget的右键菜单功能,并使用进程实现ping计算机的功能来讲解,本文不对进程间通信进行讲解。 概述 一个项目在开发过程中,通常面临着引入“第三方应用”&#x…

春秋云境 | 文件上传 | CVE-2022-30887

目录 靶标介绍 开启靶场 上传一句话木马 蚁剑连接 找到 flag 靶标介绍 多语言药房管理系统 (MPMS) 是用 PHP 和 MySQL 开发的, 该软件的主要目的是在药房和客户之间提供一套接口,客户是该软件的主要用户。该软件有助于为药房业务创建一个综合数据库&#xff0…

【代码随想录训练营第42期 Day22打卡 回溯Part1 - LeetCode 77. 组合 216.组合总和III 17.电话号码的字母组合

目录 一、做题心得 二、回溯基础知识 1.定义 2.适用问题 3.一个思想 4.代码实现 三、题目与题解 题目一:77. 组合 题目链接 题解:回溯 题目二:216.组合总和III 题目链接 题解:回溯 题目三:17.电话号码的字…

第十九天(2024.8.7)Vue Element-plus

1.Vue 1.创建vue文件 1.创建一个文件夹来存储vue文件 我在D盘下创建了一个EasyVue文件夹来存储vue文件 2.在控制台中输入 如果在控制台中按下面步骤成功不了的话,尝试:1.用管理员身份运行控制台 2.关闭防火墙 3.打开编码工具(Visual St…

WPF学习(5)- Border控件(边框布局)+GridSplitter分割窗口

严格来说,Border并不是一个布局控件,因为它并不是Panel的子类,而是Decorator装饰器的子类,而Decorator继承于FrameworkElement。我们要先看看它的父类Decorator。 public class Decorator : FrameworkElement, IAddChild {public…

CUDA编程05 - GPU内存架构和数据局部性

一:概述 到目前为止,我们已经学会了如何编写 CUDA 核函数,以及如何设置和分配大量线程来执行核函数。我们还了解了当前 GPU 硬件的计算架构,以及线程在硬件上调度执行过程。在本章中,我们将重点关注 GPU 的片上(on-chi…

Redisson 实现分布式锁

文章目录 Redisson 是什么Redisson 使用客户端模式单节点模式哨兵模式主从模式集群模式Spring Boot 整合 Redisson 中的锁Redisson 可重入锁Redisson 公平锁Redisson 联锁Redisson 读写锁Redisson Redlock Redisson 的看门狗机制RedLock 解决单体故障问题如何使用 RedLockMarti…

【C语言篇】操作符详解(上篇)

文章目录 操作符详解(上篇)前言sizeof强制类型转换算术操作符赋值操作符逻辑操作符逻辑取反运算符逻辑与运算符逻辑或运算符 关系操作符自增自减操作符和-逗号表达式 操作符详解(上篇) 前言 操作符又被叫做运算符,是不…

进程状态(三)----- linux 中具体的进程状态(下)

目录 前言1. T && t 状态2. X 与 Z 状态3. 孤儿进程 前言 继上一篇文章 进程状态(二)----- linux 中具体的进程状态(上) 介绍了 linux 系统中具体的 R、S、D 状态,而这篇文章继续介绍 linux 系统中剩下的三种…

SpringBoot简单项目(二维码扫描)

pom.xml中导入依赖 <!-- zxing --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.3.0</version></dependency><dependency><groupId>com.google.zxing</gro…

探索七款前沿UI设计软件:创新与实践

之前我们分享了制作原型的有用工具。制作完原型后&#xff0c;我们需要优化界面&#xff0c;这就是 UI 设计师的任务了。UI 设计软件对设计师来说非常重要。UI 设计工具的使用是否直接影响到最终结果的质量&#xff0c;所以有人会问&#xff1a;UI 界面设计使用什么软件&#x…

Java批量查询CSDN质量分

文章目录 前言代码实现pom.xml实体类工具类质量分查询 效果开源仓库 前言 在CSDN平台申请“专家博主”、“优质创作者”等称号的时候&#xff0c;往往会对博客的质量分有一定的要求&#xff0c;这时候我们需要审视以往所发表的博客&#xff0c;找出质量分较低的博客&#xff0…

nordic 蓝牙ble 配对绑定的流程 原理

目录 配对和绑定的基本概念 配对和绑定的流程 1. 配对请求和响应 2. 配对方法选择 3. 密钥生成和交换 4. 配对完成和绑定 配对和绑定的代码实现 初始化Peer Manager 处理Peer Manager事件 处理BLE事件 启动广播 在Nordic芯片上实现蓝牙低功耗(BLE)设备的配对和绑定…

Python 为Excel单元格设置填充\背景色 (纯色、渐变、图案)

在使用Excel进行数据处理和分析时&#xff0c;对特定单元格进行背景颜色填充不仅能够提升工作表的视觉吸引力&#xff0c;还能帮助用户快速识别和区分不同类别的数据&#xff0c;增强数据的可读性和理解性。 本文将通过以下三个示例详细介绍如何使用Python在Excel中设置不同的单…

sql注入——sqlilabs1-15

目录 sql注入靶场练习--sqlilabs 1.less-1​编辑 1.测试发现单引号为逃逸符号 2.确定查询列数为三列 3.查询到数据库名 4.查询数据库中的表名 5.查询用户表的列名字 6.查询用户信息 2.less-2​编辑 2.确定查询列数为三列 3.查询到数据库名 4.查询数据库中的表名 5.…

机械学习—零基础学习日志(高数23——无穷小运算)

零基础为了学人工智能&#xff0c;真的开始复习高数 这段时间&#xff0c;把张宇老师讲解考研的第一部分基本全部学习完毕了。 这里把第一部分的内容最后汇总一下。 无穷小运算——吸收律 这里展示一些无穷小的具体计算思路 无穷小运算——计算方法 泰勒展开的原则 夹逼准则…

SQL报错注入之floor

目录 1.简述 2.关键函数说明 1.rand函数 2.floor&#xff08;rand&#xff08;0&#xff09;*2&#xff09;函数 3.group by 函数 4.count&#xff08;*&#xff09;函数 3.报错分析 4.报错流程 4.1寻找注入点 4.2爆数据库名 4.3爆表名 4.4爆字段名 4.5查询数据 1.…

PySide入门实战之五 | 信号与槽函数之鼠标、键盘等事件

&#x1f680;&#x1f680;&#x1f680; Pyside6实战教程专栏目录入口&#xff1a;点击跳转 目录 一、前期准备二、鼠标触发事件鼠标拖动窗口 一、前期准备 我们采用Pyside入门实战之四中通过QTDesigner创建的界面&#xff0c;具体由两个Label和一个Button组件构成&#xff…

【c++】基础知识——快速入门c++

&#x1f31f;&#x1f31f;作者主页&#xff1a;ephemerals__ &#x1f31f;&#x1f31f;所属专栏&#xff1a;C 目录 前言 一、手搓一个Hello World 二、命名空间namespace 1.命名空间的定义 2.命名空间的使用 3.命名空间补充知识 三、c中的输入和输出 四、缺省参…

图书馆座位再利用小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;座位信息管理&#xff0c;座位预订管理&#xff0c;互勉信息管理&#xff0c;意见反馈管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;我的 开发…