如何做好软件需求分析?分析法

编辑导语:软件需求分析,就是把软件计划期间建立的软件可行性分析求精和细化,分析各种可能的解法,并且分配给各个软件元素。这是是软件定义阶段中的最后一步,是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。

一、需求分析定义

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

软件开发一般包括:可行性分析、需求分析、软件设计、软件开发、软件测试、软件实施、软件服务等步骤,需求分时软件开发的第一步骤。

用户需求分析是指在系统设计之前和设计、开发过程中对用户需求所作的调查与分析,是系统设计、系统完善和系统维护的依据。

需求是需要与欲求的意思,需求是机体的一种客观需要,而欲求则是一种主观需要,包括人在胜利、环境、社会等方面的需要。

需求是一款产品的市场基础,成功的产品不但能满足用户的物质需求,也要满足用户的精神和心理需求。

二、软件需求分析目标

需求分析是软件计划阶段的重要活动,也是软件生存周期中的第一步,该阶段是分析系统在功能上需要“实现什么”,而不是考虑如何去“实现”。

对客户的信息化需求进行分析,将客户不规范的、随意的需求,转换成规范的、严谨的、结构化的需求,将客户不正确的需求转换成正确的需求、将客户不切实际的需求转换成可以实现的需求,将客户不必要的需求砍掉,将客户漏掉的需求补上。

三、软件需求分析原则

需求分析通常来讲它们应符合以下一般原则:

1.能够表达和理解问题的信息域

信息域反映的是用户业务系统中数据的流向和对数据进行加工的处理过程,因此信息域是解决“做什么?”的关键因素。根据信息域描述的信息流、信息内容和信息结构,可以较全面地(完整地)了解系统的功能。

2.建立描述系统信息、功能和行为的模型

建立模型的过程是“由粗到精”的综合分析的过程。通过对模型的不断深化认识,来达到对实际问题的深刻认识。

3.能够对所建模型按一定形式进行分解

分解是为了降低问题的复杂性,增加问题的可解性和可描述性。分解可以在同一个层次上进行(横向分解),也可以在多层次上进行(纵向分解)。

4.分清系统的逻辑视图和物理视图

软件需求的逻辑视图描述的是系统要达到的功能和要处理的信息之间的关系,这与实现细节无关,而物理视图描述的是处理功能和信息结构的实际表现形式,这与实现细节是有关的。

需求分析只研究软件系统“做什么?”,而不考虑“怎样做?”。

四、软件需求分析内容

需求分析的内容是针对待开发软件提供完整、清晰、具体的要求,确定软件必须实现哪些任务。

具体分为功能性需求、非功能性需求与设计约束三个方面:

1.功能性需求

功能性需求即软件必须完成哪些事,必须实现哪些功能,以及为了向其用户提供有用的功能所需执行的动作。

功能性需求是软件需求的主体,开发人员需要亲自与用户进行交流,核实用户需求,从软件帮助用户完成事务的角度上充分描述外部行为,形成软件需求规格说明书。

2.非功能性需求

作为对功能性需求的补充,软件需求分析的内容中还应该包括一些非功能需求。

3.设计约束

一般也称做设计限制条件,通常是对一些设计或实现方案的约束说明。

例如:要求待开发软件必须使用Oracle数据库系统完成数据管理功能,运行时必须基于Linux环境等。

五、软件需求分析过程

需求分析阶段的工作,可以分为四个方面:问题识别、分析与综合、制订规格说明、评审。

1.问题识别

就是从系统角度来理解软件,确定对所开发系统的综合要求,并提出这些需求的实现条件,以及需求应该达到的标准。

这些需求包括:功能需求(做什么)、性能需求(要达到什么指标)、环境需求(如机型、操作系统等)、可靠性需求(不发生故障的概率)、安全保密需求、用户界面需求、资源使用需求(软件运行是所需的内存、CPU等)、软件成本消耗与开发进度需求、预先估计以后系统可能达到的目标。

