2.4 软件需求的开发和管理过程
针对需求工程应解决的问题和面临的困难,需求工程采用工程化的方法来进行与软件需求相关的活动。需求工程的目标就是给出待开发或待完善的软件系统的一个清晰的、完整的、无二义性的和精确的描述,并最终产生高质量的软件需求规格说明。需求工程怎样达到其目标?这是通过需求工程中一系列的活动完成的。本节将概要地说明需求工程的过程及相关活动,有关这些活动的具体内容、实施方法和相关技术将在本书的后面几章分别给予说明。
软件需求的开发和管理过程是由导出、确认和维护软件系统需求规格说明的一系列活动组成的。实际上,一个完整的过程描述应该包括要执行的活动、活动的组织或调度、每个活动的负责人、活动的输入和输出、用于支持开发和维护需求的工具等。在过程的实际执行中出现问题时,还需要对过程进行改进。显然,这是过程管理方面的内容,可用CMM(Capability Maturity Model)方法来评估需求工程的成熟度问题[14]。
需求工程的开发和管理过程可大致划分为如图27所示的需求开发和需求管理两个阶段。需求开发主要产生正式的需求规格说明,需求管理主要根据需求的变化对需求规格说明的内容及版本进行管理。此外,对于需求开发阶段又可再细分为如下两个阶段:
1)用户的意图分析:收集、归纳和整理用户提出的各种问题和要求(比较含糊),弄清系统要做什么,应做什么,然后将它们明确化。
2)需求规范化:从逻辑上完整地和严格地描述所要开发的系统,并保证其能反映用户的需求。
但在需求工程的实际处理过程中,图27所示的需求过程过于简略,不能反映需求工程复杂的执行过程。因此,为了如实地反映出需求工程的实际执行过程,需求工程过程可进一步划分为如图28所示的若干阶段。
在图2-8中,需求开发阶段细分为需求获取、需求分析、需求描述和需求验证四个活动,其中每个活动的主要任务如下:
1)需求获取:确定和收集与软件系统相关的、来自不同来源和对象的用户需求信息。
2)需求分析:对获得的用户需求信息进行分析和综合,即提炼、分析和仔细审查已收集到的用户需求信息,并找出其中的错误、遗漏或其他不足的地方,以获得用户对软件系统的真正需求,建立软件系统的逻辑模型(或需求模型)。
3)需求定义:使用适当的描述语言,按标准的格式描述软件系统的需求,并产生需求规格说明及其相应文档。
4)需求验证:审查和验证需求规格说明是否正确和完整地表达了用户对软件系统的需求。
需求管理的任务是有效地管理软件系统的需求规格说明及其相应文档,评估需求变更带来的潜在影响及可能的成本费用,跟踪软件需求的状态,管理需求规格说明的版本等。
需求工程过程中各个阶段相对独立,基本按线性方式执行。但在实施过程中也存在反复的情况,如需求验证发现需求规格说明中有问题,则需要返回到需求分析阶段重新分析,甚至也可能返回到需求获取阶段重新收集需求信息等。