网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
- [2. 波士顿矩阵](#2__175)
- [3. 卡诺KANO 模型法](#3_KANO__186)
+ [八、如何确定软件需求](#_190)
+ - [1. 将抽象的需求具体化](#1__206)
- [2. 将自然语言描述的需求结构化](#2__210)
- [3. 注意避免理解偏差](#3__216)
- [4. 识别超出项目范围的需求](#4__226)
- [5. 识别错误的需求](#5__232)
- [6. 识别技术上不能实现的需求。](#6__236)
+ [九、整理需求](#_240)
+ [十、如何做好需求自查](#_248)
+ [十一、需求不明确带来的影响](#_256)
+ - [1. 项目失控甚至烂尾](#1__258)
- [2. 技术脑补需求](#2__264)
- [3. 沟通成本高](#3__270)
- [4. 产品逻辑难以后续追溯](#4__276)
已剪辑自: https://www.woshipm.com/pmd/4304055.html
编辑导语:软件需求分析,就是把软件计划期间建立的软件可行性分析求精和细化,分析各种可能的解法,并且分配给各个软件元素。这是是软件定义阶段中的最后一步,是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。
一、需求分析定义
软件需求分析也称为系统需求分析或需求分析工程等,是开发人员经过深入细致的调研和分析,准确理解用户和项目的功能、性能、可靠性等具体要求,将用户非形式的需求表述转化为完整的需求定义,从而确定系统必须做什么的过程。
软件开发一般包括:可行性分析、需求分析、软件设计、软件开发、软件测试、软件实施、软件服务等步骤,需求分时软件开发的第一步骤。
用户需求分析是指在系统设计之前和设计、开发过程中对用户需求所作的调查与分析,是系统设计、系统完善和系统维护的依据。
二、软件需求分析目标
需求分析是软件计划阶段的重要活动,也是软件生存周期中的第一步,该阶段是分析系统在功能上需要“实现什么”,而不是考虑如何去“实现”。
对客户的信息化需求进行分析,将客户不规范的、随意的需求,转换成规范的、严谨的、结构化的需求,将客户不正确的需求转换成正确的需求、将客户不切实际的需求转换成可以实现的需求,将客户不必要的需求砍掉,将客户漏掉的需求补上。
此外,软件的一些非功能性需求(如软件性能、可靠性、响应时间、可扩展性等),软件设计的约束条件,运行时与其他软件的关系等也是软件需求分析的目标。
三、软件需求分析原则
需求分析通常来讲它们应符合以下一般原则:
1. 能够表达和理解问题的信息域
信息域反映的是用户业务系统中数据的流向和对数据进行加工的处理过程,因此信息域是解决“做什么?”的关键因素。根据信息域描述的信息流、信息内容和信息结构,可以较全面地(完整地)了解系统的功能。
2. 建立描述系统信息、功能和行为的模型
建立模型的过程是“由粗到精”的综合分析的过程。通过对模型的不断深化认识,来达到对实际问题的深刻认识。
3. 能够对所建模型按一定形式进行分解
分解是为了降低问题的复杂性,增加问题的可解性和可描述性。分解可以在同一个层次上进行(横向分解),也可以在多层次上进行(纵向分解)。
4. 分清系统的逻辑视图和物理视图
软件需求的逻辑视图描述的是系统要达到的功能和要处理的信息之间的关系,这与实现细节无关,而物理视图描述的是处理功能和信息结构的实际表现形式,这与实现细节是有关的。
需求分析只研究软件系统“做什么?”,而不考虑“怎样做?”。
四、软件需求分析内容
需求分析的内容是针对待开发软件提供完整、清晰、具体的要求,确定软件必须实现哪些任务。
具体分为功能性需求、非功能性需求与设计约束三个方面:
1. 功能性需求
功能性需求即软件必须完成哪些事,必须实现哪些功能,以及为了向其用户提供有用的功能所需执行的动作。
功能性需求是软件需求的主体,开发人员需要亲自与用户进行交流,核实用户需求,从软件帮助用户完成事务的角度上充分描述外部行为,形成软件需求规格说明书。
2. 非功能性需求
作为对功能性需求的补充,软件需求分析的内容中还应该包括一些非功能需求。
主要包括软件使用时对性能方面的要求、运行环境要求,软件设计必须遵循的相关标准、规范、用户界面设计的具体细节、未来可能的扩充方案等。
3. 设计约束
一般也称做设计限制条件,通常是对一些设计或实现方案的约束说明。
例如:要求待开发软件必须使用Oracle数据库系统完成数据管理功能,运行时必须基于Linux环境等。
五、软件需求分析过程
需求分析阶段的工作,可以分为四个方面:问题识别、分析与综合、制订规格说明、评审。
1. 问题识别
就是从系统角度来理解软件,确定对所开发系统的综合要求,并提出这些需求的实现条件,以及需求应该达到的标准。
这些需求包括:功能需求(做什么)、性能需求(要达到什么指标)、环境需求(如机型、操作系统等)、可靠性需求(不发生故障的概率)、安全保密需求、用户界面需求、资源使用需求(软件运行是所需的内存、CPU等)、软件成本消耗与开发进度需求、预先估计以后系统可能达到的目标。
2. 分析与综合
逐步细化所有的软件功能,找出系统各元素间的联系,接口特性和设计上的限制,分析他们是否满足需求,剔除不合理部分,增加需要部分。
最后综合成系统的解决方案,给出要开发的系统的详细逻辑模型(做什么的模型)。
3. 制订规格说明书
即编制文档,描述需求的文档称为软件需求规格说明书。请注意,需求分析阶段的成果是需求规格说明书,向下一阶段提交。
4. 评审
对功能的正确性,完整性和清晰性,以及其它需求给予评价。评审通过才可进行下一阶段的工作,否则重新进行需求分析。
六、软件需求评估方法
需求评估分析方法通常有:模糊聚类分析、质量功能展开、KANO模型分析、A/B测试。其中以卡诺(KANO)模型最常用。
1. 聚类分析法
聚类分析指将物理或抽象对象的集合分组为由类似的对象组成的多个类的分析过程。它是一种重要的人类行为。
聚类是将数据分类到不同的类或者簇这样的一个过程,所以同一个簇中的对象有很大的相似性,而不同簇间的对象有很大的相异性。
在聚类分析的时候,要根据变量的性质选择聚类模型。如果关键属性是使用问卷收集的分类变量,一般选择两步聚类法,因为用户的人口学特征和使用某产品行为偏好等特征一般都是分类变量。检验聚类变量差异性:如下
2. 质量功能展开
是指把用户对产品的需求进行多层次的演绎分析,转化为产品的设计需求、工程部件特征、工艺要求、生产要求,用来指导产品设计并保证产品的质量,是一种以用户为导向的质量管理工具。
由于该方法所使用的主要图形就像房屋,所以它也被称为“质量屋”,如下图:
3.卡诺KANO 模型
是 Noriaki Kano 博士提出的与产品性能有关的用户满意度模型,该模型能对用户需求进行很好的识别和分类,是对用户需求分类和优先排序的有用工具,以分析用户需求对用户满意的影响为基础,体现了产品性能和用户满意之间的非线性关系。
Noriaki Kano 将影响满意度的因素划分为五个类型,包括:必备需求、期望需求、魅力需求、无差异需求、反向需求。
- 兴奋(魅力)需求:用户意想不到的,如果不提供次需求,用户满意度不会降低,但是提供次需求,用户满意度会有很大的提升;
- 期望(意愿)需求:当提供此需求,用户满意度会提升,当不提供此需求,用户满意度会降低;
- 基本(必备)需求:当优化此需求,用户满意度不会提升,当不提供此需求,用户满意度会大幅下降;
- 无差异需求:无论提供或者不提供此需求,用户满意度都不会有变化,而且根本不会在意;
- 反向(逆向)需求:用户根本没有这个需求,提供之后用户满意度反而会下降。
利用KANO模型进行需求评估主要集中于对用户需求类型的分类讨论。为了便于分析可以设计相应的调研问卷。
问卷中需要对产品的某项功能分别设置正向和负向两个问题:“如果产品有这个功能,您觉得如何?” 、“如果产品的这个功能不存在,您觉得如何?”
每个问题采用态度量表的形式设计选项,即“我喜欢这样”、“我期望这样”、“我没有意见”、“我可以忍受”、“我讨厌这样”,具体形式如下表:
经过访谈调研后,根据归类矩阵,将调研问题进行归类来确定需求的类型,KANO模型需求归类矩形如下表:
将问题结果术语模型矩阵中,就能够比较明确地看到,哪些用户需求是必须有的,哪些是用户期望的,哪些是可有可无的,哪些需求又是用户自己不确定的。
将用户需求进行分类,在产品开发时,功能优先级的排序一般是:基本属性>期望属性>兴奋属性>无差异属性,去掉可疑结果的需求和相反的需求。
4. A/B测试
是为Web或App界面或流程制作两个或多个版本,分别让组成成分相同(相似)的访客群组(目标人群)随机的访问这些版本,收集各群组的用户体验数据和业务数据,最后分析、评估出最好版本并且实现的综合成本低,正式采用。
比较常见的案例是对网站注册页进行A/B测试,确定哪一个方案的注册率高,更加满足用户的需求,实现的商业利益最大化。
需要注意在进行A/B测试时,每次必须只测量一个变量,多个变量测试,则无法判断是哪个变量导致的结果;测试的环境应当一直,例如测量时间应一致。
因为在不同的时间段,用户的访问量会有变动;测量的样本量要具有统计学意义,样本流量太小时,无法体现在线用户的真实行为。
七、需求分析优先级的方法
需求优先级的分析方法大致可以分成两大类:定性分析方法、定量分析方法;
一类是根据分析人员的经验主观地对需求进行优先级分类,称之为定性的分析方法,比如:四象限分析法、波士顿矩阵分析法;另一类是根据调查数据,对调查数据进行分析,得出需求的优先级分类,称之为定量的分析方法,比如:KANO模型。
1. 四象限分析法
根据需求对于业务的影响,以及需求实现的紧迫程度,我们可以按照如下方式将需求归为4个象限,这也是需求归类的经典4分法。四象限分析法是很常见的一种定性分析需求优先级的方法,如下:
- 重要且紧急的事,影响业务正常进行,需要尽快处理;
- 不重要但紧急的事,虽然对业务影响不大,但是需要尽快处理;
- 重要且不紧急的事,对业务影响大,但不需要短期内就完成;
- 不紧急且不重要的,对业务影响不大,也不需要短期内完成。
2. 波士顿矩阵
波斯顿矩阵是由波士顿咨询公司发明的一种方法,最早用于分析市场增长率和市场份额,现在也被经常用于对需求的分析之中,波士顿矩阵由用户价值维度和公司价值两个维度将需求分成了四个象限:
- 明星需求:对用户体验有价值,对公司战略也有价值的需求。明星需求是双赢的需求,需要优先得到满足,如一些促进用户活跃、转化的需求,具体的有,活跃度排名、优惠提醒等功能;
- 问题需求:对用户体验有价值,但对公司战略和目标没价值的需求。此类需求虽然看似对公司没直接价值,但是提升用户体验有助于提升用户的忠诚度,如一些提升用户体验的需求。具体的有,提供多种快捷登陆方式、提供辅助输入功能等;
- 金牛需求:对用户体验没价值甚至会对用户造成困扰,但是对公司战略有价值的需求。公司价值的体现,此类需求应该尽量考虑避免对用户造成影响。如一些运营需求等。具体的有,收集用户信息等;
- 瘦狗需求:对用户体验无价值,对公司战略也无价值的需求。此类需求应该过滤掉,例如一些伪需求。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
mg-GrregIMl-1715521693432)]
[外链图片转存中…(img-CeYLawBo-1715521693432)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!