軟體工程-軟體品質與軟體工具

📢 本文由 gemini-3-flash-preview 翻譯

軟體工程系列文章六

軟體品質是指反映軟體系統或軟體產品滿足規定或隱含需求能力之特徵與特性的全體。

軟體品質管理是指對軟體開發過程進行獨立的檢查活動,由品質保證、品質規劃與品質控制 3 個主要活動構成。

軟體品質保證是指為了保證軟體系統或軟體產品充分滿足使用者要求的品質,而進行的有計劃、有組織的活動,其目的是生產高品質的軟體。

軟體品質特性

討論軟體品質首先要瞭解軟體的品質特性。目前已有套多種軟體品質模型來描述軟體品質特性,例如 ISO/IEC 9126 軟體品質模型與 Mc Call 軟體品質模型。

ISO/IEC 9126 軟體品質模型

ISO/IEC 9126 軟體品質模型由 3 個層次組成:第一層是品質特性,第二層是品質子特性,第三層是度量指標。

IEC-9126-軟體品質模型

功能性 (Functionality)

與一組功能及其指定的性質之存在有關的一組屬性,功能是指滿足規定或隱含需求的那些功能。

  • 適應性 (Suitability):與對規定任務能否提供一組功能,以及這組功能是否適合有關的軟體屬性。
  • 準確性 (Accurateness):與能夠得到正確或相符的結果或效果有關的軟體屬性。
  • 互通性 (Interoperability):與其他指定系統進行互動操作的能力相關的軟體屬性。
  • 依從性 (Compliance):使軟體服從有關的標準、約定、法規及類似規定的軟體屬性。
  • 安全性 (Security):與避免對程式及資料的非授權故意或意外存取的能力有關的軟體屬性。

可靠性 (Reliability)

與在規定的一段時間內和規定的條件下,軟體維持在其效能水準有關的能力。

  • 成熟性 (Maturity):與由軟體故障引起失效的頻度有關的軟體屬性。
  • 容錯性 (Fault tolerance):與在軟體錯誤或違反指定介面的情況下,維持指定的效能水準的能力有關的軟體屬性。
  • 易恢復性 (Recoverability):與在故障發生後,重新建立其效能水準並恢復直接受影響資料的能力,以及為達到此目的所需的時間與努力有關的軟體屬性。

易用性 (Usability)

與為使用所需的努力,以及由一組規定或隱含的使用者對這樣使用所做的個別評價有關的一組屬性。

  • 易理解性 (Understandability):與使用者為理解邏輯概念及其應用所付出的勞動有關的軟體屬性。
  • 易學性 (Learnability):與使用者為學習其應用(例如操作控制、輸入、輸出)所付出的努力相關的軟體屬性。
  • 易操作性 (Operability):與使用者為進行操作和操作控制所付出的努力有關的軟體屬性。

效率 (Efficiency)

在規定條件下,與軟體的效能水準與所用資源量之間的關係有關的軟體屬性。

  • 時間特性 (Time behavior):與回應和處理時間,以及軟體執行其功能時的吞吐量有關的軟體屬性。
  • 資源特性 (Resource behavior):與軟體執行其功能時,所使用的資源量以及使用資源的持續時間有關的軟體屬性。

可維護性 (Maintainability)

與進行規定的修改所需要的努力有關的一組屬性。

  • 易分析性 (Analyzability) :與為診斷缺陷或失效原因,或為判定待修改的部分所需努力有關的軟體屬性。
  • 易變更性 (Changeability) :與進行修改、除錯或適應環境變換所需努力有關的軟體屬性。
  • 穩定性 (Stability) :與修改造成未預期效果的風險有關的軟體屬性。
  • 易測試性 (Testability) :與確認經修改軟體所需努力有關的軟體屬性。

可攜性 (Portability)

與軟體可從某一環境轉移到另一環境的能力有關的一組屬性。

  • 適應性 (Adaptability) :與軟體轉移到不同環境時的處理或手段有關的軟體屬性。
  • 易安裝性 (Installability) :與在指定環境下安裝軟體所需努力有關的軟體屬性。
  • 符合性 (Conformance) :使軟體服從與可攜性有關的標準或約定的軟體屬性。
  • 易替換性 (Replaceability) :與一軟體在該軟體環境中用來替代指定的其他軟體的可能和努力有關的軟體屬性。

Mc Call 軟體品質模型

Mc Call 軟體品質模型從軟體產品的執行、修正和轉移 3 個層面確定了 11 個品質特性。

Mc Call 也給出了一個三層模型框架。第一層是品質特性,第二層是評價準則,第三層是度量指標。

Mc-Call-軟體品質模型

軟體評審

通常將「品質」理解為「使用者滿意程度」。為了使使用者滿意,有以下兩個必要條件:

  1. 設計的規格說明書符合使用者的要求,這稱為設計品質。
  2. 程式按照設計規格說明所規定的情況正確執行,這稱為程式品質。

設計品質的評審內容

