閆雪譚鑫
(中國人民解放軍91439部隊(duì) 大連 116041)
軟件可靠性工程是一門雖然得到普遍承認(rèn),但還處于不成熟的正在發(fā)展確立階段的新興工程學(xué)科[1]。國外從20世紀(jì)60年代后期開始加強(qiáng)軟件可靠性的研究工作,經(jīng)過20年左右的研究推出了各種可靠性模型和預(yù)測(cè)方法,于1990年前后形成較為系統(tǒng)的軟件可靠性工程體系[2]。同時(shí),從20世紀(jì)80年代中期開始,西方各主要工業(yè)強(qiáng)國均確立了專門的研究計(jì)劃和課題,如英國的AIVEY(軟件可靠性和度量標(biāo)準(zhǔn))計(jì)劃、歐洲的ESPRIT(歐洲信息技術(shù)研究與發(fā)展戰(zhàn)略)計(jì)劃、SPMMS(軟件生產(chǎn)和維護(hù)管理保障)課題、Eureka(尤里卡)計(jì)劃等。每年,都有大量人力物力投入軟件可靠性研究項(xiàng)目,并取得一定成果。
國內(nèi)對(duì)于軟件可靠性的研究工作起步較晚,在軟件可靠性量化理論、度量標(biāo)準(zhǔn)(指標(biāo)體系)、建模技術(shù)、設(shè)計(jì)方法、測(cè)試技術(shù)等方面與國外差距較大[3]。國內(nèi)多數(shù)軟件的生產(chǎn)方式還處于計(jì)算機(jī)時(shí)代的早期階段,缺點(diǎn)很明顯,多數(shù)所謂的“軟件測(cè)試”僅僅對(duì)幾個(gè)預(yù)先指定的用例進(jìn)行一下表演就算通過。由于目前國內(nèi)外對(duì)于軟件可靠性模型的研究多集中在軟件的研制階段,且很少有涉及測(cè)試與評(píng)估階段的可靠性模型,所以從事軟件可靠性測(cè)試與評(píng)估研究是一個(gè)有理論價(jià)值和實(shí)際意義、并且存在一定難度的課題。
軟件可靠性是指軟件產(chǎn)品在規(guī)定的條件下和規(guī)定的時(shí)間內(nèi)完成規(guī)定功能的能力,即在規(guī)定的環(huán)境和規(guī)定的時(shí)間不引起系統(tǒng)失效的概率。它是軟件系統(tǒng)的固有特性之一,表明了一個(gè)軟件系統(tǒng)按照用戶的要求和設(shè)計(jì)的目標(biāo),執(zhí)行其功能的正確程度。對(duì)于武器系統(tǒng)軟件,可靠性被描述為在to時(shí)系統(tǒng)正常的條件下,系統(tǒng)在時(shí)間區(qū)間[0,t](t>0)內(nèi)正常運(yùn)行的概率??煽啃院瘮?shù)定義為[4]
式中:λ(s)為系統(tǒng)的故障率。
系統(tǒng)軟件是由子系統(tǒng)組合而成的,子系統(tǒng)間相互作用,協(xié)調(diào)完成系統(tǒng)功能。同時(shí),每一個(gè)子系統(tǒng)本身具有相對(duì)獨(dú)立的功能。為了降低分析工作的復(fù)雜程度,本文的系統(tǒng)可靠性是建立在對(duì)子系統(tǒng)X1,X2,…,Xn分別討論的基礎(chǔ)上。
考慮到子系統(tǒng)的獨(dú)立性及其調(diào)用狀況,系統(tǒng)故障率等于各子系統(tǒng)故障率與其調(diào)用系數(shù)乘積的累加,即
式中:πi為子系統(tǒng) Xi(i=1,2,…,k)的調(diào)用系數(shù)。系統(tǒng)可靠性函數(shù)可表示為
πi值的求解可以采用系統(tǒng)Xi的執(zhí)行時(shí)間占整個(gè)系統(tǒng)運(yùn)行時(shí)間的比例來表示,于是有
由以上分析可知,只要得到了子系統(tǒng)的故障率λi,整個(gè)系統(tǒng)的可靠性即可計(jì)算出來。
潛艇戰(zhàn)術(shù)應(yīng)用軟件是武器系統(tǒng)軟件的核心部分,在武器系統(tǒng)試驗(yàn)和參與作戰(zhàn)的過程中,起到至關(guān)重要的作用。潛艇戰(zhàn)術(shù)應(yīng)用軟件可靠性評(píng)估,原則上可借鑒一般軟件可靠性的考核評(píng)估方法,通過軟件分解、可靠性模型的分析與選擇、可靠性模型計(jì)算等方法和步驟進(jìn)行。
根據(jù)軟件測(cè)試與評(píng)估的重點(diǎn),只需把軟件分解到功能模塊的級(jí)別,不必再向下分解。進(jìn)行軟件分解的依據(jù)主要是軟件的自然結(jié)構(gòu)和功能特性。
以某型潛艇戰(zhàn)術(shù)應(yīng)用軟件為例,軟件包含水聲決策模塊、攻防決策模塊、魚雷攻擊模塊、導(dǎo)彈攻擊模塊、防御決策模塊等功能模塊,而各功能模塊又由相應(yīng)的子模塊組成,如魚雷攻擊模塊由線導(dǎo)魚雷攻擊模塊、聲自導(dǎo)魚雷攻擊模塊及直航魚雷攻擊模塊等子模塊組成[5],見圖1。只要通過軟件可靠性等效模型計(jì)算出各個(gè)模塊的失效率,整個(gè)軟件系統(tǒng)的可靠性即可計(jì)算出來。
圖1 潛艇戰(zhàn)術(shù)應(yīng)用軟件模塊結(jié)構(gòu)示意圖
3.2.1 常用模型及分類
軟件的可靠性模型是指為預(yù)計(jì)或估算軟件的可靠性所建立的數(shù)學(xué)模型。建立可靠性模型是為了將復(fù)雜系統(tǒng)的可靠性逐級(jí)分解為簡(jiǎn)單系統(tǒng)的可靠性,以便于定量估算和評(píng)價(jià)復(fù)雜系統(tǒng)的可靠性。
在實(shí)際應(yīng)用中,由于許多模型作了不同程度的假設(shè),結(jié)果與軟件測(cè)試的實(shí)際結(jié)果有較大出入,所以在實(shí)際應(yīng)用中必須仔細(xì)選擇。圖2是常用軟件的可靠性模型分類。
圖2 常用軟件可靠性模型分類
3.2.2 軟件可靠性評(píng)估模型的選擇
一般軟件的可靠性評(píng)估由于所要求的精度不高,測(cè)試過程中會(huì)產(chǎn)生較多的失效數(shù)據(jù),使得測(cè)試數(shù)據(jù)與模型的擬合效果較好。但是,對(duì)于潛艇戰(zhàn)術(shù)應(yīng)用軟件來說,由于其可靠性要求較高,軟件設(shè)計(jì)時(shí)采取了一定的技術(shù)手段并結(jié)合使用進(jìn)行了多次修改,使得測(cè)試數(shù)據(jù)失效率較低且離散性較強(qiáng)。同時(shí)由于受武器系統(tǒng)的試驗(yàn)條件限制,不可能進(jìn)行過多的使用試驗(yàn),因此潛艇戰(zhàn)術(shù)應(yīng)用軟件的考核只能結(jié)合作戰(zhàn)系統(tǒng)等其他武器系統(tǒng)的考核進(jìn)行,導(dǎo)致難以采集到高質(zhì)量的失效數(shù)據(jù),致使戰(zhàn)術(shù)應(yīng)用軟件的可靠性評(píng)估難度加大,軟件的質(zhì)量尤其是可靠性難以保證[6]。
在國內(nèi)外常用的軟件可靠性分析和評(píng)估模型中,已公布的不下百種[7],常用的有概率類模型、模糊神經(jīng)網(wǎng)絡(luò)方法、Bayes方法等。其中廣泛使用的是概率類模型,但為了保證模型的可解性,規(guī)定了一些假設(shè)條件,在實(shí)際情況下很難滿足;模糊神經(jīng)網(wǎng)絡(luò)方法雖然比概率類模型進(jìn)了一步,但存在結(jié)構(gòu)選取的隨意性和輸入數(shù)據(jù)不完整,無法有效實(shí)施;Bayes模型理論,則把用概率表示的科學(xué)嚴(yán)格性和用專家經(jīng)驗(yàn)表示的先驗(yàn)信息有機(jī)結(jié)合,能夠很好地處理許多不確定問題。
Bayes軟件可靠性評(píng)估模型以Bayes函數(shù)為基礎(chǔ),采用先驗(yàn)分布和后驗(yàn)分布等技術(shù)手段,可以有效地表達(dá)失效數(shù)據(jù)(即故障率)的變化特征,解決了試驗(yàn)次數(shù)少,失效數(shù)據(jù)不足且數(shù)據(jù)離散性強(qiáng)等問題。
運(yùn)用Bayes模型進(jìn)行軟件可靠性估計(jì)時(shí),當(dāng)軟件測(cè)試數(shù)據(jù)的驗(yàn)前信息滿足試驗(yàn)要求的情況下,可使用先驗(yàn)分布模型進(jìn)行評(píng)估;當(dāng)沒有完整有效的驗(yàn)前信息樣本時(shí),應(yīng)采用后驗(yàn)分布模型進(jìn)行評(píng)估。在使用Bayes模型時(shí),根據(jù)軟件運(yùn)行特點(diǎn)和錯(cuò)誤發(fā)生的基本情況,應(yīng)符合如下假設(shè)條件:
1)每次測(cè)試都滿足貝努利試驗(yàn)的統(tǒng)計(jì)獨(dú)立性,子系統(tǒng)Xi產(chǎn)生故障的概率服從二項(xiàng)分布;
2)子系統(tǒng)之間相互獨(dú)立,各子系統(tǒng)Xi有各自獨(dú)立的可靠度Ri與故障率λi;
3)程序中檢測(cè)到的錯(cuò)誤立刻被排除,不引入新的錯(cuò)誤。
根據(jù)Raifa.H和Schlaifer.R提出的先驗(yàn)分布f(λi)應(yīng)取樣本的共扼分布的原則[9],選取二項(xiàng)分布的共扼分布——Beta(a,b)分布作為參數(shù)λi的先驗(yàn)分布,密度函數(shù)為
B(a,b)表示測(cè)試人員在看見具體測(cè)試結(jié)果之前關(guān)于軟件可靠性的一種主觀信任度。測(cè)試人員可以根據(jù)軟件系統(tǒng)及其開發(fā)過程的信息,確定出適當(dāng)?shù)腶,b值。
在實(shí)際的潛艇戰(zhàn)術(shù)軟件考核中,我們使用的是第三方測(cè)試軟件,在難以得到完整有用的先驗(yàn)信息的情況下,可取a=b=1,并使用后驗(yàn)分布函數(shù)進(jìn)行可靠性估計(jì)計(jì)算[10]。
如果子系統(tǒng)Xi執(zhí)行了Ni次測(cè)試用例,其中有ri次產(chǎn)生故障,則根據(jù)Bayes估計(jì),參數(shù)λi的后驗(yàn)分布應(yīng)該服從Beta(a+ri,b+Ni-ri)分布。
當(dāng)無先驗(yàn)信息時(shí),a=b=1,則參數(shù) λi的后驗(yàn)分布函數(shù)式為
一旦獲得了后驗(yàn)分布,有兩種方法來估計(jì)參數(shù)的值[11]:一是用后驗(yàn)分布最大時(shí)參數(shù)的值,作為參數(shù)的估計(jì)值,稱為最大后驗(yàn)分布估計(jì);二是采用后驗(yàn)分布的數(shù)學(xué)期望作為對(duì)參數(shù)的估計(jì)值,稱為條件期望估計(jì)。對(duì)于完整的實(shí)例數(shù)據(jù),常常使用條件期望估計(jì)。當(dāng)實(shí)例數(shù)據(jù)不完整時(shí),一般采用近似計(jì)算——最大后驗(yàn)分布估計(jì)法。
在戰(zhàn)術(shù)軟件的測(cè)試過程中,由于整個(gè)測(cè)試過程均有完整的故障測(cè)試記錄,因此如果沒有先驗(yàn)信息或先驗(yàn)信息不全需要采用后驗(yàn)信息進(jìn)行可靠性評(píng)估計(jì)算時(shí),我們可采用條件期望作為故障率λi的估計(jì)值,其表達(dá)式為
當(dāng) a=b=1,B(a,b)就是(0,1)上的均勻分布,相應(yīng)的估計(jì)值為
通過以上的Bayes推理過程及數(shù)理統(tǒng)計(jì)計(jì)算,根據(jù)隨機(jī)測(cè)試樣本的大小(也就是測(cè)試用例的個(gè)數(shù))和其中發(fā)現(xiàn)軟件故障的測(cè)試用例的個(gè)數(shù),給出了軟件的可靠性估計(jì)式(10)。以此為依據(jù),便可以算出軟件的可靠性。
武器系統(tǒng)應(yīng)用軟件的可靠性評(píng)估是作戰(zhàn)系統(tǒng)鑒定試驗(yàn)的重要環(huán)節(jié),評(píng)估軟件的可靠性受到許多客觀條件限制,其中最大的限制就是可靠性信息不足的問題[12]。本文借鑒目前較為成熟的Bayes模型,對(duì)潛艇戰(zhàn)術(shù)應(yīng)用軟件進(jìn)行可靠性分析與評(píng)估,實(shí)現(xiàn)了在較少的試驗(yàn)樣本及失效數(shù)據(jù)的條件下完成戰(zhàn)術(shù)軟件的可靠性評(píng)估工作,對(duì)軟件鑒定科學(xué)化、規(guī)范化提供了指導(dǎo)作用。