孟令中,王 航,薛云志+,武 斌,馬 蘭
1.中國(guó)科學(xué)院 軟件研究所,北京 100190
2.中國(guó)科學(xué)院大學(xué),北京 100190
3.清華大學(xué)附屬小學(xué),北京 100084
當(dāng)今社會(huì),軟件應(yīng)用十分廣泛,已經(jīng)成為影響國(guó)民經(jīng)濟(jì)、政治乃至社會(huì)生活的重要因素。隨著軟件應(yīng)用領(lǐng)域的不斷擴(kuò)大,軟件的開(kāi)發(fā)和運(yùn)行環(huán)境更加多元化,信息化需求的增加導(dǎo)致了軟件的規(guī)模和復(fù)雜性都有了巨大的增長(zhǎng)。影響軟件質(zhì)量的因素很多,軟件本身不可避免地存在缺陷,由于系統(tǒng)對(duì)軟件有著強(qiáng)烈依賴,這種已有的或者潛在的缺陷一旦觸發(fā)勢(shì)必造成軟件的失效,將導(dǎo)致各領(lǐng)域依賴的軟件業(yè)務(wù)陷入癱瘓,進(jìn)而導(dǎo)致嚴(yán)重的后果。
軟件失效的機(jī)理是:軟件產(chǎn)品中存在軟件缺陷,引起軟件在運(yùn)行階段發(fā)生故障,當(dāng)軟件故障沒(méi)有被系統(tǒng)所容忍,并引發(fā)一個(gè)或多個(gè)失效行為,最終表現(xiàn)出系統(tǒng)失效。根據(jù)IEEE標(biāo)準(zhǔn)中的定義,軟件缺陷指計(jì)算機(jī)程序中一個(gè)不正確的步驟、過(guò)程或數(shù)據(jù)定義[1];軟件故障是系統(tǒng)在運(yùn)行時(shí)由于缺陷造成的非正常狀態(tài)的表現(xiàn)和反映;軟件失效是指程序的運(yùn)行偏離了需求,是動(dòng)態(tài)運(yùn)行的結(jié)果[2],當(dāng)軟件故障沒(méi)有被系統(tǒng)所容忍,并引發(fā)一個(gè)或多個(gè)失效行為,最終表現(xiàn)出系統(tǒng)失效。
根據(jù)美國(guó)國(guó)家技術(shù)標(biāo)準(zhǔn)研究院的一項(xiàng)統(tǒng)計(jì),平均每年美國(guó)花費(fèi)在減少各個(gè)領(lǐng)域軟件出現(xiàn)失效的經(jīng)費(fèi)占GDP的大約0.6%。因此對(duì)軟件失效的預(yù)測(cè)、發(fā)現(xiàn)及預(yù)防是及其重要的。但是由于軟件缺陷的產(chǎn)生會(huì)因編程人員的不同而不同,因開(kāi)發(fā)語(yǔ)言的不同而不同,因開(kāi)發(fā)對(duì)象的領(lǐng)域不同而具有特定的缺陷。同時(shí)由于受到各類資源與軟件交付時(shí)間的限制,很難對(duì)設(shè)計(jì)的每一個(gè)模塊每一個(gè)操作都做到完美的測(cè)試;即使有了充足的時(shí)間與人力,也并不是每個(gè)開(kāi)發(fā)人員或測(cè)試人員都具備發(fā)現(xiàn)所有軟件失效的能力。但是隨著軟件項(xiàng)目中開(kāi)發(fā)和測(cè)試工作的不斷開(kāi)展與深入,軟件開(kāi)發(fā)團(tuán)隊(duì)和測(cè)試團(tuán)隊(duì)會(huì)積累越來(lái)越多的有關(guān)軟件失效的數(shù)據(jù),這就為預(yù)測(cè)、發(fā)現(xiàn)及預(yù)防軟件失效提供了可能。
模式是針對(duì)復(fù)雜系統(tǒng)中重復(fù)出現(xiàn)的問(wèn)題而提出的一個(gè)概念,用以描述不斷重復(fù)發(fā)生的問(wèn)題。在實(shí)際工程中,有經(jīng)驗(yàn)的專家或工作人員在分析問(wèn)題和解決問(wèn)題時(shí),通常先考慮以前發(fā)生過(guò)的類似問(wèn)題,并重用該問(wèn)題的解決方案以解決問(wèn)題,這個(gè)不斷被使用的解決方法通常稱之為模式。軟件失效模式(software failure mode)指軟件失效發(fā)生的不同方式,是可以從不斷重復(fù)出現(xiàn)的或類似的軟件失效中發(fā)現(xiàn)和抽象出的規(guī)律描述。
在國(guó)軍標(biāo)GJB/Z 1391—2006中,給出了嵌入式軟件系統(tǒng)的失效模式,并分為輸入失效、輸出失效、程序失效、未滿足功能及性能要求失效和其他類型等[3]。但是該標(biāo)準(zhǔn)給出的失效模式為通用的失效模式,僅包含軟件失效影響,以輸入失效為例,包括:(1)未收到輸入;(2)收到錯(cuò)誤輸入;(3)收到數(shù)據(jù)輕微超差;(4)收到數(shù)據(jù)中度超差等。因此在實(shí)際工作中存在以下問(wèn)題:(1)僅是對(duì)軟件失效影響的模式描述,缺少相關(guān)的失效原因的模式描述,因此對(duì)于軟件開(kāi)發(fā)人員與測(cè)試人員來(lái)說(shuō),還需要更多的工作經(jīng)驗(yàn)與項(xiàng)目背景去進(jìn)行分析以發(fā)現(xiàn)軟件失效。(2)難以滿足特定領(lǐng)域的軟件失效的預(yù)測(cè)與測(cè)試工作。同時(shí)隨著軟件規(guī)模與軟件復(fù)雜度的增加,單個(gè)項(xiàng)目的軟件失效數(shù)目劇增,傳統(tǒng)的利用人工方式總結(jié)失效模式存在工作效率低、過(guò)程繁瑣及受到專業(yè)技能限制等問(wèn)題。
因此,為了能夠高效及準(zhǔn)確地預(yù)測(cè)和發(fā)現(xiàn)實(shí)際軟件項(xiàng)目中的軟件失效,本文利用“失效原因”和“失效影響”的組合來(lái)表示失效模式,增強(qiáng)對(duì)軟件失效模式的描述。并提出了一種軟件失效模式自動(dòng)生成方法。該方法面向目標(biāo)軟件在軟件開(kāi)發(fā)和測(cè)試階段發(fā)現(xiàn)的大量軟件失效的文本描述,利用建立的異常分類器對(duì)軟件失效進(jìn)行分類,并對(duì)分類后的文本描述進(jìn)行聚類分析,自動(dòng)抽取出失效影響和失效原因,最終構(gòu)建成更為完善的面向該目標(biāo)軟件領(lǐng)域的軟件失效模式庫(kù)。
本文組織結(jié)構(gòu)如下:第2章介紹相關(guān)工作;第3章介紹核心方法與相關(guān)算法;第4章介紹實(shí)驗(yàn)與分析;第5章是工作總結(jié)及未來(lái)工作的改進(jìn)方向。
本文涉及的相關(guān)工作包括文本信息挖掘在信息領(lǐng)域的應(yīng)用及軟件失效模式分析研究。
在計(jì)算機(jī)信息領(lǐng)域,文獻(xiàn)[4]綜述了文本挖掘技術(shù)中文本分類、摘要提取、主題檢測(cè)、搜索及文檔聚類的方法,并介紹了文本挖掘技術(shù)在電信、推薦系統(tǒng)、信息檢索、媒體等領(lǐng)域的應(yīng)用。文獻(xiàn)[5]綜述了在現(xiàn)階段擁有大量新的數(shù)據(jù)來(lái)源的情況下,可以通過(guò)文本挖掘方法開(kāi)展自動(dòng)化的數(shù)據(jù)匯總和分析工作,有利于知識(shí)庫(kù)的擴(kuò)展。文獻(xiàn)[6]針對(duì)網(wǎng)絡(luò)新聞的原始文本進(jìn)行預(yù)處理,使用文本挖掘技術(shù)自動(dòng)提取半結(jié)構(gòu)化信息,提出了欺詐和盜竊者的行為模式與屬性統(tǒng)計(jì),建立了危險(xiǎn)身份行為模型,用于阻止未來(lái)的危險(xiǎn)事件發(fā)生。文獻(xiàn)[7]應(yīng)用文本挖掘技術(shù)和潛在語(yǔ)義分析算法自動(dòng)提取海量歷史數(shù)據(jù)中的場(chǎng)景描述,并利用模糊關(guān)聯(lián)規(guī)則進(jìn)行場(chǎng)景分析。文獻(xiàn)[8]通過(guò)面向相關(guān)文獻(xiàn)的開(kāi)展文本挖掘工作自動(dòng)獲取了數(shù)據(jù)集用以提供分類器,以解決蛋白質(zhì)-蛋白質(zhì)相互作用的數(shù)據(jù)繁多和嘈雜的問(wèn)題。
在軟件失效研究領(lǐng)域,為解決軟件可靠性建模過(guò)程中所需要的不同歷史數(shù)據(jù)庫(kù)中的軟件的準(zhǔn)確失效時(shí)間,文獻(xiàn)[9]提出了一種文本挖掘方法構(gòu)建相應(yīng)的關(guān)鍵詞字典及建立分類器,用以自動(dòng)提取來(lái)自詳細(xì)描述系統(tǒng)維護(hù)活動(dòng)的工作單和停機(jī)數(shù)據(jù)記錄,進(jìn)而自動(dòng)識(shí)別工作單中的故障。文獻(xiàn)[10]針對(duì)測(cè)試人員發(fā)現(xiàn)的無(wú)效失效降低開(kāi)發(fā)效率的問(wèn)題,利用文本挖掘方法建立了無(wú)效失效分類器,并利用決策樹(shù)方法對(duì)新的無(wú)效失效進(jìn)行分類,以提高項(xiàng)目組的生產(chǎn)力。文獻(xiàn)[11]使用文本挖掘技術(shù)檢測(cè)惡意軟件的動(dòng)態(tài)行為并進(jìn)行量化分析,進(jìn)而建立檢測(cè)決策模型用以提高惡意軟件的檢測(cè)率。文獻(xiàn)[12]利用演進(jìn)樹(shù)的神經(jīng)網(wǎng)絡(luò)模型,將失效模式進(jìn)行聚類并可視化為樹(shù)形結(jié)構(gòu),并對(duì)失效模式進(jìn)行分組排序,更好地進(jìn)行失效模式影響分析。文獻(xiàn)[13]通過(guò)分析真實(shí)的操作系統(tǒng)失效,提出失效模式協(xié)議方法,用于發(fā)現(xiàn)不同工作場(chǎng)景下的呈現(xiàn)一致性的失效,以分析操作系統(tǒng)失效背后的機(jī)制。文獻(xiàn)[14]針對(duì)航空電子系統(tǒng)創(chuàng)建一個(gè)數(shù)據(jù)驅(qū)動(dòng)的反饋回路,分析來(lái)自飛行器的傳感器和儀器的時(shí)空數(shù)據(jù)流,進(jìn)而發(fā)現(xiàn)失效模型用于在可能的情況下糾正錯(cuò)誤的數(shù)據(jù)。
文本聚類是指將文本聚合為由若干個(gè)文本蔟組成的集合的過(guò)程,因?yàn)橥活惖奈谋揪哂泻艽蟮南嗨菩?,不同類文本具有一定的相異性。文本聚類主要包括兩個(gè)步驟:(1)對(duì)文本進(jìn)行預(yù)處理,將文本表示為計(jì)算機(jī)可以識(shí)別及處理的形式;(2)采用機(jī)器學(xué)習(xí)中的相關(guān)算法對(duì)形式化的文本進(jìn)行聚類分析。K-means是典型的基于距離的聚類算法,采用距離作為相似性的評(píng)價(jià)指標(biāo),即兩個(gè)對(duì)象的距離越近其相似度就越大。
基于知網(wǎng)的詞語(yǔ)語(yǔ)義相似度計(jì)算是利用知網(wǎng)中義原之間的關(guān)系進(jìn)行語(yǔ)義計(jì)算及推理[15]。該方法可以將兩個(gè)語(yǔ)義表達(dá)式的整體相似度分解成一些義原對(duì)的相似度的組合,進(jìn)而根據(jù)上下位關(guān)系得到語(yǔ)義距離并進(jìn)行轉(zhuǎn)換。
為了更好地表示軟件失效模式,本文提出利用失效原因(failure cause,F(xiàn)C)和失效影響(failure effect,F(xiàn)E)一起描述軟件失效模式。其中失效原因指整個(gè)系統(tǒng)環(huán)境中導(dǎo)致產(chǎn)生某個(gè)特定失效模式的基本原因,包括外部設(shè)備環(huán)境、軟件系統(tǒng)的輸入和輸出、系統(tǒng)邏輯設(shè)計(jì)及程序運(yùn)行等多個(gè)方面。失效影響指某個(gè)失效模式對(duì)一個(gè)系統(tǒng)中操作、功能或狀態(tài)所造成的一系列結(jié)果。失效影響可以分為局部影響、對(duì)上一層系統(tǒng)的影響以及對(duì)整個(gè)系統(tǒng)的影響[16]。
領(lǐng)域內(nèi)的軟件失效數(shù)據(jù)更多的是來(lái)源于多年來(lái)軟件開(kāi)發(fā)團(tuán)隊(duì)和測(cè)試團(tuán)隊(duì)在實(shí)際工作中所積累的豐富的失效信息。
這些軟件失效信息不僅包含一些數(shù)字信息,如報(bào)告日期、被測(cè)版本信息等,更重要的是有關(guān)失效的文本描述。這些失效文本描述具有以下特點(diǎn):
(1)失效描述短小。通常有關(guān)失效的文本描述具有較少的字?jǐn)?shù),一般在150字內(nèi),是典型的短文本。
(2)有較少的語(yǔ)法錯(cuò)誤和錯(cuò)別字。與微博或微信朋友圈隨意發(fā)布不同,失效描述一般都經(jīng)過(guò)測(cè)試人員認(rèn)真編寫(xiě),且有的失效描述經(jīng)過(guò)開(kāi)發(fā)人員與測(cè)試人員多次探討,因此軟件失效的描述一般相對(duì)準(zhǔn)確,不存在語(yǔ)法錯(cuò)誤。
(3)語(yǔ)義專業(yè)化。軟件失效都是針對(duì)特定被測(cè)系統(tǒng)的描述,一般使用的詞匯都是軟件測(cè)試領(lǐng)域的專業(yè)詞匯,且由于軟件失效描述的專業(yè)性,其描述的軟件失效一般無(wú)歧義性。
(4)語(yǔ)義完整性。大多數(shù)短文本具有語(yǔ)義碎片化的特點(diǎn),但是軟件失效描述文本卻與之不同。一般一條軟件失效的描述是針對(duì)一個(gè)軟件失效的情況進(jìn)行詳細(xì)說(shuō)明。雖然字?jǐn)?shù)較少,但通常包含一個(gè)完整的主題即一個(gè)軟件失效,且清晰明確地表達(dá)了失效的情況。
(5)結(jié)構(gòu)統(tǒng)一性。在軟件失效描述文本的前部一般是對(duì)軟件操作的描述,即失效原因的描述,后部一般是失效影響的描述,同時(shí)文本中間會(huì)有明確的標(biāo)點(diǎn)作為分隔符。
正是由于軟件失效的文本描述具有以上特點(diǎn),使得利用文本挖掘技術(shù)與機(jī)器學(xué)習(xí)算法用于軟件失效模式的自動(dòng)提取存在可行性。
軟件失效模式自動(dòng)生成是將短文本聚類分析技術(shù)應(yīng)用于軟件失效的描述分析中。主要的關(guān)鍵核心工作包括領(lǐng)域字典的構(gòu)建和面向失效文本描述特性的聚類算法改進(jìn)。其工作流程如圖1所示。
3.2.1 軟件失效分類方法
不同類型的軟件在發(fā)生失效的時(shí)候,所表現(xiàn)出的異常情況也是不同的,其失效的文本描述內(nèi)容也必然有所區(qū)別,因此為了提高后續(xù)失效模式聚類的準(zhǔn)確性及減少聚類過(guò)程中的離群點(diǎn),需要首先將軟件失效按照發(fā)生異常的情況進(jìn)行分類。
步驟1軟件失效文本描述的提取。軟件失效的文本描述一般為結(jié)構(gòu)化或半結(jié)構(gòu)化信息,其中保存在管理工具(如Bugzilla、Mantis或其他缺陷系統(tǒng))中的失效文本描述為結(jié)構(gòu)化信息,可以通過(guò)數(shù)據(jù)庫(kù)直接導(dǎo)出;以軟件問(wèn)題報(bào)告單(如第三方測(cè)評(píng)中心提交的成果)等文檔形式保存的因其一般都根據(jù)文檔表格模板進(jìn)行編寫(xiě)故而為半結(jié)構(gòu)化信息,這些軟件失效的文本描述可以通過(guò)腳本語(yǔ)言進(jìn)行批量獲取。在提取過(guò)程中,需要對(duì)數(shù)據(jù)進(jìn)行初步清洗,如去除失效文本描述為空,失效文本描述小于10個(gè)漢字,非文本格式的文件,編碼異常數(shù)據(jù)等。將獲取的軟件失效文本保存在數(shù)據(jù)庫(kù)中,為后續(xù)的失效模式自動(dòng)生成做準(zhǔn)備。
Fig.1 Software failure mode automatic generation method圖1 軟件失效模式自動(dòng)生成方法
步驟2軟件異常分類器的建立。軟件失效的異常分類可以參考IEEE Std 610.12[1]和GJB/Z 1391[3]提供的異常分類并結(jié)合目標(biāo)軟件的特性進(jìn)行裁剪,建立適應(yīng)于該目標(biāo)軟件的異常分類。
IEEE提供的9種異常分類如下:
(1)操作系統(tǒng)掛起;
(2)程序掛起;
(3)程序失??;
(4)輸入問(wèn)題;
(5)輸出問(wèn)題;
(6)未達(dá)到要求的性能;
(7)發(fā)現(xiàn)的整個(gè)產(chǎn)品失??;
(8)系統(tǒng)錯(cuò)誤信息;
(9)其他。
GJB/Z 1391提供的5種異常分類如下:
(1)輸入失效;
(2)輸出失效;
(3)程序失效;
(4)未滿足功能及性能要求失效;
(5)其他。
依據(jù)以上分類的詳細(xì)說(shuō)明,針對(duì)每一種軟件異常構(gòu)建其對(duì)應(yīng)的異常分類字典Dic.Abnormaln,其中n表示異常分類的數(shù)量。同時(shí)可以根據(jù)目標(biāo)軟件項(xiàng)目的歷史失效,進(jìn)行相應(yīng)的補(bǔ)充完善工作,構(gòu)建更加全面的異常分類字典Dic.Abnormaln。由于不同的失效原因可能會(huì)導(dǎo)致相同的失效影響,因此利用詞語(yǔ)組合的形式構(gòu)建異常字典,用以區(qū)分不同的異常分類情況。例如“輸入”+“異?!睘檩斎胧У漠惓7诸愖值?Dic.Abnormal1;“程序”+“異常”為程序失效的異常分類字典Dic.Abnormal3。最后利用多個(gè)異常分類字典建立一個(gè)決策樹(shù)分類器。
步驟3軟件失效的異常分類。將每一個(gè)軟件失效文本描述放入到異常分類器中進(jìn)行軟件異常分類。由于建立的分類器是基于失效影響的描述,因此在分類中需要加入失效文本描述中關(guān)鍵詞位置的權(quán)重a,可以得出文本后部的系數(shù)較高。通過(guò)加入該權(quán)重的計(jì)算,可以確保每一個(gè)失效文本描述最多屬于一個(gè)軟件異常。
相關(guān)算法如下:
輸入:待分類的失效文本描述,期望閾值M,字典Dic.Abnormaln,文本位置權(quán)重系數(shù)a。
(1)失效文本描述放入軟件異常決策樹(shù)分類器中,并考慮權(quán)重系數(shù)a進(jìn)行計(jì)算并分類。
(2)若低于M,則認(rèn)為該失效不屬于任何異常情況,則丟棄該失效文本描述;若不低于M,則將該失效劃入到相應(yīng)的軟件異常中。
輸出:失效文本描述所屬失效類別。
3.2.2 失效文本聚類分析方法
在對(duì)軟件失效文本進(jìn)行異常分類后,對(duì)每一個(gè)異常分類下的失效文本描述進(jìn)行聚類分析。
步驟1失效文本分詞。軟件失效文本描述具有語(yǔ)義專業(yè)化的特點(diǎn),為減少文本分析過(guò)程中中文分詞不準(zhǔn)確的問(wèn)題,本文利用搜狗輸入法提供的計(jì)算機(jī)領(lǐng)域詞包建立計(jì)算機(jī)領(lǐng)域關(guān)鍵詞詞典Dic.Computer,并加入到公開(kāi)的NLPIR分詞系統(tǒng)中。利用該改進(jìn)的NLPIR分析系統(tǒng)對(duì)失效文本描述進(jìn)行分詞,并保存到數(shù)據(jù)庫(kù)中。
步驟2文本預(yù)處理。由于軟件失效文本描述相對(duì)短小,內(nèi)容精煉且有較少的語(yǔ)法錯(cuò)誤和錯(cuò)別字,因此在預(yù)處理過(guò)程中不需要進(jìn)行去掉低頻詞、替換奇異詞等數(shù)據(jù)處理步驟。停用詞過(guò)濾是文本預(yù)處理的關(guān)鍵步驟,本文采用哈工大公開(kāi)發(fā)表的停用詞表作為基礎(chǔ)。由于在失效文本描述中,時(shí)間副詞(如總是、同時(shí)等)、范圍副詞(都、只、一起等)及否定副詞(沒(méi)有、無(wú)法、不、不能等)對(duì)失效原因或失效影響的含義有重要影響,因此對(duì)停用詞表進(jìn)行改進(jìn),將部分副詞從停用詞表中去除。之后利用改進(jìn)后的停用詞表對(duì)分詞后失效文本進(jìn)行處理。
步驟3文本聚類。針對(duì)每一種異常下的失效文本集合,對(duì)經(jīng)過(guò)預(yù)處理后的失效文本進(jìn)行K-means聚類。本文采用基于知網(wǎng)的詞語(yǔ)語(yǔ)義相似度計(jì)算方法得出文本相似度,用以表示聚類過(guò)程中的距離。
3.2.3 類簇標(biāo)簽提取方法
對(duì)每一個(gè)類簇進(jìn)行標(biāo)簽提取工作,標(biāo)簽提取的目的是為了后續(xù)的軟件失效原因的抽取。利用代表性樣本作為每一個(gè)類簇的標(biāo)簽。
步驟1詞計(jì)算。將一個(gè)類簇內(nèi)所有樣本的詞語(yǔ)合并成一個(gè)集合,利用文檔頻率和詞性等屬性對(duì)集合內(nèi)的每一個(gè)詞語(yǔ)進(jìn)行計(jì)算。其中文檔頻率指給定詞匯的文本描述個(gè)數(shù),文檔頻率較高的詞一般可以很好地體現(xiàn)該類簇的特征;詞性,名詞和動(dòng)詞可以較好地表達(dá)主題,因此會(huì)設(shè)定較高的分值。之后對(duì)每一個(gè)失效文本中的詞語(yǔ)進(jìn)行詞語(yǔ)位置權(quán)重計(jì)算。根據(jù)對(duì)軟件失效文本描述的分析,可以發(fā)現(xiàn)絕大部分描述失效原因的文本位于整個(gè)文本的前半部分,由于類簇標(biāo)簽提取的目的是為了軟件失效原因的抽取,因此對(duì)于前面部分的詞語(yǔ)設(shè)定較高的分值。
步驟2代表性文本提取。將步驟1計(jì)算得出的類簇內(nèi)每個(gè)詞語(yǔ)的分值作為得分初始值。利用前文建立的計(jì)算機(jī)領(lǐng)域關(guān)鍵詞字典Dic.Computer,為其建立相應(yīng)的初始分值,用于對(duì)每個(gè)文本描述中出現(xiàn)Dic.Computer中的詞語(yǔ)進(jìn)行額外加分。之后,將每一個(gè)文本的特征詞集合中所有詞語(yǔ)得分的算數(shù)平均值進(jìn)行排序,選取初始失效文本描述長(zhǎng)度大于20個(gè)字且分值排序最高的前若干個(gè)文本作為該類簇的代表性文本。
3.2.4 軟件失效模式自動(dòng)生成方法
本文定義的失效模式是由“失效原因”和“失效影響”組合而成。同時(shí)軟件失效文本描述具有語(yǔ)義完整與結(jié)構(gòu)統(tǒng)一的特性,這為分別抽取“失效原因”和“失效影響”提供了可行途徑。
步驟1軟件失效影響的抽取。異常分類字典Dic.Abnormaln是失效影響分析的關(guān)鍵詞組合的集合,由于集合中存在語(yǔ)義相近的關(guān)鍵詞組合,因此需要進(jìn)行語(yǔ)義相似度計(jì)算,設(shè)定相似度閾值M并合并相似度較高的關(guān)鍵詞組合。合并后的關(guān)鍵詞組合即作為失效影響集合并用Set(FEm)n表示,即第n個(gè)異常分類中共有m個(gè)失效影響。
步驟2軟件失效原因的抽取。利用3.2.3小節(jié)中獲取的類簇標(biāo)簽,即前若干個(gè)代表性文本開(kāi)展軟件失效原因的抽取。設(shè)定相似度閾值M,對(duì)代表性文本之間進(jìn)行相似度計(jì)算,相關(guān)算法依舊選擇基于知網(wǎng)的詞語(yǔ)語(yǔ)義相似度計(jì)算方法。在迭代完成相似度大于M的文本合并后,輸出剩余的合并后的文本集合,作為該類簇的失效原因的文本集合。最后將該異常分類下所有類簇進(jìn)行以上計(jì)算后的組合文本進(jìn)行匯總,則匯總后的集合即可作為軟件失效原因集合并用Set(FCi)n表示,即第n個(gè)異常分類中共有i個(gè)失效原因。
步驟3軟件失效模式自動(dòng)生成。計(jì)算Set(FEm)n和Set(FCi)n的笛卡爾積,并將得出的集合記為Set(FCi*FEm)n。給定相似度閾值M,并依次將該類簇內(nèi)的失效文本與Set(FCi*FEm)n進(jìn)行相似度比較,當(dāng)大于M時(shí),即可得到第n個(gè)異常下的一個(gè)軟件失效模式,其失效模式的文本描述由FCj和FEK組成,其中0<j≤i,0<k≤m。
實(shí)驗(yàn)數(shù)據(jù)來(lái)源于國(guó)家“核高基”科技重大專項(xiàng)課題中實(shí)際測(cè)試工作中的軟件失效描述。測(cè)試工作持續(xù)3年以上且測(cè)試內(nèi)容很廣,軟件失效數(shù)據(jù)對(duì)該目標(biāo)軟件具有很強(qiáng)的代表性。
從缺陷管理工具M(jìn)antis中導(dǎo)出所有的軟件失效描述,并去除垃圾數(shù)據(jù),得到6 739條失效文本描述。
考慮該軟件的特性和使用范圍,建立6種軟件異常用于軟件失效的異常分類,分別是輸入失效、輸出失效、程序失效、未滿足功能及性能要求、用戶體驗(yàn)不佳及其他。同時(shí)相應(yīng)地構(gòu)建6個(gè)異常字典Dic.Abnormaln作為軟件異常分類器,每個(gè)異常分類字典包括的關(guān)鍵詞組合數(shù)目如表1所示。并以未滿足功能及性能要求的異常關(guān)鍵字字典Dic.Abnormal4為例進(jìn)行說(shuō)明,如表2所示。
將6 739條失效文本放入到軟件異常分類器中,同時(shí)給定閾值M=5,對(duì)于位置權(quán)重a進(jìn)行如下設(shè)定:當(dāng)關(guān)鍵詞處于文本的前1/3時(shí),a=0.7;當(dāng)關(guān)鍵詞處于文本的后1/3時(shí),a=2;其余部分a=1。進(jìn)行分類計(jì)算后,共有6 187條軟件失效被分入到6種異常中,其余545條軟件失效由于低于閾值,不屬于任何異常。每類軟件異常中的軟件失效文本描述數(shù)量如表3所示。
首先利用改進(jìn)的NLPIR分詞系統(tǒng)對(duì)每類異常中的失效文本描述進(jìn)行分詞,之后利用改進(jìn)的停用詞表對(duì)分詞后的文本進(jìn)行預(yù)處理,將經(jīng)過(guò)處理后的文本信息進(jìn)行保存。
Table 1 Abnormal classification dictionary statistics表1 異常分類字典的統(tǒng)計(jì)信息
Table 2 Category 4 exclusive category dictionary content(part)表2 第四類異常分類字典(部分)
Table 3 Abnormal classification statistics of software failure text表3 軟件失效文本的異常分類統(tǒng)計(jì)
利用基于知網(wǎng)的詞語(yǔ)語(yǔ)義對(duì)相似度進(jìn)行計(jì)算,同時(shí)經(jīng)過(guò)多次實(shí)驗(yàn),將失效文本數(shù)/30作為每類異常的類簇個(gè)數(shù),開(kāi)始對(duì)每類異常中的失效文本開(kāi)展K-means聚類分析。
后續(xù)均以第四類異常為例,其中聚類個(gè)數(shù)設(shè)定為80個(gè)(2 419/30≈80),統(tǒng)計(jì)每個(gè)類簇的樣本數(shù)量如圖2所示。其中失效文本的樣本總和在20到40區(qū)間內(nèi)的類簇個(gè)數(shù)最多,達(dá)到了44個(gè),樣本數(shù)小于40個(gè)類簇個(gè)數(shù)為64個(gè),占總類簇個(gè)數(shù)的80%。
對(duì)每個(gè)異常分類下的每個(gè)類簇內(nèi)進(jìn)行詞計(jì)算。其中對(duì)于詞語(yǔ)位置權(quán)重a進(jìn)行如下設(shè)定:當(dāng)關(guān)鍵詞處于文本的前1/3時(shí),a=2;當(dāng)關(guān)鍵詞處于文本的后1/3時(shí),a=0.7;其余部分a=1。
Fig.2 The number of failure text in cluster圖2 類簇中失效文本個(gè)數(shù)分布
同時(shí)給定計(jì)算機(jī)領(lǐng)域關(guān)鍵詞字典Dic.Computer內(nèi)詞語(yǔ)的額外值均為1,計(jì)算得出每一個(gè)失效文本的詞語(yǔ)的算數(shù)平均值。
以第四類異常為例,由于類簇內(nèi)樣本總數(shù)小于20的類簇占總類簇的25%,樣本總數(shù)小于40的類簇個(gè)數(shù)占總類簇的80%,同時(shí)類簇內(nèi)的文本有較高的相似度,因此選擇每個(gè)類簇內(nèi)排序最高的10個(gè)文本作為該類簇的代表性文本。以第四類簇內(nèi)的類簇22的部分代表性文本為例,如表4所示。
Table 4 Class 22 cluster representative text(part)表4 第22類簇代表性文本(部分)
利用基于知網(wǎng)的詞語(yǔ)語(yǔ)義相似度計(jì)算對(duì)異常分類字典Dic.Abnormaln內(nèi)的關(guān)鍵詞組合進(jìn)行合并,避免出現(xiàn)類似的失效影響。以表2為例,經(jīng)過(guò)相似度計(jì)算合并后的關(guān)鍵詞組合如表5所示。例如,表2中關(guān)鍵詞詞組“內(nèi)容-未漢化”和“菜單-未漢化”在計(jì)算相似度得分時(shí)較高,被合并成一個(gè)關(guān)鍵詞詞組“內(nèi)容-未漢化”。
經(jīng)過(guò)計(jì)算合并后的第四類異常的失效影響集合為Set(FE38)4,由162個(gè)關(guān)鍵詞詞組合并為38個(gè)關(guān)鍵詞詞組,即38個(gè)失效影響。
Table 5 The fourth class of abnormal dictionary after merger(part)表5 合并后的第四類異常字典(部分)
給定相似度閾值M為7,并對(duì)每個(gè)類簇內(nèi)選擇的排序前10的文本進(jìn)行相似度計(jì)算并合并,將合并后的文本集合作為該類簇的失效原因。將第四類異常分類下的80個(gè)類簇均完成相應(yīng)的類簇內(nèi)文本合并,合并后的集合記為Set(FC287)4,即第四類異常抽取出287個(gè)失效原因。
計(jì)算Set(FE38)4和Set(FC287)4的笛卡爾積,并記為Set(FC287*FE38)4。依次將第四類類簇的失效文本與Set(FC287*FE38)4進(jìn)行相似度計(jì)算,當(dāng)大于給定的閾值M=8時(shí),即可得到一個(gè)相應(yīng)的軟件失效,并利用失效原因和失效影響對(duì)失效模式進(jìn)行描述。自動(dòng)生成的部分第四類軟件失效模式如表6所示。
Table 6 Automatically generated failure mode(part)表6 自動(dòng)生成的失效模式(部分)
根據(jù)上述計(jì)算工作,可以得出第四類異常下的軟件失效模式172條。利用同樣的方法對(duì)其他異常下的文本進(jìn)行失效模式自動(dòng)生成工作,最后該實(shí)驗(yàn)生成軟件失效模式共計(jì)428條。
本文提出了利用“失效原因”和“失效影響”組合的形式對(duì)失效模式進(jìn)行詳細(xì)描述,為此提出了基于文本挖掘的軟件失效模式自動(dòng)生成方法。該失效模式的描述方式相比于現(xiàn)有的國(guó)內(nèi)外標(biāo)準(zhǔn),可以更好地幫助技術(shù)人員開(kāi)展目標(biāo)軟件的失效預(yù)防和發(fā)現(xiàn)等工作;同時(shí)可以解決傳統(tǒng)人工分析和總結(jié)失效模式中效率低下,需要專業(yè)經(jīng)驗(yàn)及過(guò)程繁瑣的問(wèn)題。但在實(shí)際工作中,對(duì)軟件失效文本描述的異常分類強(qiáng)烈依賴于依據(jù)異常分類字典Dic.Abnormaln構(gòu)建的分類器,因此為提高異常分類的準(zhǔn)確率和召回率,后期需要分析更多的失效影響數(shù)據(jù)不斷訓(xùn)練該分類器;同時(shí)軟件失效模式強(qiáng)烈依賴于發(fā)現(xiàn)的軟件失效的數(shù)量,失效文本描述的樣本越多,越能開(kāi)展聚類工作,也就越能準(zhǔn)確地抽取出失效模型,因此對(duì)于失效文本描述樣本數(shù)較少的軟件系統(tǒng),使用該方法具有一定的局限性。
未來(lái)的研究將在本文的基礎(chǔ)上,不僅對(duì)關(guān)鍵的失效文本進(jìn)行分析,而且擬將軟件失效中包含的其他信息,如被測(cè)對(duì)象、被測(cè)軟件行業(yè)專用詞匯、測(cè)試方法和失效嚴(yán)酷度等均作為有關(guān)信息加入到失效模式的分析中,提高失效文本聚類的準(zhǔn)確性,并最終提高目標(biāo)軟件的失效模式自動(dòng)生成的能力。