(一)软件需求分析的定义
IEEE软件工程标准中将需求分析(Requirement Analysis)定义为:(1)用户为了解决问题或达到某些目标所需的条件或权能(Capability)。(2)系统或部件为了满足合同、标准、规范或其它正式规定文档所规定的要求而需要具备的条件或权能。(3)反映上面(1)或(2)所描述的条件或权能的文档化表述。
需求分析是解决“做什么”的问题,是定义“做”的范围和尺度,是将用户要求我们做什么,变成我们书面承诺为用户做什么的过程。需求分析结果应确保所有的风险承担者都明白其含义,并形成文档,从而作为下一步工作的基础。概括来说,需求分析包括三个要素需求、分析和文档。需求分析员是指负责收集分析客户需求并编写文档,以及负责客户与开发者之间沟通的人。
(二)软件需求的三个层次
软件需求一般分为三个层次:
1、业务需求:反映了组织或客户(Customer)对系统、产品高层次的目标要求。业务需求通常来自项目投资者、实际用户的管理者或产品策划部门。它们在项目视图与范围文档中予以说明,这些文档通常作为合同的附件。
2、用户需求:描述了用户(User)使用产品必须要完成的任务。它们一般使用用例文档或者方案提纲(Scenario)予以说明,这些文档通常作为需求调研报告。
3、功能需求:定义了设计开发人员必须实现的软件功能,使得用户能够通过软件来完成他们的任务,从而也满足了业务需求,用户需求和功能需求。其中也包括非功能性需求,如产品必须遵从的标准、规范、性能要求等。它们一般在软件需求规格说明书(Software Requirements Specification SRS)中说明。
在这里用一个关于超市会员多倍积分的例子来说明需求分析的三个层次:
业务需求:为了提高会员的忠诚度,使会员在其生日及重大节日当天消费可以得到多倍的会员积分。
用户需求:为实现业务需求,需要首先制定会员多倍积分规则,然后将该规则宣传给广大会员;通过在系统中设置会员的多倍积分方案,在会员刷卡消费的时候,系统根据会员资料信息自动执行多倍积分方案;用户要求在POS断网的时候也能执行。
功能需求:根据用户需求,系统中应该实现的功能是:一个设置会员多倍积分规则的界面;利用通讯机制将会员积分方案同步到前台POS;前台POS在会员缴款时自动计算积分;将积分计算结果同步到后台数据库中。相关的非功能需求:用户应该可以自定义通讯的间隔时间(范围:1分到24小时);每1000笔销售数据的通讯时间不应该超过2分钟;界面易用性等。
(三)需求分析在信息管理软件开发中的重要地位
需求分析是软件工程中最重要的阶段。软件项目的生命周期一般分为计划阶段(项目立项、计划)、开发阶段(需求分析、概要设计、详细设计、编码、测试)、维护阶段(实施投产、维护)。需求分析作为项目开发阶段的开端,具有非常重要的作用,可以说它是软件工程的真正开始。需求分析是所有软件成功要素发挥作用的前提,它的好坏直接影响着后面的各个阶段,关系着软件的成败。软件项目中百分之四十至百分之六十的问题都是在需求分析阶段留下的隐患。在软件工程的历史中,很长时间里人们都认为需求分析是整个软件工程中最简单的一个步骤,但在实践中人们才越来越认识到它是整个软件生命周期中最关键的一个过程。优秀的信息管理软件产品必须建立在优秀的需求基础之上。
需求分析阶段又是在软件工程中所有的风险承担者都关注的阶段。这些风险承担者包括客户、用户、商务及业务人员、需求分析员、设计人员、编码人员、测试人员、用户文档编写者、项目经理等。这部分工作如果处理不好,可能导致需求误解、开发挫折、项目延期、甚至纠纷和失败;若处理好了,能开发出很出色的项目,帮助客户实现价值,项目团队成员也有成就感。