文章目录
第一章 需求工程导论
1.1软件生产中的需求问题
1.1.1需求问题是当前软件开发面临的主要问题
无论是实践者的切身体会,还是各种调查数据,都明确指出需求问题是当前软件开发面临的 主要问题之一。在所有调査数据中,以美国专门从事跟踪工厂项目成功或失败的权威机构 Standish Group的CHAOS系列报告最广为人知。
在Standish Gnwp的调査中将软件项目分为3种类别:
①在预计的时间之内,在预算的成本之下完成预期的所有功能,则项目为成功项目(success )o
②已经完成,软件产品能够正常工作,但在生产中或者超支,或者超期,或者实现的功能不 全,则项目为问题项目(challenged or faulty)。
③因无法进行而被中途撤销,或者最终产品无法提交使用,则项目为失败项目(failed or impaired )o
Standish Group 1995年发布的调查报告[Standish 1995]表明(如图1-1和图1-2所示),1994 年美国365家公司的8 380个项目当中,成功项目仅为16.2%,失败项目为31.1%,问题项目为 52.7%。所有项目平均超支189%,平均超期222%,平均只完成了预计功能的61%。
为了更深入了解项目成败的原因.Standish Group在1995年的报告中还公布了导致项目成 功或失败的影响因素,相关数据如表1-1~表1-3所示。
通过分析表1-1~表1-3,可以发现需求因素对项目的成败具有至关重要的影响。其中的用 户参与(用户输入)、高层管理支持、清晰的需求说明、切合实际的期望、清晰的目标和前景、需求 变化、额外的无用功能等都会使需求发生问题。
1996年,欧洲软件协会(European Software Institute ,ESI)为欧洲软件过程改进培训计划项目 (European Software Process Improvement Training Initiative, ESPITI)发布的报告[ESPITI 1996 ]进 一步验证了 Standish Group的调查结果。
ESPITI在对欧洲17个国家的超过3 800个组织进行调查后发现,关于需求规格说明和需求 管理的缺陷是软件开发当中最常见的两类重要问题,如图1-3所示。
图1-3软件开发问题调査,数据来源于[ESPITI 1996]
所有这些调査数据表明,和软件需求相关的因素为软件项目所带来的风险和问题已经超过 了所有的其他因素,糟糕的软件生产状况背后隐藏着软件工程的需求问题。
到现在为止,[Standish 1995]和[ESPITI 1996]报告已经过去了近20年,其反映的问题有所 好转,但并未根本改变,软件生产面临的状况仍然不容乐观(如表1-4所示),其中的需求问题仍 然存在(如表1-5所示)。
1.1.2需求问题具体原因分析
软件生产中产生需求问题的最大原因在于对应用型软件的模拟特性理解不透彻或应用不坚 决,它会导致软件开发者产生轻视需求的态度问题。除此之外,还有一些技术原因也会导致需求 问题的产生。
1.非技术性和社会性因素重视不足
应用型软件的模拟特性使得需求处理具有很突岀的特性。相对于软件开发的其他阶段而 言,需求处理阶段涉及更多的非技术性和社会性因素,并且其所受的影响也远远高于其他阶段。 20世纪90年代之前的需求处理往往更专注于技术处理,而对其中的非技术性和社会性因素重 视不足。
需求建模与分析是需求处理中的核心活动,它用一些形式化或半形式化的语言进行知识 的描述。一方面,只有通过建模与分析才能将混乱、模糊的用户需求变成清晰、明确的软件需 求,所以它是获取需求处理活动的必然后继,它建