文章目錄
- 9.1 軟件可靠性基本概念
- 9.1.1 軟件可靠性定義
- 9.1.2 軟件可靠性的定量描述
- 9.1.3 可靠性目標
- 9.1.4 可靠性測試的意義
- 9.1.5 廣義的可靠性測試與狹義的可靠性測試
- 9.2 軟件可靠性建模
- 9.2.1 影響軟件可靠性的因素
- 9.2.2 軟件可靠性的建模方法
- 9.2.3 軟件的可靠性模型分類
- 9.3 軟件可靠性管理
- 9.4 軟件可靠性設計
- 9.4.1 容錯設計技術
- 9.4.2 檢錯技術
- 9.4.3 降低復雜度設計
- 9.4.4 系統配置技術
- 9.5 軟件可靠性測試
- 9.5.1 軟件可靠性測試概述
- 9.5.2 定義軟件運行剖面
- 9.5.3 可靠性測試用例設計
- 9.5.4 可靠性測試的實施
- 9.6 軟件可靠性評價
- 9.6.1 軟件可靠性評價概述
- 9.6.2 怎樣選擇可靠性模型
- 9.6.3 可靠性數據的收集
- 9.6.4 軟件可靠性的評估和預測
9.1 軟件可靠性基本概念
9.1.1 軟件可靠性定義
軟件可靠性 (Software Reliability)
是軟件產品在規定的條件下和規定的時間區間完成規定功能的能力。即軟件不引起系統失效的概率。該概率是系統輸入和系統使用的函數,也是軟件中存在的缺陷函數; 系統輸入將確定是否會遇到已存在的缺陷。
9.1.2 軟件可靠性的定量描述
軟件的可靠性是在軟件使用條件、在規定時間內、系統的輸入/輸出、系統使用等變量構成的數學表達式,如圖:
9.1.3 可靠性目標
軟件可靠性
是指用戶對所使用的軟件的性能滿意程度的期望。可以用可靠度、平均失效時間和故障強度等來描述。
9.1.4 可靠性測試的意義
可靠性測試的意義是:
- (1)軟件失效可能造成災難性的后果。
- (2)軟件的失效在整個計算機系統失效中的比例較高。
- (3)相比硬件可靠性技術,軟件可靠性技術不成熟。
- (4)軟件可靠性問題會造成軟件費用增長。
- (5)系統對軟件的依賴性強,對生產活動和社會生活影響日益增大。
可靠性測試的目的如圖:
9.1.5 廣義的可靠性測試與狹義的可靠性測試
(1)廣義的可靠性測試
是為了最終評價軟件系統的可靠性而運用建模、統計、試驗、分析和評價等一系列手段對軟件系統實施的一種測試。
(2)狹義的可靠性測試
指為了獲取可靠性數據,按預先確定好的測試用例,在軟件預期使用環境中,對軟件實施的一種測試。
9.2 軟件可靠性建模
9.2.1 影響軟件可靠性的因素
軟件可靠性模型 (Software Reliability Model)
是指為預計或估算軟件的可靠性所建立的可靠性框圖和數學模型。 建立可靠性模型是為了將復雜系統的可靠性逐級分解為簡單系統的可靠性,以便于定量預計、 分配、估算和評價復雜系統的可靠性。
(1)影響軟件可靠性的因素包括:運行環境、軟件規模、軟件的內部結構、軟件的開發方法和開發環境、軟件的可靠性投入。
(2)軟件可靠性模型的組成和特性,如圖:
9.2.2 軟件可靠性的建模方法
一個軟件可靠性模型通常(但不是絕對)由以下幾部分組成。
- (1)
模型假設
。 - (2)
性能度量
。 - (3)
參數估計方法
。 - (4)
數據要求
。
9.2.3 軟件的可靠性模型分類
軟件的可靠性模型大致可分為如下10類:
- 種子法、
- 失效率類、
- 曲線擬合類、
- 可靠性增長、
- 程序結構分析、
- 輸入域分類、
- 執行路徑分析方法、
- 非齊次泊松過程、
- 馬爾可夫過程、
- 貝葉斯分析。
9.3 軟件可靠性管理
軟件可靠性管理的各階段,如圖:
9.4 軟件可靠性設計
軟件可靠性設計技術有: 容錯設計技術、檢錯技術、降低復雜度設計、系統配置技術。
9.4.1 容錯設計技術
容錯設計技術: 恢復塊設計、N 版本程序設計、冗余設計。
- 1 )
恢復塊設計
: 選擇一組操作作為容錯設計單元,把普通的程序塊變成恢復塊。 - 2 )
N 版本程序設計
: 通過設計多個模塊或不同版本,對相同初始條件和相同輸入的操作結果,實行多數表決,防止其中某一軟件模塊/版本的故障提供錯誤的服務。
3 )冗余設計
: 在一套完整的軟件系統之外,設計一種不同路徑、不同算法或不同實現方式方法的模塊或系統作為備份,在出現故障時可使用冗余部分進行替換。
9.4.2 檢錯技術
1)檢錯技術代價低于容錯技術和冗余技術,但是不能自動解決故障,需要人工干預。
2)檢錯技術著重考慮 檢測對象、檢測延時、實現方式、處理方式 四個要素。
9.4.3 降低復雜度設計
降低復雜度設計
思想是: 在保證實現軟件功能基礎上,簡化軟件結構、縮短程序代碼長度、優化
軟件數據流向、降低軟件復雜度、提高軟件可靠性。
9.4.4 系統配置技術
系統配置技術: 可以分為 雙機熱備技術和服務器集群技術。
1)雙機熱備技術
。
- 采用“心跳”方法保證主系統與備用系統的聯系。
- 根據兩臺服務器的工作方式分為雙機熱備模式(一臺工作,一臺后備)、雙機互備模式(兩臺運行相對獨立應用,互為后備)、雙機雙工模式(兩臺同時運行相同應用,互為后備)。
2)服務器集群技術
。 集群內各節點服務器通過內部局域網相互通信,若某節點服務器發生故障,這臺服務器運行的應用被另一節點服務器自動接管。
9.5 軟件可靠性測試
9.5.1 軟件可靠性測試概述
軟件可靠性測試包括: 可靠性目標的確定、運行剖面的開發、測試用例的設計、測試實施、測試結果分析等。
9.5.2 定義軟件運行剖面
為軟件的使用行為建模,開發使用模型,明確需測試內容。
9.5.3 可靠性測試用例設計
測試用例要能夠反映實際的使用情況,優先測試最重要的和最頻繁使用的功能。設計測試用例,針對組合功能或特定功能,編寫成相關文檔。測試用例組成如下圖:
9.5.4 可靠性測試的實施
用時間定義的軟件可靠性數據分為4 類: 失效時間數據、失效間隔時間數據、分組時間內的失效數、分組時間的累積失效數。測試記錄與測試報告的組成如圖 :
9.6 軟件可靠性評價
9.6.1 軟件可靠性評價概述
評估和預測軟件可靠性過程包括:
- (1) 選擇可靠性模型。
- (2) 收集可靠性數據。
- (3) 可靠性評估和預測。
9.6.2 怎樣選擇可靠性模型
可以從以下幾方面選擇可靠性模型:
- (1) 模型假設的適用性。
- (2) 預測的能力與質量。
- (3) 模型輸出值能否滿足可靠性的評價需求。
- (4) 模型使用的簡便性。
9.6.3 可靠性數據的收集
數據收集可行的辦法有:
- (1) 盡可能早地確定可靠性模型。
- (2) 數據收集計劃要有較強的可操作性。
- (3) 重視測試數據的分析和整理。
- (4) 充分利用技術手段(數據庫技術)來完成分析和統計。
9.6.4 軟件可靠性的評估和預測
(1)軟件可靠性的評估和預測的目的是: 評估軟件系統的可靠性狀況和預測將來一段時間的可靠性水平。
(2)軟件可靠性的評估和預測以 軟件可靠性模型分析為主,以失效數據的圖形分析法和試探性數據分析技術等為輔。