陳巖申 張路青
(1.青島雷達(dá)聲納修理廠 青島 266100)(2.駐中南地區(qū)光電系統(tǒng)軍代室 武漢 430072)
?
裝備軟件可靠性度量參數(shù)分析*
陳巖申1張路青2
(1.青島雷達(dá)聲納修理廠 青島 266100)(2.駐中南地區(qū)光電系統(tǒng)軍代室 武漢 430072)
軟件可靠性度量一直軟件領(lǐng)域研究的重要內(nèi)容,論文在對其基本概念進(jìn)行概述的基礎(chǔ)上,對通用的軟件可靠性參數(shù),如軟件可靠性函數(shù)、平均壽命參數(shù)、平均失效參數(shù)以及故障率等進(jìn)行了概述和分析,并對軟件失效分布模型和失效率分布模型進(jìn)行了概述。在對上述軟件可靠性參數(shù)進(jìn)行分析的基礎(chǔ)上,結(jié)合裝備軟件的現(xiàn)狀給出了相應(yīng)的建議。
軟件質(zhì)量; 軟件可靠性; 軟件故障; 軟件可靠性參數(shù)
Class Number TN406
隨著海軍信息化建設(shè)的不斷深入,硬件和軟件相結(jié)合實(shí)施維修保障工作成為信息化保障工作的重要內(nèi)容,目前,對于硬件裝備可靠性的研究已經(jīng)充分展開,結(jié)合具體裝備的可靠性標(biāo)準(zhǔn)、維修保養(yǎng)措施也日趨成熟,但硬件裝備所配備的軟件質(zhì)量卻一直無法使用有效、量化、有序的手段進(jìn)行控制,近些年,軍方也陸續(xù)出臺了一些控制軟件質(zhì)量的標(biāo)準(zhǔn),如GJB 2786A-2009《軍用軟件開發(fā)通用要求》、GJB 5000A-2008《軍用軟件研制能力成熟度模型》、GJB 438B-2009《軍用軟件開發(fā)文檔通用要求》等一系列軍用標(biāo)準(zhǔn),但是在實(shí)際實(shí)施過程中,由于軟件開發(fā)和管理人員對于軟件質(zhì)量的理解程度有差異,使得研制出來的軟件質(zhì)量無法得到有效控制和保障;在使用軟件過程中,對于出現(xiàn)的軟件故障(也稱為缺陷)無法使用有效的手段進(jìn)行預(yù)測和控制,因此,如何提高軟件質(zhì)量和軟件可靠性,合理、有序地管理和控制軟件開發(fā)過程,保證生產(chǎn)出符合預(yù)算和進(jìn)度要求的高可靠性和可用性軟件,并對軟件使用過程中可能出現(xiàn)的缺陷和錯誤進(jìn)行度量和預(yù)測,已經(jīng)成為相關(guān)研究機(jī)構(gòu)的研究熱點(diǎn),同時(shí),軟件質(zhì)量和軟件可靠性也得到各軟件開發(fā)機(jī)構(gòu)和大型企業(yè)的極大重視。
過去的幾十年,軟件界總是強(qiáng)調(diào)使用好的工具、技術(shù)和方法來提高軟件質(zhì)量,為此,付出了巨大的代價(jià)來更新開發(fā)工具,研究開發(fā)方法和技術(shù),雖然也取得了一定的效果,但是并不令人滿意,這時(shí),軟件界逐漸認(rèn)識到:要確保軟件質(zhì)量必須要使用量化指標(biāo)的方法對軟件開發(fā)質(zhì)量進(jìn)行合理度量,為此,在軟件工程領(lǐng)域開展了大量卓有成效的軟件可靠性指標(biāo)的工作。
為對軟件可靠性進(jìn)行有效度量,需對其基本概念進(jìn)行說明。
1) 軟件可靠性(software reliability)定義為軟件在規(guī)定的環(huán)境(條件)下和規(guī)定的時(shí)間內(nèi),無失效(failure)地運(yùn)行的概率[ANSI91]。該定義包含三個主要成分:失效、時(shí)間和環(huán)境[1]。特別要指出可靠性是時(shí)間的概率函數(shù),而且軟件可靠性與操作環(huán)境有關(guān),即依賴于其使用方法。軟件可靠性是軟件質(zhì)量的重要屬性。
2) 軟件可靠性參數(shù)(reliability parameter)是指描述軟件可靠性的量,如平均失效間隔時(shí)間MTBF。軟件可靠性指標(biāo)是指對軟件可靠性參數(shù)所要求的量值,如要求軟件的MTBF為1000小時(shí)(參見GJB 451-90《可靠性維修性術(shù)語》)。
3) 可靠性指標(biāo)分配是指為了把產(chǎn)品的軟件可靠性指標(biāo)要求按照給定的準(zhǔn)則分配給各組成部分而進(jìn)行的工作。
3.1 軟件可靠性函數(shù)
1) 可靠度函數(shù)R(t)
R(t)=P(在[0,t]內(nèi)軟件無失效)=P(T>t)
其中T是失效發(fā)生時(shí)刻的隨機(jī)變量,從0到T的長度稱為壽命。R(t)表示系統(tǒng)運(yùn)行到t為止無失效的概率。
2) 失效分布函數(shù)F(t)
F(t)=P(在[0,t]內(nèi)軟件失效)=P(T≤t)
又稱不可靠度,或累計(jì)失效函數(shù)。若設(shè)t為1000小時(shí),則F(1000)=P(T≤1000)就表示1000小時(shí)以前的失效概率,顯然包含t為100小時(shí)以前的失效概率F(100)=P(T≤100)。因此,失效分布函數(shù)F(t)含有累計(jì)失效的概念。
3) 失效密度函數(shù)f(t)
指在t時(shí)刻的單位時(shí)間內(nèi)的失效概率,表示累計(jì)失效函數(shù)的變化率。
4) 失效率函數(shù)λ(t)
定義為在t之前沒有出現(xiàn)失效的情況下,在時(shí)間[t,t+⊿t]區(qū)間內(nèi)單位時(shí)間出現(xiàn)失效的概率。
5) 上述軟件可靠性參數(shù)之間的關(guān)系
四種可靠性函數(shù)緊密相關(guān),可以彼此轉(zhuǎn)換,即從R(t)、F(t)、f(t)和λ(t)中任何一個可以推導(dǎo)出其它,其關(guān)系歸納如圖1所示。
圖1 軟件可靠性參數(shù)及其之間的關(guān)系
3.2 平均壽命(MTTF和MTBF)
平均失效前時(shí)間函數(shù)MTTF(Mean Time to Failure),適合于不可修復(fù)的產(chǎn)品,表示產(chǎn)品發(fā)生失效前的工作時(shí)間的期望值。
平均失效間隔時(shí)間MTBF(Mean Time between Fa1lures),適合于可修復(fù)的產(chǎn)品,表示產(chǎn)品兩次相鄰失效間的工作時(shí)間的期望值。
針對具體軟件,是將其作為可修復(fù)的產(chǎn)品還是不可修復(fù)的產(chǎn)品隨使用要求和環(huán)境而變。不管對哪一類產(chǎn)品,MTTF和MTBF理論上的意義是類似的,數(shù)學(xué)表達(dá)式的形式也是一致的,統(tǒng)稱為平均無失效時(shí)間,或稱為平均壽命,從圖1可以看出,MTTF(或MTBF)可以由可靠性函數(shù)導(dǎo)出[2]。
由于軟件與硬件的失效機(jī)理不同,因此軟件界對于使用MTTF(或MTTB)來描述軟件的可靠性是否妥當(dāng)有爭議。如果失效分布服從指數(shù)分布,則MTBF與失效率的關(guān)系是MTBF=1/λ。
3.3 平均維修時(shí)間MTTR和可用度A
平均維修時(shí)間MTTR(Mean Time to Repair)指的是發(fā)現(xiàn)失效后到系統(tǒng)被維修好的期望時(shí)間。
可用度A(Availability)是指任意時(shí)刻需要使用系統(tǒng)的可用概率,也是時(shí)間t的函數(shù),用A(t)表示。它不關(guān)心在該時(shí)刻以前是否發(fā)生過失效,包括如果發(fā)生過失效但是在允許的維修時(shí)間內(nèi)維修完畢又能正常工作的情況,它描述的是在時(shí)刻t是否正常工作的概率。因此可用度與可靠度是兩個不同的概念。通常使用穩(wěn)定可用度,可以按下式計(jì)算:
對于不可維修的系統(tǒng)沒有維修的問題,因此t時(shí)刻的可靠度就相當(dāng)于可用度,即有R(t)=A(t)。對于可維修系統(tǒng),顯然可用度大于可靠度。
3.4 平均系統(tǒng)失效前時(shí)間MTTD和平均系統(tǒng)致命失效前時(shí)間MTTCD
大多數(shù)裝備均是將軟件嵌入到某個武器裝備系統(tǒng)中使用,因此,這種高可靠性的軟件一般要求要進(jìn)行容錯設(shè)計(jì),因此軟件出現(xiàn)故障,不一定使整個系統(tǒng)失效。這兩個指標(biāo)是表明軟件故障對整個系統(tǒng)的影響。
平均系統(tǒng)失效前時(shí)間MTTD(Mean Time to System Down)是指嵌入在某個系統(tǒng)中的軟件產(chǎn)品開始運(yùn)行到出現(xiàn)系統(tǒng)失效前的期望時(shí)間;對系統(tǒng)的致命失效來說,為平均致命系統(tǒng)失效前時(shí)間MTTCD(Mean Time to System Critical Down)[3]。
在一般的工程應(yīng)用中,也將MTTD叫做MTBF。
3.5 故障隔離率FIR和軟件缺陷檢測率FDR
軟件產(chǎn)品出現(xiàn)失效,在規(guī)定條件下、用規(guī)定方法能正確隔離到少于或等于L個模塊的集合內(nèi)的百分?jǐn)?shù)叫軟件故障隔離率FIR(Software Fault Isolation Rate),記為γFI。
當(dāng)L=1時(shí),即隔離到單個模塊,是確定性隔離。當(dāng)L>1時(shí),為不確定性隔離。L越小,取代有故障模塊集合的冗余措施越方便,但需要的檢測條件一般也較高。設(shè)軟件被檢測出的失效數(shù)為ND,能正確隔離到少于或等于L個模塊的集合內(nèi)的故障數(shù)為NL,則γFI=NL/ND。
設(shè)軟件產(chǎn)品在規(guī)定的時(shí)間內(nèi),在規(guī)定的條件下能正確查出缺陷的失效數(shù)為ND,此期間出現(xiàn)的總是失效數(shù)為NT,則軟件缺陷檢測率FDR(software defect detection rate)γFD為:γFD=ND/NT。
3.6 千行代碼殘留缺陷數(shù)
軟件包括程序、數(shù)據(jù)和文檔。軟件缺陷是存在于軟件(程序、數(shù)據(jù)和文檔)之中的錯誤。軟件殘留缺陷數(shù)包括非文檔殘留缺陷數(shù)和文檔殘留缺陷數(shù)。非文檔殘留缺陷數(shù)包括程序殘留缺陷數(shù)和數(shù)據(jù)殘留缺陷數(shù)。軟件殘留缺陷數(shù),通常以相對值表示,即每千行代碼(或每千條指令)所包含的殘留缺陷個數(shù)[4]。
程序和數(shù)據(jù)中的缺陷導(dǎo)致軟件在運(yùn)行時(shí)出現(xiàn)軟件故障和失效。文檔中的缺陷雖然不直接引起故障和失效,但是也直接或間接反映了程序源代碼的質(zhì)量。因此,千行代碼殘留缺陷數(shù)也可作為軟件可靠性的度量指標(biāo)。只有該指標(biāo)是軟件靜態(tài)狀態(tài)(非運(yùn)行狀態(tài))下的指標(biāo),其它指標(biāo)都是動態(tài)狀態(tài)(運(yùn)行狀態(tài))下的指標(biāo)。
除上述軟件可靠性度量指標(biāo)外,還有一些其他的度量指標(biāo),如:
1) 軟件平均延遲時(shí)間MDT(Mean Delay Time):軟件啟動到進(jìn)入正常工作狀態(tài)的平均時(shí)間;
2) 初期失效:交付后三個月內(nèi)(初期)單位時(shí)間的失效次數(shù);
3) 使用方誤用率:由于使用方對軟件不熟悉誤操作比率;
還有用戶提出補(bǔ)充要求數(shù)、處理能力(如每次任務(wù)反應(yīng)時(shí)間等)。
軟件失效分布函數(shù)是用來描述軟件產(chǎn)品失效統(tǒng)計(jì)規(guī)律的度量指標(biāo),圖1中描述了四種可靠性函數(shù)的緊密關(guān)系,這些可靠性函數(shù)之間可以轉(zhuǎn)換,即從R(t)、F(t)、f(t)和λ(t)中任何一個可以推導(dǎo)出其它函數(shù)。
為清楚說明上述函數(shù)之間的轉(zhuǎn)換關(guān)系,本文從失效率函數(shù)λ(t)入手,在失效率函數(shù)λ(t)已知的情況下,其它可靠性指標(biāo)都可以由此導(dǎo)出。通常也把失效率看作是最終解決軟件可靠性定量描述的關(guān)鍵。
4.1 典型的硬件失效率模型
一般來說,一個典型的硬件失效率模型是“浴盆”曲線[5],如圖2所示。
圖2 失效率曲線:失效率與“年齡”關(guān)系示意圖
從這條曲線看,一個硬件產(chǎn)品的壽命可分為三個時(shí)期:早期壽命(0
失效率“浴盆”曲線的三個時(shí)期對應(yīng)三種類型的失效分布。早期壽命階段的遞減型失效率,對應(yīng)的失效分布是一種形狀參數(shù)m<1時(shí)的威布爾分布;使用壽命階段的恒定型失效率,對應(yīng)的失效分布是m=1時(shí)的威布爾分布,即指數(shù)型分布;損耗壽命階段的上升型失效率,對應(yīng)的失效分布是形狀參數(shù)m≥3威布爾分布所趨向的分布,即正態(tài)分布。
4.2 軟件失效率模型
與硬件失效主要是由于元器件的物理損耗和磨損引起不同,軟件失效主要是由于設(shè)計(jì)和實(shí)現(xiàn)中的缺陷引起。
軟件缺陷只有在特定輸入下才會在軟件運(yùn)行發(fā)生軟件故障,從而可能導(dǎo)致軟件失效。對于軟件,如果一旦發(fā)現(xiàn)引起故障的缺陷就改正,而且假定改正過程中不會引入新的故障,則軟件失效率就會降低,可靠性會提高,將之稱為軟件可靠性增長,軟件失效率模型如圖3所示。
圖3 軟件失效率與硬件失效率函數(shù)的
圖3僅給出了不斷改正軟件缺陷使得軟件失效率不斷降低的趨勢,但并未嚴(yán)格描述失效率變化的性質(zhì),因此,需要相應(yīng)的描述函數(shù)對軟件可靠性進(jìn)行有效的評估,描述其可靠性的變化規(guī)律。
目前,在實(shí)際應(yīng)用中,對軟件可靠性的評估通常采取近似的統(tǒng)計(jì)方法,一般以圖4所示的失效率模型展開研究。
圖4 軟件失效率模型
如圖4所示,早期測試階段的失效率呈遞減趨勢,因?yàn)樵谲浖酵度脒\(yùn)行使用之前,通過有效的測試工具和測試手段將發(fā)現(xiàn)的軟件故障進(jìn)行修改、排除,且不會引入新的故障,因此,軟件失效率會逐漸降低。
運(yùn)行階段的失效率呈穩(wěn)定趨勢,軟件產(chǎn)品在經(jīng)過鑒定測試后,獲得一個失效率λ的估計(jì)值,然后投入運(yùn)行,且使用方即便發(fā)現(xiàn)故障也不能處理,因此,軟件產(chǎn)品始終以失效率λ一直運(yùn)行。
軟件在運(yùn)行相當(dāng)一段時(shí)間后,在其應(yīng)用擴(kuò)展階段的失效率呈遞增趨勢,原因是軟件應(yīng)用范圍不斷擴(kuò)大,版本反復(fù)修改引進(jìn)了新的故障,或隨著需求的變更,軟件功能已經(jīng)基本不能滿足用戶的要求,從而導(dǎo)致失效率上升,使得軟件逐漸必須進(jìn)行修改或者淘汰。這一階段的失效機(jī)理完全不同于硬件,所以用虛線表示。
4.3 軟件可靠性測試采用的失效分布假設(shè)和失效率
對于軟件可靠性的度量與軟件測試類似,也使用軟件可靠性測試,其方法有:
1) 對軟件處于早期測試階段的可靠性測試稱為可靠性增長測試,是在“測試—排錯—新版本”的迭代過程中,跟蹤故障率(失效率)的遞減變化,確認(rèn)測試是否可以終止及軟件是否可以發(fā)布??煽啃栽鲩L測試的測試腳本將執(zhí)行多次。
2) 針對最終產(chǎn)品的可靠性測試稱為可靠性驗(yàn)證測試,對最終產(chǎn)品進(jìn)行評價(jià),確定軟件產(chǎn)品當(dāng)前的可靠性水平。從單個軟件版本角度,可靠性驗(yàn)證測試的測試腳本將僅執(zhí)行一次。
按照目前的實(shí)際應(yīng)用,使用方所關(guān)心的是可靠性驗(yàn)證測試。設(shè)失效率λ為常數(shù),其描述函數(shù)有:
失效分布函數(shù):F(t)=1-e-λt
可靠度函數(shù):R(t)=e-λt
失效密度函數(shù):f(t)=λe-λt
失效率函數(shù):λ(t)=λ
平均失效間隔時(shí)間:MTBF=1/λ
上面列出了通用的軟件可靠性參數(shù),但并非各參數(shù)均適用于工程應(yīng)用實(shí)踐,各參數(shù)也并非都適用于所有軟件,且各參數(shù)之間存在依賴關(guān)系。到目前為止,國內(nèi)外還未有關(guān)于軟件可靠性指標(biāo)體系的正式標(biāo)準(zhǔn)。因此,在實(shí)際軟件可靠性工程中,要根據(jù)軟件本身的特點(diǎn)和軟件的應(yīng)用要求選擇合適的軟件可靠性參數(shù)。
結(jié)合海軍裝備軟件的具體實(shí)際應(yīng)用,在選取軟件可靠性指標(biāo)時(shí),應(yīng)充分考慮到可靠性參數(shù)的通用性、與硬件系統(tǒng)的總可靠性參數(shù)的一致性、使用方明確的軟件可靠性參數(shù)等因素,目前通用的軟件可靠性指標(biāo)為平均失效間隔時(shí)間MTBF和千行代碼缺陷數(shù),在具體使用時(shí),可結(jié)合工程項(xiàng)目的實(shí)際情況定義具體的量化指標(biāo)。
目前,已經(jīng)廣泛開展軟件可靠性測試方法和技術(shù)的研究工作,如何結(jié)合艦船裝備軟件的具體需求實(shí)現(xiàn)其軟件可靠性測試[6],有效暴露在實(shí)際使用過程中影響可靠性要求的缺陷是后期在研究和實(shí)踐領(lǐng)域應(yīng)關(guān)注的內(nèi)容。
[1] 徐仁佐.軟件可靠性工程[M].北京:清華大學(xué)出版社,2007:11-25.
[2] 石柱,何新貴,等.軟件可靠性及其評估[J].計(jì)算機(jī)應(yīng)用,2000,20(11):1-5.
[3] 楊麗紅.軟件測試與可靠性研究[D].成都:四川大學(xué)碩士論文,2006(7):55-60.
[4] 寧寧.軟件可靠性模型及其參數(shù)估計(jì)[D].成都:電子科技大學(xué),2008:8-19.
[5] 曾勁濤.軟件可靠性模型應(yīng)用策略研究[D].蘇州:蘇州大學(xué),2008:5-10.
[6] 王瑩.艦艇裝備軟件可靠性測試工程實(shí)踐[J].計(jì)算機(jī)工程與設(shè)計(jì),2012,33(2):612-616.
[7] 張靜.裝備可靠性模型研究[D].西安:西安科技大學(xué)工程碩士論文,2012:5-21.
[8] 劉曉娟,溫冠華,等.軟件可靠性度量方法[J].計(jì)算機(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].韓柯,譯.北京:機(jī)械工業(yè)出版社,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