[需求管理-3]:什么是需求分析?常用的需求分析的流程与方法

news/2024/5/3 9:55:22/文章来源:https://blog.csdn.net/HiWangWenBing/article/details/126855421

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文网址:https://blog.csdn.net/HiWangWenBing/article/details/126855421


目录

第1章 什么是需求分析

1.1 概述

1.2 需求分析的本质

1.3 需求分析的目标

1.4 架构师、需求工程师、产品经理、技术经理

第2章 复杂需要的需求分析步骤

2.1 总体流程

2.2 每个环节的流程

2.3 需求分析的三要素

2.4 需求分析与需求验证的对等关系

第3章 需求分析的总体方法

3.1 功能分解方法

3.2 结构化分析方法

3.3 信息建模法

3.4 面向对象的分析方法


第1章 什么是需求分析

1.1 概述

 需求分析也称为软件需求分析、系统需求分析或需求分析工程等,是开发人员经过深入细致的调研和分析,准确理解用户和项目的功能、性能、可靠性等具体要求,将用户非形式的需求表述转化为完整的需求定义、需求规范,从而确定系统必须做什么的过程。

需求分析是软件计划阶段(范围基线)的重要活动,也是软件生存周期中的一个重要环节,该阶段是分析系统在功能上需要“实现什么What”,而不是考虑如何How去“实现”

1.2 需求分析的本质

业务和用户层面的需求转换成软件或硬件系统级的方案性需求。

(1)首先,把用户或业务需求映射到特定的产品(产品经理)。相同的需求,可通过不同的产品实现。

(2)然后,再把用户或业务需求映射到产品内部的技术方案(系统工程师),系统工程师更熟悉产品内部的软硬件总体设计。

因此,需求分析工程师必须熟悉组织内的软件或硬件系统级架构和系统方案,熟悉组织的业务系统,否则很难把用户的业务需求转换成软硬件系统的需求。

(1)相同的用户需求,不同组织、不同公司,经过需求分析,可能会给出不同的解决方案和需要规范。

(2)相同的用户需要,相同的组织,不同的分析人员,可能会给出不同的解决方案 。

1.3 需求分析的目标

(1)功能描述

把用户对待开发软件提出的“要求”或“需要”进行分析与整理,确认后形成描述完整、清晰与规范的文档,确定软件需要实现哪些功能,完成哪些工作。

(2)非功能描述

软件的一些非功能性需求(如软件性能、可靠性、响应时间、可扩展性等),作为软件设计的约束条件

(3)约束条件

一般也称做设计限制条件,通常是对一些设计或实现方案的约束说明。例如,要求待开发软件必须使用Oracle数据库系统完成数据管理功能,运行时必须基于Linux环境等。

(4)对外交互(给出了满足需求的解决方案,但不是代码实现)

运行时与其他软件或功能的交互关系等也是软件需求分析的目标。

  • 系统外的交互场景
  • 系统内的交互场景

1.4 架构师、需求工程师、产品经理、技术经理

第2章 复杂需要的需求分析步骤

2.1 总体流程

(1)可行性研究报告 -- 产品经理、系统架构师

针对某个需求,分析在产品、技术上、经济上是否可行所进行的科学分析和论证。

对于复杂的功能或产品,需要给出可行性研究报告。特别是需要通过新产品满足客户需要的时候,一定需要进行可行性研究,对可能的技术方案、经济价值进行可行性研究。

(2)需求和分析导出 =》 技术可行性分析  -- 架构师、系统工程师

对于大多数客户需要,是在已有的产品或系统上做增量开发,这时候,就不需要进行可行性研发,只需要分析技术的可行性分析即可。技术可行性分析是可行性研究报告的简化版。

简单化输出技术解决方案基本模型和主要的技术影响面即可(即系统中哪些模块受到了影响)。

(3)需求描述(系统级需要) -- 系统工程师

如果技术是可行的,也标识出了对系统中不同模块的影响程度和影响范围(系统中哪些模块受到了影响)。

