基于程序靜態(tài)與動態(tài)結(jié)構(gòu)的特征定位技術(shù)探析_第1頁
基于程序靜態(tài)與動態(tài)結(jié)構(gòu)的特征定位技術(shù)探析_第2頁
基于程序靜態(tài)與動態(tài)結(jié)構(gòu)的特征定位技術(shù)探析_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、基于程序靜態(tài)與動態(tài)結(jié)構(gòu)的特征定位技術(shù)探析 10-06-30 09:14:00 作者:陳立秋編輯:studa20摘要:特征定位技術(shù)對于解決維護(hù)任務(wù)中提出的面向特征的程序理解以具有很強(qiáng)的針對性和應(yīng)用價值,對提高軟件維護(hù)和程序理解的效率和準(zhǔn)確性具有重要的意義。本文對基于程序靜態(tài)與動態(tài)結(jié)構(gòu)的特征定位技術(shù)進(jìn)行了分析和研究。 關(guān)鍵詞:特征定位;靜態(tài)與動態(tài);基于程序 1特征定位技術(shù)概述 對于確定的維護(hù)任務(wù),糾正或完善系統(tǒng)的某個或某些功能,我們把這些系統(tǒng)待維護(hù)的功能稱為特征。完成對特征的糾正或完善,往往只需要理解與這些特征所對應(yīng)的那部分代碼。因此特征定位是實(shí)現(xiàn)面向特征程序理解的重要支撐技術(shù)。 理解一個特征是如

2、何執(zhí)行的是程序理解中主要的問題。在真正的理解程序運(yùn)行之前,必須先定位特征代碼的執(zhí)行位置。找出執(zhí)行給定特征的源碼通常是不容易的,例如現(xiàn)存的文檔己經(jīng)過時,或系統(tǒng)的初始設(shè)計(jì)師已經(jīng)無法找到了。所以維護(hù)工作引入了不連貫的修改,這種改變引發(fā)了這個系統(tǒng)結(jié)構(gòu)的退化。任何時候的修改使得對程序的理解更加難了。近年來,很多研究人員認(rèn)為輔助糾正性、完善性維護(hù)任務(wù)的程序理解活動的一個關(guān)鍵步驟是進(jìn)行特征定位。它將來自系統(tǒng)問題域的特征映射到系統(tǒng)實(shí)現(xiàn)域的相應(yīng)代碼實(shí)體。而完成對當(dāng)前任務(wù)涉及特征的糾正或完善,往往只需要理解與這些特征所對應(yīng)的那部分代碼。因此特征定位是實(shí)現(xiàn)面向特征的程序理解的重要支撐技術(shù)??傮w來講,需要通過特征定位

3、恢復(fù)出的特征與代碼實(shí)體間的追蹤關(guān)系分為基本追蹤關(guān)系和導(dǎo)出追蹤關(guān)系兩大類?;咀粉欔P(guān)系是特征與代碼實(shí)體間的相關(guān)關(guān)系,特征與實(shí)現(xiàn)該特征的所有代碼實(shí)體間具有相關(guān)關(guān)系。導(dǎo)出追蹤關(guān)系是從特征與代碼實(shí)體間的基本追蹤關(guān)系推導(dǎo)得出。常見的導(dǎo)出追蹤關(guān)系有特定關(guān)系和有關(guān)系。特征與代碼實(shí)體間具有特定關(guān)系表明該代碼實(shí)體參與實(shí)現(xiàn)該特征且不參與實(shí)現(xiàn)任何其它特征。特征與代碼實(shí)體間具有共有關(guān)系表明該實(shí)體參與實(shí)現(xiàn)該特征且同時參與實(shí)現(xiàn)其它特征。獲取一個特征的導(dǎo)出追蹤關(guān)系通常還需要其它特征的基本追蹤關(guān)系。 2基于程序靜態(tài)結(jié)構(gòu)的特征定位 2.1基于抽象系統(tǒng)依賴圖的方法 基于抽象系統(tǒng)依賴圖定位特定系統(tǒng)特征的方法以人對一個特定的系統(tǒng)特征

