本發(fā)明提供一種多層次軟件故障診斷專家系統(tǒng)的構(gòu)建方法,它涉及一種多層次軟件故障診斷專家系統(tǒng)的實(shí)現(xiàn),屬于軟件可靠性、軟件故障診斷領(lǐng)域。
背景技術(shù):
專家系統(tǒng)是一門應(yīng)用型邊緣學(xué)科,其理論基礎(chǔ)涉及多門學(xué)科,如現(xiàn)代控制理論、計(jì)算機(jī)工程、數(shù)理統(tǒng)計(jì)等,它能夠在診斷對(duì)象發(fā)生故障時(shí),根據(jù)對(duì)象中的各種變量(可測(cè)的或不可測(cè)的)及其中部分變量表現(xiàn)出的與正常狀態(tài)不同特性,找出故障缺陷的特征描述,并根據(jù)缺陷進(jìn)行分類,進(jìn)一步實(shí)現(xiàn)故障的檢查與預(yù)測(cè)。
由于軟件變得越來(lái)越復(fù)雜,一個(gè)軟件故障可能是由多個(gè)原因共同組合引發(fā)的,而故障表現(xiàn)出的問(wèn)題也可能是多個(gè)現(xiàn)象共同造成的。對(duì)于這種類型故障,目前的故障診斷專家系統(tǒng)并不能進(jìn)行有效解決。針對(duì)這一狀況,我們將提出一種包含淺層與深層的多層次診斷專家系統(tǒng)的構(gòu)建方法,在該系統(tǒng)中,對(duì)于軟件中發(fā)生過(guò)的或與之相似的組合故障,可利用基于失效模式與影響分析形式的案例推理技術(shù)(即““F-CBR”)獲取故障診斷信息,完成淺層故障診斷。對(duì)于軟件中未知的、復(fù)雜的、隨機(jī)發(fā)生的組合故障,可采用貝葉斯網(wǎng)絡(luò)獲取推理數(shù)據(jù),完成深層故障診斷。利用這一系統(tǒng)不僅可以有效地追溯軟件故障的來(lái)源,還可以對(duì)故障進(jìn)行分析,得到準(zhǔn)確的診斷結(jié)果。
該故障診斷專家系統(tǒng)分別從淺層與深層對(duì)故障進(jìn)行分析推理,融合故障診斷、故障分析、故障隔離與故障處理等相關(guān)理論、方法和技術(shù)進(jìn)行構(gòu)建,形成較為全面的多層次軟件故障診斷系統(tǒng),在提高軟件維護(hù)性的同時(shí),達(dá)到提高軟件可靠性、安全性、可用性的目的。
技術(shù)實(shí)現(xiàn)要素:
(一)本發(fā)明目的:根據(jù)知識(shí)組織方式與推理機(jī)制的不同,目前常用的故障診斷專家系統(tǒng)大致分為:基于規(guī)則的診斷專家系統(tǒng)、基于模型的診斷專家系統(tǒng)、基于模糊推理的診斷專家系統(tǒng)、基于事例的診斷專家系統(tǒng)以及基于網(wǎng)絡(luò)的診斷專家系統(tǒng)等,每一種專家系統(tǒng)都有其局限性,并不能作為通用的診斷系統(tǒng)對(duì)絕大部分軟件使用,并且對(duì)于組合類型的故障并不能進(jìn)行有效診斷。因此本發(fā)明將克服現(xiàn)有技術(shù)的不足,提供一種多層次故障診斷專家系統(tǒng)的構(gòu)建方法對(duì)上述問(wèn)題進(jìn)行解決。該系統(tǒng)的構(gòu)建分為兩層,其中淺層分系統(tǒng)是基于案例的診斷專家系統(tǒng),深層分系統(tǒng)是基于模型、模糊推理的故障診斷專家系統(tǒng),對(duì)淺層與深層分系統(tǒng)進(jìn)行整合后,形成的基于網(wǎng)絡(luò)的多層次故障診斷專家系統(tǒng)。可以看出該系統(tǒng)的構(gòu)建對(duì)現(xiàn)有的故障診斷專家系統(tǒng)進(jìn)行了整合與創(chuàng)新,形成了通用型多層次的軟件故障診斷專家系統(tǒng)。
(二)技術(shù)方案
本發(fā)明技術(shù)方案:多層次軟件故障診斷專家系統(tǒng)的構(gòu)建方法過(guò)程如下:
本發(fā)明所述方法中,引入故障屬性分類模型的概念來(lái)表述對(duì)案例故障屬性字段進(jìn)行一系列操作后所轉(zhuǎn)化的模型,引用F-CBR來(lái)表述基于案例推理(即“CBR”)與失效模式與影響分析(即“FMEA”)相結(jié)合的技術(shù)。
本發(fā)明一種多層次軟件故障診斷專家系統(tǒng)的構(gòu)建方法,其步驟如下:
步驟1、搜集大量與被診斷軟件相關(guān)的故障案例,針對(duì)被診斷軟件系統(tǒng)的特點(diǎn),采取合適的方法對(duì)故障案例進(jìn)行分析,在分析完成后,篩選出合適的案例集加入至創(chuàng)建的故障知識(shí)案例庫(kù);
步驟2、根據(jù)被診斷軟件所有可能發(fā)生的原因、現(xiàn)象以及其他故障屬性(如故障所在位置、故障嚴(yán)酷度等),結(jié)合軟件缺陷分類方法構(gòu)建缺陷屬性分類模型,該模型可以輔助貝葉斯診斷網(wǎng)絡(luò)的構(gòu)建及各層次分系統(tǒng)的連接;
步驟3、構(gòu)建軟件缺陷分類模型并進(jìn)行形式化描述;
步驟4、針對(duì)被診斷對(duì)象的特點(diǎn),構(gòu)建適用于被診斷對(duì)象的其他故障屬性分類模型;
步驟5、利用F-CBR技術(shù)對(duì)故障案例庫(kù)的案例進(jìn)行操作;
步驟6、結(jié)合F-CBR技術(shù)構(gòu)建淺層故障分系統(tǒng);
步驟7、采用開源搜索引擎工具并結(jié)合相似匹配算法,對(duì)結(jié)合F-CBR技術(shù)的淺層故障分系統(tǒng)進(jìn)行具體實(shí)現(xiàn);
步驟8、構(gòu)建深層分系統(tǒng),該系統(tǒng)提供故障探測(cè)、故障識(shí)別、貝葉斯故障分析,形成深層故障分析與故障管理協(xié)議,指導(dǎo)故障處理策略的制定與選擇;對(duì)于深層分系統(tǒng),首先要實(shí)現(xiàn)其核心技術(shù),即基于案例庫(kù)數(shù)據(jù)的故障屬性分類模型轉(zhuǎn)換為貝葉斯網(wǎng)絡(luò)算法;深層分系統(tǒng)可利用該算法進(jìn)行貝葉斯網(wǎng)絡(luò)因果結(jié)構(gòu)學(xué)習(xí),并將案例庫(kù)中的自然語(yǔ)言形式的數(shù)據(jù)轉(zhuǎn)換為0-1化數(shù)據(jù),進(jìn)行貝葉斯網(wǎng)絡(luò)參數(shù)數(shù)據(jù)學(xué)習(xí);
步驟9、結(jié)合即基于案例庫(kù)數(shù)據(jù)的故障屬性分類模型轉(zhuǎn)換為貝葉斯網(wǎng)絡(luò)算法對(duì)深層故障分系統(tǒng)進(jìn)行構(gòu)建與實(shí)現(xiàn);
步驟10、對(duì)淺層分系統(tǒng)與深層分系統(tǒng)構(gòu)建連接,完成多層次故障診斷專家系統(tǒng)的構(gòu)建,以實(shí)現(xiàn)基于故障案例庫(kù)實(shí)現(xiàn)淺層、深層分系統(tǒng)的數(shù)據(jù)上傳與下載,從而完成故障案例庫(kù)數(shù)據(jù)共享功能。
其中,在步驟2中所述的“結(jié)合軟件缺陷分類方法構(gòu)建故障缺陷分類模型”,其作法如下:即參照目前已有的軟件缺陷分類方法,結(jié)合目前主流軟件缺陷分類方法的優(yōu)點(diǎn),同時(shí)結(jié)合軟件缺陷本身的特點(diǎn),尤其是軟件缺陷的發(fā)現(xiàn)、定位、排除和預(yù)防過(guò)程,完成軟件缺陷分類方法的定義與劃分,并在此缺陷分類方法的基礎(chǔ)上,根據(jù)被診斷對(duì)象自身的特點(diǎn),對(duì)其故障現(xiàn)象、故障所發(fā)生的分系統(tǒng)等一系列待分析的故障屬性進(jìn)行歸類總結(jié),完成故障屬性分類模型的構(gòu)建;
其中,在步驟2中所述的“貝葉斯診斷網(wǎng)絡(luò)”,是指深層診斷分系統(tǒng)中的核心技術(shù),即貝葉斯網(wǎng)絡(luò)。貝葉斯網(wǎng)絡(luò)是一種概率網(wǎng)絡(luò),它是基于概率推理的圖形化網(wǎng)絡(luò),所謂概率推理就是通過(guò)一些變量的信息來(lái)獲取其他的概率信息的過(guò)程,基于概率推理的貝葉斯網(wǎng)絡(luò)是為了解決不定性和不完整性問(wèn)題而提出的,它對(duì)于解決待診斷對(duì)象不確定性和關(guān)聯(lián)性引起的故障有很大的優(yōu)勢(shì);
其中,在步驟3中所述的“構(gòu)建軟件缺陷分類模型并進(jìn)行形式化描述”,其作法如下:對(duì)適用于本發(fā)明的故障缺陷分類進(jìn)行定義及劃分,在必要的情況下,可將已定義與劃分的缺陷類型繼續(xù)細(xì)化,直到缺陷類型相對(duì)完整為止。缺陷分類模型并不存在一個(gè)最終形式,當(dāng)有新的缺陷類型出現(xiàn)時(shí),這一缺陷類型就會(huì)添加至相應(yīng)缺陷類型下進(jìn)行更新。為了更好地利用缺陷分類模型,我們對(duì)該分類網(wǎng)的缺陷類型作出盡可能的細(xì)化,以最大限度地對(duì)案例進(jìn)行匹配。在得出的缺陷分類模型后,我們可以使用超文本標(biāo)記語(yǔ)言HTML或可擴(kuò)展標(biāo)記語(yǔ)言XML對(duì)缺陷模型中的分類進(jìn)行表示,例如可以將編碼錯(cuò)誤這一缺陷類型表示為CodingError或ce等;
其中,在步驟4中所述的“針對(duì)被診斷對(duì)象的特點(diǎn),構(gòu)建適用于被診斷對(duì)象的其他故障屬性分類模型”,其作法如下:對(duì)于不同被診斷對(duì)象,故障的發(fā)生現(xiàn)象、發(fā)生的位置這類屬性都有其各自特點(diǎn),因此這些屬性并不能像故障缺陷一樣進(jìn)行整合分類。因此,我們需要在進(jìn)行FMEA分析時(shí),對(duì)這些故障屬性信息進(jìn)行概括總結(jié),進(jìn)一步完成其他故障屬性分類模型的建立(模型建立方法同故障缺陷分類模型);
其中,在步驟5中所述的“F-CBR技術(shù)”,是基于失效模式與影響分析形式的案例推理技術(shù),其作法如下:
我們將案例看作一個(gè)集合
c={name,phenomenon,cause,measure,keywords},其中name為案例的名稱;measure表示案例中問(wèn)題措施措施的集合,該屬性一般是故障解決方法的描述;cause是案例發(fā)生的所有相關(guān)根源屬性的集合;phenomenon是故障現(xiàn)象屬性的集合,一個(gè)故障通常有一個(gè)或多個(gè)現(xiàn)象;keywords是從故障各屬性中提取的關(guān)鍵詞。由于案例庫(kù)是由多個(gè)案例組合的,我們用CL表示案例庫(kù),則CL={c1,c2,...,ci,...,cn}。當(dāng)有新問(wèn)題出現(xiàn)時(shí),淺層分系統(tǒng)會(huì)根據(jù)問(wèn)題的描述從案例庫(kù)CL中找到與之最為相似的一個(gè)或多個(gè)案例,作為解決問(wèn)題的依據(jù),這一過(guò)程稱為案例檢索。利用案例檢索,我們可以有效地計(jì)算出案例間的相似度。因此,當(dāng)一個(gè)問(wèn)題引入時(shí),我們就能得到問(wèn)題與案例庫(kù)CL中任意案例間的相似度,并從中選取相似度最高的案例作為分析根據(jù),如果該故障癥狀不存在匹配案例,則將其加入至失敗案例庫(kù)中,隨后轉(zhuǎn)交給深層診斷分系統(tǒng)進(jìn)行處理。
其中,在步驟6中所述的“結(jié)合F-CBR技術(shù)構(gòu)建淺層故障分系統(tǒng)”,其作法如下:主要分為三部分:
(1)案例庫(kù)的構(gòu)建:根據(jù)診斷對(duì)象的不同,案例庫(kù)的表現(xiàn)形式也有所不同。我們采用一種通用的分層結(jié)構(gòu)對(duì)案例庫(kù)進(jìn)行表示,即失效原因-失效模式-失效影響的分層次的案例庫(kù)體系,并以此構(gòu)建基于案例庫(kù)。對(duì)具有關(guān)聯(lián)關(guān)系的案例,則需要對(duì)案例庫(kù)進(jìn)行二次分析、抽象提取,并結(jié)合已有的專家分析經(jīng)驗(yàn),建立各案例結(jié)構(gòu)的關(guān)聯(lián)規(guī)則庫(kù)。
(2)推理框架的構(gòu)建:采用基于知識(shí)匹配的推理技術(shù)對(duì)推理框架進(jìn)行構(gòu)建,該技術(shù)能夠?qū)ο嗨频囊?guī)則實(shí)例進(jìn)行判斷,若查找到相似實(shí)例則輸出結(jié)果信息,若未找到相似實(shí)例則利用相似匹配技術(shù)對(duì)規(guī)則庫(kù)進(jìn)行匹配,獲取相似規(guī)則。該技術(shù)可以克服框架、語(yǔ)義網(wǎng)絡(luò)等模型僅能表達(dá)處理信息的弱點(diǎn)和神經(jīng)網(wǎng)絡(luò)等方法不直觀的缺點(diǎn)。
(3)學(xué)習(xí)框架的構(gòu)建:對(duì)于檢索案例庫(kù)中不存在的案例,不僅要給出相關(guān)記錄,還應(yīng)將其存入知識(shí)庫(kù)中,以便下次使用;而對(duì)于不恰當(dāng)或者不正確的推理結(jié)果時(shí),應(yīng)當(dāng)將其糾正、改進(jìn),并重新入庫(kù)復(fù)用,為后續(xù)故障分析和故障恢復(fù)處理及時(shí)提供證據(jù)、提供必要的故障相關(guān)信息;
其中,在步驟8中所述的“貝葉斯故障分析”,是指利用深層故障診斷分系統(tǒng)中的貝葉斯網(wǎng)絡(luò)對(duì)被診斷對(duì)象中復(fù)雜的,未知的故障進(jìn)行概率推理,利用推理結(jié)果對(duì)故障進(jìn)行分析。
其中,在步驟8中所述的“貝葉斯網(wǎng)絡(luò)參數(shù)”,是指貝葉斯網(wǎng)絡(luò)從歷史數(shù)據(jù)或?qū)<医?jīng)驗(yàn)中獲得必要的條件概率表;
其中,在步驟9中所述的“結(jié)合即基于案例庫(kù)數(shù)據(jù)的故障屬性分類模型轉(zhuǎn)換為貝葉斯網(wǎng)絡(luò)算法對(duì)深層故障分系統(tǒng)進(jìn)行構(gòu)建與實(shí)現(xiàn)”,其作法如下:
1)利用貝葉斯網(wǎng)絡(luò)轉(zhuǎn)換算法生成診斷序列,進(jìn)行探索式診斷測(cè)試,加快故障再現(xiàn);
2)在貝葉斯網(wǎng)絡(luò)模型的基礎(chǔ)上,進(jìn)行故障推理研究。為了能夠?qū)﹄S機(jī)故障進(jìn)行推理,為每個(gè)待分析組件分配故障概率,表征其發(fā)生故障的可能性,及在故障時(shí)卻表現(xiàn)出正常行為的特征。擬采用極大似然值估計(jì)方法估計(jì)出觀測(cè)到的故障現(xiàn)象發(fā)生概率最大時(shí)每個(gè)概率的值,并同時(shí)利用貝葉斯方法獲得候選分析的后驗(yàn)概率,建立基礎(chǔ)的貝葉斯分析推理框架;
3)當(dāng)被診斷系統(tǒng)復(fù)雜且含有多個(gè)故障的時(shí)候,貝葉斯網(wǎng)絡(luò)可能會(huì)面對(duì)一個(gè)節(jié)點(diǎn)過(guò)多產(chǎn)生的所謂“組合爆炸”問(wèn)題,影響推理的有效性;因此,對(duì)于一個(gè)具體的診斷對(duì)象而言,我們有時(shí)需要考慮被診斷對(duì)象體系結(jié)構(gòu)等一些特征對(duì)在診斷模型進(jìn)行優(yōu)化處理,如采用程序譜等弱故障模型,減少不必要的關(guān)聯(lián)性;
4)對(duì)組合故障進(jìn)行推理,利用前述貝葉斯方法結(jié)合最小命中集等集合算法對(duì)故障的組合情況進(jìn)行推理排序;
5)實(shí)現(xiàn)對(duì)多態(tài)故障(既包括隨機(jī)故障也包括非隨機(jī)故障)的分析。在貝葉斯隨機(jī)推理框架基礎(chǔ)上,擬借鑒多態(tài)系統(tǒng)理論,對(duì)故障概率進(jìn)行動(dòng)態(tài)貝葉斯估算,探索對(duì)多態(tài)故障分析推理優(yōu)化。
通過(guò)上述步驟,可以完成對(duì)多層次軟件故障診斷專家系統(tǒng)的構(gòu)建,對(duì)于被診斷對(duì)象中已發(fā)生或類似的組合故障,可采用淺層故障診斷分系統(tǒng)的相似匹配搜索方式進(jìn)行解決,對(duì)于被診斷對(duì)象中未發(fā)生或未知類型的組合故障,可采用深層故障診斷分系統(tǒng)的貝葉斯診斷網(wǎng)絡(luò)進(jìn)行推理預(yù)測(cè)完成診斷。對(duì)于不同類型的故障采取不同的解決措施,從而完成軟件故障診斷。
本發(fā)明與現(xiàn)有技術(shù)相比的優(yōu)點(diǎn)在于:目前,大部分專家系統(tǒng)只能進(jìn)行對(duì)故障進(jìn)行演繹推理,而本發(fā)明能夠利用經(jīng)驗(yàn)知識(shí)與歷史數(shù)據(jù)對(duì)軟件故障進(jìn)行歸納推理,并且在數(shù)據(jù)匱乏的情況下,能夠結(jié)合深層故障診斷技術(shù)進(jìn)行不確定性推理完成診斷。同時(shí),系統(tǒng)的診斷能力會(huì)隨著案例集的豐富而不斷提升,即系統(tǒng)具有自我完善能力。
附圖說(shuō)明
圖1為本發(fā)明的總體步驟流程圖。
圖2為本發(fā)明的基于失效模式與影響分析形式的案例推理技術(shù)(即“F-CBR”)的工作流程。
圖3為本發(fā)明的淺層故障診斷分系統(tǒng)實(shí)現(xiàn)流程。
圖4為本發(fā)明的淺層故障診斷分系統(tǒng)的軟件框架。
圖5為本發(fā)明貝葉斯網(wǎng)絡(luò)轉(zhuǎn)換算法流程。
圖6為本發(fā)明深層故障診斷分系統(tǒng)的實(shí)現(xiàn)技術(shù)方法。
圖7為本發(fā)明中多層次診斷專家系統(tǒng)的整體軟件框架。
圖中序號(hào)、符號(hào)、代號(hào)說(shuō)明如下:
圖1中的“步驟1~10”即技術(shù)方案中對(duì)應(yīng)的步驟;
圖1中的“F-CBR”即基于失效模式與影響分析形式的案例推理技術(shù);
圖1,4,7中的“CBR”即基于案例的推理方法;
圖1,2,3,4,6,7中的“FMEA”即失效模式與影響分析方法;
圖3中的“XML”即可擴(kuò)展標(biāo)記語(yǔ)言;
圖4,7中的“Lucene”即構(gòu)建診斷淺層故障診斷分系統(tǒng)所使用的開源全文檢索引擎工具包
圖4,7中的“TF-IDF”即構(gòu)建診斷淺層故障診斷分系統(tǒng)所使用的相似度匹配算法;
圖5中的“BN”即貝葉斯網(wǎng)絡(luò);
具體實(shí)施方式
為使本發(fā)明要解決的技術(shù)問(wèn)題、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖進(jìn)行詳細(xì)描述。
本發(fā)明提出了一種多層次軟件故障診斷專家系統(tǒng)的構(gòu)建方法,利用該方法構(gòu)建的系統(tǒng)能夠根據(jù)不同故障的類型采用對(duì)應(yīng)的機(jī)制進(jìn)行診斷。對(duì)于被診斷對(duì)象中已出現(xiàn)過(guò)的軟件故障,已知其故障機(jī)理及可能的故障表現(xiàn),有相關(guān)的成功分析經(jīng)驗(yàn)。可使用淺層故障診斷分系統(tǒng),通過(guò)案例庫(kù)進(jìn)行相似匹配推理的方式,實(shí)現(xiàn)快速的故障分析。對(duì)于被診斷對(duì)象中發(fā)生的未知故障,其故障機(jī)理和故障表征事先未知,無(wú)現(xiàn)成可用的專家經(jīng)驗(yàn)可借鑒時(shí),可將故障轉(zhuǎn)交給深層故障診斷分系統(tǒng),利用貝葉斯診斷網(wǎng)絡(luò)進(jìn)行相關(guān)推理分析。
本發(fā)明一種多層次軟件故障診斷專家系統(tǒng)的構(gòu)建方法,如圖1所示,其具體構(gòu)建步驟如下:
步驟一:搜集被診斷對(duì)象的故障案例,進(jìn)行FMEA分析后,即可利用案例構(gòu)建案例庫(kù)。
步驟二:構(gòu)建故障屬性分類模型。對(duì)于故障屬性分類模型的建立,首先是創(chuàng)建故障原因分類模型,即故障缺陷分類模型,而故障缺陷分類模型的建立,則需要結(jié)合軟件缺陷分類法。傳統(tǒng)的軟件缺陷分類方法,有的分類方法簡(jiǎn)單,但缺陷信息量不足,無(wú)法有效幫助進(jìn)行缺陷的修復(fù);有的沒(méi)有考慮缺陷發(fā)生的過(guò)程原因,不適用于軟件過(guò)程改進(jìn)活動(dòng);有的分類又過(guò)于復(fù)雜,導(dǎo)致難以把握分類標(biāo)準(zhǔn)。因此,我們需要結(jié)合目前主流軟件缺陷分類方法的優(yōu)點(diǎn),同時(shí)結(jié)合軟件缺陷本身的特點(diǎn),尤其是軟件缺陷的發(fā)現(xiàn)、定位、排除和預(yù)防過(guò)程,提出適用于絕大部分軟件缺陷分類方法,指導(dǎo)軟件缺陷的分類,為軟件缺陷定位、修復(fù)及預(yù)防提供準(zhǔn)確、完整的信息。
步驟三:對(duì)適用于本發(fā)明的故障缺陷分類模型進(jìn)行定義及劃分,根據(jù)實(shí)際的使用需求,我們定義該分類網(wǎng)由11個(gè)大類組成,分別為:編碼錯(cuò)誤;接口錯(cuò)誤;結(jié)構(gòu)錯(cuò)誤;測(cè)試錯(cuò)誤;數(shù)據(jù)錯(cuò)誤;性能缺陷;功能缺陷;設(shè)計(jì)階段缺陷;軟件集成錯(cuò)誤;需求分析缺陷;其他缺陷等。
在這11種缺陷類型中,每個(gè)類型都可以繼續(xù)進(jìn)行分化。在此,我們利用數(shù)據(jù)結(jié)構(gòu)中“樹”的定義,將繼續(xù)分化的類型看作其“樹葉”,即缺陷類型的分支。這些細(xì)化出的樹葉也可以繼續(xù)分化,直到缺陷類型相對(duì)完整為止。
可以看出,該分類模型并不存在一個(gè)最終形式,當(dāng)有新的缺陷類型出現(xiàn)時(shí),這一缺陷類型就會(huì)根據(jù)分類模型添加邏輯準(zhǔn)則,添加至相應(yīng)樹葉下進(jìn)行更新。為了更好地利用缺陷分類模型,我們對(duì)該分類網(wǎng)的缺陷類型作出盡可能的細(xì)化,以最大限度地對(duì)案例進(jìn)行匹配,最后得出的缺陷分類模型。
對(duì)于缺陷分類模型,我們也能使用例如JSP、HTML、XML等語(yǔ)言進(jìn)行表示,為便于表示,需要將每種缺陷類型表示為特定的英文縮略語(yǔ)或字母,例如可以將編碼錯(cuò)誤表示CodingError或ce等。
步驟四:對(duì)于不同被診斷對(duì)象,故障的發(fā)生現(xiàn)象、發(fā)生的位置這類屬性都有其各自特點(diǎn),因此這些屬性并不能像原因?qū)傩砸粯舆M(jìn)行整合分類。因此,我們需要在進(jìn)行FMEA分析時(shí),對(duì)這些故障屬性信息進(jìn)行概括總結(jié),進(jìn)一步完成其他故障屬性分類模型的建立(模型建立方法同缺陷屬性分類模型)。
步驟五:為了實(shí)現(xiàn)CBR與FMEA的結(jié)合使用,必須首先使用準(zhǔn)確的形式將案例表示出來(lái),在不影響知識(shí)表現(xiàn)形式的基礎(chǔ)上,將FMEA的失效模式和影響信息融合到案例中,采用FMEA形式的案例表示形式,實(shí)現(xiàn)兩者的融合應(yīng)用。
我們可以把這兩種結(jié)合后的技術(shù)稱為F-CBR(FMEA-style CBR)技術(shù),利用F-CBR技術(shù)建立的案例庫(kù)可以應(yīng)用到后面深層故障診斷的貝葉斯網(wǎng)絡(luò)中。F-CBR的優(yōu)勢(shì)在于,在完成故障輸入后,可以快速高效地從案例庫(kù)中檢索到相似案例。并且,通過(guò)修改案例庫(kù)的方式,F(xiàn)-CBR可以輕松地應(yīng)用于其診斷對(duì)象中。由于案例庫(kù)的數(shù)據(jù)會(huì)隨著案例的加入而不斷豐富,F(xiàn)-CBR對(duì)于故障的診斷也會(huì)更加準(zhǔn)確。
F-CBR技術(shù)方法如下:對(duì)于案例,我們可以將其看作一個(gè)集合c={name,phenomenon,cause,measure,keywords},其中name為案例的名稱;measure表示案例中問(wèn)題措施措施的集合,該屬性一般是故障解決方法的描述;cause是案例發(fā)生的所有相關(guān)根源屬性的集合;phenomenon是故障現(xiàn)象屬性的集合,一個(gè)故障通常有一個(gè)或多個(gè)現(xiàn)象;keywords是從故障各屬性中提取的關(guān)鍵詞。
由于案例庫(kù)是由多個(gè)案例組合的,我們用CL表示案例庫(kù),
則CL={c1,c2,...,ci,...,cn}。
當(dāng)有新問(wèn)題出現(xiàn)時(shí),淺層分系統(tǒng)會(huì)根據(jù)問(wèn)題的描述從案例庫(kù)CL中找到與之最為相似的一個(gè)或多個(gè)案例,作為解決問(wèn)題的依據(jù),這一過(guò)程稱為案例檢索。利用案例檢索,我們可以在CBR中有效地計(jì)算出案例間的相似度。因此,當(dāng)一個(gè)問(wèn)題引入時(shí),我們就能得到問(wèn)題與案例庫(kù)CL中任意案例間的相似度,并從中選取相似度最高的案例作為分析根據(jù),如果該故障癥狀不存在匹配案例,則將其加入至失敗案例庫(kù)中,隨后轉(zhuǎn)交給深層診斷分系統(tǒng)進(jìn)行處理,F(xiàn)-CBR技術(shù)的工作流程如圖2所示。
步驟六:結(jié)合F-CBR技術(shù)構(gòu)建淺層診斷分系統(tǒng),淺層診斷分系統(tǒng)的實(shí)現(xiàn)流程如圖3所示。根據(jù)診斷對(duì)象的不同,案例庫(kù)的表現(xiàn)形式也有所不同。這里,我們采用一種通用的分層結(jié)構(gòu)對(duì)案例庫(kù)進(jìn)行表示,即失效原因-失效模式-失效影響的分層次的案例庫(kù)體系,并以此構(gòu)建基于案例庫(kù)。對(duì)具有關(guān)聯(lián)關(guān)系的案例,則需要對(duì)案例庫(kù)進(jìn)行二次分析、抽象提取,并結(jié)合已有的專家分析經(jīng)驗(yàn),建立各案例結(jié)構(gòu)的關(guān)聯(lián)規(guī)則。
在淺層故障診斷分系統(tǒng)中,知識(shí)規(guī)則庫(kù)不是一個(gè)必要的選項(xiàng),單獨(dú)利用案例庫(kù)也可以進(jìn)行案例檢索,但為能夠最大化地利用案例中所攜帶的有益信息,作為一個(gè)可選項(xiàng)對(duì)其進(jìn)行進(jìn)一步加工提煉,形成能夠體現(xiàn)一定模式的故障傳播鏈條,便于對(duì)相似故障進(jìn)行分析推理;也可以為后續(xù)的深層故障推理提供可能的故障原因來(lái)源。從實(shí)現(xiàn)的角度,我們將以一個(gè)單獨(dú)的模塊接口,提供各種邏輯關(guān)系便于相應(yīng)的知識(shí)規(guī)則。
核心推理模塊采取知識(shí)匹配的方法對(duì)知識(shí)庫(kù)進(jìn)行搜索,這也符合常規(guī)的故障分析思路,并可以克服框架、語(yǔ)義網(wǎng)絡(luò)等模型僅能表達(dá)處理信息的弱點(diǎn)和神經(jīng)網(wǎng)絡(luò)等方法不直觀的缺點(diǎn)。
對(duì)于檢索案例庫(kù)中不存在的案例,不僅要給出相關(guān)記錄,還應(yīng)將其存入知識(shí)庫(kù)中,以便下次使用;而對(duì)于不恰當(dāng)或者不正確的推理結(jié)果時(shí),應(yīng)當(dāng)將其糾正、改進(jìn),并重新入庫(kù)復(fù)用,為后續(xù)故障分析和故障恢復(fù)處理及時(shí)提供證據(jù)、提供必要的故障相關(guān)信息。
步驟七:基于開源搜索引擎實(shí)現(xiàn)淺層診斷分系統(tǒng)。本發(fā)明采用了開源搜索引擎,并進(jìn)行適應(yīng)性改進(jìn),實(shí)現(xiàn)對(duì)交聯(lián)相關(guān)案例的有效匹配。
案例表示主要是指對(duì)案例的特征進(jìn)行抽取,是指抽取待求解問(wèn)題的特征及特征間的關(guān)系,并將其輸入系統(tǒng)。什么是案例以及案例如何表示,如何在案例庫(kù)中存放案例是基于案例的推理中要解決的首要問(wèn)題。在基于案例的推理系統(tǒng)中,所謂案例就是問(wèn)題求解的狀態(tài)及對(duì)其求解的策略。一般的,一個(gè)案例包含問(wèn)題的初始狀態(tài),問(wèn)題求解的目標(biāo)狀態(tài)以及求解的方案。案例的內(nèi)容隨具體求解領(lǐng)域不同可能略有差異,對(duì)于簡(jiǎn)單的情況,一個(gè)案例就是導(dǎo)致特定結(jié)果的一系列特征。但對(duì)于一個(gè)復(fù)雜的問(wèn)題,案例所含的內(nèi)容就很復(fù)雜,一個(gè)復(fù)雜的案例甚至可以是若干個(gè)子案例的組合。在本發(fā)明中,我們使用了開源搜索引擎Lucene并結(jié)合相似度匹配算法TF-IDF,實(shí)現(xiàn)了對(duì)案例庫(kù)中類似案例的匹配,效果十分良好。本發(fā)明的淺層分系統(tǒng)軟件框架如圖4所示。
步驟八:建立深層故障診斷分系統(tǒng)的貝葉斯網(wǎng)絡(luò)。在淺層故障診斷分系統(tǒng)中,本發(fā)明結(jié)合案例案例庫(kù),結(jié)合F-CBR技術(shù)實(shí)現(xiàn)了相似案例匹配推理的故障診斷。在深層故障診斷技術(shù)中,我們可以再次利用該案例庫(kù),并結(jié)合故障屬性分類模型,實(shí)現(xiàn)貝葉斯網(wǎng)絡(luò)的參數(shù)學(xué)習(xí)。在本發(fā)明中將使用一種創(chuàng)新的貝葉斯網(wǎng)絡(luò)的算法,該算法可以提高貝葉斯網(wǎng)絡(luò)的構(gòu)建效率,并能自動(dòng)將FMEA形式的案例庫(kù)轉(zhuǎn)化為貝葉斯網(wǎng)絡(luò)。
該算法具體實(shí)現(xiàn)如下所示:在這里,我們利用案例庫(kù)中的故障原因、故障現(xiàn)象及配置項(xiàng)/分系統(tǒng)屬性作舉例,以實(shí)現(xiàn)貝葉斯網(wǎng)絡(luò)的構(gòu)建。
完成了貝葉斯網(wǎng)絡(luò)的結(jié)構(gòu)學(xué)習(xí)。下一步驟就是利用貝葉斯網(wǎng)絡(luò)進(jìn)行參數(shù)學(xué)習(xí),即利用貝葉斯網(wǎng)絡(luò)從歷史數(shù)據(jù)或?qū)<医?jīng)驗(yàn)中獲得必要的條件概率表。為便于進(jìn)行參數(shù)學(xué)習(xí),需要參照屬性歸類映射表,將故障案例屬性數(shù)據(jù)轉(zhuǎn)換為故障頻譜的形式。
該算法的流程圖如圖5所示
步驟九:本發(fā)明的深層故障診斷分系統(tǒng)的實(shí)現(xiàn)技術(shù)方法如圖6所示。其構(gòu)建方法是:
1)利用改進(jìn)的算法生成診斷序列,進(jìn)行探索式診斷測(cè)試,加快故障再現(xiàn);
2)在貝葉斯網(wǎng)絡(luò)模型的基礎(chǔ)上,進(jìn)行故障推理研究。為了能夠?qū)﹄S機(jī)故障進(jìn)行推理,為每個(gè)待分析組件分配故障概率,表征其發(fā)生故障的可能性,及在故障時(shí)卻表現(xiàn)出正常行為的特征。擬采用極大似然值估計(jì)方法估計(jì)出觀測(cè)到的故障現(xiàn)象發(fā)生概率最大時(shí)每個(gè)概率的值,并同時(shí)利用貝葉斯方法獲得候選分析的后驗(yàn)概率,建立基礎(chǔ)的貝葉斯分析推理框架;
3)當(dāng)被診斷系統(tǒng)復(fù)雜且含有多個(gè)故障的時(shí)候,貝葉斯網(wǎng)絡(luò)可能會(huì)面對(duì)一個(gè)節(jié)點(diǎn)過(guò)多產(chǎn)生的所謂“組合爆炸”問(wèn)題,影響推理的有效性;因此,對(duì)于一個(gè)具體的診斷對(duì)象而言,我們有時(shí)需要考慮被診斷對(duì)象體系結(jié)構(gòu)等一些特征對(duì)在診斷模型進(jìn)行優(yōu)化處理,如采用程序譜等弱故障模型,減少不必要的關(guān)聯(lián)性;
4)對(duì)組合故障進(jìn)行推理,利用前述貝葉斯方法結(jié)合最小命中集等集合算法對(duì)故障的組合情況進(jìn)行推理排序;
5)實(shí)現(xiàn)對(duì)多態(tài)故障(既包括隨機(jī)故障也包括非隨機(jī)故障)的分析。在貝葉斯隨機(jī)推理框架基礎(chǔ)上,擬借鑒多態(tài)系統(tǒng)理論,對(duì)故障概率進(jìn)行動(dòng)態(tài)貝葉斯估算,探索對(duì)多態(tài)故障分析推理優(yōu)化。
步驟十:淺層與深層分系統(tǒng)整合。在本發(fā)明中,案例庫(kù)中的數(shù)據(jù)可以自動(dòng)更新也可以人工更新。并且,案例庫(kù)對(duì)淺層與深層分系統(tǒng)提供了一些接口,兩個(gè)分系統(tǒng)可以利用這些接口實(shí)現(xiàn)與案例庫(kù)的連接,完成數(shù)據(jù)的上傳與下載,通過(guò)這些接口使得系統(tǒng)具有一定的開放性和擴(kuò)展性,便于與其他更多的系統(tǒng)集成使用。整合淺層與深層分系統(tǒng)的軟件實(shí)現(xiàn)框架如圖7所示。
其中,在步驟七中所述的Lucene,是apache軟件基金會(huì)4jakarta項(xiàng)目組的一個(gè)子項(xiàng)目,是一個(gè)開放源代碼的全文檢索引擎工具包,Lucene的目的是為軟件開發(fā)人員提供一個(gè)簡(jiǎn)單易用的工具包,以方便的在目標(biāo)系統(tǒng)中實(shí)現(xiàn)全文檢索的功能,或者是以此為基礎(chǔ)建立起完整的全文檢索引擎;
在步驟七中所述的TF-IDF算法是一種相似度統(tǒng)計(jì)方法,用以評(píng)估一字詞對(duì)于一個(gè)文件集或一個(gè)語(yǔ)料庫(kù)中的其中一份文件的重要程度。字詞的重要性隨著它在文件中出現(xiàn)的次數(shù)成正比增加,但同時(shí)會(huì)隨著它在語(yǔ)料庫(kù)中出現(xiàn)的頻率成反比下降。TF-IDF加權(quán)的各種形式常被搜索引擎應(yīng)用,作為文件與用戶查詢之間相關(guān)程度的度量或評(píng)級(jí);
在步驟八中所述的BN是貝葉斯網(wǎng)絡(luò)的縮寫英文名稱;
通過(guò)上述步驟,可以完成對(duì)多層次軟件故障診斷專家系統(tǒng)的構(gòu)建,對(duì)于被診斷對(duì)象中已發(fā)生或類似的組合故障,可采用淺層故障診斷分系統(tǒng)的相似匹配搜索方式進(jìn)行解決,對(duì)于被診斷對(duì)象中未發(fā)生或未知類型的組合故障,可采用深層故障診斷分系統(tǒng)的貝葉斯診斷網(wǎng)絡(luò)進(jìn)行推理預(yù)測(cè)完成診斷。對(duì)于不同類型的故障采取不同的解決措施,從而完成軟件故障診斷。
本發(fā)明未詳細(xì)闡述部分屬于本領(lǐng)域公知技術(shù)。
以上所述,僅為本發(fā)明部分具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本領(lǐng)域的人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。