2.分析与综合

逐步细化所有的软件功能,找出系统各元素间的联系,接口特性和设计上的限制,分析他们是否满足需求,剔除不合理部分,增加需要部分。

最后综合成系统的解决方案,给出要开发的系统的详细逻辑模型(做什么的模型)。

3.制订规格说明书

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

4.评审

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

六、软件需求评估方法

需求评估分析方法通常有:模糊聚类分析、质量功能展开、KANO模型分析、A/B测试。其中以卡诺(KANO)模型最常用。

1.模糊聚类分析法

是通过分析客观事物之间的不同特征和亲疏程度,建立模糊相似关系,从而对齐进行分类的方法。

在用户需求分析的运用中,判断用户需求之间的相似程度(亲疏关系),然后统计并建立相似性矩阵,继而寻找需求组合之间的相似程度,由此逐渐将用户需求逐一归类。

最终得到一个关系图谱,以更直观和自然的方式心展示用户需求各个特性之间的差异性和相似性,模糊聚类分析法一般要求对需求进行数学建模分析。

2.质量功能展开

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

由于该方法所使用的主要图形就像房屋,所以它也被称为“质量屋”,如下图:

3.卡诺KANO模型

是NoriakiKano博士提出的与产品性能有关的用户满意度模型,该模型能对用户需求进行很好的识别和分类,是对用户需求分类和优先排序的有用工具,以分析用户需求对用户满意的影响为基础,体现了产品性能和用户满意之间的非线性关系。

NoriakiKano将影响满意度的因素划分为五个类型,包括:必备需求、期望需求、魅力需求、无差异需求、反向需求。

利用KANO模型进行需求评估主要集中于对用户需求类型的分类讨论。为了便于分析可以设计相应的调研问卷。

问卷中需要对产品的某项功能分别设置正向和负向两个问题:“如果产品有这个功能,您觉得如何?”、“如果产品的这个功能不存在,您觉得如何?”

每个问题采用态度量表的形式设计选项,即“我喜欢这样”、“我期望这样”、“我没有意见”、“我可以忍受”、“我讨厌这样”,具体形式如下表:

经过访谈调研后,根据归类矩阵,将调研问题进行归类来确定需求的类型,KANO模型需求归类矩形如下表:

将问题结果术语模型矩阵中,就能够比较明确地看到,哪些用户需求是必须有的,哪些是用户期望的,哪些是可有可无的,哪些需求又是用户自己不确定的。

将用户需求进行分类,在产品开发时,功能优先级的排序一般是:基本属性>期望属性>兴奋属性>无差异属性,去掉可疑结果的需求和相反的需求。

4.A/B测试

是为Web或App界面或流程制作两个或多个版本,分别让组成成分相同(相似)的访客群组(目标人群)随机的访问这些版本,收集各群组的用户体验数据和业务数据,最后分析、评估出最好版本并且实现的综合成本低,正式采用。

比较常见的案例是对网站注册页进行A/B测试,确定哪一个方案的注册率高,更加满足用户的需求,实现的商业利益最大化。

七、需求分析优先级的方法

需求优先级的分析方法大致可以分成两大类:定性分析方法、定量分析方法;

一类是根据分析人员的经验主观地对需求进行优先级分类,称之为定性的分析方法,比如:四象限分析法、波士顿矩阵分析法;另一类是根据调查数据,对调查数据进行分析,得出需求的优先级分类,称之为定量的分析方法,比如:KANO模型。

1.四象限分析法

根据需求对于业务的影响,以及需求实现的紧迫程度,我们可以按照如下方式将需求归为4个象限,这也是需求归类的经典4分法。四象限分析法是很常见的一种定性分析需求优先级的方法,如下:

2.波士顿矩阵

波斯顿矩阵是由波士顿咨询公司发明的一种方法,最早用于分析市场增长率和市场份额,现在也被经常用于对需求的分析之中,波士顿矩阵由用户价值维度和公司价值两个维度将需求分成了四个象限:

