需求的基础概念
需求的定义 重点
需求就是用户的一种期望,软件系统应该通过满足用户的期望来解决用户的问题。需求通常被被表述为“(在……时)系统应该……”、“用户可以通过系统……”等等。
[
- 用户为了解决问题或达到某些目标所需要的条件或能力;
- 系统或系统的部件为了满足合同、标准、规范或其他正式文档所规定的要求而需要具备的条件或者能力;
- 对 1 或 2 中的一个条件或者一种能力的一种文档化表述。
需求的层次性 重点
用户的期望可能发生在不同的抽象层次上,这就造成了需求的层次性。一般来说,需求可以按抽象层次分为以下三层:
业务需求:最高的抽象层次。这是系统建立的战略出发点,描述了组织为什么要开发系统。开发业务需求,需要建立高层次的解决方案,确立系统特性。
用户需求:描述了执行实际工作的用户对系统所能完成的具体任务的期望。针对每一个系统特性,都可以为其建立一个具体的用户需求。
系统级需求:描述了用户对系统行为的期望。每一个系统级需求都反应了一次外界与系统的交互行为,或系统的一个实现细节。
需求的开发通常是结合需求的不同抽象层次进行的,而不是单纯使用某一个层次。软件需求的开发一般都是自顶向下的。
需求工程活动的流程
一般的需求开发包括如下图的流程
需求开发的结果是软件需求规格说明。它描述了将要构建的系统是如何运作的。
需求的分类
需求分为广义的需求和狭义的需求。软件工程中,狭义的需求指软件需求,而广义的需求除了包含软件需求之外,还有项目需求等其他需求。如下图所示
软件需求的分类 重点
针对软件需求,我们可以将其分为不同的类别。[
功能需求
:和系统主要工作相关的需求。即在不考虑物理约束的情况下,用户希望系统所能执行的、帮助用户完成任务并带来业务价值的活动。这种需求最需要按照三个抽象层次进行展开。性能需求
:一般包括速度、容量、吞吐量、负载、实时性等。质量属性
:一般包括可靠性、可用性、安全性、可维护性、可移植性和易用性。对外接口
:指系统和环境中其他系统之间需要建立的接口,包括用户界面、硬件接口、软件接口和网络接口等。约束
:指系统构造时需要遵循的约定,如编程语言和硬件设施等。
除了功能需求,其他需求称为非功能需求。