複製鏈接
請複製以下鏈接發送給好友

軟件可靠性

鎖定
軟件可靠性 (software reliability )是軟件產品在規定的條件下和規定的時間區間完成規定功能的能力。規定的條件是指直接與軟件運行相關的使用該軟件的計算機系統的狀態和軟件的輸入條件,或統稱為軟件運行時的外部輸入條件;規定的時間區間是指軟件的實際運行時間區間;規定功能是指為提供給定的服務,軟件產品所必須具備的功能。軟件可靠性不但與軟件存在的缺陷和(或)差錯有關,而且與系統輸入和系統使用有關。軟件可靠性的概率度量稱軟件可靠度
中文名
軟件可靠性
外文名
software reliability
計算機
軟件及系統

軟件可靠性定義

1983年美國IEEE計算機學會對“軟件可靠性”做出了明確定義,此後該定義被美國標準化研究所接受為國家標準,1989年我國也接受該定義為國家標準。該定義包括兩方面的含義:
(1)在規定的條件下,在規定的時間內,軟件不引起系統失效的概率;
(2)在規定的時間週期內,在所述條件下程序執行所要求的功能的能力;
其中的概率是系統輸入和系統使用的函數,也是軟件中存在的故障的函數,系統輸入將確定是否會遇到已存在的故障(如果故障存在的話)。

軟件可靠性影響因素

軟件可靠性是關於軟件能夠滿足需求功能的性質,軟件不能滿足需求是因為軟件中的差錯引起了軟件故障。軟件中有哪些可能的差錯呢?
軟件差錯是軟件開發各階段潛入的人為錯誤
1.需求分析定義錯誤。如用户提出的需求不完整,用户需求的變更未及時消化,軟件開發者和用户對需求的理解不同等等。
2.設計錯誤。如處理的結構和算法錯誤,缺乏對特殊情況和錯誤處理的考慮等。
3.編碼錯誤。如語法錯誤,變量初始化錯誤等。
4.測試錯誤。如數據準備錯誤,測試用例錯誤等。
5.文檔錯誤。如文檔不齊全,文檔相關內容不一致,文檔版本不一致,缺乏完整性等。
從上游到下游,錯誤的影響是發散的,所以要儘量把錯誤消除在開發前期階段。
錯誤引入軟件的方式可歸納為兩種特性:程序代碼特性,開發過程特性。
程序代碼一個最直觀的特性是長度,另外還有算法和語句結構等,程序代碼越長,結構越複雜,其可靠性越難保證。
開發過程特性包括採用的工程技術和使用的工具,也包括開發者個人的業務經歷水平等。
除了軟件可靠性外,影響可靠性的另一個重要因素是健壯性,對非法輸入的容錯能力
所以提高可靠性從原理上看就是要減少錯誤和提高健壯性。

軟件可靠性相關分析

軟件可靠性可靠性保證

應用軟件系統規模越做越大越複雜,其可靠性越來越難保證。應用本身對系統運行的可靠性要求越來越高,在一些關鍵的應用領域,如航空、航天等,其可靠性要求尤為重要,在銀行等服務性行業,其軟件系統的可靠性也直接關係到自身的聲譽和生存發展競爭能力。  特別是軟件可靠性比硬件可靠性更難保證,會嚴重影響整個系統的可靠性。在許多項目開發過程中,對可靠性沒有提出明確的要求,開發商(部門)也不在可靠性方面花更多的精力,往往只注重速度、結果的正確性和用户界面的友好性等,而忽略了可靠性。在投入使用後才發現大量可靠性問題,增加了維護困難和工作量,嚴重時只有束之高閣,無法投入實際使用。

軟件可靠性軟硬件可靠性區別

軟件可靠性與硬件可靠性之間主要存在以下區別:
1.最明顯的是硬件有老化損耗現象,硬件失效是物理故障,是器件物理變化的必然結果,有浴盆曲線現象;軟件不發生變化,沒有磨損現象,有陳舊落後的問題,沒有浴盆曲線現象。
2.硬件可靠性的決定因素是時間,受設計、生產、運用的所有過程影響,軟件可靠性的決定因素是與輸入數據有關的軟件差錯,是輸入數據和程序內部狀態的函數,更多地決定於人。
3.硬件的糾錯維護可通過修復或更換失效的系統重新恢復功能,軟件只有通過重設計。
4.對硬件可採用預防性維護技術預防故障,採用斷開失效部件的辦法診斷故障,而軟件則不能採用這些技術。
5.事先估計可靠性測試和可靠性的逐步增長等技術對軟件和硬件有不同的意義。
6.為提高硬件可靠性可採用冗餘技術,而同一軟件的冗餘不能提高可靠性。
7.硬件可靠性檢驗方法已建立,並已標準化且有一整套完整的理論,而軟件可靠性驗證方法仍未建立,更沒有完整的理論體系
8.硬件可靠性已有成熟的產品市場,而軟件產品市場還很新。
9.軟件錯誤是永恆的,可重現的,而一些瞬間的硬件錯誤可能會被誤認為是軟件錯誤。
總的説來,軟件可靠性比硬件可靠性更難保證,即使是美國宇航局的軟件系統,其可靠性仍比硬件可靠性低一個數量級