軟件可靠性

轉載自http://www.cmaintop.com/UploadFiles/2004121921215700.pdf

軟件可靠性
軟件的可靠性是用以衡量一個軟件(指計算機程序)好壞很重要的一個評價指標。軟件的
可靠性與硬件的可靠性有許多相似之處,更有許多差別。這種差異是由於軟、硬件故障機理
的差異造成的,因而使軟件可靠性在術語內涵、指標選擇、設計分析手段以及提高軟件可靠
性的方法與途徑等方面具有其自身的特點。然而,軟件可靠性作爲一個新的研究領域正在發
展和應用。
1 基本概念
(1) 軟件故障及其特徵
對於軟件的不正常,常用三個術語來描述:
①缺陷(fault):指的是軟件的內在缺陷。
②錯誤(error):缺陷在一定環境條件下暴露,導致系統運行中出現可感知的不正常、
不正確和不按規範執行的狀態。
③故障(failure):由於對錯誤未作任何糾正而導致系統的輸出不滿足預定的要求。
缺陷可能導致錯誤並造成系統的故障,因此,缺陷是一切錯誤的根源,故存在下面的傳
遞關係:缺陷→錯誤→故障。
但是發生過故障的軟件通常仍然是可用的。只有當軟件頻繁發生故障,或公認已經“陳
舊”時,軟件才被廢棄,這一版本軟件的壽命也就終結。
有缺陷的軟件只有在特定條件下才能導致出錯,而在一般情況下是能夠正常工作的。軟
件缺陷一般有以下特徵:
①軟件缺陷的固有性。軟件一旦有缺陷,它將潛伏在軟件中,直到它被發現和改正。反
之,在一定的環境下,軟件一旦運行是正確的,它將繼續保持這種正確性,除非使用環境發
生了變化。此外,它不像硬件,隨時間推移會因使用而不斷“耗損”,或產生新的缺陷。因
此,軟件缺陷是“牢靠地”、“無耗損地”潛伏於軟件之中。
②缺陷對環境的敏感性。對於一個軟件來說,它的各部分之間有着密切的聯繫。軟件的
運行過程實際上是各部分間的一個邏輯組合過程,不同的邏輯組合就可得到不同的程序路
徑,而每一次軟件運行或完成某功能都是選擇了某一條程序路徑。選什麼樣的程序路徑是由
軟件自身確定的輸入環境決定的。對於不同的輸入環境,軟件的運行路徑可能有不同。如果
軟件在某些程序路徑上含有缺陷,那麼在執行這些程序路徑時就有可能發生錯誤。這就是軟
件錯誤與輸入環境的關係。對在一定輸入環境下工作出錯的軟件,當退出該環境後,對於其
他環境,此軟件又可能正常工作。但當再次進入該環境時,軟件又會出錯。這說明缺陷對環
境是十分敏感的。
③軟件錯誤的傳染性。任一軟件缺陷,只要未被排除,始終存在於該軟件中,一旦暴露,
處理過程就將產生錯誤,而這種錯誤往往是變化的。例如,由於某一處錯誤處理,使某個處
理變量C 的值與要求不合,當變量C 繼續參加運行時會引起處理過程中的其他錯誤。故這
類錯誤是具有“傳染性”的。如果錯誤不被糾正,也許這種錯誤就一直存在以至繼續“傳染”,
直到引起軟件故障。
(2) 軟件可靠性
軟件可靠性是“軟件在規定的條件下、規定的時間週期內執行所要求的功能的能力”。
軟件可靠性同樣可用可靠度來衡量,而軟件的可靠度是“軟件在規定的條件下、規定的時間
週期內不引起系統故障的概率”。該概率是系統輸入與系統使用的函數,也是軟件中存在的
缺陷的函數。系統輸入將確定是否會遇到已存在的缺陷(如果有缺陷存在的話)。
軟件可靠性的定義雖與硬件可靠性定義貌似類同,但定義中的各要素的含義是不同的。
環境條件是指軟件的使用(運行)環境,它涉及到軟件運行所需要的一切支持系統及有關的因
素。規定的時間t 被定義爲軟件系統一旦投入運行後的計算機掛起(開機但空閒)和工作的累
積時間。顯然,在使用期間中還有計算機的停機時間,它不包括在運行時間t 內。規定功能
是指從軟件要求上或規格說明書和設計說明書上規定的軟件全部功能。
2 常用參數
軟件的故障與硬件不同,軟件一旦出現故障,查明原因後相應的缺陷就可以得到糾正,
以後不再重複出現。因此這是一個可靠性增長的問題。特定的故障出現是非重複性事件,因
此不能用頻率學派的理論來說明。基於上述分析,可知在一個較長的時間區間內,故障率
λ (t) 肯定不是常值。但是通過對軟件工廠工作質量(包括質保體系質量)的掌握程度,根據
軟件開發(測試)過程的質量可靠性分析,可以建立起對軟件質量可靠性的“信念”,用概率
方法對其進行評估。
常用的軟件可靠性參數有以下一些。
①系統平均不工作間隔時間(MTBSD)
設V T 爲軟件正常工作總時間,d 爲軟件系統由於軟件故障而停止工作的次數,則定義
+1
=
d
T TV
BSD
式中: BSD T ——系統平均不工作間隔時間(MTBSD)。
②系統不工作次數(一定時期內)
由於軟件故障停止工作,必須由操作者介入再起動才能繼續工作的次數。
③可用度( A )
設V T 爲軟件正常工作總時間, D T 爲由於軟件故障使系統不工作的時間,則定義
V D
V
T T
A T
+
=
或 BD DT
BD
T T
A T
+
=
式中: BD T ——平均工作時間(h); DT T ——平均不工作時間(h)。
一般情況下,生產計算機系統要求A ≥99.8%;銀行計算機系統要求A ≥99.9%。
④初期故障率
一般以軟件交付使用方後的三個月內爲初期故障期。初期故障率以每100h 的故障數爲
單位。用它來評價交付使用的軟件的質量並預測軟件可靠性何時基本穩定。
⑤偶然故障率
一般以軟件交付給使用方後的四個月後爲偶然故障期。偶然故障率一般以每千小時的故
障數爲單位,它反映了軟件處於穩定狀態的質量。
⑥使用方誤用率
使用方不按照軟件規範及說明等文件來使用而造成的錯誤叫“使用方誤用”。在總使用
次數中,使用方誤用次數佔的百分率叫“使用方誤用率”。造成使用方誤用的原因之一是使
用方對說明理解不深,操作不熟練,但也可能是說明沒有講得非常清楚引起誤解等。
⑦用戶提出補充要求數
由於軟件開發過程中未能充分滿足用戶需要,或者用戶對軟件開發時所提要求不全面,
軟件開發使用後用戶又提出補充要求,需要生產方對軟件進行修改、完善。
3 軟件可靠性模型
雖然軟件可靠性與硬件可靠性有相似之處,都是用出故障的概率來表示的,但由於兩者
間故障機理不同,因此可靠性模型也不一樣。軟件可靠性模型有很多種,下面介紹常用的三
類:
①從硬件可靠性理論導出的模型;
②根據程序內部特性得到的模型;
③用已知錯誤植入軟件,經過測試、分析比較建立的可靠性模型。
第一種可靠性模型所做的假設是:
①在兩次錯誤出現之間的調試時間隨錯誤出現率呈現指數分佈,而錯誤出現率和剩餘錯
誤數成正比;
②每個錯誤一經發現,立即排除,並使錯誤總數減1;
③產生錯誤的速率是個常數。
對軟件來說,上面假設的合理性可能還有問題,例如,糾正一個錯誤的同時可能不小心
而引入另一些錯誤,這樣第②個假設將不成立。
第二種可靠性模型計算存在於軟件中的錯誤的預期數目,根據軟件複雜性度量函數導出
的定量關係,這種模型建立了程序面向代碼的(如操作符的數目)與程序中錯誤的初始估計數
字之間的關係。
奈伯(Naib)在一項利用霍爾斯特德(Halstead)方法對軟件出錯率估算的研究中發現,環
境因素對軟件出錯率的影響最大,並找出了三個起決定作用的隨機變量,即:
①使用過該軟件的總用戶數X ;
②當前用戶人數Y ;
③當前用戶中有過出錯歷史的用戶數Z 。
X 、Y 、Z 爲隨機變量。這樣軟件出錯率可表示爲
X DY B Z
D
V
2 3 + + ⎟⎠

