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