发布时间:2020-07-10
需求是软件项目管理中的重要部分,没有需求就没有软件存在的价值,没有需求就不可能让计算机完成人所需要做的事情。可以说需求是软件的基石。就算是同样的需求,因为对其不同的理解和解释,也会开发出不同的软件。
一、需求的特点
普遍的需求都会符合以下的特点,有些比较明显,有些则比较模糊。
1、目的性
有明显的要求,希望得到什么,不是模棱两可的。
2、描述性
需求的内容是可描述的,可以解释的。
3、操作性
需求是有步骤的,是可以进行操作的,哪怕是只有一个步骤。
4、条件性
计算机的功能是有限的,需求在一定条件下才可以实现。
5、 计算性
数据处理需要一定的算法,没有固定算法是无法实现的,即使是人工智能和人工模拟也是有最基本的、核心的算法。
6、验证性
需求最终是要被计算机实现的,实现了以后如何判断其结果是否正确呢?因此需求必须是可被验证的,譬如用另外一个事实或数据来对比其结果是否完整和正确。
二、需求收集
无论需求是怎么产生的,其内容通常可以归纳为以下儿种类型。
1、客户的现状是什么?
目前的现状是什么,用什么样的系统,市场情况如何,有哪些材料、设备、人员、方法、流程和技术。有什么样的缺陷、错误、损失或抱怨。有多少数据量,使用频率如何,用户数量多少,使用范围是什么,和业务的相关性和重要性如何。
2、客户的期望是什么?
用户希望提升到什么样的程度,什么样的问题最迫切地需要解决,
3、需求的便利性,扩展性如何?
客户有没有替代方案。用户有没有自己的解决方案,可以考虑的方案有几种,各种方案的优缺点是什么?
4、客户的预算是多少?
用户的预算有多少,预算的多少决定开发成本和开发量以及使用技术的成本。
5、需求的范围是什么?
需求的范围是什么?是公开使用,内部使用,多厂区使用,多语言使用还是分阶段使用?有多少用户使用,是否需要控制权限等。
6、需求的内容是什么?
需求的具体内容是什么,如地图、结构图、流程图、操作说明、数据报表等。
7、需求的样本。
需求的实例文件,如材料清单、用户清单、服务器配置、数据接口参数、数据格式、报告说明等。需求收集的时候又应该注意哪些事项呢? 般而言,收集的方法有以下几种。
1)口述记录
通过他人的讲述或问答,将需求记录为文字形式。
2)书面或电子记录
由需求方提交书面或电子的材料,比如流程图、说明书、操作手册、数学模型、报告报表示例或相关联系人清单等。
3)座谈会
邀请需求方的线人员、管理人员、开发设计人员起讨论和设想需求的细节。
4)特定的团队
组织内有固定的团队面向客户或用户收集需求,通常是技术支持或客服部门。这类部门对需求进行全方位的收集,既可以是主动性地收集,如走访、问卷调查、体验会等,也可以是被动性地收集,如热线电话、客服邮箱、网站留言等。由于这种方式收集到的信息和问题可能千奇百怪,必须从中过滤出真正的、有建设性的需求,而不是周旋于众多的抱怨中。
5)需求系统
建立某种需求系统或者在软件中提供需求反馈的功能。特别是在一些大型的软件公司,需求系统集中控制着其产品线的所有需求反馈,这将大大地提高需求收集的效率和准确性。
三、需求分析方法
1、拆解发
拆解法是将需求的内容拆解,把复杂的描述变得简单,把模糊的概念变得具体,把大的需求变成小的需求。
2、提问法
提问法是对需求的内容提出问题,找到解决问题的各种方法,从而具体化需求的细节。当需求不是很明确的时候,可以对一些重要的点进行提问,在进行分析过滤,得到更加明确的答案。通过多次提问,需求变得越来具体化,使软件功能更贴近实际情况。
四、需求优先级确定
需求分析、整理和过滤后,需要分配优先级。分配优先级的目的是合理地评估需求的重要性,将开发的资源和时间优先分配给重要的需求,以确保项目进度和软件功能能够满足用产最基本的要求。优先级衡量的原则简单地说就是:业务优先,时间次之,操作再次之,技术最后。
1、与业务的相关度
与业务密切相关的、影响到业务延续的、对于核心业务至关重要的优先。软件的存在一切都是为了业务,没有业务的存在,软件就失去了基石。软件的价值又在于为业务增加更多的附加值,因为一切为业务服务,一切以业务优先才是软件开发的根本。
2、迫切度
急迫性高的、不能长时间等待的或者是业务迫切需要的优先。
3、可操作性
操作简单的、容易掌握的、逻辑筒单的优先。简单的逻辑和操作耗费的开发时间也少,成功率也高,因此可以优先考虑。
4、可实现性
技术上容易实现的、开发周期短的优先。与其把大量的时间和风险放在技术复杂的功能开发上,不如优先开发技术要求相对简单的功能。这样可以更早的更有把握的看到成果。
推荐阅读:
您的信息已成功提交!
我们的客服人员稍后会与您联系