3.卡诺KANO模型法

NoriakiKano将影响满意度的因素划分为五个类型,包括:必备需求、期望需求、魅力需求、无差异需求、反向需求(详情见上文)。

八、如何确定软件需求

经过大量的需求调研工作之后,手上可能有客户提出的大量的、各种各样的需求。

这些需求有的是技术上可以实现的,有的是技术上不可以实现的;有些是管理上需要的,有的是管理上不需要的;有些是合理的,有些是不合理的,如何处理这些需求呢?

以“实现用户正确的需求”为原则,对于用户提出的需求进行严格的分析、甄别。

为了认清用户的需求,先要认清用户。在进行需求调研的时候,会跟各种各样的人员沟通,他们的技术、只是、性格、职位、工作内容各不相同。

但他们也有相似的地方:他们不是做软件的,也不是分析需求的,他们永远不会像你希望的那样去描述需求,他们的需求是用自然语言描述的,是抽象的、概略的、随性的。

那个这些抽象、概略、随性的用户需求转化成具体、详细、结构化的软件需求,是需求分析的重点,通常从以下几点着手认清和控制需求:

1.将抽象的需求具体化

在需求调研的时候会发现,用户提出自己的需求时总是不会按照你希望方式去提出来,有的人因为不知道你想要什么,只为了应付领导布置的任务,有的是处于比较高的职位,习惯了从宏观的角度去讲问题,所以我们在整理需求的时候要将抽象的要求具体化。

2.将自然语言描述的需求结构化

用户描述需求总是非常随意的,他们使用平常正常沟通的语言描述,这种需求的主要特点就是不严谨,容易有其一,这种需求不能直接让开发者处理的,开发者需要的需求是描述明确的、精准的、没有歧义的。

需求分析分析者作为用户与开发者的桥梁,有义务将用户用自然语言描述的需求结构化。将用户的描述转换成更精确的语言,更接近IT人使用的语言。

3.注意避免理解偏差

理解偏差主要是需求分析者对用户所提的需求没有理解到位,用户明明想表达的是这个意思,却被理解成了另外一个意思。

这是一个沟通问题,说的人觉得自己说的很清楚了,可偏偏双方就是没有真正理解对方,所以下面是我们需要注意的:

4.识别超出项目范围的需求

用户的需求不能是漫无边际的,所有的需求都应该在项目范围之内,做需求分析的时候首先要确定好项目目标,要让用户知道需求边界在什么地方。

这个项目应该在项目启动时双方经过讨论达成共识,后面所有的工作都应该围绕这个目标展开。原则是即使在这个阶段的目标实现了以后再设置新目标,也不要不停的修改一个目标。

5.识别错误的需求

对于那些毫无逻辑性、前后矛盾或者在技术上根本无法实现,类似这样的统统归为错误需求。

6.识别技术上不能实现的需求。

当需求者面向用户时,代表的是身后的整个研发团队,要做好需求分析,需要对自己团队的技术能力有非常清楚的了解,哪些事情能做/不能做,又或者可以做但是需要太大的代价等,每个团队都有自己的技术边界。

九、整理需求

前期做了那么多的收集工作并确定需求之后,要做好需求的整理工作。需求整理是不是简单的将用户所提的需求全部一条条写下来就好了,而是一个综合分析的的整理过程。

通过整理,使得需求更有目的性、更系统性、更明确、更容易理解。需求经过整理后一般会生成需求调研报告与业务流程图,这是后面工作的纲领性文件。

当完成用户需求调查后,首先对《用户需求说明书》进行细化,对比较复杂的用户需求进行建模分析,以帮助软件开发人员更好地理解需求。

十、需求不明确带来的影响1.项目失控甚至烂尾

有时因为一个简单的逻辑或设计不明确,在沟通明确后最终发现需要技术方案大调整,很多项目会变得失控甚至烂尾。

