陳巖申 張路青
(1.青島雷達聲納修理廠 青島 266100)(2.駐中南地區光電系統軍代室 武漢 430072)
?
裝備軟件可靠性度量參數分析*
陳巖申1張路青2
(1.青島雷達聲納修理廠 青島 266100)(2.駐中南地區光電系統軍代室 武漢 430072)
軟件可靠性度量一直軟件領域研究的重要內容,論文在對其基本概念進行概述的基礎上,對通用的軟件可靠性參數,如軟件可靠性函數、平均壽命參數、平均失效參數以及故障率等進行了概述和分析,并對軟件失效分布模型和失效率分布模型進行了概述。在對上述軟件可靠性參數進行分析的基礎上,結合裝備軟件的現狀給出了相應的建議。
軟件質量; 軟件可靠性; 軟件故障; 軟件可靠性參數
Class Number TN406
隨著海軍信息化建設的不斷深入,硬件和軟件相結合實施維修保障工作成為信息化保障工作的重要內容,目前,對于硬件裝備可靠性的研究已經充分展開,結合具體裝備的可靠性標準、維修保養措施也日趨成熟,但硬件裝備所配備的軟件質量卻一直無法使用有效、量化、有序的手段進行控制,近些年,軍方也陸續出臺了一些控制軟件質量的標準,如GJB 2786A-2009《軍用軟件開發通用要求》、GJB 5000A-2008《軍用軟件研制能力成熟度模型》、GJB 438B-2009《軍用軟件開發文檔通用要求》等一系列軍用標準,但是在實際實施過程中,由于軟件開發和管理人員對于軟件質量的理解程度有差異,使得研制出來的軟件質量無法得到有效控制和保障;在使用軟件過程中,對于出現的軟件故障(也稱為缺陷)無法使用有效的手段進行預測和控制,因此,如何提高軟件質量和軟件可靠性,合理、有序地管理和控制軟件開發過程,保證生產出符合預算和進度要求的高可靠性和可用性軟件,并對軟件使用過程中可能出現的缺陷和錯誤進行度量和預測,已經成為相關研究機構的研究熱點,同時,軟件質量和軟件可靠性也得到各軟件開發機構和大型企業的極大重視。
過去的幾十年,軟件界總是強調使用好的工具、技術和方法來提高軟件質量,為此,付出了巨大的代價來更新開發工具,研究開發方法和技術,雖然也取得了一定的效果,但是并不令人滿意,這時,軟件界逐漸認識到:要確保軟件質量必須要使用量化指標的方法對軟件開發質量進行合理度量,為此,在軟件工程領域開展了大量卓有成效的軟件可靠性指標的工作。
為對軟件可靠性進行有效度量,需對其基本概念進行說明。
1) 軟件可靠性(software reliability)定義為軟件在規定的環境(條件)下和規定的時間內,無失效(failure)地運行的概率[ANSI91]。該定義包含三個主要成分:失效、時間和環境[1]。特別要指出可靠性是時間的概率函數,而且軟件可靠性與操作環境有關,即依賴于其使用方法。軟件可靠性是軟件質量的重要屬性。
2) 軟件可靠性參數(reliability parameter)是指描述軟件可靠性的量,如平均失效間隔時間MTBF。軟件可靠性指標是指對軟件可靠性參數所要求的量值,如要求軟件的MTBF為1000小時(參見GJB 451-90《可靠性維修性術語》)。
3) 可靠性指標分配是指為了把產品的軟件可靠性指標要求按照給定的準則分配給各組成部分而進行的工作。
3.1 軟件可靠性函數
1) 可靠度函數R(t)
R(t)=P(在[0,t]內軟件無失效)=P(T>t)
其中T是失效發生時刻的隨機變量,從0到T的長度稱為壽命。R(t)表示系統運行到t為止無失效的概率。
2) 失效分布函數F(t)
F(t)=P(在[0,t]內軟件失效)=P(T≤t)
又稱不可靠度,或累計失效函數。若設t為1000小時,則F(1000)=P(T≤1000)就表示1000小時以前的失效概率,顯然包含t為100小時以前的失效概率F(100)=P(T≤100)。因此,失效分布函數F(t)含有累計失效的概念。
3) 失效密度函數f(t)

