1. 程式人生 > 其它 >系統架構設計師-軟體可靠性設計

系統架構設計師-軟體可靠性設計

  隨著軟體的日益普及,系統中的軟體成分不斷增加,使得系統對軟體的依賴越來越強,軟體的可靠性對系統可靠性的影響越來越大。實踐證明保障軟體可靠性最有效、最經濟、最重要的手段是在軟體設計階段採取措施進行可靠性控制,為此提出了軟體可靠性設計的概念。

  軟體可靠性設計就是在常規的軟體設計中,應用各種方法和技術使軟體設計在兼顧使用者功能和效能需求的同時,全面滿足軟體的可靠性要求,軟體可靠性設計應用和軟體的常規設計緊密結合,貫穿於軟體設計過程的始終。

  可靠性設計需要遵循的原則如下:

  1,軟體可靠性設計是軟體設計的一部分,必須在軟體的總體設計框架中進行,並且不能與其他設計原則相沖突。

  2,軟體可靠性設計在滿足提高軟體質量要求的前提下,以提高和保障軟體可靠性為最終目標。

  3,軟體可靠性設計應該確定軟體的可靠性目標,不能無限擴大,並且在功能、使用者需求、開發費用之後考慮。

  常見的可靠性設計技術有容錯設計、檢錯設計、降低複雜度設計等技術。

  1,容錯設計技術,對於軟體失效後果特別嚴重的場合,採用容錯設計技術。常見的容錯設計技術有恢復塊設計、N版本程式設計和冗餘設計。

  恢復塊設計,選擇一組軟體操作作為容錯設計單元,把普通的程式塊變成恢復塊。一個恢復塊包含若干個功能相同、設計差異的程式塊文字。一個執行文字和多個備份文字構成“動態冗餘”,一旦執行文字出現故障,則備份文字替換,軟體容錯的恢復塊方法就是使軟體包含一系列恢復塊。

  N版本程式設計,核心是通過設計多個模組或不同版本,對於相同初始條件和相同輸入的操作結果,實現多數表決。防止其中某一軟體模組、版本的故障提供錯誤的服務,以實現軟體容錯。

  冗餘設計,在一套完整軟體系統之外,設計一種不同路徑、不同演算法或不同實現方法的模組或系統作為備份。在出現故障時可以使用冗餘的部分進行替換。從而位置軟體系統的正常執行,缺點是費用和資源的消耗會有所增加。

  2,檢錯技術,在軟體系統中,對無須線上容錯或不能採用冗餘設計技術的部分,如果對可靠性要求較高,故障有可能導致嚴重後果,則一般採用檢錯技術。即在軟體出現故障後能及時發現並報警,提醒維護人員進行處理。檢錯技術實現的代價一般低於容錯技術和冗餘技術,但它是一個明顯的不足就是不能自動解決故障。如果出現故障後不進行人工干預,將最終導致軟體系統不能正常執行。採用檢錯設計技術要著重考慮的要素是檢測物件、檢測延時、實現方式和處理方式。

  3,,降低複雜度設計,軟體複雜性與軟體可靠性有著密切的關係,是產生軟體缺陷的重要根源。在設計時考慮降低軟體的複雜度,是提供軟體可靠性的有效方法。降低複雜度設計的思想是在保證實現軟體功能的基礎上,簡化軟體結構、縮短程式程式碼、優化軟體資料流向及降低軟體複雜度,從而提高軟體可靠性。

  在軟體可靠性設計之前和軟體可靠性設計過程中都需要採用軟體可靠性分析赫爾預測方法來確定當前系統中的主要可靠性因素和目標,常見的軟體可靠性分析方法包括故障樹分析方法、失效模型與效用分析方法。

  1,故障樹分析方法,一種自頂向下的軟體可靠性分析方法,即從軟體系統不希望發生的事件(頂事件),特別是對人員和裝置的安全及可靠性產生重大影響的事件開始向下逐步追查導致頂事件發生的原因,直至基本事件(底事件)。從而確立軟體故障原因的各種可能組合方式和發生概率,基本的步驟是軟體故障樹的建立、確定分析和定量分析。

  2,失效模式與效應分析方法,在軟體開發階段的早期,通過識別軟體失效模式分析造成的後果。研究分析各種失效模式產生的原因,尋找消除和減少其有害後果的方法。以便儘早發現潛在的問題,並採取相應措施,從而提高軟體的可靠性和安全性。SFMEA的分析物件可以使開發早期階段的高層次的子系統、部件,也可以是詳細設計階段的單元、模組。對於不同的分析物件,其軟體失效模式不同,採用的分析方法也不同,前者採用系統級分析方法,後者採用詳細級分析方法,其基本的步驟是系統定義、軟體時下模式分析、軟體失效原因分析、軟體失效影響分析、改進措施分析。