基于動態(tài)符號執(zhí)行的程序差異行為分析技術(shù)研究與實現(xiàn)
發(fā)布時間:2021-11-26 05:22
隨著軟件的演化,借助補(bǔ)丁以修復(fù)程序中存在的缺陷是提升軟件質(zhì)量和可信程度的重要手段。然而程序補(bǔ)丁可能會引入新的問題,現(xiàn)有的軟件補(bǔ)丁測試技術(shù)有如下幾個主流方向:測試用例自動增強(qiáng)技術(shù)、代碼變更影響分析技術(shù)、多版本程序分析技術(shù)和補(bǔ)丁驗證技術(shù)。但是上述技術(shù)在代碼覆蓋、分析效率以及對補(bǔ)丁可能引入的新缺陷等方面尚需進(jìn)一步的研究。本研究的目標(biāo)是基于符號執(zhí)行技術(shù),設(shè)計并開發(fā)一個程序多版本分析系統(tǒng),用于分析一個程序的不同版本之間的差異行為。本研究的主要研究內(nèi)容和成果主要包括:1)多數(shù)的現(xiàn)有工作或僅考慮程序的單一版本,或需分別分析兩個程序的代碼才能獲取對應(yīng)版本的行為信息,從而進(jìn)行進(jìn)一步的行為差異分析。由于分析對象是一個程序的兩個不同版本,它們通常包含大量的共有代碼,僅包含少量的由補(bǔ)丁引入的差異代碼,因此重復(fù)分析共有代碼帶來了時間和空間上的浪費(fèi)。針對該問題,本研究關(guān)注程序的多版本統(tǒng)一執(zhí)行,提出了一個同時執(zhí)行兩個版本的程序代碼的統(tǒng)一分離執(zhí)行模型(USE),以提高分析的效率。2)與現(xiàn)有的研究工作多數(shù)僅關(guān)注控制流差異不同,USE模型同時關(guān)注程序的控制差異行為和數(shù)據(jù)差異行為,并探索控制差異和數(shù)據(jù)差異之間的關(guān)系。3)實...
【文章來源】:北京郵電大學(xué)北京市 211工程院校 教育部直屬院校
【文章頁數(shù)】:54 頁
【學(xué)位級別】:碩士
【部分圖文】:
圖2-4:?close-files函數(shù)在sed?(vl,v2)中的控制流圖??
根據(jù)求得的起點與終點,可將兩個版本的控制流圖整合成一個統(tǒng)一版本的控??制流圖。首先,需要選定一個版本作為整合的基準(zhǔn)版本,在本文中選擇新版本作??為基準(zhǔn)版本,如圖3-1所示,以右圖所示的控制流圖為基準(zhǔn)版本。在基準(zhǔn)版本中,??為每個起點基本塊增加一條邏輯邊,指向比較版本中對應(yīng)起點對應(yīng)的后繼獨(dú)立基??本塊。例如圖3-1中(%0右->%1左)和(%4右->%11左)兩條邊。邊上的文字表不真??分支(T)和假分支(F)。該邊將比較版本的獨(dú)有基本塊與基準(zhǔn)版本關(guān)聯(lián)在一起。??通過這組邊我們可以獲得以下信息:在程序兩個版本中,節(jié)點%〇的真分支指向??的基本塊是各版本獨(dú)有的。而針對節(jié)點%4,結(jié)論則變成節(jié)點%4的假分支指向的??基本塊是各版本獨(dú)有的。在比較版本中,為每個終點的獨(dú)有前驅(qū)基本塊增加一條??邏輯邊,指向基準(zhǔn)版本中對應(yīng)的終點,例如圖3-1中(%1?和(%1U_>%20???)兩條邊。通過這組邊我們可以獲得以下信息,在執(zhí)行比較版本的獨(dú)有代碼時,??沿某分支執(zhí)行可與基準(zhǔn)版本重新共享代碼。例如節(jié)點%]-沿真分支執(zhí)行,則與基??準(zhǔn)版本在節(jié)點%4重新開始共享代碼
State?Merging?is?successful??圖3-2?USE基本架構(gòu)圖??圖3-2展示了執(zhí)行模式屬性切換的整體流程。統(tǒng)一分離執(zhí)行模型(簡稱為??USE)利用動態(tài)符號執(zhí)行實現(xiàn)執(zhí)行引擎。USE為每一個符號執(zhí)行狀態(tài)增加一個新??的屬性——執(zhí)行模式,來實現(xiàn)在同一符號執(zhí)行引擎內(nèi)的統(tǒng)一分離執(zhí)行。且每個狀??態(tài)僅可能是以下三種模式中的一種:統(tǒng)一執(zhí)行模式(簡稱UE),舊版本分離執(zhí)??行模式(簡稱SPEO)和新版本分離執(zhí)行模式(簡稱SPEN)。SPEO與SPEN統(tǒng)??稱為分離執(zhí)行模式。一個執(zhí)行模式為UE的狀態(tài)僅僅執(zhí)行兩個版本共享的代碼邏??輯,而執(zhí)行模式為分離執(zhí)行模式的狀態(tài)則執(zhí)行各版本獨(dú)有的代碼邏輯。??圖3-2中的分咼點(SplitPoint)和合并點(MergePoint)是執(zhí)行模型中執(zhí)行??模式發(fā)生切換的位置。其中,分離點是基準(zhǔn)版本中代碼差異的起點,例如圖3-1??中的%0和%4,或是由于分支條件的改動,給定相同的輸入,而程序的兩個版本??沿不同的分支執(zhí)行的分支語句所在的程序點。相應(yīng)的,合并點是基準(zhǔn)版本中代碼??差異的終點,例如圖3-1中的%4和%20,或是程序兩個版本的控制流匯合的程??序點。??3.?1.4狀態(tài)分離與狀態(tài)合并??當(dāng)一個UE模式的狀態(tài)
本文編號:3519482
【文章來源】:北京郵電大學(xué)北京市 211工程院校 教育部直屬院校
【文章頁數(shù)】:54 頁
【學(xué)位級別】:碩士
【部分圖文】:
圖2-4:?close-files函數(shù)在sed?(vl,v2)中的控制流圖??
根據(jù)求得的起點與終點,可將兩個版本的控制流圖整合成一個統(tǒng)一版本的控??制流圖。首先,需要選定一個版本作為整合的基準(zhǔn)版本,在本文中選擇新版本作??為基準(zhǔn)版本,如圖3-1所示,以右圖所示的控制流圖為基準(zhǔn)版本。在基準(zhǔn)版本中,??為每個起點基本塊增加一條邏輯邊,指向比較版本中對應(yīng)起點對應(yīng)的后繼獨(dú)立基??本塊。例如圖3-1中(%0右->%1左)和(%4右->%11左)兩條邊。邊上的文字表不真??分支(T)和假分支(F)。該邊將比較版本的獨(dú)有基本塊與基準(zhǔn)版本關(guān)聯(lián)在一起。??通過這組邊我們可以獲得以下信息:在程序兩個版本中,節(jié)點%〇的真分支指向??的基本塊是各版本獨(dú)有的。而針對節(jié)點%4,結(jié)論則變成節(jié)點%4的假分支指向的??基本塊是各版本獨(dú)有的。在比較版本中,為每個終點的獨(dú)有前驅(qū)基本塊增加一條??邏輯邊,指向基準(zhǔn)版本中對應(yīng)的終點,例如圖3-1中(%1?和(%1U_>%20???)兩條邊。通過這組邊我們可以獲得以下信息,在執(zhí)行比較版本的獨(dú)有代碼時,??沿某分支執(zhí)行可與基準(zhǔn)版本重新共享代碼。例如節(jié)點%]-沿真分支執(zhí)行,則與基??準(zhǔn)版本在節(jié)點%4重新開始共享代碼
State?Merging?is?successful??圖3-2?USE基本架構(gòu)圖??圖3-2展示了執(zhí)行模式屬性切換的整體流程。統(tǒng)一分離執(zhí)行模型(簡稱為??USE)利用動態(tài)符號執(zhí)行實現(xiàn)執(zhí)行引擎。USE為每一個符號執(zhí)行狀態(tài)增加一個新??的屬性——執(zhí)行模式,來實現(xiàn)在同一符號執(zhí)行引擎內(nèi)的統(tǒng)一分離執(zhí)行。且每個狀??態(tài)僅可能是以下三種模式中的一種:統(tǒng)一執(zhí)行模式(簡稱UE),舊版本分離執(zhí)??行模式(簡稱SPEO)和新版本分離執(zhí)行模式(簡稱SPEN)。SPEO與SPEN統(tǒng)??稱為分離執(zhí)行模式。一個執(zhí)行模式為UE的狀態(tài)僅僅執(zhí)行兩個版本共享的代碼邏??輯,而執(zhí)行模式為分離執(zhí)行模式的狀態(tài)則執(zhí)行各版本獨(dú)有的代碼邏輯。??圖3-2中的分咼點(SplitPoint)和合并點(MergePoint)是執(zhí)行模型中執(zhí)行??模式發(fā)生切換的位置。其中,分離點是基準(zhǔn)版本中代碼差異的起點,例如圖3-1??中的%0和%4,或是由于分支條件的改動,給定相同的輸入,而程序的兩個版本??沿不同的分支執(zhí)行的分支語句所在的程序點。相應(yīng)的,合并點是基準(zhǔn)版本中代碼??差異的終點,例如圖3-1中的%4和%20,或是程序兩個版本的控制流匯合的程??序點。??3.?1.4狀態(tài)分離與狀態(tài)合并??當(dāng)一個UE模式的狀態(tài)
本文編號:3519482
本文鏈接:http://sikaile.net/kejilunwen/ruanjiangongchenglunwen/3519482.html
最近更新
教材專著