基于BBNs的軟件故障預(yù)測(cè)方法

時(shí)間:2022-07-15 05:17:00

導(dǎo)語:基于BBNs的軟件故障預(yù)測(cè)方法一文來源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。

基于BBNs的軟件故障預(yù)測(cè)方法

摘要:本文在分析已有軟件故障預(yù)測(cè)方法后指出:論文單純從軟件開發(fā)過程的某個(gè)階段或基于幾種度量來預(yù)測(cè)軟件故障是不充分的.提出綜合利用軟件開發(fā)過程信息構(gòu)建基于bbns軟件故障預(yù)測(cè)模型.本文從一個(gè)基本的貝葉斯信念網(wǎng)(BBNs)故障預(yù)測(cè)模型出發(fā),擴(kuò)展基本節(jié)點(diǎn),得到了一個(gè)較完善的故障預(yù)測(cè)模型,結(jié)合已有的關(guān)于軟件度量的研究成果,提出利用軟件度量和專家知識(shí)確定節(jié)點(diǎn)狀態(tài)概率分布.仿真實(shí)驗(yàn)結(jié)果表明該模型與實(shí)際情況相符合,具有一定的故障預(yù)測(cè)能力.

關(guān)鍵詞:軟件故障預(yù)測(cè);貝葉斯信念網(wǎng);軟件度量

1引言

當(dāng)前關(guān)于軟件故障預(yù)測(cè)的研究大都集中于軟件工程領(lǐng)域的某個(gè)方面,畢業(yè)論文如面向?qū)ο笙到y(tǒng)中利用各種度量屬性建立模型預(yù)測(cè)故障數(shù)和故障傾向,利用測(cè)試過程中用例的覆蓋率預(yù)測(cè)模塊故障,利用專家經(jīng)驗(yàn)建立專家知識(shí)庫預(yù)測(cè)故障等等.軟件故障的原因貫穿于軟件開發(fā)全過程,僅從一個(gè)方面來考察軟件故障是不充分的.近十幾年備受關(guān)注的貝葉斯網(wǎng)絡(luò)(BBNs)對(duì)于解決復(fù)雜系統(tǒng)不確定因素引起的故障具有很大的優(yōu)勢(shì),被認(rèn)為是目前不確定知識(shí)表達(dá)和推理領(lǐng)域最有效的理論模型.本文提出基于BBNs的故障預(yù)測(cè)方法,綜合利用軟件開發(fā)過程信息預(yù)測(cè)軟件故障.

2軟件故障預(yù)測(cè)的研究現(xiàn)狀

預(yù)測(cè)故障的方法可以分為兩大類:(1)基于數(shù)量的技術(shù),關(guān)注預(yù)測(cè)軟件系統(tǒng)中的故障數(shù);碩士論文(2)基于分類的技術(shù),關(guān)注于預(yù)測(cè)哪些子系統(tǒng)具有故障傾向.第一類已經(jīng)有一些研究,但是開發(fā)一個(gè)有效的模型比較困難.第二類方法更成功一些.利用軟件度量來預(yù)測(cè)故障傾向是一個(gè)重要的趨勢(shì)和研究?jī)?nèi)容,當(dāng)前的預(yù)測(cè)模型涉及軟件設(shè)計(jì)度量,代碼度量和測(cè)試度量.軟件維護(hù)的歷史數(shù)據(jù),例如軟件改變歷史[1]和過程質(zhì)量數(shù)據(jù)[2]也被用于軟件故障預(yù)測(cè).很多專家認(rèn)為開發(fā)過程的質(zhì)量是產(chǎn)品質(zhì)量(這里默認(rèn)是殘留故障密度)最好的預(yù)測(cè)器.AhmedE.Hassan等人提出利用啟發(fā)式規(guī)則預(yù)測(cè)軟件子系統(tǒng)故障傾向[3].還有文獻(xiàn)提出利用測(cè)試過程中的各種數(shù)據(jù)(如測(cè)試覆蓋率)來預(yù)測(cè)故障[2].

分析已有的故障預(yù)測(cè)模型,它們大多基于軟件開發(fā)過程中的某一個(gè)或幾個(gè)階段的數(shù)據(jù),或者基于一種或者幾種度量,如軟件復(fù)雜性度量和測(cè)試度量.但顯而易見,影響軟件質(zhì)量的關(guān)鍵因素不僅僅是其幾個(gè)度量.軟件故障與軟件開發(fā)全過程往往具有不確定的因果關(guān)聯(lián)關(guān)系,導(dǎo)致軟件故障的因素很多,單純從軟件開發(fā)過程的某個(gè)階段或基于幾種度量來預(yù)測(cè)軟件故障是不充分的.BBNs本身是一種不確定性因果關(guān)聯(lián)模型,具有強(qiáng)大的不確定性問題處理能力,能有效進(jìn)行多源信息表達(dá)與融合.因此本文提出基于BBNs構(gòu)建軟件故障預(yù)測(cè)模型,綜合利用軟件開發(fā)過程信息預(yù)測(cè)軟件故障.

