文章目录
软件需求工程概述
什么是需求工程
需求工程是指应用工程化的方法、技术和规格来开发和管理软件的需求。
项目失败的因素中,与需求相关的有:需求不完整、缺乏用户参与度、客户预期不实际、需求和需求规格的变更、提供许多不必要的功能。
这些失败的原因无外乎在于“缺乏健壮的需求规格说明,导致无法继续进行系统实践"。
什么是软件需求
需求通常是人对于客观事物需要的表现。体现为愿望、意向和兴趣。对于软件开发来说,软件需求就是软件用户认为器所使用的软件应该具备的功能和性能。
A. Davis认为,软件需求是从 软件外部可见的、软件所具有的、满足于用户的特点、功能及属性等的集合。
I. Som- merville认为,需求是问题信息和系统行为、特性、设计和实现约束的描述的集。
M. Jackson等人则认为,需求是客户希望在问题域内产生的效果。
在比较正式的文档 中,IEEE软件工程标准词汇表将需求定义为①用户解决问题或达到目标所需的条件 或能力;②系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件 或能力。其中①是从用户的角度定义的,②是从软件系统的角度定义的。
软件需求的分类
- 目标需求
- 业务需求
- 功能需求
- 性能需求
- 约束与限制
他们之间的关系应该如下:
目标需求
业务需求
功能需求 性能需求 约束与限制
需求规格说明
软件需求规格说明亦称软件需求规约或功能规格说明,可以说是需求工程最终产生的结果。所谓需求规格说明是软件所应满足的全部需求,并可用文档的方式完整和精确地陈述这些需求。
需求规格说明是项目相关人员对将要开发的软件系统所达成的共识,是进行系统设计、实现、测试和验收的基本依据,也是整个软件开发过程中最重要的文档。需求规格说明同时代表了权限的移交点:客户对需求规格说明的说明内容拥有最终发言 权,而开发人员则需根据软件需求规格说明实施软件系统的开发。因此,最终开发出的软 件系统是否能真实、全面地满足客户的要求,取决于需求规格说明是否真实、完整和一致 地反映客户的真正意图。
需求规格说明应精确地描述一个软件系统必须提供的功能和性能,以及所要考虑的约 束条件与限制。
作为一个质量较高的需求规格说明,通常应该满足下面特性
- 完整性
- 正确性
- 可行性
- 必要性
- 划分优先级
- 无二义性
- 可验证性
需求工程的定义
需求工程是指应用工程化的方法、技术和规格来开发和管理软件的需求。需求工程的目标 就是要获取高质量的软件需求。与软件工程中传统的需求分析概念相比,需求工程突出了工程 化的原则,强调以系统化、条理化、可重复化的方法和技术进行与软件需求相关的活动,从而 有利于提高所有与软件需求相关的活动及其过程的可管理性,降低需求开发和管理的难度和 成本。
Davis A. M. 把需求工程定义为,,直到(但不包括)把软件分解为实际架构组建之前的所有活 动”,
Bray.I.K.则认为,需求工程是指:对问题域及需求做调查研 究和描述,设计满足那些需求的解系统的特性,并用文档给予说明。
因此需求工程的任务可以概括如下:
- 确定待开发的软件系统的用户类,并获取他们的需求信息。
- 分析用户的需求信息,并按软件需求的类型对这些需求信息进行分类,同时,过 滤掉不是需求的信息。
- 根据软件需求信息建立软件系统的逻辑模型或需求模型,并确定非功能需求和约 束条件及限制。
- 根据收集的需求信息和逻辑模型编写需求规格说明及其文档。
- 评审需求规格说明。
- 当需求发生变更时,对需求规格说明及需求变更实施进行管理。
其他一些概念
- 用户(user):
利用计算机系统所提供的服务的人。
直接操作计算机系统的人,简单地说,就是直接使用软件系统的人。 - 客户(customer):
掌握经费的人,通常有权决定软件需求。客户可以是用户,也可以不是用户。
正式接收新开发或修改后的硬件和软件系统的某个人或组织。
简单地说,客户就是为开发软件而提供经费的人。当客户和用户由不同的人组成时, 由于身份不同,对软件系统的看法和要求也会不同。例如,用户希望软件系统易于使用, 而客户往往希望软件的开发成本较小,并可获得较高的利润。显然这会导致用户和客户对 软件产生不同的需求。 - 软件开发人员(supplier):
为客户开发软件系统的人。当软件系统是由客户委托开发时,客户与软件开发人员属 于不同的组织。如果是组织内自行开发软件系统,客户与软件开发人员应属同一组织。 - 项目相关人员(stakeholder):
与提出和定义软件需求相关的人,包括所有的用户、客户和软件开发人员。这些人都 是软件需求的来源,只是他们站在不同的立场看待将要开发的软件系统。
为便于说明,本节以后在不特殊指明的情况下,将把用户和客户统称为用户,意指直 接或间接从软件系统获得利益的个人或组织。软件开发人员在需求工程中则主要是指系统 分析人员。