摘要:据统计,约80%~90%信息化投资没有达到预期目标,80%的项目超期或超预算,40%的项目以失败告终,只有不足25%的项目达到预期的技术和业务目标。
关键词:需求管理
在全球软件业高速发展的今天,软件项目的实施情况却不甚理想。据统计,约80%~90%信息化投资没有达到预期目标,80%的项目超期或超预算,40%的项目以失败告终,只有不足25%的项目达到预期的技术和业务目标。这种局面的出现是与软件项目本身所蕴含的诸多风险密切相关的,如技术风险、管理风险、需求风险等;而能够对需求风险进行有效控制则是决定整个项目成败的关键。
企业信息化项目中存在的主要需求风险
1.软件需求的定义和层次
什么是软件需求呢?关于这个概念有各种各样的定义,IEEE软件工程标准词汇表(1997)中定义需求为:
(1)用户解决问题或达到目标所需的条件或权能(Capability)。
(2)系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或权能。
(3)一种反映上面(1)或(2)所描述的条件或权能的文档说明。
这个定义包括了从用户角度和开发者角度来阐述需求;另外一种定义是从系统外部出发认为需求是“用户所需要的并能触发一个程序或系统开发工作的说明”(Jones 1994)。下面的定义则从用户需要进一步转移到系统特性( Sommerville and Sawyer 1997):需求是指明必须实现什么的规格说明。它描述了系统的行为、特性或属性,是在开发过程中对系统的约束。
从上面这些定义可以看出,人们可以从不同角度去理解和描述需求,而关键是参与项目的人员能够针对需求描述达成清晰一致的共识。此外,软件需求又划分为业务需求、用户需求和功能需求三个层次,业务需求(Business Requirement)反映了组织机构或客户对系统、产品高层次的目标要求,用户需求(User Requirement)描述了用户使用产品必须完成的任务,功能需求(Functional Requirement)定义了开发人员必须实现的软件功能。这种层次的划分体现出了需求从抽象到具体、从系统外部到内部的逐级转化过程。对于软件开发人员来说最终必须获得准确详细地功能需求描述,而客户经常会认为只要将业务需求或用户需求描述出来就足够了,从而使最终开发人员获取的需求信息不够充分,或与客户的期望产生差异。
2.软件需求的重要性
对于软件开发工作来说,其原始驱动力来自于用户的需求,而非软件开发技术本身。软件或信息系统只是辅助人们完成某项工作任务的工具,必须依靠使用者告诉它要做什么和怎么做,且每一细节规则的定义必须是明确具体的,才能使整个信息系统正常运转起来。因此软件需求是软件开发工作的一个最重要的输入。
在判断一个软件项目是否成功时,一般从以下几方面来衡量:
(1)项目是否达到预期目标;
(2)项目的实施是否使工作效率得到提升;
(3)软件的使用者是否有良好的感受;
(4)项目成本和工期是否控制在计划之内。
从以上几点不难看出,要在这几方面取得理想成果,项目需求将是一个关键因素:
(1)项目范围和需求的定义要明确清晰;
(2)对利于工作效率提升的需求能够得到充分挖掘和体现;
(3)需求应能全面真实体现出各个层面软件使用者的诉求;
(4)项目建设过程中能够对需求变更实施有效控制。
3.主要需求风险识别
既然需求对软件项目的成败起到如此关键之作用,对需求风险的控制就变得尤为重要了。在应用软件开发过程中,由于软件需求本身的隐含性、用户与开发者之间的沟通障碍,以及需求随着