国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種基于模型檢驗(yàn)的時(shí)序軟件質(zhì)量缺陷檢測(cè)方法及系統(tǒng)的制作方法

      文檔序號(hào):6601000閱讀:304來(lái)源:國(guó)知局
      專利名稱:一種基于模型檢驗(yàn)的時(shí)序軟件質(zhì)量缺陷檢測(cè)方法及系統(tǒng)的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及一種在軟件源代碼中檢測(cè)缺陷的技術(shù),具體講涉及一種基于靜態(tài)分析 的軟件質(zhì)量缺陷檢測(cè)方法,屬于計(jì)算機(jī)信息安全技術(shù)領(lǐng)域。
      背景技術(shù)
      隨著信息技術(shù)的高速發(fā)展,軟件產(chǎn)品(從底層的操作系統(tǒng)到高層的應(yīng)用程序)代 碼量越來(lái)越大,程序設(shè)計(jì)越來(lái)越復(fù)雜,其本身存在著大量的質(zhì)量缺陷,危害著信息系統(tǒng)的可 用性、可靠性和安全性,因此如何檢測(cè)軟件程序中可能存在的缺陷成為目前信息技術(shù)領(lǐng)域 高度關(guān)注的熱點(diǎn)。軟件質(zhì)量缺陷的檢測(cè)方法很多,根據(jù)是否需要執(zhí)行被測(cè)軟件的角度可分為兩種 一種是動(dòng)態(tài)分析技術(shù),通過(guò)實(shí)際運(yùn)行程序代碼來(lái)發(fā)現(xiàn)其可能存在的缺陷;一種是靜態(tài)分析 技術(shù),它不實(shí)際運(yùn)行代碼而只是通過(guò)靜態(tài)地查看代碼以找出潛在的缺陷。靜態(tài)分析是手動(dòng)或者借助自動(dòng)化檢測(cè)系統(tǒng)來(lái)對(duì)源代碼或者反匯編代碼清單進(jìn)行 審查的方法。常用的靜態(tài)分析自動(dòng)化軟件缺陷檢測(cè)系統(tǒng)例如RATS、ITS4以及檢查java代 碼的PMD。上述自動(dòng)化代碼缺陷檢測(cè)系統(tǒng)工作原理如下使用鉤子函數(shù),在遇到用戶自定義 屬性中的觸發(fā)條件時(shí),利用一個(gè)“鉤子”來(lái)調(diào)用相應(yīng)的分析函數(shù)判斷是否違背了所給屬性。 該方法雖然能在軟件質(zhì)量檢測(cè)中發(fā)現(xiàn)缺陷,但是仍存在著明顯的缺點(diǎn)一、不能保證缺陷發(fā) 現(xiàn)的完全性;二、虛假錯(cuò)誤的缺陷報(bào)告占多數(shù),耗費(fèi)很多額外的人力、物力去進(jìn)一步分析審 查;三、對(duì)于缺陷的描述能力不足,某些類型的缺陷不能夠很好地被描述;四、不具有跨過(guò) 程分析的能力,對(duì)于全局性、比較微妙的缺陷,則無(wú)能為力。

      發(fā)明內(nèi)容
      本發(fā)明目的在于提供一種基于模型檢驗(yàn)的,分析能力強(qiáng)、缺陷定位準(zhǔn)確、誤報(bào)率 低、可讀性高的軟件質(zhì)量缺陷檢測(cè)方法及系統(tǒng),從而滿足分析各種代碼缺陷的要求,達(dá)到快 速發(fā)現(xiàn)軟件的缺陷,縮短軟件開發(fā)周期,提高軟件質(zhì)量,節(jié)約軟件開發(fā)成本的。為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種基于模型檢驗(yàn)的時(shí)序軟件質(zhì)量缺陷檢測(cè)方 法,其改進(jìn)在于所述方法的具體步驟如下步驟A、輸入被檢測(cè)源代碼,并根據(jù)所述被檢測(cè)源代碼選擇缺陷模式;步驟B、對(duì)所述被檢測(cè)的源代碼進(jìn)行預(yù)處理;步驟C、對(duì)合并完的源代碼模型進(jìn)行控制流圖壓縮;步驟D、判斷所說(shuō)缺陷模式的自動(dòng)機(jī)中的終止?fàn)顟B(tài)在所述被檢測(cè)的原程序的建模 中相對(duì)應(yīng)的安全模型中是否可達(dá),如果所述終止?fàn)顟B(tài)可達(dá),判斷所述被檢測(cè)的源代碼程序 存在缺陷;如果所述終止?fàn)顟B(tài)不可達(dá),則判斷所述被檢測(cè)的源代碼程序不存在缺陷;步驟E、結(jié)果處理將步驟D中檢測(cè)完的源程序代碼終止?fàn)顟B(tài)的位置信息轉(zhuǎn)換為于 原始源代碼的位置信息;步驟F、輸出將最終的判斷結(jié)果輸出顯示出來(lái)供用戶閱讀。
      本發(fā)明一種基于模型檢驗(yàn)的時(shí)序軟件質(zhì)量缺陷檢測(cè)方法的另一優(yōu)選技術(shù)方案為 所述步驟B包括Bi、分析所述被檢測(cè)的源代碼文件,并生成控制流圖;B2、如果所述被檢測(cè)的源代碼程序由多個(gè)代碼文件組成,則先生成各自的控制流 圖,再將控制流圖文件合并成一個(gè)全局控制流圖文件;B3、根據(jù)生成的控制流程圖建模。本發(fā)明一種基于模型檢驗(yàn)的時(shí)序軟件質(zhì)量缺陷檢測(cè)方法的再一優(yōu)選技術(shù)方案為 所述步驟C中壓縮包括Cl、將所述被檢測(cè)的源代碼模型里與所述缺陷模式?jīng)]有關(guān)系的內(nèi)容刪除;C2、將狀態(tài)等價(jià)的所述源代碼模型合并。本發(fā)明一種基于模型檢驗(yàn)的時(shí)序軟件質(zhì)量缺陷檢測(cè)方法的第四優(yōu)選技術(shù)方案為 所述步驟C中所述被檢測(cè)源代碼根據(jù)在所述步驟A中所選擇的缺陷模式進(jìn)行源代碼模型壓縮。本發(fā)明提供了一種基于模型檢驗(yàn)的時(shí)序軟件質(zhì)量缺陷檢測(cè)系統(tǒng),其改進(jìn)在于所 述系統(tǒng)包括源代碼模型生成器、時(shí)序缺陷模式庫(kù)、源代碼模型壓縮器、時(shí)序模型檢驗(yàn)器和結(jié) 果生成模塊,所述時(shí)序缺陷模式庫(kù)連接源代碼模型生成器和時(shí)序模型檢驗(yàn)器,所述源代碼 模型生成器經(jīng)所述源代碼模型壓縮器連接時(shí)序模型檢驗(yàn)器,所述時(shí)序模型檢驗(yàn)器通向結(jié)果 生成模塊。本發(fā)明一種基于模型檢驗(yàn)的時(shí)序軟件質(zhì)量缺陷檢測(cè)系統(tǒng)的另一優(yōu)選技術(shù)方案為 所述源代碼模型生成器將被檢測(cè)源代碼的轉(zhuǎn)化為一種形式化的狀態(tài)自動(dòng)機(jī)模型。本發(fā)明一種基于模型檢驗(yàn)的時(shí)序軟件質(zhì)量缺陷檢測(cè)系統(tǒng)的再一優(yōu)選技術(shù)方案為 所述時(shí)序缺陷模式庫(kù)用于存儲(chǔ)時(shí)序缺陷并用形式化語(yǔ)言對(duì)所述時(shí)序缺陷描述建模,從而形 成用于檢測(cè)的時(shí)序缺陷模式。本發(fā)明一種基于模型檢驗(yàn)的時(shí)序軟件質(zhì)量缺陷檢測(cè)系統(tǒng)的第四個(gè)優(yōu)選技術(shù)方案 為所述源代碼模型壓縮器使用時(shí)序缺陷模式對(duì)被檢測(cè)的程序系統(tǒng)模型進(jìn)行壓縮。本發(fā)明一種基于模型檢驗(yàn)的時(shí)序軟件質(zhì)量缺陷檢測(cè)系統(tǒng)的第五個(gè)優(yōu)選技術(shù)方案 為所述時(shí)序模型檢驗(yàn)器將壓縮后的源代碼模型與所述缺陷模式進(jìn)行對(duì)比檢驗(yàn),判斷所述 被檢測(cè)程序是否違背了缺陷模式。本發(fā)明一種基于模型檢驗(yàn)的時(shí)序軟件質(zhì)量缺陷檢測(cè)系統(tǒng)的第六個(gè)優(yōu)選技術(shù)方案 為所述結(jié)果生成模塊將時(shí)序模型檢驗(yàn)器的輸出轉(zhuǎn)化為檢測(cè)人員能易懂的形式本發(fā)明有益效果本發(fā)明的方法及系統(tǒng)將軟件缺陷的發(fā)現(xiàn)從完成階段提前到開發(fā) 編碼階段,節(jié)約開發(fā)成本,提高軟件質(zhì)量;直接定位到被檢測(cè)的程序源代碼中,方便用戶使 用和分析;對(duì)被測(cè)程序進(jìn)行壓縮,提高軟件質(zhì)量檢驗(yàn)效率;將抽象的程序的控制流模型通 過(guò)圖形化顯示,增加用戶直觀上的認(rèn)識(shí);誤報(bào)率低,可讀性強(qiáng)、易操作,缺陷定位準(zhǔn)確。專業(yè)術(shù)語(yǔ)(1)軟件質(zhì)量保障一種有計(jì)劃的,系統(tǒng)化的行動(dòng)模式,為項(xiàng)目或者產(chǎn)品符合已有技術(shù)需求提供充分信任所必需的;設(shè)計(jì)用來(lái)評(píng)價(jià)開發(fā)或者制造產(chǎn)品的過(guò)程的一組活動(dòng)。(2)軟件缺陷軟件未達(dá)到產(chǎn)品說(shuō)明書標(biāo)明的功能;軟件出現(xiàn)了產(chǎn)品說(shuō)明書指明 不會(huì)出現(xiàn)的錯(cuò)誤;軟件功能超出產(chǎn)品說(shuō)明書指明范圍;軟件未達(dá)到產(chǎn)品說(shuō)明書雖未指出但應(yīng)達(dá)到的目標(biāo)或軟件測(cè)試員認(rèn)為軟件難以理解、不易使用、運(yùn)行速度緩慢,或者最終用戶認(rèn) 為不好。滿足上述五種情況之一的軟件問(wèn)題則稱為軟件缺陷。(3)模型檢驗(yàn)?zāi)P蜋z驗(yàn)是一種檢驗(yàn)系統(tǒng)是否滿足給定屬性的形式化方法。所謂 形式化方法原則上就是用數(shù)學(xué)與邏輯的方法描述和驗(yàn)證系統(tǒng)。從描述上講,分為對(duì)系統(tǒng)的 描述和對(duì)系統(tǒng)性質(zhì)的描述,可以用一種或多種語(yǔ)言來(lái)描述。描述語(yǔ)言包括自動(dòng)機(jī),計(jì)算樹 邏輯,線性時(shí)序邏輯,進(jìn)程代數(shù),η-演算,μ_演算,特殊的程序語(yǔ)言,以及程序語(yǔ)言的子集 等。從驗(yàn)證來(lái)講,主要有兩類方法,一類是以邏輯推理為基礎(chǔ),另一類則以窮盡搜索為基礎(chǔ)。 窮盡搜索方法統(tǒng)稱為模型檢驗(yàn)。(4)控制流圖該控制流程圖是程序控制結(jié)構(gòu)的圖形表示,其基本元素是過(guò)程塊、 節(jié)點(diǎn)、判定,控制流程圖與程序流程圖之間的差異是在控制流程圖中,不顯示過(guò)程塊的細(xì) 節(jié),而在程序流程圖中,著重于過(guò)程屬性的描述。(5)時(shí)序邏輯時(shí)序邏輯用于對(duì)并發(fā)程序的推理,包括在考慮描述程序中單獨(dú)語(yǔ) 句的行為的一組公理的情況下證明程序的屬性。它們能夠描述事件在時(shí)間上的順序,不用 顯式地引入時(shí)間。(B)Kripke模型如果一個(gè)時(shí)序邏輯表達(dá)式的含義總是能夠由一個(gè)有窮狀態(tài)系統(tǒng) 的帶標(biāo)記的狀態(tài)轉(zhuǎn)換圖來(lái)確定,那么這樣的結(jié)構(gòu)就被稱為Kripke模型。Kripke結(jié)構(gòu)是一個(gè) 三元組M = <S,R,L>,這里S表示狀態(tài)集合,RSS表示全部的轉(zhuǎn)換關(guān)系,L SP (AP)是標(biāo)志S 中的每個(gè)狀態(tài)在此狀態(tài)下一組為真的原子命題集合。這里AP是一組原子命題名字。(7)LTL,線性時(shí)序邏輯時(shí)序邏輯的一種,是CTL*的子集。把狀態(tài)樹看成是有限條 或無(wú)限條路徑的集合,一條路徑代表著系統(tǒng)一次可能的運(yùn)行情況。


      圖1為本發(fā)明系統(tǒng)的結(jié)構(gòu)示意圖;圖2為本發(fā)明系統(tǒng)的工作流程圖。
      具體實(shí)施例方式本發(fā)明的提供的一種基于模型檢驗(yàn)的時(shí)序軟件質(zhì)量缺陷檢測(cè)方法的具體步驟如 下步驟A、輸入被檢測(cè)源代碼,并根據(jù)所述被檢測(cè)源代碼選擇缺陷模式。步驟B、對(duì)所述被檢測(cè)的源代碼進(jìn)行預(yù)處理,步驟B具體包括Bi、分析所述被檢測(cè)的源代碼文件,并生成控制流圖;B2、如果所述被檢測(cè)的源代碼程序由多個(gè)代碼文件組成,則先生成各自的控制流 圖,再將控制流圖文件合并成一個(gè)全局控制流圖文件;B3、根據(jù)生成的控制流程圖建模。步驟C、據(jù)在所述步驟A中所選擇的缺陷模式對(duì)合并完的源代碼模型進(jìn)行控制流圖壓縮,該壓縮具體包括Cl、將所述被檢測(cè)的源代碼模型里與所述缺陷模式?jīng)]有關(guān)系的內(nèi)容刪除;C2、將狀態(tài)等價(jià)的所述源代碼模型合并。步驟D、判斷所說(shuō)缺陷模式的自動(dòng)機(jī)中的終止?fàn)顟B(tài)在所述被檢測(cè)的原程序的建模中相對(duì)應(yīng)的安全模型中是否可達(dá),如果所述終止?fàn)顟B(tài)可達(dá),判斷所述被檢測(cè)的源代碼程序 存在缺陷;如果所述終止?fàn)顟B(tài)不可達(dá),則判斷所述被檢測(cè)的源代碼程序不存在缺陷;步驟E、結(jié)果處理將步驟D中檢測(cè)完的源程序代碼終止?fàn)顟B(tài)的位置信息轉(zhuǎn)換為于 原始源代碼的位置信息;步驟F、輸出將最終的判斷結(jié)果輸出顯示出來(lái)供用戶閱讀。如圖1所示,本發(fā)明提供的一種基于模型檢驗(yàn)的時(shí)序軟件質(zhì)量缺陷檢測(cè)系統(tǒng)包 括源代碼模型生成器、時(shí)序缺陷模式庫(kù)、源代碼模型壓縮器、時(shí)序模型檢驗(yàn)器和結(jié)果生成 模塊,時(shí)序缺陷模式庫(kù)連接源代碼模型生成器和時(shí)序模型檢驗(yàn)器,源代碼模型生成器經(jīng)源 代碼模型壓縮器連接時(shí)序模型檢驗(yàn)器,時(shí)序模型檢驗(yàn)器通向結(jié)果生成模塊。源代碼模型生成器該模塊主要功能是對(duì)被檢測(cè)的源代碼系統(tǒng)建模,將被檢測(cè)源 代碼的轉(zhuǎn)化為一種形式化的狀態(tài)自動(dòng)機(jī)模型,以便于后面檢驗(yàn)其是否滿足給定缺陷模式。 一般情況下,使用一個(gè)表示各種系統(tǒng)的公共框架——轉(zhuǎn)換系統(tǒng)(Transition System)來(lái)對(duì) 系統(tǒng)進(jìn)行建模,這種轉(zhuǎn)換系統(tǒng)也可以看作是一種Kripke結(jié)構(gòu)。它是一個(gè)五元組M= (S,Σ, S0, A,L),其中S系統(tǒng)狀態(tài)(系統(tǒng)的變量、信道、控制狀態(tài)等);^o c S系統(tǒng)的初始狀態(tài);Σ系統(tǒng)的動(dòng)作或者輸入字符;AGSXSXS系統(tǒng)的轉(zhuǎn)換關(guān)系,對(duì)系統(tǒng)中每一個(gè)狀態(tài)s e S,存在ε e Σ和t eS,有(s,ε,t) e Δ ;L系統(tǒng)中狀態(tài)特性的刻畫,S —P(AP)是一個(gè)標(biāo)志每個(gè)狀態(tài)所在狀態(tài)下一組為真 的原子命題的集合。這里AP是一組對(duì)系統(tǒng)特定屬性刻畫的原子命題集合。M的一個(gè)運(yùn)行可以表示成一個(gè)無(wú)限狀態(tài)序列P = StlS1S2…,其中Si e S,Stl e S。并 且對(duì)所有 i G N,有(Si, ε “ si+1) e Δ。本系統(tǒng)使用程序的控制流圖模型,即將被檢測(cè)的程序源代碼控制流圖模型轉(zhuǎn)化為 狀態(tài)自動(dòng)機(jī)。表示為P= (Q, Σ, r, A,Q0, Y C1,F(xiàn)),這里IQtl和F分別表示狀態(tài)集,初始狀態(tài) 和最終狀態(tài),它們都只包含一個(gè)狀態(tài){s},即這里不存在狀態(tài)的轉(zhuǎn)換,只是使用符號(hào)棧來(lái)表 示程序執(zhí)行路徑;Σ為輸入字符,這里它是控制流圖中所有的邊的集合,也就是程序中的所 有表達(dá)式;Γ為棧符號(hào),為控制流圖中所有的點(diǎn)的集合,也就是程序中的程序點(diǎn);Ytl為初 始棧符號(hào),一般情況下為程序的入口點(diǎn)。Δ為此PDA的轉(zhuǎn)換關(guān)系,通過(guò)下面的算法獲得對(duì) 所有控制流圖中的邊巧 2,如果表達(dá)式e既不是函數(shù)調(diào)用也不是函數(shù)返回return,加 上轉(zhuǎn)換<, >;如果表達(dá)式e調(diào)用函數(shù)f,則加上轉(zhuǎn)換<,n、>^^<,n丨n2>; 如果表達(dá)式e為函數(shù)返回return,則加上轉(zhuǎn)換<,巧>^^<,。經(jīng)過(guò)上述的轉(zhuǎn)換關(guān)系 的添加規(guī)則,便實(shí)現(xiàn)了程序控制流圖到狀態(tài)自動(dòng)機(jī)的轉(zhuǎn)化。時(shí)序缺陷模式庫(kù)該庫(kù)用于存儲(chǔ)大量的時(shí)序缺陷,即在實(shí)際編程開發(fā)中發(fā)現(xiàn)的不 良編程習(xí)慣、程序邏輯錯(cuò)誤代碼等質(zhì)量缺陷代碼進(jìn)行總結(jié)抽象,然后形式化語(yǔ)言對(duì)時(shí)序缺 陷描述建模形成用于檢測(cè)的時(shí)序缺陷模式。具體描述方法是把希望系統(tǒng)將要滿足的屬性 使用特定的形式進(jìn)行表達(dá),通常使用時(shí)序邏輯來(lái)表示屬性,該方法能夠表達(dá)系統(tǒng)狀態(tài)動(dòng)態(tài) 變化特性。下面對(duì)時(shí)序邏輯及其分類進(jìn)行探討。時(shí)序邏輯是模態(tài)邏輯的一個(gè)分支,它能夠 描述事件在時(shí)間上的順序,而不用顯式地引入時(shí)間。時(shí)序邏輯可以根據(jù)它們?cè)谔幚頋撛诘挠?jì)算樹中的分支的不同方式而分為線性時(shí)序邏輯LTL和計(jì)算樹邏輯CTL。CTL*是一個(gè)組合 了分支時(shí)間和線性時(shí)間算子的時(shí)序邏輯。對(duì)于以上兩種時(shí)序邏輯,它們的不同之處首先在 于對(duì)時(shí)間的本質(zhì)理解不同。線性時(shí)序邏輯把時(shí)間看作一連串的時(shí)刻,一個(gè)系統(tǒng)的每個(gè)可能 計(jì)算路徑被認(rèn)為是分離的;相反,分支時(shí)序邏輯提出了在一個(gè)給定時(shí)間點(diǎn)上有幾個(gè)可選擇 的未來(lái)世界,且所有這些這些未來(lái)世界被認(rèn)為是并發(fā)的,這樣一個(gè)系統(tǒng)的所有計(jì)算路徑被 認(rèn)為是同時(shí)的。其次關(guān)注的系統(tǒng)屬性也有所不同,LTL關(guān)注的是系統(tǒng)執(zhí)行路徑上的屬性,將 其描述為路徑表達(dá)式,而CTL則關(guān)注于系統(tǒng)給定狀態(tài)下的屬性,并將其描述為狀態(tài)表達(dá)式。 最后它們的表達(dá)能力的也有所不同,雖然都是CTL*的子集,但是CTL表達(dá)“公平性”屬性方 面能力不足,而LTL邏輯在表達(dá)E “存在”類型的屬性,比如表達(dá)EF(StartedA,Ready)時(shí) 也無(wú)能為力。本系統(tǒng)采用LTL描述缺陷模式。源代碼模型壓縮器該模塊主要功能是使用缺陷模式對(duì)被檢測(cè)的程 序系統(tǒng)模型進(jìn) 行壓縮,即提供給檢驗(yàn)器的程序模型是在壓縮過(guò)的程序控制流圖上生成的狀態(tài)自動(dòng)機(jī)。采 取壓縮的方法主要是檢驗(yàn)效率的考慮,如果被檢測(cè)的軟件程序代碼文件比較大,則對(duì)應(yīng)的 控制流圖將迅速增加,很容易超出模型檢測(cè)器的時(shí)間和空間限制。壓縮過(guò)程主要是針對(duì)缺 陷模式,如果發(fā)現(xiàn)系統(tǒng)模型里的內(nèi)容與缺陷模式?jīng)]有關(guān)系,則刪除,達(dá)到壓縮源代碼模型尺 寸的目的。壓縮過(guò)程主要依據(jù)是如果狀態(tài)等價(jià)則合并為同一個(gè)狀態(tài)。以LINUX系統(tǒng)中的特 權(quán)模型為例狀態(tài)(ruid, euid, suid, fsuid, rgid, egid, sgid, fsgid)與狀態(tài)(ruid, euid, suid, rgid, egid, sgid)是等價(jià)關(guān)系,可以合并為一個(gè)狀態(tài)。原因如下對(duì)狀態(tài)集合的組成 元素fsuid、euid、fsgid、egid進(jìn)行分析在LINUX系統(tǒng)中除了進(jìn)程自身調(diào)用setfsuid來(lái) 改變fsuid的值之外,fsuid的值通常與euid的值相等;與fsuid類似,除了進(jìn)程自身調(diào)用 setfsgid來(lái)改變fsgid的值外,fsgid的值通常與egid的值相等。因此在進(jìn)程釋放特權(quán)時(shí), 認(rèn)為狀態(tài)(ruid, euid, suid, fsuid, rgid, egid, sgid, fsgid)等價(jià)于(ruid, euid, suid, rgid, egid, sgid)。時(shí)序模型檢驗(yàn)器該模塊主要功能是將壓縮后的源代碼模型與所述缺陷模式進(jìn) 行對(duì)比檢驗(yàn),判斷所述被檢測(cè)程序是否違背了缺陷模式,即是否存在質(zhì)量缺陷。本系統(tǒng) 采用LTL模型檢驗(yàn)方法,表示系統(tǒng)的Kripke結(jié)構(gòu)可以直接對(duì)應(yīng)成一個(gè)正則ω自動(dòng)機(jī), 用A表示,則UA)表示了系統(tǒng)所有可能的行為;然后將時(shí)序邏輯表達(dá)式轉(zhuǎn)化為BUchi 自動(dòng)機(jī),用S表示,L(S)表示了該屬性下允許的系統(tǒng)行為;模型檢測(cè)的過(guò)程就是判斷 是否L (A) ^L (S),即判斷系統(tǒng)所有行為是否都屬于屬性允許的范圍。然而求解 L (A) ^L (S)過(guò)于困難,便將US)取補(bǔ),即表示違背屬性的行為,檢驗(yàn)過(guò)程更改為判 斷L(A) η L(S)是否為空。為空則表示系統(tǒng)滿足屬性,不為空則接受的語(yǔ)言表示了系統(tǒng)對(duì) 屬性可能的違背。結(jié)果生成模塊該模塊主要功能是將時(shí)序模型檢驗(yàn)器的輸出進(jìn)行轉(zhuǎn)化,表示為檢 測(cè)人員能夠讀懂的形式。模型檢驗(yàn)器的輸出為形式化的模型,即狀態(tài)自動(dòng)機(jī)的表示形式,使 用該系統(tǒng)的用戶很難讀懂表達(dá)的意思,也無(wú)法確定被檢測(cè)的程序存在缺陷的具體位置。通 過(guò)該模塊的工作可以將模型檢驗(yàn)器的輸出結(jié)果直接定位到被檢測(cè)的程序源代碼中,方便用 戶使用和分析。本發(fā)明方法及系統(tǒng)的開發(fā)環(huán)境可選擇=RedHat LINUX9操作系統(tǒng)JAVA集成開發(fā) 工具 eclipse ;RedHat LINUX9、jdkl. 4、gcc3. 2 的運(yùn)行和調(diào)試環(huán)境;
      假設(shè)待檢測(cè)的源代碼文件為b. c,缺陷模式是m. fsa,下面就給出檢驗(yàn)此文件的具 體流程,如圖2所示步驟A輸入被檢測(cè)源代碼文件為b. c,選擇的缺陷模式是m. fsa ;步驟B預(yù)處理將待檢測(cè)的源代碼文件f. c分析并生成控制流圖,如果待檢測(cè)的程 序由多個(gè)代碼文件組成,則在各自生成控制流圖后,它們的控制流圖文件則合并成一個(gè)全 局控制流圖文件,并建模;步驟C壓縮然后便是對(duì)合并完的控制流圖進(jìn)行壓縮。使用缺陷模式m. fsa對(duì)生 成的源代碼模型進(jìn)行壓縮;步驟D檢測(cè)判斷描述缺陷模式的自動(dòng)機(jī)中的終止?fàn)顟B(tài)在與原程序相對(duì)應(yīng)的安全 模型中是否可達(dá),如果終止?fàn)顟B(tài)可達(dá),則程序可能違背了缺陷模式,即存在缺陷;步驟E結(jié)果處理由于缺陷及其在代碼中的位置信息是由模型檢測(cè)器從壓縮的源 代碼模型中產(chǎn)生的,為讀懂這些信息,因此需要將它們轉(zhuǎn)換為原始的源代碼位置信息,方便 用戶分析;
      步驟F輸出用戶閱讀輸出的結(jié)果并進(jìn)行分析,確定缺陷是否存在以及存在位置。
      權(quán)利要求
      一種基于模型檢驗(yàn)的時(shí)序軟件質(zhì)量缺陷檢測(cè)方法,其特征在于所述方法的具體步驟如下步驟A、輸入被檢測(cè)源代碼,并根據(jù)所述被檢測(cè)源代碼選擇缺陷模式;步驟B、對(duì)所述被檢測(cè)的源代碼進(jìn)行預(yù)處理;步驟C、對(duì)合并完的源代碼模型進(jìn)行控制流圖壓縮;步驟D、判斷所說(shuō)缺陷模式的自動(dòng)機(jī)中的終止?fàn)顟B(tài)在所述被檢測(cè)的原程序的建模中相對(duì)應(yīng)的安全模型中是否可達(dá),如果所述終止?fàn)顟B(tài)可達(dá),判斷所述被檢測(cè)的源代碼程序存在缺陷;如果所述終止?fàn)顟B(tài)不可達(dá),則判斷所述被檢測(cè)的源代碼程序不存在缺陷;步驟E、結(jié)果處理將步驟D中檢測(cè)完的源程序代碼終止?fàn)顟B(tài)的位置信息轉(zhuǎn)換為于原始源代碼的位置信息;步驟F、輸出將最終的判斷結(jié)果輸出顯示出來(lái)供用戶閱讀。
      2.根據(jù)權(quán)利要求1所述的一種基于模型檢驗(yàn)的時(shí)序軟件質(zhì)量缺陷檢測(cè)方法, 其特征在于所述步驟B包括B1、分析所述被檢測(cè)的源代碼文件,并生成控制流圖;B2、如果所述被檢測(cè)的源代碼程序由多個(gè)代碼文件組成,則先生成各自的控制流圖,再 將控制流圖文件合并成一個(gè)全局控制流圖文件; B3、根據(jù)生成的控制流程圖建模。
      3.根據(jù)權(quán)利要求1所述的一種基于模型檢驗(yàn)的時(shí)序軟件質(zhì)量缺陷檢測(cè)方法,其特征在 于所述步驟C中壓縮包括C1、將所述被檢測(cè)的源代碼模型里與所述缺陷模式?jīng)]有關(guān)系的內(nèi)容刪除; C2、將狀態(tài)等價(jià)的所述源代碼模型合并。
      4.根據(jù)權(quán)利要求1所述的一種基于模型檢驗(yàn)的時(shí)序軟件質(zhì)量缺陷檢測(cè)方法,其特征在 于所述步驟C中所述被檢測(cè)源代碼根據(jù)在所述步驟A中所選擇的缺陷模式進(jìn)行源代碼模 型壓縮。
      5.一種基于模型檢驗(yàn)的時(shí)序軟件質(zhì)量缺陷檢測(cè)系統(tǒng),其特征在于所述系統(tǒng)包括源代 碼模型生成器、時(shí)序缺陷模式庫(kù)、源代碼模型壓縮器、時(shí)序模型檢驗(yàn)器和結(jié)果生成模塊,所 述時(shí)序缺陷模式庫(kù)連接源代碼模型生成器和時(shí)序模型檢驗(yàn)器,所述源代碼模型生成器經(jīng)所 述源代碼模型壓縮器連接時(shí)序模型檢驗(yàn)器,所述時(shí)序模型檢驗(yàn)器通向結(jié)果生成模塊。
      6.根據(jù)權(quán)利要求5所述的一種基于模型檢驗(yàn)的時(shí)序軟件質(zhì)量缺陷檢測(cè)系統(tǒng),其特征在 于所述源代碼模型生成器將被檢測(cè)源代碼的轉(zhuǎn)化為一種形式化的狀態(tài)自動(dòng)機(jī)模型。
      7.根據(jù)權(quán)利要求5所述的一種基于模型檢驗(yàn)的時(shí)序軟件質(zhì)量缺陷檢測(cè)系統(tǒng),其特征在 于所述時(shí)序缺陷模式庫(kù)用于存儲(chǔ)時(shí)序缺陷并用形式化語(yǔ)言對(duì)所述時(shí)序缺陷描述建模,從 而形成用于檢測(cè)的時(shí)序缺陷模式。
      8.根據(jù)權(quán)利要求7所述的一種基于模型檢驗(yàn)的時(shí)序軟件質(zhì)量缺陷檢測(cè)系統(tǒng),其特征在 于所述源代碼模型壓縮器使用時(shí)序缺陷模式對(duì)被檢測(cè)的程序系統(tǒng)模型進(jìn)行壓縮。
      9.根據(jù)權(quán)利要求5所述的一種基于模型檢驗(yàn)的時(shí)序軟件質(zhì)量缺陷檢測(cè)系統(tǒng),其特征在 于所述時(shí)序模型檢驗(yàn)器將壓縮后的源代碼模型與所述缺陷模式進(jìn)行對(duì)比檢驗(yàn),判斷所述 被檢測(cè)程序是否違背了缺陷模式。
      10.根據(jù)權(quán)利要求5所述的一種基于模型檢驗(yàn)的時(shí)序軟件質(zhì)量缺陷檢測(cè)系統(tǒng),其特征在于所述結(jié)果生成模塊將時(shí)序模型檢驗(yàn)器的輸出轉(zhuǎn)化為檢測(cè)人員能易懂的形式。
      全文摘要
      本發(fā)明涉及一種基于靜態(tài)分析的軟件質(zhì)量缺陷檢測(cè)方法及系統(tǒng),屬于計(jì)算機(jī)信息安全技術(shù)領(lǐng)域。該檢測(cè)方法具體步驟如下步驟A、輸入被檢測(cè)源代碼,并根據(jù)被檢測(cè)源代碼選擇缺陷模式;步驟B、對(duì)被檢測(cè)的源代碼進(jìn)行預(yù)處理;步驟C、對(duì)合并完的源代碼模型進(jìn)行控制流圖壓縮;步驟D、判斷被檢測(cè)的原程序的模型中是否存在缺陷;步驟E、結(jié)果處理將檢測(cè)完的源程序代碼終止?fàn)顟B(tài)的位置信息轉(zhuǎn)換為于原始源代碼的位置信息;步驟F、輸出將最終的判斷結(jié)果顯示給用戶。本發(fā)明檢測(cè)方法及系統(tǒng)能夠提早發(fā)現(xiàn)軟件缺陷的,縮短軟件研發(fā)周期,節(jié)約開發(fā)成本,提高軟件質(zhì)量;并且在被測(cè)程序源代碼中直接定位,準(zhǔn)確定位缺陷;能夠提高檢驗(yàn)效率,降低誤報(bào)率。
      文檔編號(hào)G06F11/36GK101833504SQ20101015091
      公開日2010年9月15日 申請(qǐng)日期2010年4月19日 優(yōu)先權(quán)日2010年4月19日
      發(fā)明者張翀斌 申請(qǐng)人:張翀斌
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1