4、的認(rèn)識作為特征定位的出發(fā)點(diǎn)。在定位的過程中依賴輔助工具分析得到的程序抽象視圖以及輔助工具所提供的對瀏覽、查找、推理程序信息等活動的支持。但具體而言,其在系統(tǒng)抽象、定位過程和工具支持三方面又具有自己的特點(diǎn)。 系統(tǒng)抽象。其方法在特征定位過程中利用了抽象系統(tǒng)依賴圖。ASDG建立在系統(tǒng)依賴圖的基礎(chǔ)之上,但忽略了更細(xì)粒度的語句信息。 針對C語言,抽象系統(tǒng)依賴圖中的節(jié)點(diǎn)代表函數(shù)和全局變量,節(jié)點(diǎn)間的邊代表函數(shù)間的調(diào)用關(guān)系、函數(shù)與全局變量之間以及全局變量間的數(shù)據(jù)流依賴關(guān)系。 特征定位過程。他們基于抽象系統(tǒng)依賴圖的方法給出了理解人員和輔助工具在特征定位過程中的明確分工和細(xì)致的步驟。理解人員的任務(wù)是:確定初始節(jié)點(diǎn)

5、;選擇下一個要訪問的節(jié)點(diǎn);訪問該節(jié)點(diǎn);判斷該節(jié)點(diǎn)是否與所調(diào)查的特征相關(guān);檢查是否己經(jīng)得到了所有相關(guān)的節(jié)點(diǎn)。 工具支持?;诔橄笙到y(tǒng)依賴圖的方法中,輔助工具的任務(wù)是:構(gòu)造抽象系統(tǒng)依賴圖并可視化展示;根據(jù)當(dāng)前訪問的系統(tǒng)依賴圖中的節(jié)點(diǎn)和邊更新查找圖;根據(jù)確定下來的與當(dāng)前特征相關(guān)的節(jié)點(diǎn)和邊擴(kuò)展查找圖。 他們的工具中提出了一個查找圖的概念,它記錄了當(dāng)前查找過的節(jié)點(diǎn),因此除了提供抽象系統(tǒng)依賴圖的可視化以外,還支持程序理解過程中理解步驟的回溯、撤銷以及重做。 2.2借鑒地圖信息可視化技術(shù)的方法 該方法的本質(zhì)仍然是利用工具輔助人的查找和定位,只是它針對那些分散實(shí)現(xiàn)在程序全局內(nèi)的系統(tǒng)特征,尤其針對大型系統(tǒng),以基

6、于Grep的正規(guī)表達(dá)式匹配為起點(diǎn),首先在源代碼中強(qiáng)調(diào)顯示出那些查找到的與當(dāng)前特征相關(guān)的所有語句行。其次,借鑒了地圖信息的可視化技術(shù),處理這些大規(guī)模空間分散但邏輯相關(guān)的語句行信息,為分散實(shí)現(xiàn)的系統(tǒng)特征的查找、定位、變更提供了以下輔助:為那些與特定系統(tǒng)特征相關(guān)的代碼實(shí)體建立索引從而對其進(jìn)行控制;支持在單一視圖內(nèi)展示分散實(shí)現(xiàn)的系統(tǒng)特征的所有語句行; 提供視圖的縮放以支持用戶在不同粒度的程序信息間切換;對實(shí)現(xiàn)一個特定系統(tǒng)特征的代碼實(shí)體的不同修改狀態(tài)進(jìn)行標(biāo)記,從而更好地控制分散實(shí)現(xiàn)的代碼的變更,并保證代碼的一致性;折疊當(dāng)前不需要的代碼信息,使得在一個視圖內(nèi)觀察到更多的有用信息。 10-06-30 09:

7、14:00 作者:陳立秋編輯:studa202.3關(guān)注圖方法 關(guān)注圖的核心結(jié)構(gòu)包括類、方法和屬性,并刻畫它們之間的調(diào)用、讀取等關(guān)系。其方法中,關(guān)注圖是程序模型的壓縮子集,它并沒有包含程序模型中涉及一個關(guān)注點(diǎn)的所有節(jié)點(diǎn)和邊,那些能夠根據(jù)關(guān)注圖中已有信息準(zhǔn)確地從程序模型中恢復(fù)出來的信息將被省略,如一個完全實(shí)現(xiàn)關(guān)注點(diǎn)的類,它的屬性和方法肯定也是完全實(shí)現(xiàn)該關(guān)注點(diǎn)的,則關(guān)注圖中只包含這個類,它的屬性和方法是省略掉的。 關(guān)注圖將代碼中分散實(shí)現(xiàn)的關(guān)注點(diǎn)的信息集中地以圖的形式表示出來,從而輔助支持對其定位以及進(jìn)一步的變更管理。構(gòu)造關(guān)注圖的過程首先基于關(guān)鍵字匹配查找代碼中與關(guān)注點(diǎn)相關(guān)的一個初始點(diǎn),進(jìn)而由人交互地