则需要进一步描述,描述对软件系统和硬件系统的需求。生产系统级需求的文档。

  • 对系统外设备的接口
  • 时序性的功能需求(纵向的端到端的场景)
  • 非时序的功能需求(某个特定的条目)
  • 非功能需求
  • 约束条件

(4)需求有效性验证(对系统内主要受影响模块的需要) -- 系统工程师、软件设计师

只有描述了对系统中主要业务功能模块影响和需要,不同业务部门的开发人员,才能进行软件和编码实现。

对这部分的需要的分析,最终生产详细的软件系统需求规格说明书。

备注:至于规格需要细化到什么程度,不同任务由哪些角色来实施,完全取决于不同组织的业务类型和职能部门的组织方式。

2.2 每个环节的流程

(1)问题识别(不用总阶段,识别的问题不同)

就是从系统角度来理解软件,确定对所开发系统的综合要求,并提出这些需求的实现条件,以及需求应该达到的标准。这些需求包括:功能需求(做什么)、性能需求(要达到什么指标)、环境需求(如机型、操作系统等)、可靠性需求(不发生故障的概率)、安全保密需求、用户界面需求、资源使用需求(软件运行是所需的内存、CPU等)、软件成本消耗与开发进度需求、预先估计以后系统可能达到的目标。

分析与综合: (不用总阶段,细化的对象不同,分析的方法也不相同)

逐步细化所有的软件功能,找出系统各元素间的联系,接口特性和设计上的限制,分析他们是否满足需求,剔除不合理部分,增加需要部分。最后综合成系统的解决方案,给出要开发的系统的详细逻辑模型(做什么的模型)。

制订规格说明书: (不用总阶段,输出的文档也不相同)

即编制文档,描述需求的文档称为软件需求规格说明书。请注意,需求分析阶段的成果是需求规格说明书,向下一阶段提交。

评审:  (不用总阶段,参与文档书写和评审的人也不完全相同)

对功能的正确性,完整性和清晰性,以及其它需求给予评价。评审通过才可进行下一阶段的工作,否则重新进行需求分析。

2.3 需求分析的三要素

(1)角色:某个需求动作的操作者

(2)操作:操作者执行期望执行的动作

(3)目的:说明执行此动作的目的

比如:作为维护员,我希望基站支持xxx功能,目的是为了让终端用户能够更快速的上网。

2.4 需求分析与需求验证的对等关系

所有不同层面的需要,都需要通过不同层面的测试来进行验证。

第3章 需求分析的总体方法

软件需求的分析与设计方法较多,一些大同小异,而有的则基本思路相差很大。

从开发过程及特点出发,软件开发一般采用软件生存周期的开发方法,有时采用开发原型以帮助了解用户需求。在软件分析与设计时,自上而下由全局出发全面规划分析,然后逐步设计实现。

从系统分析出发,可将需求分析方法大致分为:

功能分解方法、结构化分析方法、信息建模法和面向对象的分析方法。

3.1 功能分解方法

将新系统作为多功能模块的组合。

各功能义可分解为若干子功能及接口,子功能再继续分解。

便可得到系统的雏形,即功能分解——功能、子功能、功能接口。

3.2 结构化分析方法

结构化分析方法是一种从问题空间到某种表示的映射方法,是结构化方法中重要且被普遍接受的表示系统,由数据流图数据词典构成并表示。

此分析法又称为数据流法

其基本策略是跟踪数据流,即研究问题域中数据流动方式及在各个环节上所进行的处理,从而发现数据流和加工。

结构化分析可定义为数据流、数据处理或加工、数据存储、端点、处理说明和数据字典。

数据流图(Data Flow Diagram):简称DFD,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。

在这里插入图片描述

 在这里插入图片描述

 在这里插入图片描述

3.3 信息建模法

它从数据角度对现实世界建立模型。

大型软件较复杂;很难直接对其分析和设计,常借助模型。

模型是开发中常用工具,系统包括数据处理、事务管理和决策支持。实质上,也可看成由一系列有序模型构成,其有序模型通常为功能模型、信息模型、数据模型、控制模型和决策模型。有序是指这些模型是分别在系统的不同开发阶段及开发层次一同建立的。建立系统常用的基本工具是E—R图。经过改进后称为信息建模法,后来又发展为语义数据建模方法,并引入了许多面向对象的特点。

