專利名稱:基于擴展的馬爾克夫貝葉斯網(wǎng)的軟件可靠性評估方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種軟件可靠性評估方法,特別是一種基于擴展的馬爾克夫貝葉斯網(wǎng)的軟件可靠性評估方法。
背景技術(shù):
軟件可靠性評估一直是軟件可靠性領(lǐng)域主要的問題。傳統(tǒng)的軟件可靠性評估技術(shù)主要是概率方法,概率方法主要采用隨機過程來刻畫軟件失效過程,具代表性的是Goel A.L.and Okumoto K.于1979年提出了關(guān)于連續(xù)時間的非齊次Poisson過程(NHPP)模型,簡稱NHPP類G-O模型。傳統(tǒng)的概率方法類的缺點主要是在處理多因素不確定問題是能力有限。因此某些研究者轉(zhuǎn)向采用一些可以處理復(fù)雜系統(tǒng)的方法來處理軟件可靠性評估問題。
神經(jīng)網(wǎng)絡(luò)方法是較早挑戰(zhàn)概率類方法的。Karuanithi等將人工神經(jīng)網(wǎng)絡(luò)(artificial neural network)技術(shù)應(yīng)用于軟件可靠性估測過程,并且取得了一些很有意義的結(jié)果。它的優(yōu)點主要是可以考慮多因素問題、可以考慮定量和定性的結(jié)合以及無統(tǒng)計線性和獨立的假設(shè)。它的局限性主要是神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)不靈活以及不易處理不完全數(shù)據(jù)(即在某些節(jié)點的數(shù)據(jù)可能缺失的情況)。
貝葉斯網(wǎng)技術(shù)在軟件可靠性工程方面取得了一些很好的結(jié)果,如Amasaki S.,Takagi Y.,et al.,“A Bayesian Belief Network for Assessing theLikelihood of Fault Content”,14th International Symposium on SoftwareReliability Engineering,17-20 Nov.2003,pp215-226.中介紹的。貝葉斯網(wǎng)Bayesian network是一種有向概率圖probability graph,它將感興趣的變量采用有向弧連接起來,這種連接表達了變量之間的條件關(guān)聯(lián)。貝葉斯網(wǎng)建立在強大的貝葉斯統(tǒng)計理論基礎(chǔ)上,和其它傳統(tǒng)的數(shù)據(jù)分析方法相比它有以下的幾個特點(1)貝葉斯網(wǎng)可以聯(lián)結(jié)所有感興趣的變量,所以它可以盡可能地增加分析的精度。并且能夠處理不完全數(shù)據(jù)問題;(2)貝葉斯網(wǎng)可以學(xué)習(xí)變量之間的因果關(guān)系。這能使我們了解感興趣變量的相互關(guān)系,以便進行有效的預(yù)測;(3)貝葉斯網(wǎng)采用貝葉斯統(tǒng)計方法能夠充分地把問題領(lǐng)域的有關(guān)知識和獲取的當前數(shù)據(jù)相結(jié)合。但是已有的基于貝葉斯網(wǎng)的軟件可靠性模型沒有考慮軟件運行剖面對軟件可靠性的影響。
馬爾克夫貝葉斯網(wǎng)Markov Bayesian Network是一種具有特殊結(jié)構(gòu)的貝葉斯網(wǎng)(見M.I.Jordan An introdutiion to variational methods forgraphical models.To appearJordan,M.I.(ed.),Learning in Graphicalmodels,Kluwer Academic Publishers)。馬爾克夫貝葉斯網(wǎng)結(jié)構(gòu)的特點是可以根據(jù)實際過程在線演化和推進。比如H1表示軟件的缺陷率,Z1表示軟件測試的結(jié)果,Z1=1表示軟件失效,Z1=0如表示軟件未發(fā)生失效。圖2就是一個初始的馬爾克夫貝葉斯網(wǎng)或稱1階馬爾克夫貝葉斯網(wǎng)。測試后有可能剔除缺陷(如發(fā)生失效)也可能不剔除缺陷(如未發(fā)生失效)。如果再進行第二測試,新的馬爾克夫貝葉斯網(wǎng)是在初始馬爾克夫貝葉斯網(wǎng)上再增加兩個節(jié)點H2點Z2。H2代表第二次測試前的軟件的缺陷率,Z2表示第二次軟件測試的結(jié)果,其結(jié)構(gòu)如圖3所示,稱為2階馬爾克夫貝葉斯網(wǎng)。如此,隨著測試的進行馬爾克夫貝葉斯網(wǎng)不斷動態(tài)演化,如圖4所示表示一個n階的馬爾克夫貝葉斯網(wǎng)。馬爾克夫貝葉斯網(wǎng)還可以是多重的。比如軟件輸入域可以分為m個子域。初始的m個子域的子域的缺陷率分別為H1(1),,...,Hm(1)。第二次測試前的軟件的缺陷率分別為H1(2),,...,Hm(2)。依次類推,如圖5所示。馬爾克夫貝葉斯網(wǎng)特別適合于動態(tài)預(yù)測問題。但是因為M.I.Jordan提出的馬爾克夫貝葉斯網(wǎng),如圖5所示,只能處理兩類節(jié)點,即缺陷率和軟件失效數(shù)據(jù),無法處理測試剖面和可靠性節(jié)點。
發(fā)明內(nèi)容
本發(fā)明的技術(shù)解決問題是克服現(xiàn)有技術(shù)的不足,提供一種基于擴展的馬爾克夫貝葉斯網(wǎng)的軟件可靠性評估方法,該方法不僅可以提高可靠性評估的精度,而且還可以提高可靠性評估的穩(wěn)定性。
本發(fā)明的技術(shù)解決方案是基于擴展的馬爾克夫貝葉斯網(wǎng)的軟件可靠性評估方法,于將擴展的馬爾克夫貝葉斯網(wǎng)應(yīng)用到軟件可靠性評估中,并且在可靠性評估中考慮了運行剖面對可靠性的影響,該方法將輸入域各分區(qū)的軟件缺陷率、運行剖面、軟件失效數(shù)據(jù)和軟件的可靠度作為擴展的馬爾克夫貝葉斯網(wǎng)的節(jié)點簇,具體由下列步驟實現(xiàn)(1)根據(jù)軟件功能結(jié)構(gòu)將軟件輸入域劃分為若干子域;(2)初始化;(3)進行軟件測試,獲取軟件失效數(shù)據(jù);(4)利用葉斯網(wǎng)理論估計軟件可靠性;(5)如果滿足某停止準則就轉(zhuǎn)至步驟(7),否則轉(zhuǎn)至步驟(6);(6)動態(tài)演化推進貝葉斯網(wǎng),轉(zhuǎn)至步驟(3);(7)輸出結(jié)果。
上述步驟(1)中軟件輸入域劃分若干子域的劃分為一般采用等價類劃分。所謂等價類,就是指某個輸入域的集合,集合中的每個輸入對揭露程序錯誤來說是等效的,把程序的輸入域劃分成若干部分,然后從每個部分中選取少數(shù)代表性數(shù)據(jù)作為測試用例。
上述的步驟的(2)初始化建立包括缺陷密度、運行剖面、軟件測試數(shù)據(jù)以及軟件可靠度等節(jié)點的擴展的馬爾克夫貝葉斯網(wǎng),確定各節(jié)點先驗分布;先驗分布的獲取主要有三種方法一是根據(jù)專家經(jīng)驗來確定各節(jié)點先驗分布,二是根據(jù)歷史數(shù)據(jù)估計各節(jié)點先驗分布,三是當既無專家經(jīng)驗也無歷史數(shù)據(jù)時,可以采用無信息的先驗分布,一般采用均勻分布做先驗分布。
上述的步驟(3)的軟件測試方法采用分區(qū)測試方法。
上述的步驟(5)的停止準則一般有兩種一種是預(yù)測的可靠性應(yīng)達到要求,另一種達到預(yù)先規(guī)定的測試步數(shù)。
上述的步驟(4)中按下面的EMBN算法估計軟件可靠性。
假設(shè)將軟件劃分為m個子域,測試n次。測試時如測試用例從第j個子域中選取,則稱執(zhí)行第j個操作。
令Oj=j(luò)表示這m個操作的第j個。
Ai=j(luò)(i=1,Λ,n)表示第i次測試執(zhí)行第j個操作。
Qi={qj(i)|qj(i)=Pr[Ai=j],(1≤j≤m)}(i=1,Λ,n)]]>表示第i次測試的運行剖面。
Zi=1if a failure occurs at the ith run0if no failure occurs at the ith run(i=1,Λ,n)]]>Hj(1)(j=1,Λ,m)表示軟件對應(yīng)第j個子域的初始缺陷率。
Hj(i)(i=2,Λ,n+1,j=1,Λ,m)表示軟件對應(yīng)第(i-1)測試后第j個子域的缺陷率。
算法如下(記為EMBN算法)(1)給定Ai=ai(i=1,Λ,n),Zi=zi(i=1,Λ,n)(2)確定Hj(1)的先驗分布p(Hj(1),(j=1,Λ,m)(3)確定Q的先驗分布p(Q)(4)1i(5)---p(Hj(i))⇒π(Hj(i)),π(Hj(i))(j=1,Λ,m)]]>表示Hj(i)的先驗分布通過貝葉斯法則計算Hj(i)(j=1,Λ,m)的后驗分布h(Hj(i)Zi=zi,Ai=aj)∝p{Zi=zi|Hj(i)}π{Hj(i)},j=ai]]>h(Hj(i)|Zi=zi,Ai=ai)=π{Hj(i)},j≠ai]]>(6)h(Hj(i)|Zi=zi,Ai=ai)⇒p(Hj(i))]]>(7)通過下面兩式計算Hj(i+1)(j=1,Λ,m)的分布Hj(i+1)=Hj(i)-zid,j=ai;]]>Hj(i+1)=Hj(i),j≠ai]]>
令p(Hj(i+1))(j=1,Λ,m)表示Hj(i+1)的分布(8)通過貝葉斯法則計算Q的后驗分布。
h(Q|Ai=ai)∝p(Ai=ai|Q)p(Q)(9)h(Q|Ai=ai)p(Q)(10)若i=n,則轉(zhuǎn)(12);否則i+1i并且轉(zhuǎn)(5)(11)輸出p(Hj(n+1))(j=1,Λ,m)(12)輸出p(Q)(13)利用p(Q)求運行剖面的貝葉斯估計(14)估計軟件可靠性R=1-Σj=1mqjp(Hj(n+1))]]>(15)結(jié)束上述的(5)動態(tài)演化推進貝葉斯網(wǎng)如未滿足到停止準則擴展的馬爾克夫貝葉斯網(wǎng)(圖6)增加一階。
本發(fā)明的原理按照貝葉斯網(wǎng)理論,一旦知道起的節(jié)點的聯(lián)合分布,等于知道了該貝葉斯網(wǎng)的全部信息,就可在此基礎(chǔ)上進行統(tǒng)計推斷。
R,Hj(i)(i=1,Λ,n+1,j=1,Λ,m),Ai(i=1,Λ,n),Zi(i=1,Λ,n),Qi(i=1,Λ,n+1)的聯(lián)合分布是pR,Hj(i)(i=1,Λ,n+1,j=1,Λ,m),Ai(i=1,Λ,n),Zi(i=1,Λ,n),Qi(i=1,Λ,n+1)]]>=p{R|Qn+1,Hjn+1(j=1,Λ,m)}·Πi=1n+1p{Qi}·Πi=1np{Ai|Qi}]]>·Πj=1mp{Hj(1)}·Πi-2n+1Πj=1mp{Hj(i)|Hj(i),Ai-1,Zi-1}]]>·Πi=1np{Zi|Hj(i)(j=1,Λ,m),Ai}]]>因此建立貝葉斯網(wǎng)關(guān)鍵是得到各節(jié)點的初始分布或條件分布。下面將說明如何得到各節(jié)點的初始分布或條件分布。
(1)Hj(1)的初始分布Hj(1)的初始分布p(Hj(1))(j=1,Λ,m)可以由專家經(jīng)驗或?qū)浖攘康墓烙嫷玫健?br>
(2)Qi(i=1,Λ,n+1)的初始分布Qi的初始分布可以由歷史數(shù)據(jù)得到。
(3)Zi(i=1,Λ,n)的條件分布Pr[Zi=1|Ai,H1(i),Λ,Hm(i)]]]>=Hj(i)·qi(j)]]>Pr[Zi=0|Ai,H1(i),Λ,Hm(i)]]]>=1-Hj(i)·qi(j)]]>(4)Ai(i=1,Λ,n)的條件分布p{Ai=j|Qi={qj(i),j=1,Λ,m}}=qj(i)]]>(5)Hj(i)(i=2,Λ,n+1)的條件分布。
當Ai=j(luò)′,假定Hj′(i+1)=Hj′(i)-dZi;Hj(i+1)=Hj(i),j≠j′.]]>(6)R的條件分布R=1-Σj=1mHj(n+1)qj(n+1)]]>本發(fā)明與現(xiàn)有技術(shù)相比的優(yōu)點在于本發(fā)明采用擴展的馬爾克夫貝葉斯網(wǎng)建模軟件可靠性評估模型。擴展的馬爾克夫貝葉斯網(wǎng)是由一個節(jié)點簇動態(tài)演化而不斷推進擴充的貝葉斯網(wǎng)。該技術(shù)將輸入域各分區(qū)的軟件缺陷率、運行剖面、軟件失效數(shù)據(jù)和軟件的可靠度作為擴展的馬爾克夫貝葉斯網(wǎng)的節(jié)點簇。該技術(shù)可以隨著軟件測試進程利用馬爾克夫貝葉斯理論在線估計軟件可靠性。
具有以下優(yōu)點(1)因為考慮的因素增加了比如考慮了軟件運行剖面,并且考慮了有關(guān)因素的先驗信息,所以提高發(fā)軟件可靠性評估的精度。
(2)因為利用了貝葉斯技術(shù),所以提高了可靠性估計的穩(wěn)定性。估計的穩(wěn)定性是貝葉斯技術(shù)的一個特點。
(3)因為本方法是逐步遞推的,所以算法簡單,易行。
圖1為本發(fā)明基于擴展的馬爾克夫貝葉斯網(wǎng)的軟件可靠性評估方法步驟示意圖;圖2為現(xiàn)有技術(shù)的一階馬爾克夫貝葉斯網(wǎng)示意圖;圖3為現(xiàn)有技術(shù)的二階馬爾克夫貝葉斯網(wǎng)示意圖;圖4為現(xiàn)有技術(shù)的n階馬爾克夫貝葉斯網(wǎng)示意圖;圖5為現(xiàn)有技術(shù)的n階m重馬爾克夫貝葉斯網(wǎng)示意圖;圖6為本發(fā)明基于擴展的馬爾克夫貝葉斯網(wǎng)的軟件可靠性評估技術(shù)示意圖。
實施例1以Space軟件為例。Space軟件是一個公認的軟件測試對象,它是為歐洲航天局開發(fā)的一個矩陣描述語言(ADL)解釋器,從文件中讀取ADL描述語句并檢查文件內(nèi)容是否合乎語法規(guī)則。如果ADL文件解釋正確,Space將輸出一個矩陣數(shù)據(jù)文件,包含矩陣元素信息、位置、激勵,否則將輸出錯誤提示。Space軟件包含9564行C語言代碼。在該實例中測試用例庫包括13,466個測試用例,測試了3000步,即n=3000。具體步驟如下(1)根據(jù)對軟件功能結(jié)構(gòu)的分析,把軟件輸入域分為三個子域,即m=3.分別包括測試用例個數(shù)為5136、7503和827個;令i=1(2)先驗分布的選取j=1,..,mHj(i)~Beta(αj(i),βj(i)),Q~Dir((q1,Λ,qm)|ρ1,Λ,ρm)。
Beta(.)為貝塔分布,Dir(.)為Dirichlet分布。
先驗分布的參數(shù)為αj(i)=βj(i))=1,ρj=2]]>(3)進行一步軟件測試,獲取軟件失效數(shù)據(jù)即Ai,Zi的值;(4)利用葉斯網(wǎng)理論估計軟件可靠性;即通過具體實施方式
中給出的算法(EMBN算法)估計軟件可靠性。其中取d=0.0002。
(5)i->n,如果n=3000就轉(zhuǎn)第(7)步,否則i++,轉(zhuǎn)第(6)步;(6)動態(tài)演化推進貝葉斯網(wǎng),如圖6所示,擴展的馬爾克夫貝葉斯網(wǎng)增加一階。增加的節(jié)點仍按(2)的原則選取先驗分布。轉(zhuǎn)入步驟(3);(7)輸出結(jié)果。
測試了3000步,發(fā)現(xiàn)了26個缺陷。可靠性估計如下表,表中運行剖面和可靠度值是指當發(fā)生失效時對此的估計值。
表1 Space軟件可靠性評估
實施例2以一個北京航空航天大學(xué)軟件與控制實驗室開發(fā)的一個度量軟件SESS(Software Environment for Software Science Data Collection)為例。該軟件使用VC6編寫,能夠讀取C語言源程序,統(tǒng)計源代碼行數(shù)、操作符、操作數(shù)的種類和個數(shù)并顯示,是進行部分重復(fù)性理論研究的工具。共有源代碼17807行,源文件106個。
在該實例中測試用例庫包括5473個測試用例組成,每個測試用例都是一個c源程序文件。測試了2000步,即n=2000。具體步驟如下(1)根據(jù)對軟件功能結(jié)構(gòu)的分析,把軟件輸入域分為4個子域,即m=4.分別包括測試用例個數(shù)為1087、2031、1385和970個;令i=1(2)先驗分布的選取j=1,..,mHj(i)~Beta(αj(i),βj(i)),Q~Dir((q1,Λ,qm)|ρ1,Λ,ρm)。
Beta(.)為貝塔分布,Dir(.)為Dirichlet分布。
先驗分布的參數(shù)為αj(i)=βj(i))=1,ρj=2]]>(3)進行一步軟件測試,獲取軟件失效數(shù)據(jù)即Ai,Zi的值;(4)利用葉斯網(wǎng)理論估計軟件可靠性;即通過具體實施方式
中給出的算法(EMBN算法)估計軟件可靠性。其中取d=0.0002。
(5)i->n,如果n=2000就轉(zhuǎn)第(7)步,否則i++,轉(zhuǎn)第(6)步;(6)動態(tài)演化推進貝葉斯網(wǎng),如圖6所示,擴展的馬爾克夫貝葉斯網(wǎng)增加一階。增加的節(jié)點仍按(2)的原則選取先驗分布。轉(zhuǎn)入步驟(3);(7)輸出結(jié)果。
測試了2000步,發(fā)現(xiàn)了18個缺陷??煽啃怨烙嬋缦卤?,表中運行剖面和可靠度值是指當發(fā)生失效時對此的估計值。
表2 SESS軟件可靠性評估
權(quán)利要求
1.基于擴展的馬爾克夫貝葉斯網(wǎng)的軟件可靠性評估方法,其特征在于將擴展的馬爾克夫貝葉斯網(wǎng)應(yīng)用到軟件可靠性評估中,由下列步驟實現(xiàn)(1)根據(jù)軟件功能結(jié)構(gòu)將軟件輸入域劃分為若干子域;(2)初始化建立包括缺陷密度、運行剖面、軟件測試數(shù)據(jù)以及軟件可靠度等節(jié)點的擴展的馬爾克夫貝葉斯網(wǎng),確定各節(jié)點先驗分布;(3)進行軟件測試,獲取軟件失效數(shù)據(jù);(4)利用貝葉斯網(wǎng)理論估計軟件可靠性;(5)如果滿足某停止準則就轉(zhuǎn)第(7)步,否則轉(zhuǎn)第(6)步;(6)動態(tài)演化推進貝葉斯網(wǎng),轉(zhuǎn)(3);(7)輸出結(jié)果。
2.根據(jù)權(quán)利要求1所述的基于擴展的馬爾克夫貝葉斯網(wǎng)的軟件可靠性評估方法,其特征在于所述步驟(1)中軟件輸入域劃分若干子域的劃分采用等價類劃分。
3.根據(jù)權(quán)利要求1所述的基于擴展的馬爾克夫貝葉斯網(wǎng)的軟件可靠性評估方法,其特征在于所述的先驗分布的獲取主要有三種方法一是根據(jù)專家經(jīng)驗來確定各節(jié)點先驗分布,二是根據(jù)歷史數(shù)據(jù)估計各節(jié)點先驗分布,三是當既無專家經(jīng)驗也無歷史數(shù)據(jù)時,可以采用無信息的先驗分布,即采用均勻分布做先驗分布。
4.根據(jù)權(quán)利要求1所述的基于擴展的馬爾克夫貝葉斯網(wǎng)的軟件可靠性評估方法,其特征在于所述的步驟(3)的軟件測試方法采用分區(qū)測試方法。
5.根據(jù)權(quán)利要求1所述的基于擴展的馬爾克夫貝葉斯網(wǎng)的軟件可靠性評估方法,其特征在于所述的步驟(5)的停止準則有兩種一種是預(yù)測的可靠性應(yīng)達到的要求,另一種達到預(yù)先規(guī)定的測試步數(shù)。
全文摘要
基于擴展的馬爾克夫貝葉斯網(wǎng)的軟件可靠性評估方法,其特征在于將擴展的馬爾克夫貝葉斯網(wǎng)應(yīng)用到軟件可靠性評估中,包括下列步驟(1)根據(jù)軟件功能結(jié)構(gòu)將軟件輸入域劃分為若干子域;(2)初始化建立包括缺陷密度、運行剖面、軟件測試數(shù)據(jù)以及軟件可靠度等節(jié)點的擴展的馬爾克夫貝葉斯網(wǎng),確定各節(jié)點先驗分布;(3)進行軟件測試,獲取軟件失效數(shù)據(jù);(4)利用貝葉斯網(wǎng)理論估計軟件可靠性;(5)如果滿足某停止準則就轉(zhuǎn)第(7)步,否則轉(zhuǎn)第(6)步;(6)動態(tài)演化推進貝葉斯網(wǎng),轉(zhuǎn)(3);(7)輸出結(jié)果。本發(fā)明根據(jù)充分利用了專家經(jīng)驗等先驗信息并考慮了運行剖面對軟件可靠性的影響利用擴展的馬爾克夫貝葉斯網(wǎng)理論在線估計軟件可靠性,提高軟件可靠性評估的精度和穩(wěn)定性。
文檔編號G06F11/36GK1667587SQ200510011549
公開日2005年9月14日 申請日期2005年4月11日 優(yōu)先權(quán)日2005年4月11日
發(fā)明者白成剛, 蔡開元, 胡德斌 申請人:北京航空航天大學(xué)