3貝葉斯網(wǎng)絡(luò)

一個(gè)BBNs是一個(gè)有向無環(huán)圖,由代表變量的節(jié)點(diǎn)及連接這些節(jié)點(diǎn)的有向邊構(gòu)成.節(jié)點(diǎn)代表隨機(jī)變量,可以是任何問題的抽象,醫(yī)學(xué)論文如問題復(fù)雜度,觀測(cè)現(xiàn)象,意見征詢等.節(jié)點(diǎn)間的有向邊代表了節(jié)點(diǎn)間的相互關(guān)聯(lián)關(guān)系.有向圖蘊(yùn)涵了條件獨(dú)立性假設(shè),用A(vi)表示非vi后代節(jié)點(diǎn)構(gòu)成的任何節(jié)點(diǎn)集合,用∏(vi)表示vi的直接雙親節(jié)點(diǎn)集合,則P(vi|(A(vi)∪∏(vi)))=P(vi|∏(vi)).用條件概率表(conditionalprobabilitiestable,CPT)來描述點(diǎn)與點(diǎn)之間關(guān)聯(lián),條件概率表可以用P(vi|∏(vi))來描述,它表達(dá)了節(jié)點(diǎn)同其父節(jié)點(diǎn)的相關(guān)關(guān)系———條件概率.沒有任何父節(jié)點(diǎn)的節(jié)點(diǎn)概率為其先驗(yàn)概率.圖1用BBNs描述了一個(gè)簡(jiǎn)單的關(guān)于軟件產(chǎn)品質(zhì)量的例子[4],產(chǎn)品質(zhì)量由管理能力和開發(fā)能力確定,表1為其CPT.BBNs對(duì)構(gòu)造者的信念(專家知識(shí)和經(jīng)驗(yàn))建模,基于這個(gè)模型它能夠提供精確的數(shù)學(xué)計(jì)算和預(yù)測(cè).

4基于BBNs的軟件故障預(yù)測(cè)方法

將BBNs應(yīng)用于軟件故障預(yù)測(cè)的步驟是:(1)確定變量及其順序;(2)建立BBNs結(jié)構(gòu);(3)確定BBNs的參數(shù)(CPT).本文從軟件開發(fā)過程來建立一個(gè)BBNs基本模型,并以此模型為基礎(chǔ)擴(kuò)展節(jié)點(diǎn).

4·1一個(gè)BBNs故障預(yù)測(cè)的基本模型

影響軟件項(xiàng)目風(fēng)險(xiǎn)的基本因素可分為兩組,一是與組織相關(guān)的因素,包括組織文化,管理經(jīng)驗(yàn)和能力以及過程成熟度.二是與項(xiàng)目相關(guān)的因素[4].影響軟件故障的基本因素可以描述為圖2的基本模型.方框是可以擴(kuò)展的基點(diǎn).“項(xiàng)目特征”和“驗(yàn)證和確認(rèn)”影響到軟件開發(fā)的需求分析,設(shè)計(jì),實(shí)現(xiàn)和測(cè)試過程,軟件故障受開發(fā)過程的影響,這個(gè)模型涵蓋了軟件開發(fā)過程

4·2擴(kuò)展的BBNs故障預(yù)測(cè)模型

我們用已探測(cè)的故障數(shù),殘留故障數(shù),職稱論文殘留故障密度和測(cè)試中故障密度四個(gè)節(jié)點(diǎn)來描述軟件故障,分別用“問題復(fù)雜度”,“設(shè)計(jì)功效”和“測(cè)試功效”節(jié)點(diǎn)描述需求分析,設(shè)計(jì)和測(cè)試過程.V&V[4]與問題復(fù)雜度,設(shè)計(jì)功效和測(cè)試功效三個(gè)變量關(guān)系緊密,因此本文去掉V&V節(jié)點(diǎn),將這些描述V&V節(jié)點(diǎn)的變量(如測(cè)試覆蓋率,員工能力等)用來確定問題復(fù)雜度,設(shè)計(jì)功效和測(cè)試功效的參數(shù).

