第1章 需求工程概述
1.1 需求工程的重要性
随着计算机应用的不断发展和深入,软件系统的日益大型化、复杂化,软件的开发成本越来越高,软件开发的风险��越来越大。Standish集团公司的研究报告称:在美国,每年用于软件开发的费用在一千多亿美元以上,其中,大型公司开发一个软件项目的平均成本为232.2万美元,中等大小的公司为133.1万美元,小型公司则为43.4万美元。调查显示,31%的项目在完成之前被取消,进一步研究的结果还表明:52.7 %的项目实际所花费的成本为预算成本的189%。根据该公司的另一项分析,项目失败或严重超支的8个*重要原因中有5个都与需求相关:即需求不完整、缺乏用户的参与、客户期望不实际、需求和需求规格说明的变更和提供许多不必要的功能。
一些具体的案例令人触目惊心:伦敦股票交易项目TAURUS,在花费了数百万英镑之后于1993年被取消(项目失败的总损失估计达到几亿英镑)。调查结果显示,许多问题源于未能协调那些不一致的需求。Swanick空中交通控制系统原计划在1998年完工,但直到2001年尚未交付使用,额外开支高达1亿英镑以上。经官方调查,发现其中的一个主要原因在于“缺乏健壮的需求规格说明导致无法继续进行系统实现。
与此同时,另外的一些调查和研究显示:一个与需求相关的错误发现和解决越迟,其修复的代价越昂贵。A.Davis研究发现,在需求阶段检查和修复一个错误所需的费用只有编码阶段的1/5到1/10,而在维护阶段做同样的工作所需付出的代价却是编码阶段的20倍。这意味着在维护阶段修复一个错误的代价与需求阶段修复一个同样的错误的代价的比值可高达200:1。
诸如此类的调查研究目前已有很多。虽然项目失败涉及的原因多种多样,但正如R.Glass所说,“项目需求无疑是在软件项目前期造成麻烦的一个*大原因。一个又一个的研究已经发现,当项目失败时,需求问题通常正是核心问题”。因此,在软件开发过程中,必须极早、有效地发现和解决与需求相关的问题。
……