非功能性需求
外观
在系统工程及需求工程中,非功能性需求(Non-functional requirement)是指依一些条件判断系统运作情形或其特性,而不是针对系统特定行为的需求。和非功能性需求相对的是功能需求,后者会定义系统特定的行为或功能。非功能性需求也可以视为为了满足客户业务需求而需要符合,但又不在功能性需求以内的特性。
一般会在系统设计中详细列出实现功能需求的计划,而会在系统架构中详细列出实现非功能性需求的计划。一般而言,功能需求会定义系统的行为,而非功能性需求会定义系统的特性。
非功能性需求一般会称为系统的“质量”,有时也会称为“限制”、“质量属性”、“质量目标”、“质量服务需求”或“非行为性的需求”[1]。有许多非功能性需求的英文都是以“ility”结尾,例如稳定性(stability)及可移植性(portability),因此非功能性需求有时也称为“ilities”。
非功能性需求可以分为以下的二类:
- 执行质量(Execution qualities),可以在系统运作时观察到的质量,例如保安性及易用性等。
- 发展质量(Evolution qualities),和软件系统结构及开发过程有关的质量,例如软件可测试性、可维护性、可扩展性、可伸缩性(scalability)等[2][3]。
举例
[编辑]一个系统要显示数据库中记录条目的数量,这个是功能需求,但如何更新显示条目数的资料就是非功能性需求。若需要即时更新显示资料,系统架构需允许系统在资料条目数量变化后,经过一小段可接受的时间后就要更新显示资料。足够的网络带宽可能就是非功能性需求中的一部分。
以下是一些非功能性需求的例子:
- 无障碍
- 审计和控制
- 可用性(参考服务级别协议)
- 备份
- 目前容量及预估容量
- 认证
- 兼容性
- 配置管理
- 部署
- 文件
- 灾难恢复
- 效率(特定负载下消耗的资源)
- 有效性(工作量及其性能表现间的关系)
- 情感因素
- 环境保护
- 履约保证
- 弱点
- 可扩展性(Extensibility,增加机能)
- 故障管理
- 故障容许度(容错性)
- 法律性或授权许可问题或避免专利侵权
- 互操作性
- 可维护性
- 可修改性(Modifiability)
- 网络拓扑
- 开放源代码
- 可操作性
- 性能
- 系统平台兼容性
- 隐私权
- 软件可移植性
- 质量(例如已发现的故障、已交付的的故障、故障排除效力)
- 撤销或可撤销性(例如平均修复时间MTTR)
- 可靠度(例如平均故障间隔MTBF)
- 报表
- 网络弹性
- 资源限制(处理器、速度、金钱、硬盘容量、网络带宽等)
- 反应时间
- 鲁棒性
- 可伸缩性(Scalability,水平或垂直的)
- 保安
- 软件、工具、标准等的兼容
- 稳定性
- 可支持性
- 软件可测试性
- 易用性
相关条目
[编辑]参考资料
[编辑]- ^ Stellman, Andrew; Greene, Jennifer. Applied Software Project Management. O'Reilly Media. 2005: 113. ISBN 978-0-596-00948-9. (原始内容存档于2015-02-09).
- ^ Wiegers, Karl E. Software Requirements, Second Edition. Microsoft Press. 2003. ISBN 0-7356-1879-8.
- ^ Young, Ralph R. Effective Requirements Practices. Addison-Wesley. 2001. ISBN 978-0-201-70912-4.