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