指在t時刻的單位時間內的失效概率,表示累計失效函數的變化率。
4) 失效率函數λ(t)
定義為在t之前沒有出現失效的情況下,在時間[t,t+⊿t]區間內單位時間出現失效的概率。
5) 上述軟件可靠性參數之間的關系
四種可靠性函數緊密相關,可以彼此轉換,即從R(t)、F(t)、f(t)和λ(t)中任何一個可以推導出其它,其關系歸納如圖1所示。

圖1 軟件可靠性參數及其之間的關系
3.2 平均壽命(MTTF和MTBF)
平均失效前時間函數MTTF(Mean Time to Failure),適合于不可修復的產品,表示產品發生失效前的工作時間的期望值。
平均失效間隔時間MTBF(Mean Time between Fa1lures),適合于可修復的產品,表示產品兩次相鄰失效間的工作時間的期望值。
針對具體軟件,是將其作為可修復的產品還是不可修復的產品隨使用要求和環境而變。不管對哪一類產品,MTTF和MTBF理論上的意義是類似的,數學表達式的形式也是一致的,統稱為平均無失效時間,或稱為平均壽命,從圖1可以看出,MTTF(或MTBF)可以由可靠性函數導出[2]。
由于軟件與硬件的失效機理不同,因此軟件界對于使用MTTF(或MTTB)來描述軟件的可靠性是否妥當有爭議。如果失效分布服從指數分布,則MTBF與失效率的關系是MTBF=1/λ。
3.3 平均維修時間MTTR和可用度A
平均維修時間MTTR(Mean Time to Repair)指的是發現失效后到系統被維修好的期望時間。
可用度A(Availability)是指任意時刻需要使用系統的可用概率,也是時間t的函數,用A(t)表示。它不關心在該時刻以前是否發生過失效,包括如果發生過失效但是在允許的維修時間內維修完畢又能正常工作的情況,它描述的是在時刻t是否正常工作的概率。因此可用度與可靠度是兩個不同的概念。通常使用穩定可用度,可以按下式計算:

對于不可維修的系統沒有維修的問題,因此t時刻的可靠度就相當于可用度,即有R(t)=A(t)。對于可維修系統,顯然可用度大于可靠度。
3.4 平均系統失效前時間MTTD和平均系統致命失效前時間MTTCD
大多數裝備均是將軟件嵌入到某個武器裝備系統中使用,因此,這種高可靠性的軟件一般要求要進行容錯設計,因此軟件出現故障,不一定使整個系統失效。這兩個指標是表明軟件故障對整個系統的影響。
平均系統失效前時間MTTD(Mean Time to System Down)是指嵌入在某個系統中的軟件產品開始運行到出現系統失效前的期望時間;對系統的致命失效來說,為平均致命系統失效前時間MTTCD(Mean Time to System Critical Down)[3]。
在一般的工程應用中,也將MTTD叫做MTBF。
3.5 故障隔離率FIR和軟件缺陷檢測率FDR
軟件產品出現失效,在規定條件下、用規定方法能正確隔離到少于或等于L個模塊的集合內的百分數叫軟件故障隔離率FIR(Software Fault Isolation Rate),記為γFI。
當L=1時,即隔離到單個模塊,是確定性隔離。當L>1時,為不確定性隔離。L越小,取代有故障模塊集合的冗余措施越方便,但需要的檢測條件一般也較高。設軟件被檢測出的失效數為ND,能正確隔離到少于或等于L個模塊的集合內的故障數為NL,則γFI=NL/ND。
設軟件產品在規定的時間內,在規定的條件下能正確查出缺陷的失效數為ND,此期間出現的總是失效數為NT,則軟件缺陷檢測率FDR(software defect detection rate)γFD為:γFD=ND/NT。
3.6 千行代碼殘留缺陷數
軟件包括程序、數據和文檔。軟件缺陷是存在于軟件(程序、數據和文檔)之中的錯誤。軟件殘留缺陷數包括非文檔殘留缺陷數和文檔殘留缺陷數。非文檔殘留缺陷數包括程序殘留缺陷數和數據殘留缺陷數。軟件殘留缺陷數,通常以相對值表示,即每千行代碼(或每千條指令)所包含的殘留缺陷個數[4]。
程序和數據中的缺陷導致軟件在運行時出現軟件故障和失效。文檔中的缺陷雖然不直接引起故障和失效,但是也直接或間接反映了程序源代碼的質量。因此,千行代碼殘留缺陷數也可作為軟件可靠性的度量指標。只有該指標是軟件靜態狀態(非運行狀態)下的指標,其它指標都是動態狀態(運行狀態)下的指標。
除上述軟件可靠性度量指標外,還有一些其他的度量指標,如:
1) 軟件平均延遲時間MDT(Mean Delay Time):軟件啟動到進入正常工作狀態的平均時間;
2) 初期失效:交付后三個月內(初期)單位時間的失效次數;
3) 使用方誤用率:由于使用方對軟件不熟悉誤操作比率;
還有用戶提出補充要求數、處理能力(如每次任務反應時間等)。
軟件失效分布函數是用來描述軟件產品失效統計規律的度量指標,圖1中描述了四種可靠性函數的緊密關系,這些可靠性函數之間可以轉換,即從R(t)、F(t)、f(t)和λ(t)中任何一個可以推導出其它函數。
為清楚說明上述函數之間的轉換關系,本文從失效率函數λ(t)入手,在失效率函數λ(t)已知的情況下,其它可靠性指標都可以由此導出。通常也把失效率看作是最終解決軟件可靠性定量描述的關鍵。
4.1 典型的硬件失效率模型
一般來說,一個典型的硬件失效率模型是“浴盆”曲線[5],如圖2所示。

