非功能性需求

在系統工程及需求工程中，非功能性需求（）是指依一些條件判斷系統運作情形或其特性，而不是針對系統特定行為的需求。和非功能性需求相對的是功能需求，後者會定義系統特定的行為或功能。非功能性需求也可以視為為了滿足客戶業務需求而需要符合，但又不在功能性需求以内的特性。

一般會在系統設計中詳細列出實現功能需求的計劃，而會在系统架构中詳細列出實現非功能性需求的計劃。一般而言，功能需求會定義系統的行為，而非功能性需求會定義系統的特性。

非功能性需求一般會稱為系統的「品質」，有時也會稱為「限制」、「品質屬性」、「品質目標」、「品質服務需求」或「非行為性的需求」。有許多非功能性需求的英文都是以「ility」結尾，例如穩定性（stability）及可移植性（portability），因此非功能性需求有時也稱為「ilities」。

非功能性需求可以分為以下的二類：

 執行品質（Execution qualities），可以在系統運作時觀察到的品質，例如保安性及易用性等。
 發展品質（Evolution qualities），和軟體系統結構及開發過程有關的品質，例如軟體可測試性、可維護性、可擴展性、可伸縮性（scalability）等。

舉例
一個系統要顯示資料庫中記錄条目的數量，這個是功能需求，但如何更新顯示条目數的資料就是非功能性需求。若需要即時更新顯示資料，系統架構需允許系統在資料条目數量變化後，經過一小段可接受的時間後就要更新顯示資料。足夠的網路頻寬可能就是非功能性需求中的一部份。

以下是一些非功能性需求的例子：
 無障礙
 審計和控制
 可用性（參考服務級別協議）
 備份
 目前容量及預估容量
 認證
 相容性
 組態管理
 部署
 文件
 灾难恢复
 效率（特定負載下消耗的資源）
 有效性（工作量及其性能表現間的關係）
 情感因素
 環境保護
 履約保證
 弱點
 可扩展性（Extensibility，增加機能）
 故障管理
 故障容許度（容错性）
 法律性或授權許可問題或避免專利侵權
 互操作性
 可維護性
 可修改性（Modifiability）
 网络拓扑
 开放源代码
 
 性能
 系統平台相容性
 隱私權
 軟體可移植性
 品质（例如已發現的故障、已交付的的故障、故障排除效力）
 復原或可復原性（例如平均修復時間MTTR）
 可靠度（例如平均故障間隔MTBF）
 報表
 
 資源限制（處理器、速度、金錢、硬碟容量、網路頻寬等）
 反應時間
 強健性
 可伸縮性（Scalability，水平或垂直的）
 保安
 軟體、工具、標準等的相容
 
 
 軟體可測試性
 易用性

相關條目
ISO/IEC 9126
需求分析
功能需求
易用性
URPS
架構重要需求

參考資料

 

軟體需求
系统工程