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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論