可重構(gòu)克隆代碼的過程提取方法研究.pdf_第1頁
已閱讀1頁,還剩173頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、程序重構(gòu)是一種在保持軟件可見行為的前提下,對(duì)軟件既有代碼的改善。目的是使其更易理解與維護(hù),修改成本更低。程序重構(gòu)可延緩軟件老化帶來的退化影響,改善程序質(zhì)量。過程提取是將已有方法中的一部分提取出來作為一個(gè)新的方法,被提取的部分用新方法調(diào)用替代。過程提取經(jīng)常用于減少軟件系統(tǒng)中的克隆代碼(Clone Code)。本文主要研究克隆代碼的過程提取方法以及重構(gòu)對(duì)進(jìn)化軟件中模塊間依賴關(guān)系的影響。
  針對(duì)由克隆代碼檢測(cè)工具檢測(cè)出來的克隆代碼不能

2、直接用于重構(gòu)的問題,提出了一種可重構(gòu)克隆代碼的預(yù)處理方法,該方法由兩部分組成:首先,將自適應(yīng)K-最近鄰聚類(Adaptive K-Nearest Neighbors,A-KNN)與圖相結(jié)合,用于消除拷貝-粘貼相關(guān)缺陷檢測(cè)的誤檢。然后,對(duì)不含缺陷的克隆代碼,使用基于代價(jià)-收益的評(píng)估方法識(shí)別可重構(gòu)的克隆代碼,為后續(xù)克隆代碼重構(gòu)做好準(zhǔn)備。實(shí)驗(yàn)結(jié)果表明,本文提出的預(yù)處理方法可以有效消除因檢測(cè)錯(cuò)誤修改某標(biāo)識(shí)符缺陷時(shí)產(chǎn)生的誤檢。不僅提高了克隆代碼相

3、關(guān)缺陷檢測(cè)的準(zhǔn)確性,而且可以消除更多的克隆代碼。
  針對(duì)傳統(tǒng)的保持語法結(jié)構(gòu)不變的過程提取方法提取不連續(xù)克隆代碼時(shí)存在的問題,提出一種新的語義保持的不連續(xù)克隆代碼無定型過程提取方法。該方法結(jié)合程序依賴圖(Procedure Dependence Graph,PDG)和抽象語法樹(Abstract Syntax Tree,AST)對(duì)程序進(jìn)行結(jié)構(gòu)語義分析,取消了傳統(tǒng)的保持語法結(jié)構(gòu)不變的過程提取算法對(duì)語句結(jié)構(gòu)一致性的約束,保留了語義一致

4、性約束,從而解決了傳統(tǒng)方法不易處理的連續(xù)但不能直接提取的克隆代碼提取問題,降低了對(duì)未標(biāo)記語句提升的需求,并且不需要對(duì)跳轉(zhuǎn)語句進(jìn)行特殊處理。
  實(shí)驗(yàn)結(jié)果表明,本文提出的克隆代碼無定型過程提取算法的準(zhǔn)確性和適用性均高于已有的保持語法結(jié)構(gòu)不變的過程提取算法,可以有效地減少克隆代碼數(shù)量,提高代碼質(zhì)量。針對(duì)傳統(tǒng)的保持語法結(jié)構(gòu)不變的過程提取方法通過語句提升不能提取某些近似克隆代碼的問題,提出一種新的語義保持的近似克隆代碼無定型過程提取方法(

5、Semantic-Preserving Amorphous Procedure Extraction,SPAPE)。該方法結(jié)合程序依賴圖和抽象語法樹對(duì)程序進(jìn)行結(jié)構(gòu)語義分析,取消了傳統(tǒng)的保持語法結(jié)構(gòu)不變的過程提取算法對(duì)語句結(jié)構(gòu)一致性的約束,保留了語義一致性約束。該方法由四部分組成:首先,SPAPE使用程序依賴圖對(duì)源程序進(jìn)行結(jié)構(gòu)語義分析。然后,結(jié)合程序依賴圖和抽象語法樹執(zhí)行語義保持的無定型過程變換,識(shí)別出差異點(diǎn)。接著,通過插入控制變量和條件

6、語句進(jìn)行差異點(diǎn)融合。最后,進(jìn)行過程提取。實(shí)驗(yàn)結(jié)果表明,本文提出的近似克隆代碼的無定型過程提取方法(SPAPE)解決了傳統(tǒng)方法不能處理某些近似克隆代碼的問題,同時(shí)在算法的有效性、代價(jià)-收益分析等方面優(yōu)于傳統(tǒng)方法。針對(duì)過程提取改變了軟件內(nèi)部模塊間的依賴關(guān)系這一現(xiàn)象,本文從軟件的進(jìn)化角度對(duì)軟件內(nèi)部模塊間依賴的分布以及重構(gòu)對(duì)這種分布的影響進(jìn)行實(shí)驗(yàn)研究。結(jié)果表明,軟件內(nèi)部模塊間的依賴分布是不平衡的:相對(duì)于較大的模塊,依賴集中于較小的模塊間,這種依

7、賴聚集的不平衡性不僅存在于單版本的軟件內(nèi)部,也存在于軟件產(chǎn)品的整個(gè)生命周期中。同時(shí),持續(xù)性重構(gòu)加劇了這種依賴聚集的不平衡性。因此,根據(jù)上述分析結(jié)果,在軟件維護(hù)或質(zhì)量評(píng)估方面軟件管理者和開發(fā)者,更多關(guān)注規(guī)模較小的模塊,并且在軟件的進(jìn)化過程中,進(jìn)一步增加關(guān)注度。
  綜上所述,本文提出的克隆代碼預(yù)處理方法、無定型過程提取方法,解決了可重構(gòu)的克隆代碼的預(yù)處理問題、不連續(xù)克隆代碼的過程提取和近似克隆代碼的過程提取等關(guān)鍵技術(shù)問題,并且通過模

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論