需求一词在日常生活中经常使用,它通常是指人对于客观事物需要的表现,体现为愿望,意向和兴趣。然而软件需求却没有一个确切的定义,不同的研究人员有不同的看法。
产生这些不同形式的定义的原因,一是需求工程的发展过程还不太长,人们认识还在不断深入;二是真正的“需求”实际上是在人们的脑海中形成的,很难给予准确的定义。这也是导致需求工程难度很大的原因之一。不过根据这些定义,我们可以认为软件需求是指软件系统必须满足的所有功能,性质和限制。
软件需求分为目标需求,业务需求,功能需求,性能需求,约束与限制。
目标需求:反映组织机构或客户对系统和产品提出的高层次的目标要求,其限定了项目的范围和项目应达到的目标。
业务需求:主要描述软件系统必须完成的任务,实际业务或工作流程等。软件开发人员通常可从业务需求进一步细化出具体的功能需求和非功能需求。
功能需求:指实现的软件系统功能应达到的技术指标,如:计算效率和精度,可靠性,可维护性和可扩展性等。
约束与限制:指软件开发人员在设计和实现软件系统时的限制,如开发语言,使用的数据库等。
软件需求规格说明亦称软件需求规约或功能规格说明,可以说是需求工程最终产生的结果。所谓规格需求说明是软件所应满足的全部需求,并可用文档的方式完整和精确地陈述这些需求。需求规格说明是项目相关人员对将要开发的软件系统所达成的共识,是进行系统设计,实现,测试和验收的基本依据,也是整个软件开发过程中最重要的文档。需求规格说明同时代表了权限的移交点:客户对需求规格说明的说明内容拥有最终发言权,而开发人员则需根据软件需求规格说明实施软件系统的开发。因此最终开发出的软件系统是否能真实,全面地满足客户的要求,取决于规格说明是否真实,完整和一致地反映客户的真正意图。