在全球软件业高速发展的今天,软件项目的实施情况却不甚理想。据统计,约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.软件需求的重要性
对于软件开发工作来说,其原始驱动力来自于用户的需求,而非软件开发技术本身。软件或信息系统只是辅助人们完成某项工作任务的工具,必须依靠使用者告诉它要做什么和怎么做,且每一细节规则的定义必须是明确具体的,才能使整个信息系统正常运转起来。因此软件需求是软件开发工作的一个最重要的输入。