什麼是軟件質量?
信息源:
- https://en.wikipedia.org/wiki/Software_quality
- http://iso25000.com/index.php/en/iso-25000-standards/iso-25010
- https://www.iso.org/standard/35733.html
- http://it-cisq.org/standards/
- http://it-cisq.org/
- http://www.sacinfo.cn/
- http://www.sacinfo.cn/s/std_stdInfo?sid=A00008:20:035733#
- ...
狹義上來說, 軟件產品的質量就是滿足需求的程度,這裏的需求包含功能需求與非功能需求。
但是這樣定義只能是軟件產品開發公司內部的認知,很多時候產品好不好由最終用戶說了算,所以廣義上還需要再加一條: 用戶體驗良好程度。
用戶體驗帶有強烈的主觀性,需要大量的反饋數據才能準確評估。
爲什麼要進行軟件質量管理?
代碼是人寫的,人無完人,人易犯錯,而軟件開發又是高度複雜的過程,軟件存在質量問題是必然的。
但是我們又不希望交互到客戶或用戶手中的軟件漏洞百出,體驗極差。
唯一能平衡這兩者之間關係的就是合適的軟件質量管理。
雖然一個軟件的質量達到100%幾乎不可能,但是我們的質量管理要衝着100%來,才能保證最終的質量足夠好。
所謂足夠好,帶有一定的主觀色彩,特別是用戶體驗部分,這是合理的。至於最終的足夠好到底是多好,則是由質量管控人員設定的。
對於足夠好的描述,緯度必須足夠充分,數據足夠量化,這是下面軟件質量評估要講的內容。
如何評估軟件產品的質量?
要進行軟件質量評估,必須具備如下前提:
- 目標質量有足夠清晰明確的描述
- 合適的評估手段
對於第一點,需要對軟件質量進行合理的緯度劃分,以及每個維度的合理量化,稱爲軟件質量模型。
對於第二點,則需要合適評估工具與評估流程。
軟件質量模型(software quality model)
軟件質量與評估如此重要,自然有機構已經對此做過深入研究,相應的軟件質量模型也達到一定標準。
SQuaRE定義了較爲面面俱到的軟件質量標準,CISQ則側重於軟件質量的評估,後者基於SQuaRE,但是隻選取了其中主要的4種質量特性再加上自己定義的size特性。
對於完整的SQuaRE和CISQ質量模型,如果讀者感興趣,可以從ISO官網查看或下載。本文將依據SQuaRE和CISQ,結合自身經驗,進行裁剪和定製,最終形成的質量特性入下:
- 功能適宜性(functional suitability)
- 功能完整性(functional completeness)
- 功能正確性(functional correctness)
- 功能方便性(functional appropriateness): 用戶通過軟件完成其目標的方便程度
- 界面舒適性(UI comfort)
- 操作流暢性(smooth): 強調界面過度的平滑程度
- 可靠性(Reliability)
- 可用性(availability): 正常交互/數據下,軟件維持正常功能的能力
- 容錯性(fault tolerance): 異常交互/數據下,軟件維持正常功能的能力
- 可恢復性(recoverability): 在已經出現異常或錯誤的情況下,軟件恢復數據,狀態與功能的能力
- 性能(performance efficiency)
- 時間特性(time behaviour): 時間相關的性能
- 資源佔用率(resource utilization):rom, ram, cpu, gpu, port等
- 容量(capacity): 軟件能力在空間上的邊界
- 安全性(security)
- 機密性(confidentiality): 數據或功能只給授權用戶訪問的能力
- 問責性(accountability): 操作與數據可被追蹤的能力
- 可維護性(maintainability)
- 可分析性(analysability): 易於被分析的能力
- 可修復性(fixability): 已知問題易於被修復的程度
- 可更新(updatable): 更新的方便程度
- 可擴展性(extensibility): 不重新發版的情況下,進行能力替換或擴展
- 可配置性(configurability)
以上特性實際上只有兩個等級的劃分,對於實際操作來說,還處於一種抽象的層面,要進行真正的評估,還需要進一步細化爲通用的checklist。
- 功能適宜性: 功能完整性
- 是否覆蓋所有主要case
- 需求明確提出的case覆蓋比例
- 隱含case覆蓋量
- 功能適宜性: 功能正確性
- 所有case(明確與隱含)的正確比例
- 功能適宜性: 功能方便性
- 所有case的完成步驟的簡化程度
- 功能適宜性: 界面舒適性
- 頁面佈局的合理程度
- 頁面配色的合理程度
- 頁面圖形與元素設計的合理程度
- 功能適宜性: 操作流暢性
- 界面變化的動畫化程度
- 動畫時間的合理程度
- 動畫的流暢程度
- 動畫的平滑程度
- 可靠性: 可用性
- 所有正常case正確執行的程度
- 可靠性: 容錯性
- 異常case時,能夠自我保護
- 異常case後,正常case能夠正常執行
- 可靠性: 可恢復性
- 出現未捕獲異常時功能能夠自動恢復正常
- 出現爲捕獲異常時數據能夠自動恢復正常
- 一個case出現偶現錯誤時,重新進入能夠恢復正常
- 一個case出現錯誤時,不影響其他case
- 性能: 時間特性
- 操作響應時間
- 多計算任務處理時間
- IO任務處理時間
- 操作吞吐率
- 數據吞吐率
- 性能: 資源佔用
- rom
- ram
- port
- cpu