⎜⎝

其中: ( ) ( ) 1 2 1 2 2 2 2 1 2 V = η log η +η log η log η +η , 2
1 2

η N D =
式中: 1 η——操作符個數; 2 η ——操作對象個數; 2 N ——操作對象使用次數; 3 B ——模
塊個數。
經實驗奈伯發現,該式的結果與實驗值相關係數達0.92。
第三種可靠性模型是由D.Mills 首先提出的。這種方法一開始用來估算野外生活的動物
數或一個池塘內魚的尾數。比如,要估算池塘內鰱魚的尾數N ,可以先把帶有標記的t N 尾
鰱魚放入池塘,過一段時間後,從池塘中捕捉鰱魚。數一數不帶標記的鰱魚有n 尾,帶標記
的有t n 尾。如果這些帶與不帶標記的鰱魚分散均勻,又比較合羣,而且捕捉的難易度相同,
那麼就可以求得N 爲
t
t
N
n
N = n
植入模型就是在軟件中“植入”已知的錯誤,並計算髮現的植入錯誤數與發現的實際錯
誤數之比而開發出的模型。隨機將一些已知的帶標記的錯誤植入程序。設程序中尚未發現的
殘留錯誤總數爲N ,植入的錯誤總數爲t N 。在歷經一段時間的測試之後,總共發現有程序
的殘留錯誤n 個和帶標記的植入錯誤t n 個。假定植入錯誤和程序中的殘留錯誤都可以同等
難易地被測試到,就可用上式求出程序中尚未發現的殘留錯誤總數N 。但這種模型依賴於
測試技術。例如,如何判定哪些錯誤是程序的殘留錯誤,哪些是植入帶標記的錯誤,不是件
容易的事。而且植入帶標記的錯誤有可能導致新的錯誤。
還有其他一些軟件可靠性模型,例如外延式。繪製單位時間內已檢測到錯誤數目的關係
曲線,然後用最小二乘法將曲線外延,以此來估計程序中尚殘留的錯誤數目。
4 提高軟件可靠性的途徑
提高軟件可靠性的根本途徑是開展軟件工程,減少軟件缺陷。還應當:
①嚴格的配置管理。軟件的配置管理能標識和確定系統中的配置項,在系統整個壽命期
內控制這些項目的投放與更動,記錄並報告配置和更動要求,驗證配置項的完備性和正確性。
它能夠完成軟件的配置標識,配置控制,配置記錄,技術狀態審計(審覈)四項任務。嚴格的
配置管理是保證軟件可靠性的重要措施之一。
②軟件(模塊)的標準化。對硬件產品來說,一般地說標準化程度越高,其質量與可靠性
也越高。軟件也一樣。軟件標準件應由國家至少是部門來組織生產。這樣軟件的質量與可靠
性將會有明顯的提高。
③軟件可靠性設計準則。實踐證明:總結國內外,特別是本部門、單位的成功或失敗的
經驗教訓,制訂並貫徹產品可靠性設計準則是提高產品可靠性的根本手段。對硬件產品如此,
軟件也相同。硬件可靠性設計的很多思路與方法可用在軟件之中。例如:
·FMEA,FTA 可以根據軟件的特點具體化後加以應用;
·冗餘技術。軟件不能像硬件一樣用幾個完全相同的單元組成冗餘,因爲一錯皆錯。但
軟件可使用具有相同功能,但算法及邏輯上都“相異”的技術,使用多版本編輯結構或恢復
塊結構來構成冗餘,提高系統的可靠性。
·由於計算機運行及信息傳輸中可能出錯,因此,軟件應有一定的抗拒硬件出錯能力。
例如採用信息論中現成的檢錯碼及糾錯碼;又如對關鍵及重要信息的編碼應與其他信息編碼
有足夠的Hamming 距離(兩碼字X、Y 間的Hamming 距離d(X、Y)是碼字X、Y 之間對應位取
不同值的碼元數,如X=1100,Y=1011,則,d(X、Y)=3)。
·對以安全性爲重點的計算機應有一個叫安全性內核的獨立程序監視系統。在出現潛在
的不安全狀態或有可能轉移到不安全狀態時,轉入規定的狀態。
④軟件的設計評審。應像硬件一樣建立嚴格的設計評審制度,使之成爲把好軟件質量關
的重要手段。爲了防止軟件可靠性設計評審走過場,制訂“軟件可靠性與可維護性的設計評
審檢查單”是必要的,要按檢查單逐項評審,審查軟件是否嚴格按可靠性設計準則設計。

發佈了36 篇原創文章 · 獲贊 5 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章