軟件質量模型

什麼是軟件質量?

信息源:

狹義上來說, 軟件產品的質量就是滿足需求的程度,這裏的需求包含功能需求與非功能需求。

但是這樣定義只能是軟件產品開發公司內部的認知,很多時候產品好不好由最終用戶說了算,所以廣義上還需要再加一條: 用戶體驗良好程度。

用戶體驗帶有強烈的主觀性,需要大量的反饋數據才能準確評估。

爲什麼要進行軟件質量管理?

代碼是人寫的,人無完人,人易犯錯,而軟件開發又是高度複雜的過程,軟件存在質量問題是必然的。

但是我們又不希望交互到客戶或用戶手中的軟件漏洞百出,體驗極差。

唯一能平衡這兩者之間關係的就是合適的軟件質量管理。

雖然一個軟件的質量達到100%幾乎不可能,但是我們的質量管理要衝着100%來,才能保證最終的質量足夠好。

所謂足夠好,帶有一定的主觀色彩,特別是用戶體驗部分,這是合理的。至於最終的足夠好到底是多好,則是由質量管控人員設定的。

對於足夠好的描述,緯度必須足夠充分,數據足夠量化,這是下面軟件質量評估要講的內容。

如何評估軟件產品的質量?

要進行軟件質量評估,必須具備如下前提:

  • 目標質量有足夠清晰明確的描述
  • 合適的評估手段

對於第一點,需要對軟件質量進行合理的緯度劃分,以及每個維度的合理量化,稱爲軟件質量模型。

對於第二點,則需要合適評估工具與評估流程。

軟件質量模型(software quality model)

軟件質量與評估如此重要,自然有機構已經對此做過深入研究,相應的軟件質量模型也達到一定標準。

比較著名的是ISO/IEC的SQuaRE, 和CISQ

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章