本文采用如圖3所示的BBNs故障預(yù)測(cè)模型,這個(gè)模型可以解釋為兩個(gè)階段:第一個(gè)階段覆蓋了軟件生命周期的規(guī)約,設(shè)計(jì)和編碼;第二個(gè)階段覆蓋了測(cè)試.設(shè)計(jì)規(guī)模和缺陷數(shù)節(jié)點(diǎn)為整數(shù)或者一個(gè)限定的范圍,故障密度為實(shí)數(shù),其他節(jié)點(diǎn)有下面的狀態(tài):很高,高,中等,低,很低.問題復(fù)雜度表示待開發(fā)問題集中內(nèi)在的復(fù)雜度,這些問題是規(guī)約中離散的功能需求,問題復(fù)雜度和設(shè)計(jì)功效之間的不匹配將導(dǎo)致引入故障數(shù)和設(shè)計(jì)規(guī)模增大.測(cè)試階段在設(shè)計(jì)階段之后,實(shí)踐中實(shí)際分配的測(cè)試功效比所要求的少得多.測(cè)試功效和設(shè)計(jì)規(guī)模之間的不匹配將會(huì)影響已探測(cè)故障的數(shù)目,引入故障是其邊界條件.已探測(cè)故障和引入故障之差是殘留故障數(shù).測(cè)試中故障密度是已探測(cè)故障和設(shè)計(jì)規(guī)模的函數(shù)(已探測(cè)故障/設(shè)計(jì)規(guī)模),同樣,殘留故障密度是殘留故障數(shù)/設(shè)計(jì)規(guī)模.這里的問題復(fù)雜度,設(shè)計(jì)功效和測(cè)試功效的粒度仍然較大,不利于確定其狀態(tài),將其繼續(xù)擴(kuò)展,建立相應(yīng)子網(wǎng)來描述這些節(jié)點(diǎn):(1)問題復(fù)雜度子網(wǎng)(圖4);(2)設(shè)計(jì)功效子網(wǎng)(圖5);(3)測(cè)試功效子網(wǎng)(圖6).

4·3確定BBNs參數(shù)

接下來的問題是確定變量狀態(tài)的概率和變量之間關(guān)系的強(qiáng)度.從對(duì)軟件開發(fā)過程的各種文檔記錄中我們可以得到一些確定性知識(shí).對(duì)于不確定性知識(shí),傳統(tǒng)的方法是根據(jù)專家經(jīng)驗(yàn)主觀確定.研究人員定義了大量軟件度量描述軟件質(zhì)量[2,5,6],將這些研究與專家知識(shí)和經(jīng)驗(yàn)結(jié)合起來確定BBNs參數(shù).

4·4推理規(guī)則

采用應(yīng)用最廣的隨機(jī)模擬采樣法(PearlsandGibbs算法).首先,為網(wǎng)絡(luò)上的節(jié)點(diǎn)做初始實(shí)例化,證據(jù)節(jié)點(diǎn)實(shí)例化為觀察值,非證據(jù)節(jié)點(diǎn)實(shí)例化為隨機(jī)值;然后,開始遍歷圖,對(duì)每一非證據(jù)節(jié)點(diǎn)Y,計(jì)算在其他節(jié)點(diǎn)給定值的情況下Y的后驗(yàn)概率分布:

P(Y|WY)=αP(Y|Pa(Y))∏iP(si|Pa(si))

式中,WY表示除Y的節(jié)點(diǎn)集合,Si表示Y的第i個(gè)子女,工作總結(jié)為正規(guī)化因子,其余乘積項(xiàng)為條件概率.公式表明了本節(jié)點(diǎn)的概率僅與其父母節(jié)點(diǎn),子節(jié)點(diǎn)及其子節(jié)點(diǎn)的父母節(jié)點(diǎn)有關(guān);Pearl使用上式結(jié)果對(duì)節(jié)點(diǎn)進(jìn)行采樣,結(jié)果作為Y的新實(shí)例化,反復(fù)進(jìn)行,直到近似過程收斂(設(shè)進(jìn)行了m次遍歷),這時(shí)查詢結(jié)果為:P(Y|e)=1m∑mi=1fi,fi為第i次遍歷Y的條件概率,e為證據(jù)向量的觀察值.

5仿真實(shí)驗(yàn)

