本發(fā)明涉及軟件缺陷預(yù)測(cè)領(lǐng)域,更具體地,涉及一種基于貝葉斯網(wǎng)絡(luò)的網(wǎng)站缺陷預(yù)測(cè)方法及其實(shí)現(xiàn)系統(tǒng)。
背景技術(shù):
::軟件缺陷在軟件開發(fā)中不可避免,盡早發(fā)現(xiàn)、修復(fù)軟件缺陷,一直是軟件開發(fā)所追尋的目標(biāo),而軟件缺陷預(yù)測(cè)技術(shù),可在測(cè)試的前期,通過對(duì)軟件特性進(jìn)行分析,判斷哪些模塊有無缺陷或推算模塊所含缺陷數(shù),為測(cè)試、開發(fā)人員尋找、修復(fù)軟件缺陷,進(jìn)行人員安排,制定測(cè)試計(jì)劃、測(cè)試充分性等方面提供參考。也是使得軟件開發(fā)方降低日后測(cè)試代價(jià)和周期、提高軟件質(zhì)量的重要依據(jù)。網(wǎng)頁(yè)開發(fā)作為軟件開發(fā)的一個(gè)方向,其網(wǎng)頁(yè)缺陷預(yù)測(cè)也是網(wǎng)頁(yè)開發(fā)者需要面對(duì)和解決的重要問題。而目前用于網(wǎng)頁(yè)缺陷預(yù)測(cè)的技術(shù)方法,所使用的度量元均是針對(duì)常規(guī)軟件各模塊所設(shè)計(jì)的,對(duì)網(wǎng)頁(yè)缺陷預(yù)測(cè)泛化能力不足,針對(duì)性差,預(yù)測(cè)效果差;而現(xiàn)有提出的針對(duì)現(xiàn)有網(wǎng)頁(yè)的缺陷預(yù)測(cè)方法理論上可行,但其度量元在實(shí)際中難以測(cè)量,對(duì)信息要求高,使得其在實(shí)際預(yù)測(cè)中實(shí)用性不強(qiáng)。技術(shù)實(shí)現(xiàn)要素:為了解決
背景技術(shù):
:存在的度量元針對(duì)性差以及難以測(cè)量,預(yù)測(cè)方法實(shí)用性不強(qiáng)等問題,本發(fā)明提供了一種基于貝葉斯網(wǎng)絡(luò)的網(wǎng)站缺陷預(yù)測(cè)方法及其實(shí)現(xiàn)系統(tǒng),該方法及其實(shí)現(xiàn)系統(tǒng)對(duì)已有的信息要求低,可以在信息不完全、不確定情況下對(duì)網(wǎng)站缺陷情況進(jìn)行預(yù)測(cè)。一種基于貝葉斯網(wǎng)絡(luò)的網(wǎng)站缺陷預(yù)測(cè)方法,所述方法包含:建立html貝葉斯網(wǎng)絡(luò)結(jié)構(gòu),所述html貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)的節(jié)點(diǎn)為網(wǎng)頁(yè)的html度量元以及html缺陷數(shù);建立代碼貝葉斯網(wǎng)絡(luò)結(jié)構(gòu),所述代碼貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)的節(jié)點(diǎn)為網(wǎng)頁(yè)的代碼度量元以及代碼缺陷數(shù);html貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)使用歷史網(wǎng)頁(yè)的html度量元狀態(tài)值作為訓(xùn)練樣本進(jìn)行最大似然估計(jì)算法的參數(shù)學(xué)習(xí),獲得html度量元的條件概率分布表,所述html貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)與html度量元的條件概率分布表組成html貝葉斯網(wǎng)絡(luò)子模型;代碼貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)使用歷史網(wǎng)頁(yè)的代碼度量元狀態(tài)值作為訓(xùn)練樣本進(jìn)行最大似然估計(jì)算法的參數(shù)學(xué)習(xí),獲得代碼度量元的條件概率分布表,所述代碼貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)與代碼度量元的條件概率分布表組成代碼貝葉斯網(wǎng)絡(luò)子模型;以及將待測(cè)網(wǎng)頁(yè)的html度量元狀態(tài)值以及代碼度量元狀態(tài)值帶入html貝葉斯子模型以及代碼貝葉斯子模型,得到待測(cè)網(wǎng)頁(yè)的html缺陷預(yù)測(cè)以及代碼缺陷預(yù)測(cè)。進(jìn)一步的,所述網(wǎng)頁(yè)html的度量元包含:行數(shù)(ls),所述行數(shù)為網(wǎng)頁(yè)文件除去空行的總行數(shù);html標(biāo)簽數(shù)(tag),所述html標(biāo)簽數(shù)為網(wǎng)頁(yè)文件中所有標(biāo)簽數(shù);復(fù)合標(biāo)簽百分?jǐn)?shù)(ctag),所述復(fù)合標(biāo)簽百分?jǐn)?shù)為網(wǎng)頁(yè)文件中名稱為form、select、table、map、frame以及marquee的標(biāo)簽數(shù)之和與總標(biāo)簽數(shù)的百分比;其他標(biāo)簽數(shù)(otag),所述其他標(biāo)簽數(shù)為網(wǎng)頁(yè)文件中href、src、script以及applet標(biāo)簽數(shù)的總和;進(jìn)一步的,所述網(wǎng)頁(yè)代碼的度量元包括:語句數(shù)(ss),所述語句數(shù)為以分號(hào)結(jié)尾的語句、未以分號(hào)結(jié)尾的方法語句與屬性語句、預(yù)處理語句#include、#define以及#undef數(shù)量之和,其中在#else和#endif之間以及#elif和#endif之間的語句不計(jì)算在內(nèi);方法總數(shù)(ms),所述方法總數(shù)指代碼文件中所有類方法的數(shù)量之和;方法的平均語句數(shù)(mas),所述方法的平均語句數(shù)指代碼文件中所有類方法中的語句數(shù)量之和除以方法總數(shù)所得的值;方法的平均調(diào)用數(shù)(mcs),所述方法的平均調(diào)用數(shù)指代碼文件中調(diào)用方法的總數(shù)除以方法總數(shù)所得的值;圈復(fù)雜度總和(mc),所述圈復(fù)雜度總和指代碼文件中所有方法的圈復(fù)雜度累加之和;最大圈復(fù)雜度(mmc),所述最大圈復(fù)雜度指代碼文件中所有方法中最大的圈復(fù)雜度的值;最大模塊深度(mds),所述最大模塊深度指代碼文件中模塊嵌套的最大深度數(shù);平均模塊深度(ads),所述平均模塊深度指代碼文件中所有方法中模塊嵌套深度的平均值;可維護(hù)性指數(shù)(mi),所述可維護(hù)性指數(shù)是指通過軟件結(jié)構(gòu)、文檔注釋、命名規(guī)范、系統(tǒng)配置管理以及版本管理等的優(yōu)良程度來確認(rèn)的維護(hù)代碼的相對(duì)難易度,0≤mi≤100,mi越大表示維護(hù)性越好;繼承深度(id),所述繼承深度指代碼文件中派生層次最多的類或?qū)ο蟮膶哟螖?shù);類耦合(cc),所述類耦合是指通過參數(shù)、局部變量、返回類型、方法調(diào)用、泛型或模板實(shí)例化、基類、接口實(shí)現(xiàn)、在外部類型上定義的字段以及特性修飾來衡量與唯一類的耦合程度;進(jìn)一步的,度量元狀態(tài)值包括除去其他標(biāo)簽數(shù)狀態(tài)值的html度量元狀態(tài)值、代碼度量元狀態(tài)值以及代碼缺陷預(yù)測(cè)狀態(tài)值,所述度量元狀態(tài)值根據(jù)對(duì)與度量元對(duì)應(yīng)的度量元數(shù)據(jù)進(jìn)行狀態(tài)劃分得到,當(dāng)所述度量元或代碼缺陷數(shù)在歷史數(shù)據(jù)中數(shù)量大小占據(jù)前25%位置,其度量元狀態(tài)值為“多”,當(dāng)所述度量元或代碼缺陷數(shù)在歷史數(shù)據(jù)中數(shù)量大小占據(jù)中間50%位置,其度量元狀態(tài)值為“中”,當(dāng)所述度量元或代碼缺陷數(shù)在歷史數(shù)據(jù)中數(shù)量大小占據(jù)最后25%位置,其度量元狀態(tài)值為“少”;所述除去其他標(biāo)簽數(shù)狀態(tài)值的html度量元狀態(tài)值指行數(shù)、html標(biāo)簽數(shù)以及復(fù)合標(biāo)簽百分?jǐn)?shù);進(jìn)一步的,所述html缺陷預(yù)測(cè)為3個(gè)以上缺陷時(shí)所述html缺陷預(yù)測(cè)狀態(tài)值為“多”,所述html缺陷預(yù)測(cè)為1~2個(gè)缺陷時(shí)所述html缺陷預(yù)測(cè)狀態(tài)值為“中”,所述html缺陷預(yù)測(cè)為0個(gè)缺陷時(shí),所述html缺陷預(yù)測(cè)為“少”;所述其他標(biāo)簽數(shù)的值大于0時(shí),其度量元狀態(tài)值為“有”,否則其度量元狀態(tài)值為“無”;進(jìn)一步的,所述html貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)中,各度量元節(jié)點(diǎn)均與html缺陷節(jié)點(diǎn)相連,html標(biāo)簽數(shù)節(jié)點(diǎn)、復(fù)合標(biāo)簽百分?jǐn)?shù)節(jié)點(diǎn)以及其他標(biāo)簽數(shù)節(jié)點(diǎn)與行數(shù)節(jié)點(diǎn)相連,復(fù)合標(biāo)簽百分?jǐn)?shù)節(jié)點(diǎn)與html標(biāo)簽數(shù)節(jié)點(diǎn)相連、其他標(biāo)簽數(shù)節(jié)點(diǎn)與html標(biāo)簽數(shù)節(jié)點(diǎn)相連;進(jìn)一步的,所述代碼貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)中,各度量元節(jié)點(diǎn)均與代碼缺陷節(jié)點(diǎn)相連,方法總數(shù)節(jié)點(diǎn)與語句數(shù)節(jié)點(diǎn)相連,方法的平均語句數(shù)節(jié)點(diǎn)與語句數(shù)節(jié)點(diǎn)相連,最大圈復(fù)雜度節(jié)點(diǎn)與圈復(fù)雜度總和節(jié)點(diǎn)相連,最大模塊深度節(jié)點(diǎn)與平均模塊深度節(jié)點(diǎn);進(jìn)一步的,所述待測(cè)網(wǎng)頁(yè)的缺陷實(shí)測(cè)結(jié)果與各度量值作為新的樣品加入訓(xùn)練集,用于使貝葉斯網(wǎng)絡(luò)模型進(jìn)行重新學(xué)習(xí),以修正各節(jié)點(diǎn)的條件概率。一種用于實(shí)現(xiàn)基于貝葉斯網(wǎng)絡(luò)的網(wǎng)站缺陷預(yù)測(cè)方法的系統(tǒng),所述系統(tǒng)包含:html貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)模塊,所述html貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)模塊的節(jié)點(diǎn)為為網(wǎng)頁(yè)html的度量元以及html缺陷數(shù);所述html貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)模塊的輸出為html貝葉斯網(wǎng)絡(luò)結(jié)構(gòu),所述html貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)模塊的輸出與html度量元概率分布模塊的輸入端以及預(yù)測(cè)模塊輸入端相連;代碼貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)模塊,所述代碼貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)模塊的節(jié)點(diǎn)為為網(wǎng)頁(yè)代碼的度量元以及代碼缺陷數(shù),所述代碼貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)模塊的輸出為代碼貝葉斯網(wǎng)絡(luò)結(jié)構(gòu),所述代碼貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)模塊的輸出與代碼度量元概率分布模塊的輸入端以及預(yù)測(cè)模塊輸入端相連;html度量元概率分布模塊,所述html度量元概率分布模塊用于使html貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)對(duì)歷史網(wǎng)頁(yè)的html度量元狀態(tài)值進(jìn)行最大似然估計(jì)算法的參數(shù)學(xué)習(xí),所述html度量元概率分布模塊的輸出為html度量元條件概率分布表,所述html度量元概率分布模塊的輸出端與預(yù)測(cè)模塊的輸入端相連;代碼度量元概率分布模塊,所述代碼度量元概率分布模塊用于使代碼貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)對(duì)歷史網(wǎng)頁(yè)的代碼度量元狀態(tài)值進(jìn)行最大似然估計(jì)算法的參數(shù)學(xué)習(xí),所述代碼度量元概率分布模塊的輸出為代碼度量元條件概率分布表,所述代碼度量元概率分布模塊的輸出端與預(yù)測(cè)模塊的輸入端相連;預(yù)測(cè)模塊,所述預(yù)測(cè)模塊用于根據(jù)待測(cè)網(wǎng)頁(yè)的html度量元狀態(tài)值以及代碼度量元狀態(tài)值進(jìn)行預(yù)測(cè),得到html缺陷以及代碼缺陷。進(jìn)一步的,所述html貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)模塊中的貝葉斯節(jié)點(diǎn)為html度量元,所述html度量元包含行數(shù)、html標(biāo)簽數(shù)、復(fù)合標(biāo)簽百分?jǐn)?shù)以及其他標(biāo)簽數(shù);所述代碼貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)模塊中的貝葉斯節(jié)點(diǎn)為代碼度量元,所述代碼度量元包含語句數(shù)、方法總數(shù)、方法的平均語句數(shù)、方法的平均調(diào)用數(shù)、圈復(fù)雜度總和、最大圈復(fù)雜度、最大模塊深度、平均模塊深度、可維護(hù)性指數(shù)、繼承深度以及類耦合;進(jìn)一步的,度量元狀態(tài)值包括除去其他標(biāo)簽數(shù)狀態(tài)值的html度量元狀態(tài)值、代碼度量元狀態(tài)值以及代碼缺陷預(yù)測(cè)狀態(tài)值,所述度量元狀態(tài)值根據(jù)對(duì)與度量元對(duì)應(yīng)的度量元數(shù)據(jù)進(jìn)行狀態(tài)劃分得到,當(dāng)所述度量元或代碼缺陷數(shù)在歷史數(shù)據(jù)中占據(jù)前25%位置,其度量元狀態(tài)值為“多”,當(dāng)所述度量元或代碼缺陷數(shù)在歷史數(shù)據(jù)中占據(jù)中間50%位置,其度量元狀態(tài)值為“中”,當(dāng)所述度量元或代碼缺陷數(shù)在歷史數(shù)據(jù)中占據(jù)最后25%位置,其度量元狀態(tài)值為“少”;所述除去其他標(biāo)簽數(shù)狀態(tài)值的html度量元狀態(tài)值指行數(shù)、html標(biāo)簽數(shù)以及復(fù)合標(biāo)簽百分?jǐn)?shù);進(jìn)一步的,所述html缺陷預(yù)測(cè)為3個(gè)以上缺陷時(shí)所述html缺陷預(yù)測(cè)狀態(tài)值為“多”,所述html缺陷預(yù)測(cè)為1~2個(gè)缺陷時(shí)所述html缺陷預(yù)測(cè)狀態(tài)值為“中”,所述html缺陷預(yù)測(cè)為0個(gè)缺陷時(shí),所述html缺陷預(yù)測(cè)為“少”;;所述其他標(biāo)簽數(shù)的值大于0時(shí),其度量元狀態(tài)值為“有”,否則其度量元狀態(tài)值為“無”;進(jìn)一步的,所述html貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)模塊中,各度量元節(jié)點(diǎn)均與html缺陷節(jié)點(diǎn)相連,html標(biāo)簽數(shù)節(jié)點(diǎn)、復(fù)合標(biāo)簽百分?jǐn)?shù)節(jié)點(diǎn)以及其他標(biāo)簽數(shù)節(jié)點(diǎn)與行數(shù)節(jié)點(diǎn)相連,復(fù)合標(biāo)簽百分?jǐn)?shù)節(jié)點(diǎn)與html標(biāo)簽數(shù)節(jié)點(diǎn)相連、其他標(biāo)簽數(shù)節(jié)點(diǎn)與html標(biāo)簽數(shù)節(jié)點(diǎn)相連;進(jìn)一步的,所述代碼貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)模塊中,各度量元節(jié)點(diǎn)均與代碼缺陷節(jié)點(diǎn)相連,方法總數(shù)節(jié)點(diǎn)與語句數(shù)節(jié)點(diǎn)相連,方法的平均語句數(shù)節(jié)點(diǎn)與語句數(shù)節(jié)點(diǎn)相連,最大圈復(fù)雜度節(jié)點(diǎn)與圈復(fù)雜度總和節(jié)點(diǎn)相連,最大模塊深度節(jié)點(diǎn)與平均模塊深度節(jié)點(diǎn)。本發(fā)明的有益效果為:本發(fā)明的技術(shù)方案,給出了一種基于貝葉斯網(wǎng)絡(luò)的網(wǎng)站缺陷預(yù)測(cè)方法及其實(shí)現(xiàn)系統(tǒng),所述方法可預(yù)測(cè)得到網(wǎng)站html缺陷以及代碼缺陷情況,預(yù)測(cè)準(zhǔn)確率高;所述方法對(duì)測(cè)試結(jié)果進(jìn)行重新學(xué)習(xí)以不斷修正模型預(yù)測(cè)能力;所述方法中的度量元易獲得,方法的實(shí)用性強(qiáng)。附圖說明通過參考下面的附圖,可以更為完整地理解本發(fā)明的示例性實(shí)施方式:圖1為本發(fā)明具體實(shí)施方式的一種基于貝葉斯網(wǎng)絡(luò)的網(wǎng)站缺陷預(yù)測(cè)方法的流程圖;以及圖2為本發(fā)明具體實(shí)施方式的一種用于實(shí)現(xiàn)基于貝葉斯網(wǎng)絡(luò)的網(wǎng)站缺陷預(yù)測(cè)方法的結(jié)構(gòu)圖。具體實(shí)施方式現(xiàn)在參考附圖介紹本發(fā)明的示例性實(shí)施方式,然而,本發(fā)明可以用許多不同的形式來實(shí)施,并且不局限于此處描述的實(shí)施例,提供這些實(shí)施例是為了詳盡地且完全地公開本發(fā)明,并且向所屬
技術(shù)領(lǐng)域:
:的技術(shù)人員充分傳達(dá)本發(fā)明的范圍。對(duì)于表示在附圖中的示例性實(shí)施方式中的術(shù)語并不是對(duì)本發(fā)明的限定。在附圖中,相同的單元/元件使用相同的附圖標(biāo)記。除非另有說明,此處使用的術(shù)語(包括科技術(shù)語)對(duì)所屬
技術(shù)領(lǐng)域:
:的技術(shù)人員具有通常的理解含義。另外,可以理解的是,以通常使用的詞典限定的術(shù)語,應(yīng)當(dāng)被理解為與其相關(guān)領(lǐng)域的語境具有一致的含義,而不應(yīng)該被理解為理想化的或過于正式的意義。圖1為本發(fā)明具體實(shí)施方式的一種基于貝葉斯網(wǎng)絡(luò)的網(wǎng)站缺陷預(yù)測(cè)方法的流程圖,所述方法包括以下步驟:步驟101,建立html貝葉斯網(wǎng)絡(luò)結(jié)構(gòu),所述html貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)的節(jié)點(diǎn)為網(wǎng)頁(yè)html的度量元以及html缺陷數(shù);步驟102,建立代碼貝葉斯網(wǎng)絡(luò)結(jié)構(gòu),所述代碼貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)的節(jié)點(diǎn)為網(wǎng)頁(yè)代碼的度量元以及代碼缺陷數(shù);步驟103,html貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)使用歷史網(wǎng)頁(yè)的html度量元狀態(tài)值作為訓(xùn)練樣本進(jìn)行最大似然估計(jì)算法的參數(shù)學(xué)習(xí),獲得html度量元的條件概率分布表,所述html貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)與html度量元的條件概率分布表組成html貝葉斯網(wǎng)絡(luò)子模型;步驟104,代碼貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)使用歷史網(wǎng)頁(yè)的代碼度量元狀態(tài)值作為訓(xùn)練樣本進(jìn)行最大似然估計(jì)算法的參數(shù)學(xué)習(xí),獲得代碼度量元的條件概率分布表,所述代碼貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)與代碼度量元的條件概率分布表組成代碼貝葉斯網(wǎng)絡(luò)子模型;以及步驟105,將待測(cè)網(wǎng)頁(yè)的html度量元狀態(tài)值以及代碼度量元狀態(tài)值帶入html貝葉斯子模型以及代碼貝葉斯子模型,得到待測(cè)網(wǎng)頁(yè)的html缺陷預(yù)測(cè)以及代碼缺陷預(yù)測(cè)。進(jìn)一步的,所述網(wǎng)頁(yè)html的度量元包含:行數(shù)(ls),所述行數(shù)為網(wǎng)頁(yè)文件除去空行的總行數(shù);html標(biāo)簽數(shù)(tag),所述html標(biāo)簽數(shù)為網(wǎng)頁(yè)文件中所有標(biāo)簽數(shù);復(fù)合標(biāo)簽百分?jǐn)?shù)(ctag),所述復(fù)合標(biāo)簽百分?jǐn)?shù)為網(wǎng)頁(yè)文件中名稱為form、select、table、map、frame以及marquee的標(biāo)簽數(shù)之和與總標(biāo)簽數(shù)的百分比;其他標(biāo)簽數(shù)(otag),所述其他標(biāo)簽數(shù)為網(wǎng)頁(yè)文件中href、src、script以及applet標(biāo)簽數(shù)的總和;進(jìn)一步的,所述網(wǎng)頁(yè)代碼的度量元包括:語句數(shù)(ss),所述語句數(shù)為以分號(hào)結(jié)尾的語句、未以分號(hào)結(jié)尾的方法語句與屬性語句、預(yù)處理語句#include、#define以及#undef數(shù)量之和,其中在#else和#endif之間以及#elif和#endif之間的語句不計(jì)算在內(nèi);方法總數(shù)(ms),所述方法總數(shù)指代碼文件中所有類方法的數(shù)量之和;方法的平均語句數(shù)(mas),所述方法的平均語句數(shù)指代碼文件中所有類方法中的語句數(shù)量之和除以方法總數(shù)所得的值;方法的平均調(diào)用數(shù)(mcs),所述方法的平均調(diào)用數(shù)指代碼文件中調(diào)用方法的總數(shù)除以方法總數(shù)所得的值;圈復(fù)雜度總和(mc),所述圈復(fù)雜度總和指代碼文件中所有方法的圈復(fù)雜度累加之和;最大圈復(fù)雜度(mmc),所述最大圈復(fù)雜度指代碼文件中所有方法中最大的圈復(fù)雜度的值;最大模塊深度(mds),所述最大模塊深度指代碼文件中模塊嵌套的最大深度數(shù);平均模塊深度(ads),所述平均模塊深度指代碼文件中所有方法中模塊嵌套深度的平均值;可維護(hù)性指數(shù)(mi),所述可維護(hù)性指數(shù)是指通過軟件結(jié)構(gòu)、文檔注釋、命名規(guī)范、系統(tǒng)配置管理以及版本管理等的優(yōu)良程度來確認(rèn)的維護(hù)代碼的相對(duì)難易度,0≤mi≤100,mi越大表示維護(hù)性越好;繼承深度(id),所述繼承深度指代碼文件中派生層次最多的類或?qū)ο蟮膶哟螖?shù);類耦合(cc),所述類耦合是指通過參數(shù)、局部變量、返回類型、方法調(diào)用、泛型或模板實(shí)例化、基類、接口實(shí)現(xiàn)、在外部類型上定義的字段以及特性修飾來衡量與唯一類的耦合程度;進(jìn)一步的,度量元狀態(tài)值包括除去其他標(biāo)簽數(shù)狀態(tài)值的html度量元狀態(tài)值、代碼度量元狀態(tài)值以及代碼缺陷預(yù)測(cè)狀態(tài)值,所述度量元狀態(tài)值根據(jù)對(duì)與度量元對(duì)應(yīng)的度量元數(shù)據(jù)進(jìn)行狀態(tài)劃分得到,當(dāng)所述度量元或代碼缺陷數(shù)在歷史數(shù)據(jù)中數(shù)量大小占據(jù)前25%位置,其度量元狀態(tài)值為“多”,當(dāng)所述度量元或代碼缺陷數(shù)在歷史數(shù)據(jù)中數(shù)量大小占據(jù)中間50%位置,其度量元狀態(tài)值為“中”,當(dāng)所述度量元或代碼缺陷數(shù)在歷史數(shù)據(jù)中數(shù)量大小占據(jù)最后25%位置,其度量元狀態(tài)值為“少”;所述除去其他標(biāo)簽數(shù)狀態(tài)值的html度量元狀態(tài)值指行數(shù)、html標(biāo)簽數(shù)以及復(fù)合標(biāo)簽百分?jǐn)?shù);進(jìn)一步的,對(duì)于所述html缺陷預(yù)測(cè)狀態(tài)值:所述html缺陷預(yù)測(cè)為3個(gè)以上缺陷時(shí)所述html缺陷預(yù)測(cè)狀態(tài)值為“多”,所述html缺陷預(yù)測(cè)為1~2個(gè)缺陷時(shí)所述html缺陷預(yù)測(cè)狀態(tài)值為“中”,所述html缺陷預(yù)測(cè)為0個(gè)缺陷時(shí),所述html缺陷預(yù)測(cè)為“少”;所述其他標(biāo)簽數(shù)的值大于0時(shí),其度量元狀態(tài)值為“有”,否則其度量元狀態(tài)值為“無”;進(jìn)一步的,所述html貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)中,各度量元節(jié)點(diǎn)均與html缺陷節(jié)點(diǎn)相連,html標(biāo)簽數(shù)節(jié)點(diǎn)、復(fù)合標(biāo)簽百分?jǐn)?shù)節(jié)點(diǎn)以及其他標(biāo)簽數(shù)節(jié)點(diǎn)與行數(shù)節(jié)點(diǎn)相連,復(fù)合標(biāo)簽百分?jǐn)?shù)節(jié)點(diǎn)與html標(biāo)簽數(shù)節(jié)點(diǎn)相連、其他標(biāo)簽數(shù)節(jié)點(diǎn)與html標(biāo)簽數(shù)節(jié)點(diǎn)相連;進(jìn)一步的,所述代碼貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)中,各度量元節(jié)點(diǎn)均與代碼缺陷節(jié)點(diǎn)相連,方法總數(shù)節(jié)點(diǎn)與語句數(shù)節(jié)點(diǎn)相連,方法的平均語句數(shù)節(jié)點(diǎn)與語句數(shù)節(jié)點(diǎn)相連,最大圈復(fù)雜度節(jié)點(diǎn)與圈復(fù)雜度總和節(jié)點(diǎn)相連,最大模塊深度節(jié)點(diǎn)與平均模塊深度節(jié)點(diǎn);進(jìn)一步的,所述待測(cè)網(wǎng)頁(yè)的缺陷實(shí)測(cè)結(jié)果與各度量值作為新的樣品加入訓(xùn)練集,用于使貝葉斯網(wǎng)絡(luò)模型進(jìn)行重新學(xué)習(xí),以修正各節(jié)點(diǎn)的條件概率。圖2為本發(fā)明具體實(shí)施方式的一種用于實(shí)現(xiàn)基于貝葉斯網(wǎng)絡(luò)的網(wǎng)站缺陷預(yù)測(cè)方法的裝置的結(jié)構(gòu)圖,所述裝置包括:html貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)模塊,所述html貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)模塊的節(jié)點(diǎn)為為網(wǎng)頁(yè)html的度量元以及html缺陷數(shù);所述html貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)模塊的輸出為html貝葉斯網(wǎng)絡(luò)結(jié)構(gòu),所述html貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)模塊的輸出與html度量元概率分布模塊的輸入端以及預(yù)測(cè)模塊輸入端相連;代碼貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)模塊,所述代碼貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)模塊的節(jié)點(diǎn)為為網(wǎng)頁(yè)代碼的度量元以及代碼缺陷數(shù),所述代碼貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)模塊的輸出為代碼貝葉斯網(wǎng)絡(luò)結(jié)構(gòu),所述代碼貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)模塊的輸出與代碼度量元概率分布模塊的輸入端以及預(yù)測(cè)模塊輸入端相連;html度量元概率分布模塊,所述html度量元概率分布模塊用于使html貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)對(duì)歷史網(wǎng)頁(yè)的html度量元狀態(tài)值進(jìn)行最大似然估計(jì)算法的參數(shù)學(xué)習(xí),所述html度量元概率分布模塊的輸出為html度量元條件概率分布表,所述html度量元概率分布模塊的輸出端與預(yù)測(cè)模塊的輸入端相連;代碼度量元概率分布模塊,所述代碼度量元概率分布模塊用于使代碼貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)對(duì)歷史網(wǎng)頁(yè)的代碼度量元狀態(tài)值進(jìn)行最大似然估計(jì)算法的參數(shù)學(xué)習(xí),所述代碼度量元概率分布模塊的輸出為代碼度量元條件概率分布表,所述代碼度量元概率分布模塊的輸出端與預(yù)測(cè)模塊的輸入端相連;預(yù)測(cè)模塊,所述預(yù)測(cè)模塊用于根據(jù)待測(cè)網(wǎng)頁(yè)的html度量元狀態(tài)值以及代碼度量元狀態(tài)值進(jìn)行預(yù)測(cè),得到html缺陷以及代碼缺陷。進(jìn)一步的,所述html貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)模塊中的貝葉斯節(jié)點(diǎn)為html度量元,所述html度量元包含行數(shù)、html標(biāo)簽數(shù)、復(fù)合標(biāo)簽百分?jǐn)?shù)以及其他標(biāo)簽數(shù);所述代碼貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)模塊中的貝葉斯節(jié)點(diǎn)為代碼度量元,所述代碼度量元包含語句數(shù)、方法總數(shù)、方法的平均語句數(shù)、方法的平均調(diào)用數(shù)、圈復(fù)雜度總和、最大圈復(fù)雜度、最大模塊深度、平均模塊深度、可維護(hù)性指數(shù)、繼承深度以及類耦合;進(jìn)一步的,度量元狀態(tài)值包括除去其他標(biāo)簽數(shù)狀態(tài)值的html度量元狀態(tài)值、代碼度量元狀態(tài)值以及代碼缺陷預(yù)測(cè)狀態(tài)值,所述度量元狀態(tài)值根據(jù)對(duì)與度量元狀態(tài)值對(duì)應(yīng)的度量元數(shù)據(jù)進(jìn)行狀態(tài)劃分得到,當(dāng)所述度量元或代碼缺陷數(shù)在歷史數(shù)據(jù)中數(shù)量大小占據(jù)前25%位置,其度量元狀態(tài)值為“多”,當(dāng)所述度量元或代碼缺陷數(shù)在歷史數(shù)據(jù)中數(shù)量大小占據(jù)中間50%位置,其度量元狀態(tài)值為“中”,當(dāng)所述度量元或代碼缺陷數(shù)在歷史數(shù)據(jù)中數(shù)量大小占據(jù)最后25%位置,其度量元狀態(tài)值為“少”;所述除去其他標(biāo)簽數(shù)狀態(tài)值的html度量元狀態(tài)值指行數(shù)、html標(biāo)簽數(shù)以及復(fù)合標(biāo)簽百分?jǐn)?shù);進(jìn)一步的,所述html缺陷預(yù)測(cè)為3個(gè)以上缺陷時(shí)所述html缺陷預(yù)測(cè)狀態(tài)值為“多”,所述html缺陷預(yù)測(cè)為1~2個(gè)缺陷時(shí)所述html缺陷預(yù)測(cè)狀態(tài)值為“中”,所述html缺陷預(yù)測(cè)為0個(gè)缺陷時(shí),所述html缺陷預(yù)測(cè)為“少”;所述其他標(biāo)簽數(shù)的值大于0時(shí),其度量元狀態(tài)值為“有”,否則其度量元狀態(tài)值為“無”;進(jìn)一步的,所述html貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)模塊中,各度量元節(jié)點(diǎn)均與html缺陷節(jié)點(diǎn)相連,html標(biāo)簽數(shù)節(jié)點(diǎn)、復(fù)合標(biāo)簽百分?jǐn)?shù)節(jié)點(diǎn)以及其他標(biāo)簽數(shù)節(jié)點(diǎn)與行數(shù)節(jié)點(diǎn)相連,復(fù)合標(biāo)簽百分?jǐn)?shù)節(jié)點(diǎn)與html標(biāo)簽數(shù)節(jié)點(diǎn)相連、其他標(biāo)簽數(shù)節(jié)點(diǎn)與html標(biāo)簽數(shù)節(jié)點(diǎn)相連;進(jìn)一步的,所述代碼貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)模塊中,各度量元節(jié)點(diǎn)均與代碼缺陷節(jié)點(diǎn)相連,方法總數(shù)節(jié)點(diǎn)與語句數(shù)節(jié)點(diǎn)相連,方法的平均語句數(shù)節(jié)點(diǎn)與語句數(shù)節(jié)點(diǎn)相連,最大圈復(fù)雜度節(jié)點(diǎn)與圈復(fù)雜度總和節(jié)點(diǎn)相連,最大模塊深度節(jié)點(diǎn)與平均模塊深度節(jié)點(diǎn)。根據(jù)本發(fā)明的實(shí)施方式,對(duì)招生系統(tǒng)的一組網(wǎng)頁(yè)進(jìn)行缺陷數(shù)預(yù)測(cè)。待測(cè)的招生系統(tǒng)共有228個(gè)html網(wǎng)頁(yè)以及515個(gè)代碼模塊,根據(jù)本發(fā)明的方法,建立html貝葉斯網(wǎng)絡(luò)模型以及代碼貝葉斯網(wǎng)絡(luò)模型,使用度量工具sourcemonitor和微軟的vs對(duì)同一項(xiàng)目組開發(fā)的信息化平臺(tái)系統(tǒng)進(jìn)行度量元的測(cè)度,將這些數(shù)據(jù)轉(zhuǎn)換為節(jié)點(diǎn)的相應(yīng)狀態(tài)值,作為貝葉斯網(wǎng)絡(luò)模型輸入的訓(xùn)練樣本,所述模型使用最大似然性估計(jì)算法學(xué)習(xí)后,對(duì)所述招生系統(tǒng)各html網(wǎng)頁(yè)和代碼模塊進(jìn)行了缺陷預(yù)測(cè)。預(yù)測(cè)結(jié)束后對(duì)所述招生系統(tǒng)進(jìn)行實(shí)際缺陷測(cè)試,所述228個(gè)html網(wǎng)頁(yè)中有191個(gè)頁(yè)面的預(yù)測(cè)結(jié)果與實(shí)際測(cè)試結(jié)果一致,所述515個(gè)代碼模塊有399個(gè)模塊的預(yù)測(cè)結(jié)果與實(shí)際測(cè)試結(jié)果一致,總體正確率為80%。同時(shí),將招生系統(tǒng)的實(shí)測(cè)結(jié)果繼續(xù)學(xué)習(xí)后對(duì)同項(xiàng)目組開發(fā)的其他項(xiàng)目做缺陷預(yù)測(cè),得到的總體正確率達(dá)到85%左右,對(duì)其他項(xiàng)目組開發(fā)的項(xiàng)目進(jìn)行缺陷預(yù)測(cè),得到總體正確率達(dá)到70%左右。當(dāng)前第1頁(yè)12當(dāng)前第1頁(yè)12