跨功能需求(Cross-Functional Requirements, CFR)通常被稱為非功能需求(Non-Functional Requirements, NFR), 也可以叫做系統質量屬性(System Quality Attributes/Traits), 是指那些用來評價系統運行狀態的需... ...
移動應用中的非功能性(跨職能)需求
非功能需求定義
跨功能需求(Cross-Functional Requirements, CFR)通常被稱為非功能需求(Non-Functional Requirements, NFR), 也可以叫做系統質量屬性(System Quality Attributes/Traits), 是指那些用來評價系統運行狀態的需求.
和具體的業務功能需求(Functional Requirements)不同, 這種需求定義的不是具體的行為和功能(What to do), 而是系統在完成這些功能的時候的屬性(How well).
用Cross-Functional Requirements(CFR)來指代這種需求, 是希望開發者們能在開發的過程中能一直考慮到這些需求, 並且幫助非技術人員意識到要實現這些需求所需要的額外的工作量.
本文介紹在Mobile應用開發時需要考慮的各種CFRs.
Mobile App中的CFR
Accessibility 無障礙
是否支持有特殊需求的人使用, 比如支持屏幕閱讀.
UX設計上是否要考慮對比度要求?
Authentication & Authorisation 認證和授權
用戶是如何認證的?
應該遵循哪些標準或應用哪些現有的身份驗證系統?
哪些角色和許可權是必須的?
Capacity 容量
數據體量是多大?
會有多少用戶同時使用?
單個用戶所使用到的數據類型和大小?
有特殊的存儲要求嗎?
Compatibility 相容性
支持Android和iOS?
Android/iOS最低/最高支持版本?
Android需要支持哪些廠商的哪些機型?
Configurability 可配置性
用戶或管理員可以配置功能行為嗎?
這是如何管理的?
用Firebase做A/B test?
Continuity 連續性
災難恢復計劃?
Data Integrity and Consistency 數據完整和一致性
需要數據同步嗎?
需要支持離線操作嗎?
數據校驗?
衝突解決?
Data Privacy 隱私
什麼數據不應該存儲?
哪些數據需要加密?
哪些數據可見/不可見?
開發測試時是否可以利用產品數據?
Distributability 分發性
App使用是否有地域限制?
可以離線使用嗎?
如何同步信息?
Extensibility 擴展性
是否提供比如插件平臺, 用戶可以自行擴展?
需要考慮什麼樣的限制和安全需求?
Help & Support 幫助支持
需要文檔支持嗎?
需要提供用戶使用嚮導嗎?
需要客服嗎?
Installability & Deployment 安裝和部署
需要支持什麼平臺? (Android/iOS/?)
需要在哪裡分發應用?
Legal Compliance 法律規定
是否有任何法律上的限制?
使用的第三方軟體/庫的license?
是否需要用戶同意/授權/查看相關條款?
Localisation & Internationalisation 國際化
是否支持多個語言?
日期/時間/貨幣的轉換和翻譯?
Maintainability 可維護性
崩潰率要求?
ANR率要求?
最大可容忍的停機時間? (Maximum tolerable downtime (RTO / Recovery Time Objective))
是否支持熱更新?
Monitoring 監控
需要監控哪些數據? (Crash, ANR, ...)
怎麼監控的?
需要什麼樣的警報?
是否運用了合理的工具?
Performance 性能
應用安裝包大小? -> 用戶下載安裝一個應用的時間.
啟動時間要求?
設備記憶體使用要求?
哪些請求的響應時間要求是比較重要的? (比如登錄時間必須要在5s內?)
弱網路下的要求?
屏幕幀率要求? 卡頓容忍?
電量消耗要求?
是否有做性能測試的要求?
Resilience & Fault Tolerance 彈性和容錯性
如果發生了錯誤(比如外部依賴不可用或出錯), 系統的功能應該如何降級表現?
Reliability 可靠性
需要搞清楚系統不准確的商業代價是什麼, 需要多大程度上的保證準確性.
(比如太空梭和游戲應用的準確性可靠性要求肯定是不一樣的).
Scalability 可擴展性
數據量的變化範圍?
如何測試這一點?
Security 安全性
哪些數據需要被保護? (考慮加密, 存儲位置, 傳輸方式).
是否需要限制設備類型(比如限制root設備)?
商業準則?
API使用限制?
WebView中的安全措施?
是否需要安全鍵盤? (如銀行類應用)
哪些地方需要對用戶輸入進行合法性驗證?
第三方工具的安全漏洞?
代碼防反編譯?
需要進行哪些安全測試?
Usability and user experience 用戶體驗
UX的重要性? (只是可用就可以? 還是Good to have? 美觀大方非常重要?)
需要考慮不同的設備(平板?)和屏幕尺寸嗎? 兼顧範圍?
要支持橫豎屏切換嗎?
有企業內部需要遵循的UX Guidelines嗎?
說明
有的項目重覆出現在不同的分類下麵了. 可以從不同的角度考慮下.
歡迎提出修改和補充意見.