2025-05-09 02:16来源:本站
在系统工程及需求工程中,非功能性需求(Non-functional requirement)是指依一些条件判断系统运作情形或其特性,而不是针对系统特定行为的需求。和非功能性需求相对的是功能需求,后者会定义系统特定的行为或功能。非功能性需求也可以视为为了满足客户业务需求而需要符合,但又不在功能性需求以内的特性。
一般会在系统设计中详细列出实现功能需求的计划,而会在系统架构中详细列出实现非功能性需求的计划。一般而言,功能需求会定义系统的行为,而非功能性需求会定义系统的特性。
非功能性需求一般会称为系统的“质量”,有时也会称为“限制”、“质量属性”、“质量目标”、“质量服务需求”或“非行为性的需求”。有许多非功能性需求的英文都是以“ility”结尾,例如稳定性(stability)及可移植性(portability),因此非功能性需求有时也称为“ilities”。
非功能性需求可以分为以下的二类:
执行质量(Execution qualities),可以在系统运作时观察到的质量,例如保安性及易用性等。
发展质量(Evolution qualities),和软件系统结构及开发过程有关的质量,例如软件可测试性、可维护性、可扩展性、可伸缩性(scalability)等。
一个系统要显示数据库中记录条目的数量,这个是功能需求,但如何更新显示条目数的资料就是非功能性需求。若需要即时更新显示资料,系统架构需允许系统在资料条目数量变化后,经过一小段可接受的时间后就要更新显示资料。足够的网络带宽可能就是非功能性需求中的一部分。
以下是一些非功能性需求的例子:
无障碍
审计和控制
可用性(参考服务级别协议)
备份
目前容量及预估容量
认证
兼容性
配置管理
部署
文件
灾难恢复
效率(特定负载下消耗的资源)
有效性(工作量及其性能表现间的关系)
情感因素
环境保护
履约保证
弱点
可扩展性(Extensibility,增加机能)
故障管理
故障容许度(容错性)
法律性或授权许可问题或避免专利侵权
互操作性
可维护性
可修改性(Modifiability)
网络拓扑
开放源代码
可操作性
性能
系统平台兼容性
隐私权
软件可移植性
质量(例如已发现的故障、已交付的的故障、故障排除效力)
撤销或可撤销性(例如平均修复时间MTTR)
可靠度(例如平均故障间隔MTBF)
报表
网络弹性
资源限制(处理器、速度、金钱、硬盘容量、网络带宽等)
反应时间
鲁棒性
可伸缩性(Scalability,水平或垂直的)
保安
软件、工具、标准等的兼容
稳定性
可支持性
软件可测试性
易用性
ISO/IEC 9126
需求分析
功能需求
易用性
URPS
架构重要需求