2.技术脑补需求

假如需求不是明确的话,靠谱的技术同学,就会自己考虑逻辑和设计,就按他自己的理解和想法实现。

3.沟通成本高

项目规模越大,参与人数越多,矛盾越凸显。

在面对的是人数众多的设计师,前端团队、后端团队、外部团队、测试团队等时,产品经理需经常与设计、技术和测试沟通需求逻辑,沟通的成本会很高。

4.产品逻辑难以后续追溯

移动互联网时代,产品上线迭代节奏非常快,产品不断的迭代更新,或是人员的交接,经常需要回溯之前的线上逻辑,需求文档的缺失或不完善,会导致线上逻辑不明确,甚至后续的产品需求设计的逻辑与线上矛盾或冲突,为项目的开发带来麻烦。

参考资料:

本文由@忻芸原创发布于人人都是产品经理,未经许可,禁止转载

THE END
1.系统分析与需求分析:概念解析与区别系统分析不完全是需求分析;需求分析属于系统分析。 在我印象中,系统分析和需求分析是同一件事,说法不同而已,平时也是混合使用,不加区分。但事实上,二者还是有所区别。教程里,系统分析和需求分析分别位于不同的章节,其中系统分析自成一章,而需求分析则放在需求工程章节里。 从书本表述看,系统分析与需求分析用的技术https://blog.csdn.net/leftfist/article/details/122469280
2.系统需求分析和软件需求分析在软件开发过程中,系统需求分析和软件需求分析是两个至关重要的环节。它们不仅为项目的顺利实施提供了明确的方向,而且是项目成功的基石。本文将深入探讨这两个分析过程及其在软件开发中的重要性。 一、系统需求分析 系统需求分析是软件开发前期的关键活动,它涉及对整个系统的功能、性能、安全性等方面的全面考量。这一阶https://blog.51cto.com/u_15273385/11470018
3.系统需求分析工程师(互联网软件项目)是什么职位高级需求工程师 岗位要求: 1、根据产品规划或者项目要求,开展需求调研,完成调研报告和需求规格说明书; 2、向开发工程师提供咨询、指导、解释业务需求,向用户汇报系统功能; 3、整理和分析客户需求,对其分类汇总和实现预估,提出需求分析报告和实现计划要求; https://www.zhipin.com/job_detail/773a30eaecbaedfd0HRy29u_GA~~.html
4.如何系统性分析需求?(方法论+案例+清单)人人都是产品经理编辑导语:你有没有遇到过这样的情况:当你与他人沟通需求时,常常被他人所带歪,又或者是在分析需求时,需求分析不够系统以及透彻。作者梳理了一套系统性分析需求的方法,希望对你有所帮助。 不知你是否有过这样的困惑? 当你跟需求方沟通需求时,容易被对方的思路带偏,导致需求沟通不完整,反复多次沟通才弄清楚,感觉自https://www.woshipm.com/zhichang/5551466.html
5.需求分析报告(通用12篇)本需求分析报告的目的是规范化本软件的编写,旨在于提高软件开发过程中的能见度,便于对软件开发过程中的控制与管理,同时提出了本学校排课系统的软件开发过程,便于程序员与客户之间的交流、协作,并作为工作成果的原始依据,同时也表明了本软件的共性,以期能够获得更大范围的应用,同时它也是进行项目策划、概要设计和详细设https://www.ruiwen.com/word/xuqiufenxibaogao.html
6.什么是需求分析?应该怎么做需求分析需求分析阶段的核心可以总结为两句话:“这个需求能不能做?做成什么样?”。据此可以将需求分析分为两个阶段:前半段的核心是分析需求的真实性和验证需求解决方案(产品)的可行性,包含需求收集、需求分析、方案验证三个阶段;后半段核心则是系统思考产品过程中可能遇到的问题并提出解决方案,包含构建商业模式、规划https://baijiahao.baidu.com/s?id=1792569477949532584&wfr=spider&for=pc
7.如何进行产品需求分析?产品专家带你系统性实操做好需求分析对于产品经理来说十分重要,也是应对各种产品需求的解决方法。作为产品经理,基础的需求分析技能是不够的,高级产品经理需要具有专业而系统的产品需求分析能力。当产品需求采集之后,产品经理面对一堆杂乱无章的、各式各样、不同目的的需求,到底该如何做呢? https://boardmix.cn/article/productdemandanalysis/
8.一文详解软件测试需求分析是什么其它综合测试需求:系统应该做什么、系统不应该做什么、发现系统设计中存在的问题。例如取款金额可选在100-2000之间且为100倍数可取;小于100或者大于2000不可取;在100-2000之间但不是100倍数不可取;当日取款总额必须小于等于20000;取款金额必须小于等于账户余额等等,这是测试需求。 如何开展测试需求分析 5.1、概述 开展测试需求分析https://www.jb51.net/article/9449.htm
9.费控篇:第一次对接财务系统,产品该如何做?02 对接费控前该做些什么 作为一个产品人,对接费控系统需要人力物力时间成本,也会对业务产生影响,所以在对接费控前需要反复思考。 1. 自身业务系统需求分析 本次对接费控系统的是集团内部B端图书采购系统,想要通过结算线上化的形式来实现采购全流程闭环监控。 https://maimai.cn/article/detail?fid=1607820065&efid=mQdqjsPYWEvhWKi7cKoeuA
10.系统的的业务需求分析7篇1.什么是系统的业务需求分析? 系统的业务需求分析是指对客户需求进行深入分析、研究,找出客户的需求,从而帮助企业(或机构)更准确地了解客户需求,进而制定出更好的产品计划。 以机票预订系统为例,需求分析就包括核心需求、必要的功能、用户需求及流程设计等方面。如果我们在业务需求分析过程中没有足够的了解和分析,就会https://hsy.chanjet.com/wenku/wk180bf9b1d4cd.html
11.华为身上学到的需求管理经验腾讯云开发者社区不同的角色、产出不同 简单来说就是:需求分析原始需求、需求拆分为系统需求、需求实现为功能需求**需求分析将客户需求 输出成 需求描述。 需求经理需要把 用户需求(User Story) 转换成 客户能够接受的 初始需求 IR(Initial Requirement) 对于用户来说,我只管提 我的原始需求是什么 需求经理要记录 用户的IR 并在https://cloud.tencent.com/developer/article/2231830
12.系统分析师教程知识点精讲之系统分析与需求分析区别摘要:软考系统分析师在2017上半年开考,希赛小编为大家整理了一些系统分析师教程知识点精讲,以下是有关需求分析的讲解,希望对准备参加考试的你有所帮助。 >>>点击了解系统分析师网络班 >>>点击了解系统分析师面授班 软考系统分析师在2017上半年开考,希赛小编为大家整理了一些系统分析师教程知识点精讲,以下是有关https://www.educity.cn/rk/1783727.html
13.内部系统开发怎么做需求分析?内部系统开发是为了满足组织或企业内部需求而创建的软件应用程序。在内部系统开发中,需求分析是关键的一步,因为它有助于明确项目的范围、功能和目标,确保开发团队和利益相关者在同一页面上。以下是关于如何进行内部系统开发的需求分析的一些建议: 明确项目背景和目标: http://www.apppark.cn/t-48988.html
14.企业员工培训八大关键技法如何发现培训需求呢?作为有经验的培训经理,正确的做法应该是放弃“寻找培训需求”,而要转换思路去“探究企业的问题”。培训需求分析最终要回答“为什么要培训”、“采用什么方法培训”、“培训什么”以及“培训的效果是什么”的问题。 找到差距,发现问题,用培训的手段解决问题,这是培训管理工作的基本原理。 http://zdpx.zju.edu.cn/news1_3680_305.html