本發(fā)明涉及一種計算機(jī)技術(shù)領(lǐng)域,尤其是模型檢測領(lǐng)域中的線性時態(tài)邏輯的規(guī)范挖掘技術(shù),具體涉及一種線性時態(tài)邏輯規(guī)范的通用并行挖掘方法。
背景技術(shù):
與其他工程產(chǎn)品不同的是,軟件產(chǎn)品在其整個生命周期中會不斷地變化演進(jìn)。而在對軟件進(jìn)行維護(hù)、更新的過程中,為保持系統(tǒng)原有功能的正確性,維護(hù)人員通常需要付出極大的努力。據(jù)統(tǒng)計,軟件的維護(hù)成本占據(jù)了軟件開發(fā)成本的90%。因此,研究如何降低軟件維護(hù)成本具有十分現(xiàn)實(shí)的意義。
而軟件維護(hù)成本之中的絕大部分,都源于對遺留源代碼理解吸收所產(chǎn)生的成本。有研究表明,為理解原有代碼付出的代價超過了總維護(hù)代價的50%。通常,開發(fā)人員會選擇閱讀軟件規(guī)范文檔來輔助軟件程序的理解。然而,在許多企業(yè)中,開發(fā)人員迫于市場應(yīng)用的時效性,疏忽了規(guī)范文檔的編寫與維護(hù),以至于很大部分的軟件規(guī)范文檔并沒有隨著軟件程序的演化得到及時的更新。這樣,經(jīng)過若干次演化周期,最新版本的軟件程序早就與原始的規(guī)范文檔大相徑庭。因此,如何及時地更新軟件規(guī)范,成為了一個值得探索的問題。
另外,為了保證軟件系統(tǒng)的正確性,人們提出了模型檢測技術(shù)。例如申請?zhí)枮?01510395404.X,發(fā)明名稱為安全交換協(xié)議模型檢測方法的中國發(fā)明專利,公開了一種安全交換協(xié)議模型檢測方法,該方法的步驟包括:1)構(gòu)建安全交換協(xié)議模型;2)構(gòu)建安全屬性模型;3)構(gòu)建攻擊者模型;4)狀態(tài)約簡以及模型檢測。
模型檢測技術(shù)主要通過對軟件系統(tǒng)進(jìn)行抽象建模,并采用一系列的形式化性質(zhì)來驗(yàn)證模型是否符合特定性質(zhì),以研究系統(tǒng)是否具有某種性質(zhì),或違反某種約束。線性時態(tài)邏輯通常用于形式化定義模型所該具備的性質(zhì)和約束。然而,構(gòu)造形式化性質(zhì)的困難一直阻礙了模型檢測技術(shù)的廣泛應(yīng)用。
因此,有必要尋找一種方法,能夠自動地從軟件系統(tǒng)中獲取軟件系統(tǒng)具備的性質(zhì)或約束。正如人們觀察自然現(xiàn)象來了解自然規(guī)律,可以采用某種自動化的方法,根據(jù)軟件系統(tǒng)的運(yùn)行日志,運(yùn)行軌跡來學(xué)習(xí)、挖掘軟件系統(tǒng)所具備的性質(zhì)。
技術(shù)實(shí)現(xiàn)要素:
為解決以上問題,本發(fā)明公開了一種線性時態(tài)邏輯規(guī)范的通用并行挖掘方法,主要用于從軟件系統(tǒng)的日志文件中挖掘日志中各種事件之間所具備的線性時序關(guān)系,用于獲取日志中事件之間的規(guī)律,以推測出軟件程序中可能具備的線性時態(tài)性質(zhì),從而輔助對程序的理解分析,也可用于通信協(xié)議分析。
具體的,本發(fā)明公開了一種線性時態(tài)邏輯規(guī)范的通用并行挖掘方法,包括如下步驟:
預(yù)處理步驟,對日志文件進(jìn)行分割,分離出日志文件中的獨(dú)立軌跡,獲取日志文件中所有事件的集合以及每個事件在獨(dú)立軌跡中出現(xiàn)的位置;
規(guī)范實(shí)例生成步驟,根據(jù)輸入的規(guī)范模板集合,將其中的變量與日志事件集合中的事件依次進(jìn)行綁定,以獲取規(guī)范實(shí)例候選集合;
規(guī)范實(shí)例驗(yàn)證步驟,依次對規(guī)范實(shí)例候選集合中的規(guī)范實(shí)例進(jìn)行驗(yàn)證,計算其在日志中的支持度、置信度情況;
結(jié)果篩選步驟,根據(jù)輸入的挖掘要求,從規(guī)范實(shí)例候選集合中去除支持度、置信度不符合要求的規(guī)范實(shí)例。
優(yōu)選的,如上所述的線性時態(tài)邏輯規(guī)范的通用并行挖掘方法,所述預(yù)處理步驟包括如下子步驟:
軌跡分離步驟,通過文本處理,將日志中的數(shù)據(jù)讀取到內(nèi)存中,按照分隔符進(jìn)行分離,獲取一個元素為單條軌跡所組成的集合;
事件集合獲取步驟,分別掃描每條軌跡,以上述分隔符對軌跡進(jìn)行分割處理,獲取原子事件集合;
事件位置信息獲取步驟,掃描每條軌跡,記錄事件在軌跡中出現(xiàn)的位置信息。
優(yōu)選的,如上所述的線性時態(tài)邏輯規(guī)范的通用并行挖掘方法,所述預(yù)處理步驟的實(shí)現(xiàn)過程為:順序地從日志文件中讀取字符串,在遇到分隔符時,識別并判斷該分隔符為事件分隔符或者是軌跡分隔符,若為軌跡分隔符,則當(dāng)前軌跡終止并新建一個軌跡存儲對象;若為事件分隔符,則記錄新的事件位置信息,并將該事件加入到事件集合之中。
優(yōu)選的,如上所述的線性時態(tài)邏輯規(guī)范的通用并行挖掘方法,所述規(guī)范實(shí)例生成步驟包括如下三個子步驟:
規(guī)范模板分析步驟,對輸入的規(guī)范模板進(jìn)行語法分析,獲取規(guī)范模板中的變量;
變量綁定步驟,用事件集合中的事件,對規(guī)范模板中的變量進(jìn)行替換,即將規(guī)范模板中的變量綁定為特定的事件;
實(shí)例生成步驟,規(guī)范模板中的變量都綁定事件后,則成為一個具體的規(guī)范實(shí)例,不同規(guī)范模板變量綁定不同的事件,以生成不同的規(guī)范實(shí)例。
優(yōu)選的,如上所述的線性時態(tài)邏輯規(guī)范的通用并行挖掘方法,所述規(guī)范實(shí)例驗(yàn)證步驟包括如下三個子步驟:
初始化步驟,為每條軌跡生成一個驗(yàn)證器線程實(shí)例;
并行驗(yàn)證步驟,并行地執(zhí)行各個線程實(shí)例,按照線性時態(tài)邏輯的語義,檢查每個規(guī)范實(shí)例在每個軌跡上是否滿足;
統(tǒng)計匯總步驟,將并行計算的結(jié)果進(jìn)行匯總,統(tǒng)計每個規(guī)范實(shí)例在所有軌跡上的滿足情況,得到一個以規(guī)范實(shí)例和統(tǒng)計數(shù)據(jù)的鍵值對為元素的統(tǒng)計數(shù)據(jù)映射表。
優(yōu)選的,如上所述的線性時態(tài)邏輯規(guī)范的通用并行挖掘方法,所述結(jié)果集篩選步驟通過對所述統(tǒng)計匯總步驟產(chǎn)生的統(tǒng)計數(shù)據(jù)映射表進(jìn)行遍歷,以去除統(tǒng)計數(shù)據(jù)不符合要求的規(guī)范實(shí)例項(xiàng)。
本發(fā)明的優(yōu)點(diǎn)在于,與現(xiàn)有技術(shù)相比,本發(fā)明公開的一種線性時態(tài)邏輯規(guī)范通用并行挖掘方法,具有如下有益效果:該方法根據(jù)線性時態(tài)邏輯規(guī)范模板,構(gòu)造線性時態(tài)邏輯規(guī)范實(shí)例,再通過多線程技術(shù)進(jìn)行并行驗(yàn)證,能夠非常高效地獲取正確的線性時態(tài)邏輯規(guī)范。
附圖說明
通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
附圖1示出了根據(jù)本發(fā)明實(shí)施例的線性時態(tài)邏輯規(guī)范通用并行挖掘方法流程框圖;
附圖2示出了根據(jù)本發(fā)明實(shí)施例的線性時態(tài)邏輯規(guī)范通用并行挖掘方法中的預(yù)處理步驟的流程框圖;
附圖3示出了根據(jù)本發(fā)明實(shí)施例的線性時態(tài)邏輯規(guī)范通用并行挖掘方法中規(guī)范實(shí)例生成步驟的流程框圖;
附圖4示出了根據(jù)本發(fā)明實(shí)施例的線性時態(tài)邏輯規(guī)范通用并行挖掘方法的規(guī)范實(shí)例驗(yàn)證步驟的流程框圖。
具體實(shí)施方式
下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施方式。雖然附圖中顯示了本公開的示例性實(shí)施方式,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施方式所限制。相反,提供這些實(shí)施方式是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
如圖1所示,以上述系統(tǒng)實(shí)現(xiàn)的線性時態(tài)邏輯規(guī)范通用并行挖掘方法包括步驟:
S110、預(yù)處理步驟:對日志文件進(jìn)行分割,分離出日志文件中的獨(dú)立軌跡(軌跡是事件按照時間順序排列所組成的序列),獲取日志文件中所有事件的集合(EVENT)以及每個事件在獨(dú)立軌跡中出現(xiàn)的位置(MAP<Event,Position>)。日志文件是用于記錄系統(tǒng)操作事件的記錄文件或文件集合,操作系統(tǒng)有操作系統(tǒng)日志文件,數(shù)據(jù)庫系統(tǒng)有數(shù)據(jù)庫系統(tǒng)日志文件,等等。
S120、規(guī)范實(shí)例生成步驟:根據(jù)輸入的規(guī)范模板集合,將其中的變量與日志事件集合中的事件依次進(jìn)行綁定,以獲取規(guī)范實(shí)例候選集合SIC(Specification Instance Candidates)。
S130、規(guī)范實(shí)例驗(yàn)證步驟:依次對規(guī)范實(shí)例候選集合中的規(guī)范實(shí)例進(jìn)行驗(yàn)證,計算其在日志中的支持度、置信度情況。
支持度(Support)的公式是:Support(A->B)=P(A∪B)。支持度揭示了A與B同時出現(xiàn)的概率。如果A與B同時出現(xiàn)的概率小,說明A與B的關(guān)系不大;如果A與B同時出現(xiàn)的非常頻繁,則說明A與B總是相關(guān)的。
置信度(Confidence)的公式是:Confidence(A->B)=P(A|B)。置信度揭示了A出現(xiàn)時,B是否也會出現(xiàn)或有多大概率出現(xiàn)。如果置信度為100%,則A和B可以捆綁銷售了。如果置信度太低,則說明A的出現(xiàn)與B是否出現(xiàn)關(guān)系不大。
示例:某銷售手機(jī)的商場中,70%的手機(jī)銷售中包含充電器的銷售,而在所有交易中56%的銷售同時包含手機(jī)和充電器。則在此例中,支持度為56%,置信度為70%。
支持度:P(A∪B),即A和B這兩個項(xiàng)集在事務(wù)集D中同時出現(xiàn)的概率。
置信度:P(B|A),即在出現(xiàn)項(xiàng)集A的事務(wù)集D中,項(xiàng)集B也同時出現(xiàn)的概率。
S140、結(jié)果集篩選步驟:根據(jù)輸入的挖掘要求,從規(guī)范實(shí)例候選集合中去除支持度、置信度不符合要求的規(guī)范實(shí)例。
通常在挖掘中會設(shè)定一個最小支持度閾值和最小置信度閾值,同時滿足這兩個支持度的規(guī)則稱為強(qiáng)規(guī)則。置信度表示規(guī)則的強(qiáng)度,支持度表示在規(guī)則中出現(xiàn)的頻度。給定一個事務(wù)集D,挖掘關(guān)聯(lián)規(guī)則問題就是產(chǎn)生支持度和可信度分別大于用戶給定的最小支持度和最小可信度的關(guān)聯(lián)規(guī)則,也就是產(chǎn)生強(qiáng)規(guī)則的問題。
如圖2所示,所述預(yù)處理步驟S110包括如下三個子步驟:
S111、軌跡分離步驟:一個日志文件由許多條軌跡所組成,通過一定的文本處理,將日志中的數(shù)據(jù)讀取到內(nèi)存中,按照特定的分隔符進(jìn)行分離,獲取一個元素為單條軌跡所組成的集合;所述分隔符包括事件分隔符或者軌跡分隔符,如果是對日志的數(shù)據(jù)進(jìn)行分離,往往使用事件分隔符。
S112、事件集合獲取步驟:分別掃描每條軌跡,以特定分隔符對軌跡進(jìn)行分割處理,獲取原子事件集合;所述分隔符包括事件分隔符或者軌跡分隔符,如果是對軌跡進(jìn)行分割,往往使用軌跡分隔符。封閉地加工生成終結(jié)數(shù)據(jù)的程序模塊稱為原子事件。日志將流程中的每個任務(wù)作為一個原子事件來處理。
S113、事件位置信息獲取步驟:掃描每條軌跡,記錄事件在軌跡中出現(xiàn)的位置信息。
其中,所述預(yù)處理步驟S110的上述三個子步驟可以同時進(jìn)行,即順序地從日志文件中讀取字符串,在遇到分隔符時,識別并判斷該分隔符為事件分隔符或者是軌跡分隔符,若為軌跡分隔符,則當(dāng)前軌跡終止并新建一個軌跡存儲對象;若為事件分隔符,則記錄新的事件位置信息,并將該事件加入到事件集合之中。這樣,就可以通過對日志的一次掃描完成輸入數(shù)據(jù)的預(yù)處理,極大地提高運(yùn)行效率。
如圖3所示,所述規(guī)范實(shí)例生成步驟S120包括如下三個子步驟:
S121、規(guī)范模板分析步驟:對輸入的規(guī)范模板進(jìn)行語法分析,獲取規(guī)范模板中的變量。
S122、變量綁定步驟:用事件集合中的事件,對模板中的變量進(jìn)行替換,即將模板中的變量綁定為特定的事件。
S123、實(shí)例生成步驟:規(guī)范模板中的變量都綁定事件后,則成為一個具體的規(guī)范實(shí)例。不同規(guī)范模板變量綁定不同的事件,即可以生成不同的規(guī)范實(shí)例。若一個規(guī)范模板中變量的個數(shù)為N,日志文件中事件集合的大小為M,經(jīng)過排列組合,將生成M的N次方種規(guī)范實(shí)例。
如圖4所示,所述規(guī)范實(shí)例驗(yàn)證步驟S130包括如下三個子步驟:
S131、初始化步驟:由于規(guī)范實(shí)例在每條軌跡上的驗(yàn)證過程相互獨(dú)立,因此為每條軌跡生成一個驗(yàn)證器線程實(shí)例。
S132、并行驗(yàn)證步驟:并行地執(zhí)行各個線程,按照線性時態(tài)邏輯的語義,檢查每個規(guī)范實(shí)例在每個軌跡上是否滿足。
S133、統(tǒng)計匯總步驟:將并行計算的結(jié)果進(jìn)行匯總,統(tǒng)計每個規(guī)范實(shí)例在所有軌跡上的滿足情況,得到一個以(規(guī)范實(shí)例,統(tǒng)計數(shù)據(jù))鍵值對(Key-Value Pair)為元素的映射表M。
鍵值對可以根據(jù)一個鍵值獲得對應(yīng)的一個值。例如,一般的面向?qū)ο缶庉嬛校?jīng)常會使用Form.Enable=True或False,就是用一系列API函數(shù)對一個值的封裝。
最后,所述結(jié)果集篩選步驟S140中,通過對規(guī)范實(shí)例驗(yàn)證步驟S130產(chǎn)生的統(tǒng)計數(shù)據(jù)映射表M進(jìn)行遍歷,逐個考察每個規(guī)范實(shí)例的統(tǒng)計數(shù)據(jù)是否符合要求,去除統(tǒng)計數(shù)據(jù)不符合要求的規(guī)范實(shí)例項(xiàng)。這樣,剩余的規(guī)范實(shí)例都是滿足挖掘條件的規(guī)范實(shí)例。
通過本發(fā)明的方法,可以從軟件系統(tǒng)運(yùn)行日志中獲取事件的線性時態(tài)邏輯關(guān)系??梢杂糜谳o助軟件系統(tǒng)的分析理解,以及通信協(xié)議的分析。
需要說明的是:
在此提供的算法和顯示不與任何特定計算機(jī)、虛擬裝置或者其它設(shè)備固有相關(guān)。各種通用裝置也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類裝置所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應(yīng)當(dāng)明白,可以利用各種編程語言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。
在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。
類似地,應(yīng)當(dāng)理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一根或多根,在上面對本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實(shí)施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實(shí)施例的所有特征。因此,遵循具體實(shí)施方式的權(quán)利要求書由此明確地并入該具體實(shí)施方式,其中每個權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。
本領(lǐng)域那些技術(shù)人員可以理解,可以對實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們設(shè)置在與該實(shí)施例不同的一根或多根設(shè)備中??梢园褜?shí)施例中的模塊或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。
此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來使用。
本發(fā)明的各個部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個或者多個處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號處理器(DSP)來實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的虛擬機(jī)的創(chuàng)建裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計算機(jī)程序和計算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲在計算機(jī)可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
應(yīng)該注意的是上述實(shí)施例對本發(fā)明進(jìn)行說明而不是對本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計算機(jī)來實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項(xiàng)來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
以上所述,僅為本發(fā)明較佳的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以所述權(quán)利要求的保護(hù)范圍為準(zhǔn)。