1.5 需求工程定义
需求工程是指应用工程化的方法、技术和规格来开发和管理软件的需求。需求工程的目标就是要获取高质量的软件需求。与软件工程中传统的需求分析概念相比,需求工程突出了工程化的原则,强调以系统化、条理化、可重复化的方法和技术进行与软件需求相关的活动,从而有利于提高所有与软件需求相关的活动及其过程的可管理性,降低需求开发和管理的难度和成本。
由于需求工程诞生的时间相对短暂,或者说它还是一个新兴的子学科,因此,对于需求工程来说,并不存在一个得到普遍承认的精确定义。许多不同的研究人员和组织依据各自的研究目的,分别从不同的侧面提出了各不相同但本质上近似的定义。例如Davis AM[13]把需求工程定义为“直到(但不包括)把软件分解为实际架构组建之前的所有活动”,即软件设计之前的一切活动。该定义虽然没有详细说明需求工程是什么,但给出了需求工程的范围。英国的Bray IK[9]则认为,需求工程是指:对问题域及需求做调查研究和描述,设计满足那些需求的解系统的特性,并用文档给予说明。这个定义明确指出了需求工程的任务就是获取、分析和表达软件的需求。
从各种不同形式的需求工程定义可以看出,需求工程应该是由一系列与软件需求相关的活动组成的。如果从这些活动考虑需求工程定义的话,需求工程可认为是由需求的开发活动和需求的管理活动组成的。因此,需求工程的任务可概要表示如下:
1) 确定待开发的软件系统的用户类,并获取他们的需求信息。
2) 分析用户的需求信息,并按软件需求的类型对这些需求信息进行分类,同时,过滤掉不是需求的信息。
3) 根据软件需求信息建立软件系统的逻辑模型或需求模型,并确定非功能需求和约束条件及限制。
4) 根据收集的需求信息和逻辑模型编写需求规格说明及其文档。
5) 评审需求规格说明。
6) 当需求发生变更时,对需求规格说明及需求变更实施进行管理。