信息建模可定义为实体或对象、属性、关系、父类型/子类型和关联对象。此方法的核心概念是实体和关系,基本工具是E-R图,其基本要素由实体、属性和联系构成。该方法的基本策略是从现实中找出实体,然后再用属性进行描述

3.4 面向对象的分析方法

面向对象的分析方法的关键是识别问题域内的对象,分析它们之间的关系,并建立三类模型,即对象模型、动态模型和功能模型。面向对象主要考虑类或对象、结构与连接、继承和封装、消息通信,只表示面向对象的分析中几项最重要特征。类的对象是对问题域中事物的完整映射,包括事物的数据特征(即属性)和行为特征(即服务)。

对象都是独立的

对象分析方法

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

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

相关文章

go-cqhttp调用接口

目录调用接口一、 概述1、 简介2、 接口二、 接入权限系统1、 智能聊天2、 戳一戳3、 新成员三、 调用接口1、 查找接口2、 调用接口3、 接入机器人 调用接口 一、 概述 1、 简介 在我们实现了权限控制功能后,那么我们就在也不用担心机器人话太多,同时,平时又没时间,电脑又…

openSmile 在 Linux 下的安装教程与使用示例

目录openSMILE 工具简介Linux 上的安装步骤使用示例后续openSMILE 工具简介 一款以命令行形式运行的工具,通过配置config文件,主要用于音频特征的提取。官网:https://www.audeering.com/research/opensmile/ (当前是3.0版本&…

Oracle中的用户和表空间

文章目录Oracle中的用户和表空间一、用户和表空间简介二、用户1、系统用户登录1.1、数据库在本机时1.2、数据库在远程时1.3、案例2、查看登录用户2.1、命令2.2、案例3、解锁与锁定用户3.1、命令3.2、案例4、使用scott用户登录4.1、命令4.2、案例三、表空间1、表空间数据字典2、…

解决从PDF复制文字后乱码问题

背景 需要从PDF复制文字出来做笔记,可是谁知道PDF通过adobe打开后复制出来后是乱码,如下图所示: 解决 尝试过安装字体,可惜没卵用。 方法1-CAJViewer打开 用该软件打开后复制,可以完美复制,但是有个小问题…

Fastformer: Additive Attention Can Be All You Need

创新点:本文根据transformer模型进行改进,提出了一个高效的模型,模型复杂度呈线性。 主要改进了注意力机制,出发点在于降低了注意力矩阵的重要程度,该方法采用一个(1*T)一维向量替换了原始T*T大小的注意力矩阵。注意力结构图: 在这里,输入同样通过不同的线性映射得到Q…

Vue23全面知识总结七(2)

感兴趣的朋友可以去我的语雀平台进行查看更多的知识。 https://www.yuque.com/ambition-bcpii/muziteng 7.8 路由的props配置 props作用:让路由组件更方便的收到参数 {name:detail,path:detail/:id,component:Detail,//第一种写法:props值为对象&…

Java内存模型:创建对象在堆区如何分配内存

一、Heap堆区 Heap堆是JVM所管理的内存中最大的一块区域,被所有线程共享的一块内存区域。堆区中存放对象实例和数组,“几乎”所有的对象实例以及数组都在这里分配内存。 新生代、老年代 二、创建对象的内存分配 初始创建对象会在新生代的Eden区生成&…

行为型设计模式之策略模式

行为型设计模式之策略模式策略模式应用场景优缺点主要角色策略模式的基本使用创建抽象策略角色创建具体策略角色创建上下文角色客户端执行策略模式实现支付方式的选择创建抽象策略角色创建具体策略角色创建上下文角色客户端执行策略模式 策略模式(Strategy Pattern)…

线程安全集合:CopyOnWriteArrayList源码分析

