需求的种类各种各样。一种分类的方法叫作 FURPS+ 模型 [GRA92],它使用首字母缩写词 FURPS 来描述具有以下子类别的主要需求类别。
功能性、
可用性、
可靠性、
性能和
可支持性
FURPS+ 中的“+”可提醒您还要包括如下需求:
设计约束、
实施需求、
接口需求和
物理需求。
功能性需求规定了系统无需考虑物理约束而必须能够执行的动作。用例模型和用例中最能够说明这些需求。功能性需求就这样规定了系统的输入输出行为。
功能性需求之外的需求,如下所列,有时称为非功能性需求。许多需求是非功能性的,它们仅仅说明系统或系统环境的属性。有些需求在用例中有所记录,未能记录的可在补充规约中予以规定。非功能性需求解决的是如下所列的问题。
对于软件需求的完整定义,可以将用例和补充规约结合到一起以定义某一“特性”或其他子系统分组的软件需求规约 (SRS)。
功能性
功能性需求包括:
特性集、
功能和
安全性。
可用性
可用性需求可包含如下子类别:
人员因素(请参见:概念:以用户为中心的设计)、
美观、
用户界面的一致性(请参见:指南:用户界面)、
联机帮助和环境相关帮助、
向导和代理、
用户文档和
培训材料。
可靠性
需要考虑的可靠性需求有:
故障的频率/严重性、
可恢复性、
可预见性、
准确性和
平均故障间隔时间(MTBF)。
性能
性能需求可对功能性需求强加条件。例如,对于一个给定行为,它可以对以下项规定性能参数:
速度、
效率、
可用性、
准确性、
吞吐量、
响应时间、
恢复时间,或
资源用途。
可支持性
可支持性需求可包括:
可测试性、
可扩展性、
可适应性、
可维护性、
兼容性、
可配置性、
可服务性、
可安装性,或
是否可本地化(国际化)。
设计需求
设计需求常称为设计约束,它规定或约束了系统的设计。
实施需求
实施需求规定或约束了系统的编码或构建。例如:
所需标准、
实施语言、
数据库完整性策略、
资源限制和
操作环境。
接口需求
接口需求规定了
系统必须与之交互操作的外部项,或
对这种交互操作所使用的格式、时间或其他因素的约束。 ]
物理需求
物理需求规定了系统必须具备的物理特征;例如,
材质、
形状、
尺寸和
重量。
这种需求类型可用来代表硬件要求,如物理网络配置需求。