本發(fā)明涉及軟件系統(tǒng)故障分類(lèi)
技術(shù)領(lǐng)域:
,尤其涉及一種復(fù)雜軟件密集型系統(tǒng)的故障分類(lèi)研究的技術(shù)。
背景技術(shù):
:隨著計(jì)算機(jī)軟件以及互聯(lián)網(wǎng)技術(shù)飛速發(fā)展,軟件與其它軟件、系統(tǒng)、設(shè)備、傳感器、人的交互日益密切,因此出現(xiàn)了軟件密集型系統(tǒng)的概念。軟件密集型系統(tǒng)是指在系統(tǒng)的設(shè)計(jì)、構(gòu)建、部署與演化過(guò)程中,軟件起著核心作用的系統(tǒng),如而在美國(guó)國(guó)防部計(jì)劃中的全球信息網(wǎng)格(gig)、boeing777客機(jī)飛機(jī)信息管理系統(tǒng)(aims)等。復(fù)雜軟件密集型系統(tǒng)尤其是國(guó)防軍事領(lǐng)域的安全關(guān)鍵軟件系統(tǒng),一旦發(fā)生失效,將會(huì)造成不可估量的后果影響。復(fù)雜軟件密集型系統(tǒng)復(fù)雜度相對(duì)于傳統(tǒng)的軟件系統(tǒng),其面向的任務(wù)的多樣性系統(tǒng)、外部環(huán)境的易變性、設(shè)計(jì)部署的復(fù)雜性都達(dá)到了一個(gè)前所未有的程度。而且復(fù)雜軟件密集型系統(tǒng)由于其邏輯復(fù)雜性、邊界腐蝕性、長(zhǎng)壽性與失效常態(tài)性導(dǎo)致其出現(xiàn)與傳統(tǒng)軟件系統(tǒng)不同的故障類(lèi)型,如由于內(nèi)部模塊間的交互、傳播出現(xiàn)的涌現(xiàn)性故障、由于軟件與硬件或環(huán)境交互異常導(dǎo)致的交互性故障、由于長(zhǎng)期運(yùn)行過(guò)程中逐漸積累的因?yàn)椴煌莼呗约皠?dòng)態(tài)配置策略偏離軟件屬性約束而導(dǎo)致的演化性故障等。為認(rèn)識(shí)、管理、預(yù)測(cè)和消除復(fù)雜軟件密集型系統(tǒng)中的故障,對(duì)其故障進(jìn)行分類(lèi)是基礎(chǔ)但是重要的一步。發(fā)明人發(fā)現(xiàn)現(xiàn)有的軟件故障分類(lèi)技術(shù)存在如下問(wèn)題:現(xiàn)有對(duì)軟件故障的分類(lèi)方法是針對(duì)傳統(tǒng)的軟件系統(tǒng)提出的,并沒(méi)有考慮復(fù)雜軟件密集型系統(tǒng)的特性。如復(fù)雜軟件系統(tǒng)密集型系統(tǒng)對(duì)硬件或環(huán)境的交互越來(lái)越頻繁,系統(tǒng)中軟件與硬件或環(huán)境交互而產(chǎn)生的異常行為逐漸成為復(fù)雜軟件密集型系統(tǒng)失效的重要原因。到目前為止,還沒(méi)有一種從復(fù)雜軟件密集型系統(tǒng)各種新特性角度出發(fā)對(duì)其故障進(jìn)行分類(lèi)的方法。技術(shù)實(shí)現(xiàn)要素:本發(fā)明提供一種面向復(fù)雜軟件密集型系統(tǒng)故障分類(lèi)研究的技術(shù),考慮復(fù)雜軟件密集型系統(tǒng)的特征,使得故障描述信息更加精細(xì)充分,為后續(xù)對(duì)軟件故障進(jìn)行分析研究保留足夠清晰的信息。為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下步驟。步驟1,獲取故障報(bào)告或者故障管理中心庫(kù)中的故障信息,對(duì)得到的不同格式故障報(bào)告信息進(jìn)行預(yù)處理,從不同形式的原始故障報(bào)告中提取出故障分類(lèi)所需的信息。故障f預(yù)處理后具體包括:故障名稱(chēng)name,故障發(fā)生的時(shí)間信息time,故障發(fā)生的位置location,故障描述信息description等。因此經(jīng)過(guò)預(yù)處理的故障f可以表示為f(name,time,location,description)。后續(xù)步驟,利用故障f中的相關(guān)信息從生命周期l、故障影響e、故障強(qiáng)度s、故障類(lèi)別t、故障表現(xiàn)形式c共5個(gè)屬性對(duì)故障進(jìn)行描述,這個(gè)5個(gè)屬性共同構(gòu)成該故障的分類(lèi)描述。即可用向量vf=<k,e,s,t,c>描述出故障f的分類(lèi)。分類(lèi)過(guò)程即為確定向量各個(gè)屬性值的過(guò)程。步驟2,將得到的故障發(fā)生的時(shí)間信息time與軟件生命周期劃分描述文件進(jìn)行模糊匹配,標(biāo)識(shí)待分類(lèi)故障所處的軟件生命周期l。步驟3,根據(jù)故障發(fā)生的位置location可以確定故障影響的范圍,確定是“內(nèi)部影響”還是“外部影響”。結(jié)合故障描述信息description,進(jìn)一步確定故障范圍e。步驟4,將故障按照強(qiáng)度劃分為5個(gè)級(jí)別,即i級(jí)、ii級(jí)、iii級(jí)、iv級(jí)、v級(jí)。故障強(qiáng)度越大表示導(dǎo)致軟件失效的可能性越大并且失效導(dǎo)致的后果也越嚴(yán)重,其中i級(jí)表示故障強(qiáng)度最低。故障強(qiáng)度的劃分需要結(jié)合軟件系統(tǒng)的設(shè)計(jì)文檔、需求描述文檔等,甚至需要通過(guò)做仿真實(shí)驗(yàn)等手段來(lái)確定故障強(qiáng)度s。當(dāng)然,工程上一種簡(jiǎn)化的做法可以是從歷史數(shù)據(jù),根據(jù)相似故障類(lèi)型失效可能性來(lái)確定當(dāng)前故障強(qiáng)度。步驟5,根據(jù)故障描述信息description,根據(jù)我們歸納總結(jié)的對(duì)于復(fù)雜軟件密集型系統(tǒng)常見(jiàn)的故障類(lèi)型來(lái)對(duì)標(biāo)識(shí)故障類(lèi)別t。步驟6,根據(jù)故障描述信息description,利用文本數(shù)據(jù)機(jī)器學(xué)習(xí)算法進(jìn)行故障表現(xiàn)形式c的確定。本發(fā)明的優(yōu)點(diǎn)和積極效果在于。(1)根據(jù)復(fù)雜軟件密集型系統(tǒng)區(qū)別于傳統(tǒng)的軟件系統(tǒng)的新特性如邏輯復(fù)雜、邊界腐蝕等,本發(fā)明采用多維度劃分方法,通過(guò)生命周期、故障類(lèi)別等5個(gè)維度對(duì)故障進(jìn)行劃分,從而使得軟件密集型系統(tǒng)故障類(lèi)別劃分更加細(xì)致,對(duì)于復(fù)雜軟件密集型系統(tǒng)的研究如復(fù)雜軟件密集型系統(tǒng)故障注入研究或者是失效機(jī)理研究等具有重要意義和幫助。(2)本發(fā)明采用人工判斷加機(jī)器自動(dòng)化標(biāo)識(shí)結(jié)合的方式來(lái)確定故障分類(lèi)中各個(gè)分類(lèi)屬性值,在面對(duì)復(fù)雜軟件密集系統(tǒng)大規(guī)模的故障信息分類(lèi)時(shí)在效率方面有一定的優(yōu)勢(shì)。隨著積累的分類(lèi)數(shù)據(jù)的增加,通過(guò)機(jī)器學(xué)習(xí)方法逐步提高自動(dòng)化對(duì)故障分類(lèi)的精確度,人工參與的比例可以越來(lái)越低,從而更加提高該方法的自動(dòng)化程度。附圖說(shuō)明為了更加清楚地說(shuō)明本發(fā)明實(shí)施例或技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹。圖1為本發(fā)明軟件故障分類(lèi)方法的流程圖。圖2為故障表現(xiàn)形式數(shù)據(jù)訓(xùn)練器獲取流程。圖3為根據(jù)訓(xùn)練器故障表現(xiàn)形式獲取流程。具體實(shí)施方式為了便于本領(lǐng)域普通技術(shù)人員理解和實(shí)施本發(fā)明所提出的方法,下面通過(guò)具體實(shí)施方式對(duì)本發(fā)明做進(jìn)一步的詳細(xì)和深入描述。內(nèi)存泄漏(memoryleak,以下簡(jiǎn)寫(xiě)為ml)是常見(jiàn)的一種故障。本方面以一個(gè)ml故障為例子進(jìn)行方法說(shuō)明。其中該ml故障用自然語(yǔ)言描述如下。第82號(hào)缺陷(編號(hào)#82),部署到實(shí)際環(huán)境,系統(tǒng)持續(xù)運(yùn)行一段時(shí)候后,軟件高精度計(jì)算模塊占用cpu資源越來(lái)越多。步驟1:對(duì)該用自然語(yǔ)言描述的故障進(jìn)行預(yù)處理分析后,得到f(name,time,location,description)=f(82,“系統(tǒng)持續(xù)運(yùn)行一段時(shí)間后”,“軟件高精度計(jì)算模塊”,“占用cpu資源越來(lái)越多”)。步驟2:利用提現(xiàn)設(shè)定好的軟件生命周期劃分描述文件與故障發(fā)生時(shí)間進(jìn)行模糊匹配。軟件生命周期劃分描述文件如表1所示。表1軟件生命周期劃分結(jié)果。為實(shí)現(xiàn)該過(guò)程的自動(dòng)化在模糊匹配之前,需要對(duì)故障f中的故障發(fā)生時(shí)間信息time的描述語(yǔ)句進(jìn)行詞法分割,該分割過(guò)程可以借助詞法分析器如lex或flex等進(jìn)行。如本例中time的描述語(yǔ)句為“系統(tǒng)持續(xù)運(yùn)行一段時(shí)間后”,該字符流進(jìn)行入詞法分析器之后產(chǎn)生一系列token流“系統(tǒng)”、“持續(xù)”,“運(yùn)行”,“一”,“斷”,“時(shí)間”、“后”。將這些生成的token流和表1中關(guān)鍵字/搜索規(guī)則(keyword)進(jìn)行模糊匹配,其中關(guān)機(jī)子/搜索規(guī)則中“&”表示“與”的關(guān)系。匹配過(guò)程如下所示:for(token流中的字符串tokenstring)for(keyword中的字符串keystring)if(模糊匹配(tokenstring,keystring)==true){記錄下keyword對(duì)應(yīng)的軟件生命周期階段;}匹配結(jié)束之后,對(duì)模糊匹配記錄的結(jié)果對(duì)匹配結(jié)果排序,匹配命中次數(shù)最高的軟件生命周期作為該故障對(duì)應(yīng)的軟件生命周期。在本例中,“系統(tǒng)持續(xù)運(yùn)行一段時(shí)間”對(duì)應(yīng)于運(yùn)行維護(hù)階段的平穩(wěn)階段。步驟3,根據(jù)故障發(fā)生位置信息location可以故障影響范圍。影響范圍涉及到軟件設(shè)計(jì)、需求確定等內(nèi)容的理解,因此在該步驟需要和系統(tǒng)設(shè)計(jì)人員、分析人員、測(cè)試人員等進(jìn)行交流合作才能較為準(zhǔn)備地確定故障的影響范圍。表2提供了一個(gè)劃分結(jié)果作為內(nèi)置的參考模板。表2故障影響劃分結(jié)果。對(duì)故障影響的劃分按照最嚴(yán)重的情況確定。其中內(nèi)部影響的嚴(yán)重程度排序?yàn)?。se(軟件單節(jié)點(diǎn)影響)<le(軟件局部影響)<se(軟件系統(tǒng)級(jí)影響)如一個(gè)故障導(dǎo)致軟件系統(tǒng)級(jí)的失效,這個(gè)故障當(dāng)然會(huì)影響到局部范圍,但是我們按照最嚴(yán)重的情況,即確定軟件系統(tǒng)級(jí)影響為該故障的影響。外部影響更多是從系統(tǒng)級(jí)進(jìn)行考慮,像對(duì)周?chē)h(huán)境的影響是通過(guò)軟件密集型系統(tǒng)整體對(duì)外的作用產(chǎn)生。在本例中,經(jīng)過(guò)對(duì)軟件整體設(shè)計(jì)的理解,以及與相關(guān)人員的交流最終確定為“內(nèi)部影響”中的“軟件系統(tǒng)級(jí)影響”。即故障的e值為“ie(內(nèi)部影響)/se(軟件系統(tǒng)級(jí)影響)”。步驟4,對(duì)故障劃分強(qiáng)度等級(jí),可以利用專(zhuān)家打分法、仿真實(shí)驗(yàn)法等方法來(lái)確定該故障導(dǎo)致軟件失效的可能性。通常還會(huì)參考相似系統(tǒng)的歷史數(shù)據(jù)來(lái)得出故障強(qiáng)度結(jié)論。故障強(qiáng)度s按照以下公式進(jìn)行計(jì)算。s=p*e其中,p表示該故障失效的概率,e表示失效對(duì)系統(tǒng)的影響。失效對(duì)系統(tǒng)的影響以打分的形式給出,如表3所示。表3失效對(duì)系統(tǒng)影響打分表。在本例中,我們可以參考以往類(lèi)似的歷史數(shù)據(jù)發(fā)現(xiàn)當(dāng)軟件占用cpu資源越來(lái)越多時(shí)會(huì)逐漸導(dǎo)致整個(gè)軟件系統(tǒng)運(yùn)行效率下降,當(dāng)下降到一定程度時(shí),整個(gè)系統(tǒng)會(huì)變得不穩(wěn)定,出現(xiàn)嚴(yán)重的系統(tǒng)級(jí)故障。經(jīng)過(guò)計(jì)算分析,該故障發(fā)生的概率達(dá)到0.2以上,計(jì)算失效強(qiáng)度之后,結(jié)合整個(gè)系統(tǒng)故障失效強(qiáng)度分布情況,因此我們將該故障定為v級(jí)故障。即本例的故障強(qiáng)度s值為v。步驟5,根據(jù)故障描述信息對(duì)該故障類(lèi)別進(jìn)行標(biāo)識(shí)。表4為故障類(lèi)別的劃分結(jié)果,該劃分既考慮了復(fù)雜軟件密集型系統(tǒng)中具有和傳統(tǒng)軟件相同的故障特性,如“邏輯故障”,也考慮了復(fù)雜軟件密集型系統(tǒng)新的特性,如“涌現(xiàn)型故障”。表4故障類(lèi)別劃分結(jié)果。編號(hào)類(lèi)別名稱(chēng)編號(hào)類(lèi)別名稱(chēng)1功能故障8數(shù)據(jù)使用錯(cuò)誤2性能故障9編程規(guī)范問(wèn)題3接口故障10可維護(hù)性問(wèn)題4控制流故障11代碼版本問(wèn)題5數(shù)據(jù)流故障12語(yǔ)法缺陷6一致性故障13涌現(xiàn)型故障7邏輯故障14隨機(jī)故障這14種是歸納的對(duì)于復(fù)雜軟件密集型系統(tǒng)常見(jiàn)的故障類(lèi)型,對(duì)于特定的項(xiàng)目和研究可以結(jié)合特定的對(duì)象添加擴(kuò)展自定義的故障類(lèi)型。在本例中,確定故障為“性能故障”。步驟6,根據(jù)故障描述信息description確定故障表現(xiàn)形式c,可以利用文本數(shù)據(jù)機(jī)器學(xué)習(xí)算法。即將故障描述信息文本處理后利用訓(xùn)練得到的分類(lèi)器將其劃分到特定種類(lèi)中。我們將故障表現(xiàn)形式劃分為5類(lèi),如表5所示。表5故障表現(xiàn)形式劃分結(jié)果。編號(hào)按照故障表現(xiàn)形式分類(lèi)說(shuō)明1數(shù)值計(jì)算型故障表現(xiàn)為數(shù)值計(jì)算方面的問(wèn)題2數(shù)值存儲(chǔ)型故障表現(xiàn)為數(shù)值存儲(chǔ)方面的問(wèn)題3控制型故障表現(xiàn)為控制指令方面的問(wèn)題4傳遞調(diào)用型錯(cuò)誤表現(xiàn)為參數(shù)傳遞、調(diào)用的問(wèn)題5累積型故障在演化維護(hù)階段,隨著系統(tǒng)運(yùn)行積累導(dǎo)致的問(wèn)題分類(lèi)器的獲得是重要的一步。我們選取監(jiān)督學(xué)習(xí)方法,先對(duì)部分故障描述信息進(jìn)行人工判斷得到對(duì)應(yīng)的故障表現(xiàn)形式。然后將得到的結(jié)果作為訓(xùn)練集,訓(xùn)練得到分類(lèi)器。其流程如圖2所示。因?yàn)槊總€(gè)系統(tǒng)具有的特性不相同。因此,對(duì)于不同系統(tǒng),需要分別進(jìn)行分類(lèi)器訓(xùn)練。得到訓(xùn)練器之后,將每個(gè)待分類(lèi)故障的description按照?qǐng)D3所示流程得到表現(xiàn)形式分類(lèi)結(jié)果。本例中的故障確定為累積型故障。從例子中可以看,應(yīng)用我們的對(duì)復(fù)雜軟件密集型系統(tǒng)的故障分類(lèi)方法可以快速并且從5個(gè)維度細(xì)致地對(duì)故障的屬性進(jìn)行確定,而分類(lèi)時(shí)利用我們提出的針對(duì)各個(gè)步驟中分類(lèi)結(jié)果(見(jiàn)表格)可以快速輔助對(duì)故障分類(lèi)。當(dāng)前第1頁(yè)12