Skip to content

需求的基础概念

需求的定义 重点

需求就是用户的一种期望,软件系统应该通过满足用户的期望来解决用户的问题。需求通常被被表述为“(在……时)系统应该……”、“用户可以通过系统……”等等。

[IEEE610.121990] 对需求的定义为:

  1. 用户为了解决问题或达到某些目标所需要的条件或能力;
  2. 系统或系统的部件为了满足合同、标准、规范或其他正式文档所规定的要求而需要具备的条件或者能力;
  3. 对 1 或 2 中的一个条件或者一种能力的一种文档化表述。

需求的层次性 重点

用户的期望可能发生在不同的抽象层次上,这就造成了需求的层次性。一般来说,需求可以按抽象层次分为以下三层:

  • 业务需求:最高的抽象层次。这是系统建立的战略出发点,描述了组织为什么要开发系统。开发业务需求,需要建立高层次的解决方案,确立系统特性

  • 用户需求:描述了执行实际工作的用户对系统所能完成的具体任务的期望。针对每一个系统特性,都可以为其建立一个具体的用户需求

  • 系统级需求:描述了用户对系统行为的期望。每一个系统级需求都反应了一次外界与系统的交互行为,或系统的一个实现细节。

需求的开发通常是结合需求的不同抽象层次进行的,而不是单纯使用某一个层次。软件需求的开发一般都是自顶向下的。

需求工程活动的流程

一般的需求开发包括如下图的流程

Screen Shot 2024-06-17 at 11.00.06 AM

需求开发的结果是软件需求规格说明。它描述了将要构建的系统是如何运作的。

需求的分类

需求分为广义的需求和狭义的需求。软件工程中,狭义的需求指软件需求,而广义的需求除了包含软件需求之外,还有项目需求等其他需求。如下图所示

Screen Shot 2024-06-17 at 11.13.34 AM

软件需求的分类 重点

针对软件需求,我们可以将其分为不同的类别。[IEEE8301998] 将软件需求分为以下五种明确的类别:

  • 功能需求 (functional requirement):和系统主要工作相关的需求。即在不考虑物理约束的情况下,用户希望系统所能执行的、帮助用户完成任务并带来业务价值的活动。这种需求最需要按照三个抽象层次进行展开。

  • 性能需求 (performance requirement):一般包括速度、容量、吞吐量、负载、实时性等。

  • 质量属性 (quality attribute):一般包括可靠性、可用性、安全性、可维护性、可移植性和易用性

  • 对外接口 (external interface):指系统和环境中其他系统之间需要建立的接口,包括用户界面、硬件接口、软件接口和网络接口等。

  • 约束 (constraint):指系统构造时需要遵循的约定,如编程语言和硬件设施等。

除了功能需求,其他需求称为非功能需求