1 软件项目需求分析的重要性
当前,软件开发往往存在着三大主要问题:预算超支、进度延误、质量糟糕而且很难控制在预算之内———尤其是要高质量地实现用户的期望。相关的业界报告与分析对信息系统行业中不能满足客户需求、与用户预期不符合以及资源严重浪费等现象和问题进行了详细描述。
随着信息时代的发展,计算机软件的需求愈来愈复杂,规模愈来愈大,而且随着企业的发展,工作过程重组,需求变更已愈来愈成为必然。软件危机持续了30年之久,至今仍无法得以很好地解决。究其原因,软件本身具有的特点固然有关,但长期以来,缺乏软件开发和维护的正确方法以及忽视软件开发过程的质量控制乃是最为关键的原因。
其中软件开发和维护方法的不正确性主要体现在:忽视软件开发前期的需求分析;开发过程缺乏统一的、规范化的方法论的指导;文档资料不齐全或不准确;忽视与用户之间、开发组员之间的交流。
这样,就经常出现用户对“已完成”系统不满意,软件产品的质量经常出现漏洞,补丁一大堆。自从20世纪60年代出现软件危机以来,越来越多的人已开始更多地关注于软件,思考更好地保证软件开发的质量,与软件危机一起诞生的软件工程方法和建模理论已经发展了几十年。
然而事实却是,软件项目存在的质量问题仍然很严重。1969年,北约提交了一份报告,列举了软件所面临问题的原因,其中的原因在今天仍然存在:在Rajesh Naik等人近年来合著的《软件需求与估算》中提到,我们经常会看到有头无尾的工程,用户不满意的工程,难以投入实际使用的工程,或者严重超支和拖延进度的工程。而导致这些现象的重要原因之一,往往是由需求问题引起的,如客户和开发者对系统的需求缺乏了解;搜集和分析需求的非结构化方法;没有支持的工具或支持工具价格昂贵。
1994年《科学美国人》曾经报道,尽管经过50年的“进步”,仍然存在着一种慢性危机。这就是缺少能够满足信息时代要求的成熟工程科学的状况已经持续几十年了。以上这些令人惊讶的数字和分析同样包括了对于软件(信息系统)产品开发状况的统计与描述。
在软件产业最为发达的欧美国家尚且存在如此严重的需求问题,更不用说是近20年来刚刚掀起IT热潮的中国了。由此可见,软件危机自20世纪60年代起已经持续了近40年之久,至今在全世界范围内仍无法得以很好地解决。
如何着手解决这个危机,首先要从原因入手,在明确根源之后,再研究制定相应的对策。根据IDC的统计,80%的失败IT项目是由于需求分析做的不好,没有真正反映出用户的需求而导致的。同样对于出现这种情况的原因,根据Standish集团公司的分析,项目失败最重要的8个原因中的5个都与需求有关:
①不完整的需求;
②没有用户的介入;
③不实际的客户期望;
④需求和规范的变更;
⑤提供不再需要了的能力。
此外,CHAOS大学工作人员Sanjiv指出:“如果没有搞定需求,则项目一定会失败;如果搞定需求,则项目一定会交付。”在这样的环境下,业界人士从长期的实践中逐步意识到以工程化的原则和方法组织信息系统开发工作是解决危机的一条主要出路,其中相对而言编码不是“问题”,问题在于需求阶段,需求分析无疑是软件工程中的关键问题。正因如此,软件需求的重要性正在不断提高,因为它是用户赖以预先知道将获得什么样的系统以及投入多少经费的途径。
因此人们意识到以工程化的原则和方法组织软件开发工作是解决软件危机的一个主要出路。软件工程中包含需求、设计、编码和测试四个阶段。
需求分