目录 一、基本思想 二、源码分析 add()方法 set()方法 remove()方法 get()方法 三、小结 一、基本思想 首先CopyOnWrite 简称 COW ,是一种用于对集合并发访问的优化策略。基本思想是:当我们往一个集合容器中写入元素时(比如添加…

C++左值右值、左值引用右值引用、移动语义move

目录 1.什么是左值、右值 2.什么是左值引用&、右值引用&& 2.1左值引用& 2.2右值引用&& 2.3对左右值引用本质的讨论 2.3.1右值引用有办法指向左值吗? 2.3.2左值引用、右值引用本身是左值还是右值? 2.4 右值引用使用场景…

51单片机学习:静态数码管实验

实验名称:静态数码管实验 接线说明: 实验现象:下载程序后“数码管模块”最左边数码管显示数字0 注意事项: ***************************…

神经体液调节网络,神经网络能干嘛

神经网络的发展趋势如何? 神经网络的云集成模式还不是很成熟,应该有发展潜力,但神经网络有自己的硬伤,不知道能够达到怎样的效果,所以决策支持系统中并不是很热门,但是神经网络无视过程的优点也是无可替代…

CSDN编程竞赛-第六期(上)

CSDN编程竞赛报名地址:https://edu.csdn.net/contest/detail/16 努力是为了让自己不平庸: 前言/背景 四道题都是相关数组的,思路很好想,但是需要熟练使用,不能有小错误。 参赛流程 活动时间:9月8日-21日&a…

Python机器视觉--OpenCV进阶(核心)--图像直方图与掩膜直方图与直方图均衡化

1.图像直方图 1.1 图像直方图的基本概念 在统计学中,直方图是一种对数据分布情况的图形表示,是一种二维统计图表. 图像直方图是用一表示数字图像中亮度分布的直方图,标绘了图像中每个亮度值的像素数。可以借助观察该直方图了解需要如何调整…

记录一次关于Rank()排序函数问题

先来看应用场景吧 就是页面上有个top按钮 根据不同的top 进行筛选 比如我选择top5 那么在下方当前大区的销售额降序筛选出来最高的前五个销售员or客户这种场景 💖 问题 问题1:为什么我的这个rank排序函数 这个华南大区 不是从1开始的呢 其他大区都是正…

java毕业设计选题系统ssm实现的商城系统(电商购物项目)

🍅文末获取联系🍅 一、项目介绍 《ssm实现的商城系统》该项目采用技术:springspringMVCmybaitsEasyUIjQueryAjax等相关技术,项目含有源码、文档、配套开发软件、软件安装教程、项目发布教程等 1.1 课题背景、目的及意义 当今社…

java 同学聚会AA制共享账单系统springboot 小程序022

本系统在一般同学会小程序的基础上增加了首页推送最新信息的功能方便用户快速浏览,是一个高效的、动态的、交互友好的同学会小程序。 用户在首页上会看到各类模块的推送内容,可以以最直接的方式获取信息,注册登陆后,可以对应经费信…

Unity基础笔记(5)—— Unity渲染基础与动画系统

Unity渲染基础与动画系统 Unity渲染基础 一、摄像机 1. 摄像机概念和现实中的摄像机很接近,Unity 中 Camera 组件负责将游戏画面拍摄然后投放到画面上 Camera 拍摄到的画面决定了 Game 面板的画面 创建场景的时候,Unity 会默认创建一个摄像机,所以我们点击 Game 面板才有画面…

【算法刷题】链表篇-链表的回文结构

文章目录题目要求方法1:思路代码方法2代码题目要求 链接:链表的回文结构_牛客题霸_牛客网 (nowcoder.com) 1 -> 2 -> 3 -> 2 -> 1 1 -> 2 -> 2 -> 1 上面两个是回文结构 方法1:思路 1.遍历链表,把结点对应的…

网络安全基础——对称加密算法和非对称加密算法(+CA数字证书)

目录 一、数据传输时的安全特性 二、对称加密算法: 三、非对称加密算法 四、对称加密和非对称加密 — 融合算法: 五、CA数字证书: 一、数据传输时的安全特性 ———————————————————————————————————…