圖2 失效率曲線:失效率與“年齡”關系示意圖
從這條曲線看,一個硬件產品的壽命可分為三個時期:早期壽命(0
失效率“浴盆”曲線的三個時期對應三種類型的失效分布。早期壽命階段的遞減型失效率,對應的失效分布是一種形狀參數m<1時的威布爾分布;使用壽命階段的恒定型失效率,對應的失效分布是m=1時的威布爾分布,即指數型分布;損耗壽命階段的上升型失效率,對應的失效分布是形狀參數m≥3威布爾分布所趨向的分布,即正態分布。
4.2 軟件失效率模型
與硬件失效主要是由于元器件的物理損耗和磨損引起不同,軟件失效主要是由于設計和實現中的缺陷引起。
軟件缺陷只有在特定輸入下才會在軟件運行發生軟件故障,從而可能導致軟件失效。對于軟件,如果一旦發現引起故障的缺陷就改正,而且假定改正過程中不會引入新的故障,則軟件失效率就會降低,可靠性會提高,將之稱為軟件可靠性增長,軟件失效率模型如圖3所示。

圖3 軟件失效率與硬件失效率函數的
圖3僅給出了不斷改正軟件缺陷使得軟件失效率不斷降低的趨勢,但并未嚴格描述失效率變化的性質,因此,需要相應的描述函數對軟件可靠性進行有效的評估,描述其可靠性的變化規律。
目前,在實際應用中,對軟件可靠性的評估通常采取近似的統計方法,一般以圖4所示的失效率模型展開研究。

圖4 軟件失效率模型
如圖4所示,早期測試階段的失效率呈遞減趨勢,因為在軟件正式投入運行使用之前,通過有效的測試工具和測試手段將發現的軟件故障進行修改、排除,且不會引入新的故障,因此,軟件失效率會逐漸降低。
運行階段的失效率呈穩定趨勢,軟件產品在經過鑒定測試后,獲得一個失效率λ的估計值,然后投入運行,且使用方即便發現故障也不能處理,因此,軟件產品始終以失效率λ一直運行。
軟件在運行相當一段時間后,在其應用擴展階段的失效率呈遞增趨勢,原因是軟件應用范圍不斷擴大,版本反復修改引進了新的故障,或隨著需求的變更,軟件功能已經基本不能滿足用戶的要求,從而導致失效率上升,使得軟件逐漸必須進行修改或者淘汰。這一階段的失效機理完全不同于硬件,所以用虛線表示。
4.3 軟件可靠性測試采用的失效分布假設和失效率
對于軟件可靠性的度量與軟件測試類似,也使用軟件可靠性測試,其方法有:
1) 對軟件處于早期測試階段的可靠性測試稱為可靠性增長測試,是在“測試—排錯—新版本”的迭代過程中,跟蹤故障率(失效率)的遞減變化,確認測試是否可以終止及軟件是否可以發布。可靠性增長測試的測試腳本將執行多次。
2) 針對最終產品的可靠性測試稱為可靠性驗證測試,對最終產品進行評價,確定軟件產品當前的可靠性水平。從單個軟件版本角度,可靠性驗證測試的測試腳本將僅執行一次。
按照目前的實際應用,使用方所關心的是可靠性驗證測試。設失效率λ為常數,其描述函數有:
失效分布函數:F(t)=1-e-λt
可靠度函數:R(t)=e-λt
失效密度函數:f(t)=λe-λt
失效率函數:λ(t)=λ
平均失效間隔時間:MTBF=1/λ
上面列出了通用的軟件可靠性參數,但并非各參數均適用于工程應用實踐,各參數也并非都適用于所有軟件,且各參數之間存在依賴關系。到目前為止,國內外還未有關于軟件可靠性指標體系的正式標準。因此,在實際軟件可靠性工程中,要根據軟件本身的特點和軟件的應用要求選擇合適的軟件可靠性參數。
結合海軍裝備軟件的具體實際應用,在選取軟件可靠性指標時,應充分考慮到可靠性參數的通用性、與硬件系統的總可靠性參數的一致性、使用方明確的軟件可靠性參數等因素,目前通用的軟件可靠性指標為平均失效間隔時間MTBF和千行代碼缺陷數,在具體使用時,可結合工程項目的實際情況定義具體的量化指標。
目前,已經廣泛開展軟件可靠性測試方法和技術的研究工作,如何結合艦船裝備軟件的具體需求實現其軟件可靠性測試[6],有效暴露在實際使用過程中影響可靠性要求的缺陷是后期在研究和實踐領域應關注的內容。
[1] 徐仁佐.軟件可靠性工程[M].北京:清華大學出版社,2007:11-25.
[2] 石柱,何新貴,等.軟件可靠性及其評估[J].計算機應用,2000,20(11):1-5.
[3] 楊麗紅.軟件測試與可靠性研究[D].成都:四川大學碩士論文,2006(7):55-60.
[4] 寧寧.軟件可靠性模型及其參數估計[D].成都:電子科技大學,2008:8-19.
[5] 曾勁濤.軟件可靠性模型應用策略研究[D].蘇州:蘇州大學,2008:5-10.
[6] 王瑩.艦艇裝備軟件可靠性測試工程實踐[J].計算機工程與設計,2012,33(2):612-616.
[7] 張靜.裝備可靠性模型研究[D].西安:西安科技大學工程碩士論文,2012:5-21.
[8] 劉曉娟,溫冠華,等.軟件可靠性度量方法[J].計算機工程,2009,35(3):57-59.
[9] Y.S.Dai,G.Levitin,K.S.Trivedi.Performance and reliability of tree-structured grid services considering data dependence and failure correlation[J].IEEE Transactions on Computers,2007,56:925-936.
[10] J.D.Musa.Software reliability engineering[M].韓柯,譯.北京:機械工業出版社,2003:21-35.
Analysis of Equipment Software Reliability Measurement Parameters
CHEN Yanshen1ZHANG Luqing2
(1.Qingdao Radar and Sonar Repairing Factory,Qingdao 266100)(2.Military Representative Office of Optoelectronic System in Zhongnan Area,Wuhan 430072)
Software reliability measurement has become an important content of software areas.Based on the description of software reliability concepts and theories,current software reliability parameters,such as software reliability functions,average life parameters,average failure parameters and software failure probability etc are analyzed and summarized.And the software failure distribution model and failure probability distribution model are analyzed.Then the corresponding suggestions combined with the actuality of equipment software development are given.
software quality,software reliability,software failure,software reliability parameters
2014年8月1日,
2014年9月17日
陳巖申,男,博士,研究方向:裝備信息化保障。張路青,男,碩士,研究方向:軟件工程化管理。
TN406
10.3969/j.issn1672-9730.2015.02.033