面向軟件重構(gòu)的推薦方法研究
本文關鍵詞:面向軟件重構(gòu)的推薦方法研究,由筆耕文化傳播整理發(fā)布。
【摘要】:由于需求的改變導致軟件在其生命周期內(nèi)不斷演化。隨著程序員不斷的增加或刪減代碼,軟件原先的設計構(gòu)架被打破,結(jié)構(gòu)變得不再清晰,代碼變得越來越難理解,軟件的擴展和維護也變得越來越困難。軟件重構(gòu)是改善軟件質(zhì)量的一種重要手段。它在不改變軟件外部行為特性的情況下通過調(diào)整軟件內(nèi)部結(jié)構(gòu)以提高軟件的可理解性、可維護性和可擴展性。自1992年Opdyke首次提出了軟件重構(gòu)的概念以來,軟件重構(gòu)迅速成為研究的熱點,在工業(yè)界和學術(shù)界獲得廣泛的認可。研究人員針對軟件重構(gòu)開展了大量的研究工作,也設計實現(xiàn)了許多重構(gòu)工具。軟件重構(gòu)是一項復雜的代碼調(diào)整活動,它要求程序員不斷做出各種復雜的決策。例如,在何處重構(gòu)、何時應重構(gòu)、以及如何重構(gòu)等等。利用自動推薦技術(shù)以降低各種復雜重構(gòu)決策的難度既是降低重構(gòu)成本提高重構(gòu)效果的一個重要途徑,也是推廣軟件重構(gòu)技術(shù)的一個重要技術(shù)基礎。為此,本文面向軟件重構(gòu)研究相應的推薦方法以輔助程序員進行重構(gòu)決策,從而降低重構(gòu)難度并提高重構(gòu)效果。本文的主要工作和貢獻體現(xiàn)在以下幾個方面:(1)基于代碼庫和特征匹配的函數(shù)名稱推薦重命名是最常見的軟件重構(gòu)操作之一。程序員通過重命名操作給相關的軟件實體賦予更有意義的名稱。然而如何選擇合適的名稱就需要人來決定。對于缺乏經(jīng)驗的初學者或是母語并非英語的程序員,為函數(shù)擬定一個合適的名字并不容易。為此,本文提出一種基于代碼庫和特征匹配的函數(shù)名稱推薦方法以輔助程序員為函數(shù)確定合適的名字。首先,該方法使用詞性標注技術(shù)對代碼庫中的函數(shù)名稱進行解析獲取用于命名的候選詞條。然后通過特征抽取技術(shù)將函數(shù)中代表函數(shù)特征的代碼抽取出來,并在特征代碼與候選詞條之間建立關聯(lián)關系。最后,將特征代碼與待推薦函數(shù)相匹配篩選候選詞條并按照規(guī)則為程序員推薦命名方案。實驗的結(jié)果表明本文提出的方法具有較高的推薦成功率。(2)基于測試用例變化的軟件重構(gòu)推薦方法許多初學者往往缺乏軟件重構(gòu)的經(jīng)驗,對軟件重構(gòu)工具也不熟悉,因此很少使用工具實施重構(gòu)。然而手工實施重構(gòu)耗時易錯。如果能夠從代碼的變化中及時發(fā)現(xiàn)重構(gòu)的意圖,就能提醒或指導程序員使用重構(gòu)工具,進而減少人為的錯誤并降低軟件重構(gòu)的難度。為此,本文針對測試驅(qū)動開發(fā)(Test-Driven Development)提出一種基于測試用例變化的軟件重構(gòu)推薦方法。該方法通過在線監(jiān)控的方式對測試代碼進行動態(tài)監(jiān)控,將測試代碼的變化情況與預先定義的基于重構(gòu)的測試代碼變化模式的啟發(fā)規(guī)則相匹配,從而為用戶推薦重構(gòu)。實驗的結(jié)果表明該方法具有較高的推薦準確率。(3)基于優(yōu)先級的代碼壞味處理順序推薦軟件重構(gòu)是消除代碼壞味的一種有效手段。然而軟件重構(gòu)活動也需要耗費一定的人力資源。因此,在資源受限條件下可能無法通過重構(gòu)消除所有的代碼壞味。此時,我們應該優(yōu)先選擇和處理那些對軟件危害較大的壞味類型才能最大限度地提高軟件的質(zhì)量。為此,本文,從代碼壞味危害發(fā)生的概率、影響范圍、是否對系統(tǒng)安全性構(gòu)成威脅、是否影響軟件的復用、是否影響軟件的可理解性等幾個方面分析了10種典型的代碼壞味。依據(jù)分析的結(jié)果劃分了代碼壞味處理的優(yōu)先級,明確了每個級別的特征(如安全性威脅,影響范圍等)。通過實驗表明,在資源受限情況下,按照本文推薦的基于優(yōu)先級的代碼壞味處理順序?qū)嵤┲貥?gòu)能夠有效的提高軟件重構(gòu)的整體效果。
【關鍵詞】:軟件重構(gòu) 代碼壞味 軟件維護 推薦方法 測試驅(qū)動 重構(gòu)自動化
【學位授予單位】:北京理工大學
【學位級別】:博士
【學位授予年份】:2015
【分類號】:TP391.3
【目錄】:
- 摘要5-7
- Abstract7-16
- 第1章 緒論16-34
- 1.1 軟件演化與軟件重構(gòu)16-18
- 1.2 面向軟件重構(gòu)的推薦方法18-26
- 1.2.1 軟件重構(gòu)機會推薦19-21
- 1.2.2 軟件重構(gòu)順序推薦21-24
- 1.2.3 軟件重構(gòu)方案推薦24-25
- 1.2.4 軟件重構(gòu)推薦工具25-26
- 1.3 其他軟件重構(gòu)技術(shù)研究現(xiàn)狀26-31
- 1.3.1 軟件重構(gòu)驗證26-28
- 1.3.2 軟件重構(gòu)效果評估28-29
- 1.3.3 軟件重構(gòu)一致性29-30
- 1.3.4 基于圖的軟件重構(gòu)方法研究30-31
- 1.4 尚待解決的問題31-32
- 1.5 研究內(nèi)容32-33
- 1.6 論文組織結(jié)構(gòu)33-34
- 第2章 基于代碼庫和特征匹配的函數(shù)名稱推薦方法34-55
- 2.1 引言34-37
- 2.2 名稱推薦方法37-44
- 2.2.1 方法概述37-38
- 2.2.2 檢索相似函數(shù)38-40
- 2.2.3 函數(shù)名稱解析40-41
- 2.2.4 特征代碼抽取41-43
- 2.2.5 名稱推薦43-44
- 2.3 實驗驗證44-52
- 2.3.1 實驗設計44-47
- 2.3.2 實驗過程47-48
- 2.3.3 實驗結(jié)果與分析48-52
- 2.4 討論52-54
- 2.4.1 實驗人員52
- 2.4.2 項目的選取52
- 2.4.3 自然語言處理工具52-53
- 2.4.4 特征選擇算法53
- 2.4.5 名稱結(jié)構(gòu)53
- 2.4.6 匹配算法53
- 2.4.7 實驗結(jié)果的適用性53-54
- 2.5 小結(jié)54-55
- 第3章 基于測試代碼變化的軟件重構(gòu)推薦方法55-70
- 3.1 引言55-56
- 3.2 軟件重構(gòu)推薦方法56-62
- 3.2.1 方法概述56
- 3.2.2 測試代碼的動態(tài)監(jiān)控56-57
- 3.2.3 變化分析57-58
- 3.2.4 基于規(guī)則的匹配58-62
- 3.3 實驗驗證62-67
- 3.3.1 實驗設計62-63
- 3.3.2 實驗過程63-64
- 3.3.3 實驗結(jié)果和分析64-67
- 3.4 討論67-68
- 3.4.1 實驗人員67-68
- 3.4.2 項目選取68
- 3.4.3 實驗結(jié)果68
- 3.5 小結(jié)68-70
- 第4章 基于代碼壞味優(yōu)先級的軟件重構(gòu)調(diào)度推薦方法70-90
- 4.1 引言70-73
- 4.2 典型代碼壞味73-76
- 4.3 代碼壞味處理優(yōu)先級76-78
- 4.4 實驗驗證78-89
- 4.4.1 問卷調(diào)查78-80
- 4.4.2 重構(gòu)歷史分析80-83
- 4.4.3 重構(gòu)效果驗證83-88
- 4.4.4 討論88-89
- 4.5 小結(jié)89-90
- 第5章 軟件重構(gòu)推薦系統(tǒng)原型設計與實現(xiàn)90-97
- 5.1 引言90
- 5.2 需求分析90-91
- 5.3 體系結(jié)構(gòu)91-96
- 5.3.1 支撐體系91-92
- 5.3.2 數(shù)據(jù)庫92
- 5.3.3 自然語言處理92
- 5.3.4 動態(tài)檢測92-93
- 5.3.5 搜索引擎93
- 5.3.6 執(zhí)行引擎93
- 5.3.7 解析器93-94
- 5.3.8 軟件重構(gòu)推薦94
- 5.3.9 圖形用戶界面94-96
- 5.3.10 其他插件96
- 5.4 小結(jié)96-97
- 第6章 結(jié)束語97-101
- 6.1 本文工作小結(jié)97-99
- 6.2 進一步工作設想99-101
- 參考文獻101-119
- 攻讀學位期間發(fā)表論文與研究成果清單119-120
- 致謝120-121
- 作者簡介121
【共引文獻】
中國期刊全文數(shù)據(jù)庫 前3條
1 劉偉;胡志剛;劉宏韜;;基于抽象語法樹和多態(tài)機制的復雜條件語句自動重構(gòu)研究[J];電子科技大學學報;2014年05期
2 劉偉;胡志剛;劉宏韜;楊柳;;Automated pattern-directed refactoring for complex conditional statements[J];Journal of Central South University;2014年05期
3 劉偉;胡志剛;劉宏韜;;單例模式導向的源代碼自動重構(gòu)研究[J];小型微型計算機系統(tǒng);2014年12期
中國博士學位論文全文數(shù)據(jù)庫 前1條
1 金濤;業(yè)務過程模型檢索與重構(gòu)[D];清華大學;2012年
中國碩士學位論文全文數(shù)據(jù)庫 前4條
1 張學鵬;基于重構(gòu)的核電廠環(huán)境監(jiān)測系統(tǒng)[D];南華大學;2012年
2 李霞;結(jié)合動態(tài)測試和靜態(tài)分析的克隆代碼重構(gòu)[D];哈爾濱工業(yè)大學;2013年
3 李智超;基于支持向量機的克隆代碼有害性評價方法研究[D];哈爾濱工業(yè)大學;2013年
4 黃雪;面向數(shù)字礦山信息系統(tǒng)的重構(gòu)研究[D];中南大學;2014年
本文關鍵詞:面向軟件重構(gòu)的推薦方法研究,,由筆耕文化傳播整理發(fā)布。
本文編號:432330
本文鏈接:http://www.sikaile.net/shoufeilunwen/xxkjbs/432330.html