非功能性需求
外觀
在系統工程及需求工程中,非功能性需求(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.