本文在AgenaRisk[7]系統(tǒng)中對(duì)該模型進(jìn)行仿真實(shí)驗(yàn).實(shí)驗(yàn)部分采用了AgenaRisk中關(guān)于軟件故障預(yù)測(cè)和軟件項(xiàng)目風(fēng)險(xiǎn)管理的數(shù)據(jù).由于具體的項(xiàng)目數(shù)據(jù)難以收集,我們根據(jù)圖3所描述的簡(jiǎn)化模型來做仿真實(shí)驗(yàn).在實(shí)驗(yàn)中我們用軟件需求復(fù)雜性度量和軟件需求變更度量來描述問題復(fù)雜度[6].利用各種度量來描述設(shè)計(jì)功效,包括對(duì)象(模塊)之間的耦合數(shù)(耦合度量),不使用公共屬性的方法的個(gè)數(shù)(內(nèi)聚度量),繼承樹的深度和繼承的平均深度(繼承度量)[5].用代碼覆蓋度量來描述測(cè)試功效,定義一個(gè)相應(yīng)策略的測(cè)試有效率(testeffective-nessratio,TER),TER1是語句覆蓋的測(cè)試有效率,TER2是分支覆蓋的測(cè)試有效率,TER3是線性代碼順序和跳轉(zhuǎn)覆蓋測(cè)試有效率.我們?cè)O(shè)定的是一個(gè)中等規(guī)模的系統(tǒng),嚴(yán)格按照軟件工程開發(fā)過程開發(fā),花費(fèi)了大量資源在設(shè)計(jì)和測(cè)試上,盡量減少耦合,增加內(nèi)聚,TER1,TER2達(dá)到100%,TER3達(dá)到90%,因此可以判定設(shè)計(jì)功效為很高(概率為100%),測(cè)試功效很高(概率為100%),如圖7所示.從仿真結(jié)果可以看到設(shè)計(jì)規(guī)模較小,引入故障數(shù)較少(期望值為17.8),已探測(cè)故障密度相對(duì)較高,剩余故障數(shù)較小(期望值為6.6),這與實(shí)際情況是相符合的.當(dāng)我們將設(shè)計(jì)功效設(shè)置為較低時(shí)(概率為100%),如圖8所示,明顯設(shè)計(jì)規(guī)模變大,引入故障數(shù)增加(期望值為43.1),相應(yīng)的剩余故障數(shù)增加(期望值13.0),已探測(cè)故障密度減少.表2是兩者的對(duì)比結(jié)果.在實(shí)驗(yàn)中我們分別對(duì)問題復(fù)雜度,測(cè)試功效和設(shè)計(jì)功效賦值,以檢查模型對(duì)各種環(huán)境下的變化,其結(jié)果與實(shí)際較為符合,說明了模型的合理性.

6結(jié)語

本文從軟件開發(fā)全生命周期來考察故障,給出了一個(gè)BBNs故障預(yù)測(cè)原型系統(tǒng),并在AgenaRisk系統(tǒng)中對(duì)該模型進(jìn)行仿真實(shí)驗(yàn).從實(shí)驗(yàn)結(jié)果可以看到,BBNs能夠使用來自主觀和客觀的概率分布和不充分的數(shù)據(jù)預(yù)測(cè)軟件故障數(shù).仿真實(shí)驗(yàn)還只是基于一個(gè)簡(jiǎn)化的模型,將實(shí)際項(xiàng)目數(shù)據(jù)應(yīng)用于模型,探討建立完備網(wǎng)絡(luò)結(jié)構(gòu)和確定節(jié)點(diǎn)狀態(tài)的方法,建立適應(yīng)具體項(xiàng)目便于數(shù)據(jù)收集和確定節(jié)點(diǎn)狀態(tài)的網(wǎng)絡(luò)是需要進(jìn)一步探討的問題.

參考文獻(xiàn):

[1]ToddLGraves,AlanFKarr,JSMarron,HarveySiy.Predict-ingfaultincidenceusingsoftwarechangehistory[J].IEEETransactionsonSoftwareEngineering,2000,26(7):653-661.

[2]Fenton,NE,NeilM.Acritiqueofsoftwaredefectpredictionmodels[J].IEEETransactionsonSoftwareEngineering,1999,25(5):675-689.

[3]AhmedEHassan,RichardCHolt.Thetoptenlist:dynamicfaultprediction[A].Proceedingsofthe21stIEEEInternationalConferenceonSoftwareMaintenance(ICSM’2005)[C].Bu-dapest,Hungary:IEEE,2005.263-272.

[4]Chin-FengFan,Yuan-ChangYu.BBN-basedsoftwareprojectriskmanagement[J].JournalofSystemsandSoftware,2004,73(2):193-203.

[5]MunsonJC,NikoraAP.Towardaquantifiabledefinitionofsoftwarefaults[A].Proceedingsof13thInternationalSympo-siumonSoftwareReliabilityEngineering(ISSRE2002)[C].Annapolis,MD,USA:IEEE,2002.388-395.

[6]王青,李明樹.基于SPC的軟件需求度量方法[J].計(jì)算機(jī)學(xué)報(bào),2003,26(10):1312-1317.WangQing,LIMing-Shu.MeasurementofSoftwareRequire-mentBasedonSPC[J].ChineseJournalofComputers,2003,26(10):1312-1317.(inChinese)

[7]AgenaRisk.[EB/OL].2005/2006-7-15.