概念:需求
需求的定义是“系统必须符合的条件或达到的能力”。
关系
主要描述

需求定义为“系统必须符合的条件或能达到的能力”。

有许多不同种类的需求。有一种对需求分类的方式可描述为 FURPS+ 模型 [GRA92],使用首字母缩略词 FURPS 来描述主要的需求类别,其子类别显示如下。

FURPS+ 中的“+”提醒您要包含如下的需求:

(另请参阅 [IEEE Std 610.12.1990]。)

可以将非功能需求的类别和示例用作核对表来问自己在特定的类别中是否具有需求。但是您如何提出一组完整的候选非功能需求呢?其他的源包括:

  • 关于对使用 FURPS+ 获取需求的系统方式的描述,请参阅 Rational Edge 中的文章“Capturing Architectural Requirements”( Peter Eeles 著)(http://www.ibm.com/developerworks/rational/library/4706.html)。它提供一份问卷,该问卷列出了大量的非功能需求以及确定它们的适用性的问题。
  • 软件工程研究所创建了一组“一般场景”(质量属性需求的表达式),多种不同的系统可以复用这些场景来定义质量需求。关于更多信息,请参阅 http://www.sei.cmu.edu/publications/documents/01.reports/01tr014.htmlSoftware Architecture in Practice, 2nd Ed., by Len Bass, Paul Clements, and Rick Kazman (Addison-Wesley, 2003)。

功能需求指定系统必须能够执行的操作,而不考虑物理约束。这些通常在用例模型用例中作了最详尽的描述。因此功能需求指定了系统的输入和输出行为。

非功能方面的需求(如以下列出的需求)有时称为非功能需求。许多需求是非功能的,仅描述系统的属性或系统环境的属性。非功能需求是下面所述的提出问题的需求。  

功能

功能需求可以包括:

  • 特性集合
  • 能力
  • 安全性

可用性

可用性需求可以包括如下的子类别:

  • 人为因素
  • 美学
  • 用户界面的一致性
  • 联机和上下文相关帮助
  • 向导和代理程序
  • 用户文档
  • 培训资料

可靠性

要考虑的可靠性需求如下:

  • 故障的频率和严重性
  • 可恢复性
  • 可预测性
  • 准确性
  • 平均故障间隔时间(MTBF)

性能

性能需求对功能需求施加了以下条件。例如,对于给定操作,它可能会指定有关以下项的性能参数:

  • 速度
  • 效率
  • 可用性
  • 准确性
  • 吞吐量
  • 响应时间
  • 恢复时间
  • 资源使用率

可支持性

可支持性需求可以包括:

  • 可测试性
  • 可扩展性
  • 适应性
  • 可维护性
  • 兼容性
  • 可配置性
  • 可服务性
  • 可安装性
  • 本地化(国际化)

设计需求

设计需求(通常称为设计约束)指定或约束系统的设计。

实施需求

实施需求指定或约束系统的编码或构造。示例有:

  • 必需的标准
  • 实施语言
  • 数据库完整性策略
  • 资源限制
  • 操作环境

接口需求

接口需求指定:

  • 系统必须与之交互的外部项
  • 对格式、计时或此类交互所使用的其他因子的约束

物理需求

物理需求指定系统必须拥有的物理特征;例如:

  • 材料
  • 形状
  • 大小
  • 重量

此类需求可用于表示硬件需求,如必需的物理网络配置。