8、對自動提取的結(jié)構(gòu)化 程序模型進(jìn)行分析,并以計(jì)算機(jī)輔助的方式構(gòu)造最終的關(guān)注圖,同時一獲取關(guān)注圖與源代碼之間的追蹤關(guān)系。 3基于程序動態(tài)結(jié)構(gòu)的特征定位 基于動態(tài)剖面的特征定位方法依賴對系統(tǒng)的動態(tài)執(zhí)行。它首先為所關(guān)注特征設(shè)計(jì)測試用例。然后通過執(zhí)行這些測試用例建立特征與代碼之間的關(guān)系,獲取對特征的定位。 3.1軟件搜索方法 軟件搜索方法關(guān)注獲取特征與代碼實(shí)體間的特定追蹤關(guān)系。該方法針對每個需要定位的系統(tǒng)特征設(shè)計(jì)兩組測試用例,一組測試用例的執(zhí)行將導(dǎo)致該特征被展示,另外一組測試用例的執(zhí)行不會涉及這個系統(tǒng)特征。用執(zhí)行第一組測試用例得到的動態(tài)剖面中包含的代碼實(shí)體減去執(zhí)行第二組測試用例得到的代碼實(shí)體,即得到特定

9、于該系統(tǒng)特征的代碼部分。 3.2基于動態(tài)執(zhí)行切片的方法 程序切片(Program Slice)技術(shù)是一種分析和理解軟件程序的技術(shù)。軟件人員在代碼調(diào)試和軟件測試過程中,常常會不自覺的應(yīng)用這種技術(shù)。目前,程序切片已經(jīng)發(fā)展成為一種比較成熟的技術(shù),并出現(xiàn)了許多切片準(zhǔn)則、切片算法和相應(yīng)的軟件工具。程序切片是一個可執(zhí)行程序,是按照一定的準(zhǔn)則從源程序中移去零條或多條語句來構(gòu)造的。隨著切片技術(shù)的發(fā)展,目前對于程序切片還有另外一種定義方法:由影響程序中某個興趣點(diǎn)處變量值的所有語句和控制謂詞組成的一個程序子集,該子集并不一定是一個可執(zhí)行的程序段。從以上兩種定義出發(fā),實(shí)際上定義了兩種程序切片,即靜態(tài)切片和動態(tài)切片。

10、切片技術(shù)從程序中去除不會影響感興趣的變量語句,形成一個程序的子集,從而簡化了程序,有利于故障的定位。 3.3基于形式化概念分析的方法 該方法不僅關(guān)注特征與代碼實(shí)體間的基本追蹤關(guān)系,其更為關(guān)注獲取系統(tǒng)特征與代碼之間的多種導(dǎo)出追蹤關(guān)系。因此,即使只對某一個特征進(jìn)行定位,此外,由于系統(tǒng)特征與測試用例之間的對應(yīng)關(guān)系并不是簡單的一一對應(yīng),依賴測試用例獲取特征與代碼之間的追蹤關(guān)系還需要考慮特征與測試用例之間的二元關(guān)系。因此,首先對測試用例與代碼實(shí)體間的二元關(guān)系進(jìn)行形式化的概念分析,為其建立一個概念格結(jié)構(gòu)并將其可視化。然后,結(jié)合測試用例與特征間的二元關(guān)系,交互地分析理解第一步建立的概念格結(jié)構(gòu),從而獲取特征與代碼實(shí)體間的多種追蹤關(guān)系。由此可見,對于基于程序動態(tài)剖面的特征定位方法,同樣需要具有對所要調(diào)查的具體特征的先驗(yàn)認(rèn)識,否則無法設(shè)計(jì)恰當(dāng)?shù)臏y試用例。即便是在具有現(xiàn)成的測試用例的情況下,依然需要理解人員更進(jìn)一步的工作。因?yàn)?為發(fā)現(xiàn)特征的錯誤而設(shè)計(jì)的測試用例對于定位這個特征可能并不總是完全合適的。而測試用例的自動生成技術(shù)通

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論