設計品質評審的對象是在需求分析階段產生的軟體需求規格說明、資料需求規格說明,以及在軟體概要設計階段產生的軟體概要設計說明書等。通常從以下幾個方面進行評審:

  1. 評價軟體的規格說明是否合乎使用者的要求,即總體設計思想和設計方針是否明確;需求規格說明是否得到了使用者或單位上級機關的批准;需求規格說明與軟體的概要設計規格說明是否一致等。
  2. 評審可靠性,即是否能避免輸入異常(錯誤或超載等)、硬體失效及軟體失效所產生的失效,一旦發生應能及時採取替代手段或恢復手段。
  3. 評審安全保密措施實施情況,即是否對系統使用資格進行檢查。
  4. 評審操作特性實施情況,即操作命令和操作資訊的恰當性;輸入資料與輸入控制語句的恰當性;輸出資料的恰當性;回應時間的恰當性等。
  5. 評審效能實現情況,即是否達到所規定效能的目標值。
  6. 評審軟體是否具有可修改性、可擴充性、可互換性和可攜性。
  7. 評審軟體是否具有可測試性。
  8. 評審軟體是否具有再用性。

程式品質的評審內容

程式品質評審通常是從開發者的角度進行評審,與開發技術直接相關。它是著眼於軟體本身的結構、與執行環境的介面以及變更帶來的影響而進行的評審活動。

軟體的結構如下:

  1. 功能結構。需要檢查的項目:
    • 資料結構
    • 功能結構
    • 資料結構和功能結構之間的對應關係
  2. 功能的通用性
  3. 模組的層次
  4. 模組結構。模組層次結構是模組的靜態結構,現在要檢查模組的動態結構。模組分為處理模組和資料模組兩類,模組間的動態結構也與這些模組分類有關。對這樣的模組結構進行檢查的項目如下:
    • 控制流結構
    • 資料流結構
    • 模組結構與功能結構之間的對應關係
  5. 處理過程的結構

與執行環境的介面

執行環境包括硬體、其他軟體和使用者,主要的檢查項目如下:

  1. 與硬體的介面。包括與硬體的介面約定,即根據硬體的使用說明等所做出的規定;硬體故障時的處理和超載時的處理。
  2. 與使用者的介面。包括與使用者的介面約定,即輸入資料的結構;輸出資料的結構;異常輸入時的處理,超載輸入時的處理;使用者存取權限的檢查等。

軟體容錯技術

提高軟體品質和可靠性的技術大致可分為兩類:一類是避免錯誤,即在開發的過程中不讓差錯潛入軟體的技術;另一類是容錯技術,即對某些無法避免的差錯,使其影響減至最小的技術。

容錯軟體的定義

  1. 規定功能的軟體,在一定程度上對自身錯誤的作用(軟體錯誤)具有屏蔽能力,則該軟體為容錯軟體。
  2. 規定功能的軟體,在一定程度上能從錯誤狀態自動恢復到正常狀態,則該軟體為容錯軟體。
  3. 規定功能的軟體,在因錯誤發生故障時仍然能在一定程度上完成預期的功能,則該軟體為容錯軟體。
  4. 規定功能的軟體,在一定程度上具有容錯能力,則該軟體為容錯軟體。

容錯的一般方法

實現容錯的主要手段是冗餘。冗餘是指對於實現系統規定功能是多餘的那部分資源,包括硬體、軟體、資訊和時間。由於加入了這些資源,有可能使系統的可靠性得到較大的提高。通常,冗餘技術分為 4 類:

  1. 結構冗餘。結構冗餘是通常採用的冗餘技術,按其工作方法可以分為靜態、動態和混合冗餘 3 種。
    • 靜態冗餘
    • 動態冗餘
    • 混合冗餘
  2. 資訊冗餘。為檢測或糾正資訊在運算或傳輸中的錯誤需外加一部分資訊。
  3. 時間冗餘。指以重複執行指令或程式來消除瞬時錯誤帶來的影響。
  4. 冗餘附加技術。指為實現上述冗餘技術所需的資源和技術,包括程式、指令、資料、存放和調動它們的空間和通道等。

在屏蔽硬體錯誤的容錯技術中,冗餘附加技術包括:

  1. 關鍵程式和資料的冗餘儲存及調用。
  2. 檢測、表決、切換、重構、糾錯和複算的實現。

在屏蔽軟體錯誤的容錯系統中,冗餘附加技術的構成包括:

  1. 冗餘備份程式的儲存及調用。
  2. 實現錯誤檢測和錯誤恢復的程式。
  3. 實現容錯軟體所需的固化程式。

軟體工具

用來輔助軟體開發、執行、維護、管理和支援等過程中的活動的軟體稱為軟體工具。

軟體開發工具

對應於軟體開發過程的各種活動,軟體開發工具通常有需求分析工具、設計工具、編碼與除錯工具、測試工具等。

軟體維護工具

輔助軟體維護過程中活動的軟體稱為軟體維護工具,它輔助維護人員對軟體程式碼及其文件進行各種維護活動。軟體維護工具主要有版本控制工具、文件分析工具、開發資訊庫工具、逆向工程工具和再造工程工具。

This post is licensed under CC BY-NC-SA 4.0 by the author.