999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

代碼壞味檢測及重構的現狀分析

2014-04-29 00:00:00姜德迅馬培軍蘇小紅王甜甜
智能計算機與應用 2014年3期

收稿日期:2014-03-08

基金項目:國家自然科學基金(61073052)。

作者簡介:姜德迅(1983-),男, 黑龍江哈爾濱人,博士研究生,主要研究方向:代碼壞味檢測、壞味重構;

馬培軍(1963-),男,山東濰坊人.博士,教授,博士生導師,主要研究方向: 軟件工程、信息融合、圖像處理與識別等;

蘇小紅(1966-),女,黑龍江哈爾濱人.博士,教授,博士生導師,主要研究方向: 程序理解、克隆代碼檢測與重構、軟件缺陷和代碼壞味檢測等。

摘要:軟件良好的設計質量能使維護和重用變得更加容易和方便,而如果代碼中存在各種各樣的壞味,那么必將導致軟件整體設計質量降低。首先對壞味的定義、描述和分類進行分析,之后列舉現有的壞味檢測以及重構研究,對其進行分析和比較。現狀分析之后指出了現存的不足之處,為新的研究指明了方向。

關鍵詞:研究現狀; 代碼壞味; 壞味檢測; 壞味重構

中圖分類號:TP311文獻標識碼:A文章編號:2095-2163(2014)03-0023-05

Related Work Analysis of Code Bad Smell Detection and Refactoring

JIANG Dexun, MA Peijun, SU Xiaohong, WANF Tiantian

(School of Computer Science and Technology, Harbin Institute of Technology, Harbin 150001, China)

Abstract:Good quality of software would make the maintenance and re-use easier and more convenient. When there are too many bad smells, the total quality would be reduced. In this paper, bad smell is defined, described and classified, and then the related work about bad smells detection and refactoring is listed, analyzed and contrasted. The limitation and shortage of the related work are presented to point out the way of further researches.

Key words:Related Work; Code Bad Smell; Bad Smell Detection; Bad Smell Refactoring

0引言

壞味(bad smell)\\[1\\]就是指代碼中出現的一種“跡象”,導致代碼難于理解和修改。壞味并不是代碼中已經出現的錯誤或者缺陷,但是可能會導致錯誤或者缺陷的發生。所以說,壞味實際上是代碼中潛在問題的警示信號。因此,當出現代碼壞味時,就應當對其進行重構。重構是指對軟件內部結構的一種調整,在不改變軟件可觀察行為的前提下,借助重構提高其可理解性,降低其修改成本。

壞味破壞了程序的設計質量,特別是面向對象程序中基于對象編程的設計質量。壞味會影響程序的可理解性。并且,壞味導致程序出現錯誤的可能性增大。因此,程序中出現壞味,將降低程序的整體質量,非常不利于程序的開發、修改、維護及擴展。壞味的檢測分為人工檢測和自動檢測兩種。人工檢測代碼的速度較慢,且主觀性較高,檢測準確性也較低。但是由于壞味的特征不夠明確和統一,自動檢測仍具有較大難度。

找到壞味并不是最終目的,本文研究的目的是為了對壞味進行修改并使之消除,從而達到提高代碼質量的目的。這種消除壞味的方法即稱為重構。Martin Fowler在其著作\\[1\\]中是這樣定義重構的:重構是對軟件的內部結構所做的一種改變,這種改變在可觀察行為不變的條件下使軟件更容易理解,而且修改更廉價。這種重構指的是代碼級別的修改行為。

1壞味的定義和描述

Fowler將代碼壞味進行分類,論述了程序中可能存在的22種代碼壞味,并逐類對其各自在代碼中的表現進行描述,也給出了改善這種壞味現象的大體思路。在此基礎上,Kerievsky\\[2\\]提出了5種新的代碼壞味加以補充。Abebe\\[3\\]進一步給出了5種基于詞法的代碼壞味,并根據程序代碼文本上出現的不良問題進行了新壞味的定義和描述。

將壞味進行分類,必將有助于對壞味的理解和使用。在提出壞味之后,Wake\\[4\\]等人對于壞味有一種簡單的分類,即將壞味分為“類內壞味”和“類外壞味”兩種。這種分類方式過于簡單,并且分類中還包括很多不屬于壞味的情況。Mantyla\\[5\\]對文獻\\[1\\]中提出的22種代碼壞味進行分類,將壞味分為:過度膨脹(the bloaters)、面向對象濫用(the object-orientation abusers)、妨礙修改(the change preventers)、可有可無情況(the dispensables)、封裝問題(encapsulators)以及其他情況等。對壞味進行分類的意義在于,使得壞味更容易理解,壞味之間的關系更加明確,使對壞味的研究能夠更加深入。

2壞味檢測

本文提到的壞味檢測,是指壞味的自動檢測。壞味的自動檢測即是使用程序對代碼中可能存在的壞味進行檢測的過程??梢园凑諜z測方法的不同將相關研究分為以下幾類。

2.1基于文本的壞味檢測

基于文本的壞味檢測主要是將源代碼經過詞法分析,并將得到的token串作為待檢源,再通過文本比對和分析的方法進行檢測的。該類研究能夠檢測的壞味通常也是與源代碼文本相關的壞味,最常見的通過文本進行檢測的壞味是重復代碼\\[1\\]。其它可以通過文本進行檢測的壞味還有switch驚悚現身、平行繼承體系、過多的注釋等。

Johnson\\[6\\]利用查找完全相同子串的方法處理冗余代碼。Baker\\[7\\]提出了檢測代碼段中出現完全相同或近似相同現象的方法。這里,近似相同的含義是:若將一段代碼中的一組變量名和常量用另外一段代碼中的相應一組變量名和常量替換,則兩段代碼完全相同。

Adar\\[8\\]設計了一種代碼克隆檢測工具GUESS,并與Kim一起將其改進為SoftGUESS工具。該工具由一個克隆庫和一系列小型應用程序組成,能夠在系統依賴、設計信息和包結構等的文本層面上對代碼克隆現象進行分析。同時,該工具可以對克隆代碼現象進行多版本的可視化顯示。

張鵬\\[9\\]研究兩個代碼是否具有相似性的課題,從相似代碼的類型、從屬關系等特點,建立其屬性庫,并根據相似評價標準來進行檢測。使用最長公共子序列算法來實現程序代碼之間的相似性比對,測量精度可達94%以上。

劉鑫\\[10\\]使用數據挖掘技術,實現了一個基于token串的重復代碼檢測模型。將重復代碼檢測問題轉化成為一個序列模式,使用改進的 CloSpan算法查找支持度至少為2的頻繁子序列,對應于程序中的重復代碼段,通過篩選得到重復代碼對結果。該方法的時間復雜度較低,適于分析檢測大規模程序,并且可以檢測出經過修改的重復代碼現象。

使用簡單文本作比較來進行重構定位,檢測速度快,誤檢率低,但是沒有考慮代碼的語義信息,所能檢測的種類過少,漏檢率高。

第3期姜德迅,等:代碼壞味檢測及重構的現狀分析智能計算機與應用第4卷 2.2基于度量的壞味檢測

基于度量的壞味檢測,是指從源代碼中提取或統計一些可以代表程序特征的數值,可能需要計算和分析,得到一系列度量值,并在預設閾值的作用下,進行比較和分析,最終得到結果,判斷代碼中是否存在相應的壞味。

Simon等人\\[11-12\\]主要使用基于內聚性的距離來量化代碼中可能的缺陷,根據度量結果分析代碼結構,從而識別到有缺陷的代碼。其缺點在于識別代碼缺陷的能力會因為度量的規則而存在差異,對于多態、異常和多線程的情況也沒有加以考慮。

Tahvildari和Kontogiannis\\[13\\]完成了一個設計流再工程框架,并定義了復雜性度量、耦合性度量和內聚性度量三類,通過利用這些度量,來完成對程序設計性質方面的檢測。缺點在于分析的結果需要程序員的自行判斷,而且也無法進行自動定位。

Tsantalis和Chatzigeorgiou\\[14\\]使用實體距離作為度量,對程序運行中需要重構的代碼壞味進行判斷和定位,并自動進行了移動方法的重構操作。本文在Simon的距離理論的基礎上做了一系列的改進,增加了類和實體之間、類和類之間的距離概念,使得能夠對重構進行直接定位。但是這種方法計算量較大。

Reddy和Rao\\[15-16\\]通過面向依賴的復雜性度量值來檢測壞味。首先利用類的調用關系來定義類之間的耦合度,通過計算一個類與其他類之間的平均耦合度來判斷該類是否可能存在發散式變化壞味。這種方法思路明確,計算代價小,但是具有一定的局限性。

Sant’ Anna\\[17\\]提取了代碼中一些基于關系的度量數據,并用于壞味檢測。通過將設計關系和代碼之間映射的抽象化,來表達出程序可能存在的設計問題。這種壞味檢測只能發現整個系統中壞味的存在,但無法做到明確定位。

通過提取度量值進行壞味檢測的方法,其提取的特征同源程序有較高的符合度,并且具有較快的檢測速度。但是對于度量的選取,是通過檢測者的人為規定來完成的;得到度量值后有時需要與預設定的閾值進行比較判斷才能得到檢測結果。以上兩點都會降低壞味檢測的客觀性,從而影響到檢測結果的準確性。

2.3基于聚類的壞味檢測

聚類是指將物理或抽象對象的集合分成由類似的對象組成的多個類的過程。使用聚類分析的方法來檢測壞味,主要是針對由于內聚性和耦合性等相關問題引發的一類壞味。

Lung等人\\[18\\]將聚類技術應用到程序的函數設計中,將內聚度低的函數分解成若干個新的函數,新函數的內聚度提高。同時也能夠為函數重組提供更多的選擇。文獻中沒有明確說明如何獲取合適的實體屬性,算法普適性較差?;诖耍琇ung等人在文獻\\[19\\]中對實體屬性獲取方法做了改進和描述,使得聚類方法能夠應用于更加普遍的源代碼上。

Alkhalid等人\\[20\\]提出一種自適應K近鄰算法,通過計算數據和控制屬性的權重,來處理由于低內聚問題造成的相關代碼壞味。該方法沒有給出具體的重構方案。

上述研究采用聚類分析進行壞味檢測,都需要人為設定閾值來對最終的聚類結果進行判斷和分析,才能得到檢測結果。閾值源于經驗數據,具有較大的主觀性,因此會導致壞味檢測的準確率較低。

Srinivas \\[21\\]采用K近鄰聚類方法來進行面向對象代碼中包層級的重構。文章認為在包的層級,包內的類具有高內聚性,而包間耦合度低。通過判斷各類中是否存在其他類的實例,做為內聚算法的數據。

Ratzinger和Sigmund等人\\[22\\]提出了一種根據程序開發歷史記錄來預測可能存在的代碼壞味的方法。從程序的版本控制系統中獲取程序自身的規模、編寫者變動信息、修改次數、修改頻率、修改習慣以及其他相關信息,作為進行聚類分析的數據來源。根據這些數據,采用決策樹、邏輯樹、重復增量修剪以及最近鄰等聚類算法,獲得待重構位置的可能預測結果。作者對聚類算法并沒有進行實現,也無從對比各方法的優劣性。

Grosser等人\\[23\\]提出一種預測系統質量性質的方法。在保存有大量系統質量信息的數據庫中,指定系統的質量因素(健壯性),是從其他與指定系統具有最大相關度的系統中獲得。而獲取最大相關度的其他系統,是通過K近鄰聚類計算來完成的。

采用聚類分析的方法進行相關代碼壞味的檢測,具有精確度高、檢測結果準確的特點。聚類分析進行壞味檢測,也要使用閾值(或其他預設值),但是閾值對檢測結果的影響比基于度量的壞味檢測方法要小,特別是使用一些特定聚類方法(如動態確定K值的K近鄰聚類分析),閾值已經基本不會影響到檢測結果。但是基于聚類的檢測方法,需要通過計算來分析程序內部的關系,得到待處理的組群,之后再進行相關聚類分析,整體檢測方法的時間復雜度較高,檢測也相對耗時。

2.4其他壞味檢測方法

有一些研究使用不變式進行壞味檢測。不變式是指在程序中固定不變出現的某種特征。基于Banerjee和Kim\\[24\\]對面向對象數據庫模式的研究,Willan F.Opdyke\\[25\\]定義了7個基于C++的不變式,按照不同級別對程序進行概括。包括唯一超類、不同類名、不同的實體名、被繼承的成員變量不能被重定義、成員變量重定義兼容、類型安全的賦值、語義等價的引用和操作等。

有一些研究使用程序的抽象語法樹中間表示結構來完成代碼壞味的檢測以及重構工作。該類方法的特點是將源程序轉化為抽象語法樹,在這種樹結構上尋找壞味。這些研究認為,在源代碼上直接進行壞味檢測,對程序元素之間的很多關系缺乏直觀和明確的表示,需要構建其他中間表示如程序流圖或依賴圖等,這會導致程序分析和計算的費用較高,檢測過程緩慢。而通過對源程序解析生成抽象語法樹,之后對其進行分析,可避免這一問題。

李軍超等人\\[26\\]進行了基于抽象語法樹的代碼味道識別工具的分析與設計,將源代碼轉換成抽象語法樹,對其進行分析和度量判斷,可使方法過長、依戀情節等10種代碼壞味得以識別。該研究對于壞味的判斷是通過度量值和預定值完成,識別標準由人為設定,識別結果仍然受到太多的主觀因素影響。

Kontogiannis等\\[27\\]提出一種由5種度量技術組成的方法來檢測任意兩個代碼片段的相似性,其基本思想是將待檢源代碼轉化成抽象語法樹,得到5維向量,計算其歐氏距離,從而判斷是否存在重復代碼。在某些情況下,該方法會產生錯誤匹配。

劉建賓\\[28\\]定義了一種叫做過程藍圖的圖形化程序過程規格說明方法,可對程序源代碼進行描述,具有豐富的語義,能夠支持對程序的壞味進行檢測。過程藍圖的本質實際上就是一種抽象語法樹。在此基礎上,李建忠等人\\[29\\]利用過程藍圖進行重復代碼的自動檢測研究工作,通過分析抽象實現結構圖的節點類型和帶數據流節點的表達式,直接獲得程序源碼中所代表的過程控制結構和語句表達式的靜態信息。

3壞味重構的研究現狀

在已有的研究中,大部分研究在給出重構方案或執行重構之后,并未對重構的效果進行評估。研究默認,在執行重構后,重構所要針對的問題(即重構動機)已經獲得了解決,重構操作已經完成了預定任務,代碼已經一切正常。這些研究認為,在重構定位過程中已經準確無遺漏地找到了所有的相關壞味(即需要使用重構操作實施改進的位置),并且在執行重構操作時,也已經考慮到重構操作的安全性,因此并不需要進行重構的評估。

有一些研究者對重構的行為進行了分析和評估,以此來對“重構確實保證了程序可觀察行為不變”進行證明,此外對于重構的效果提供直觀準確的評價,方便對同類研究工作進行對比和改進。這些研究對于重構的評估主要分為兩個方面:一是重構操作是否去除或改善了代碼中的不良現象,提高了程序的可維護性、易讀性、可理解性等,優化了程序質量;二是重構操作是否會引起程序“可觀察行為”的改變。

Kataoka和Imai等人\\[30\\]提出一種性能評估方法,來衡量程序重構的可維護性增強效果。該方法基于耦合度量來評估重構的影響。通過比較重構前后的耦合性,能夠評估出可維護性增強的程度。但是方法只使用了程序的耦合性來代表可維護程度,度量獲取片面,對一些不改變(或改變很少)耦合度的重構行為,無法評估其重構效果。

Tahvildari和Kontogiannis\\[31\\]提出了一系列關于復雜性、耦合性和內聚性的度量,并用于程序轉換框架的驅動條件中。同時,在程序轉換后用這些度量值和判斷準則來評估程序重構后的效果。只是文中方法得到的評估結果不夠全面,并不具備最佳說服力。

Murphy-Hill和Black\\[32\\]闡述了現有重構工具在解決“過長方法”方面的問題,定義了三個工具并將其組合來進行重構。結果顯示在速度、準確性和用戶滿意度三個方面都有明顯改進。但是該研究主要是針對用戶使用重構工具的界面友好型和簡易型進行設計和改進,對于重構的原理和方法卻未做改變。

Tsantalis和Chatzigeorgiou\\[33\\]根據程序實體間的距離關系來確定進行“移動方法”重構的時機,通過此重構操作來解決依戀情結代碼壞味。在進行重構操作之后,本著面向對象程序在設計層面上高內聚、低耦合的思想,定義并計算類和整個系統的平均距離,并以此判斷重構效果的好壞。但是這種評價準則只是一個粗略的方法,并未考慮到細節情況,而且也沒有考慮到重構操作對系統質量其他方面的影響。

Bansiya和Davis\\[34\\]建立了一個面向繼承的評估模型 QMOOD(Quality Model for Object-Oriented Design),在靈活性、可重用性、可理解性等方面對軟件的設計性能進行評估。Keeffe和Cinneide\\[35-37\\]使用多種搜索算法來隨機執行類繼承方面的重構細粒度操作,而且使用QMOOD模型來評估各操作,從而達到提高程序質量的作用。但是該模型只能針對面向對象繼承方面的表象進行評估,沒有考慮其他方面,并且評估標準人為決定,其正確性尚需進一步的驗證。

4現有壞味檢測及重構研究的不足

4.1壞味定義和描述研究的不足

(1)在代碼壞味的概念被提出之后,其對提高程序質量特別是重用效果方面的作用越來越大。隨著對程序代碼研究的逐級深入,越來越多的壞味被發現,原本籠統模糊的壞味也相應實現了細化。但是在程序質量方面,在許多程序中尚有多種壞味現象沒有得到有效的定義和解決。例如程序中頻繁存在類間功能過度相關,繼承關系混亂的現象。

(2)在定義新壞味的研究[2-3,38]中,研究者只是提出了代碼壞味的定義、描述以及危害,但是對如何檢測到這種壞味,特別是使用程序進行自動檢測的方法,以及對檢測結果的效用和準確性方面,尚且缺少足夠的分析結果。

4.2壞味檢測研究的不足

(1)許多研究將壞味檢測工作規定為人工完成。所有與提高程序質量相關的研究工作,從去除、改進不良的代碼現象角度來說,基本上包括兩個方面:不良現象的查找,以及不良現象的處理。前者是指代碼壞味的檢測,后者是指針對代碼壞味的重構工作?,F有研究的大部分工作都偏重于后一方面,即默認壞味已經檢測到,并針對壞味進行重構\\[39\\]。這些研究認為,壞味是一個相對籠統和模糊的概念,對于壞味的認知因人而異,因此很難通過程序來自動完成檢測\\[40\\]。對于代碼壞味,目前少有研究使用了量化方法,通過程序自動完成針對源代碼的壞味檢測工作,即是目前壞味自動檢測研究的一個不足之處。但是,實際上通過對各類代碼進行分析,除去幾種少數特殊形式的壞味,目前提出的大多數壞味,都是能夠通過數值化方法,表達壞味現象的存在。

(2)壞味特征提取困難。在已有的壞味自動檢測研究\\[41-43\\]中,從程序中提取的壞味特征,不能完全體現代碼的真實情況,導致壞味檢測結果并不能完全真實地反映出程序中存在的代碼不良現象造成的設計質量問題。

(3)壞味判斷缺少客觀量化的依據。在現有的壞味自動檢測研究中,基本上是使用預設定的閾值來進行“是否是壞味”的判斷。一些與代碼規模相關的代碼壞味,例如過長方法、過大的類、過長參數列,對其不論是采用自動檢測或者是人工檢測,預設值的設定更為重要。在一些使用聚類分析進行壞味檢測的研究中\\[39,44\\],通過將聚類結果與預設值進行比較來判定是否存在壞味。使用預設值檢測壞味,其檢測結果主觀性較高,不易反映出程序質量的真實情況。因此,需要弱化甚至去除壞味檢測過程中所需要的預設值,提高壞味檢測的客觀性。

4.3壞味重構研究的不足

在現有研究中對重構效果進行評估方面,僅考慮了重構是否消除了引發重構的動機(原有代碼壞味)。實際上,重構行為除了可消去現有壞味之外,還可能會隱性地去除其他已存在壞味或者降低其他壞味存在的可能性。相應地,重構行為也可能會引入新的壞味。重構行為在這幾方面的作用,共同影響了程序的質量。

5結束語

代碼壞味的檢測及重構,已經受到越來越多的重視,因為其對程序的質量具有重要的影響。本文分別對壞味的定義、檢測過程以及重構過程分別進行了研究現狀的分析,指出了其不足之處,為進一步的研究指明了方向。

參考文獻:

\\[1\\]FOWLER M, BECK K, BRANT J, et al. Refactoring: Improving the design of existing code \\[M\\]. Addison Wesley, 1999.

[2]J. Kerievsky. Refactoring to patterns \\[M\\]. Addison-Wesley , 2004.

[3]ABEBE S L, HAIDUC S, TONELLA P, et al. Lexicon bad smells in software \\[C\\]// Working Conference on Reverse Engineering, 2009: 95-99.

[4]Wake W C. Refactoring Workbook \\[M\\]. Addison-Wesley, 2003.

[5]MANTYLAM. Bad smells in software: a taxonomy and an empirical study \\[D\\]. Ph.D. dissertation, Helsinki University of Technology, 2003.

[6]JOHNSON J H. Identifying redundancy in source code using fingerprints\\[C\\]//CASCON’93, 1993:171-183.

[7]BAKER B S. On finding duplication and near-duplication in large software systems\\[C\\]//Proceedings of The 2th Working Conference on Reverse Engineering(WCRE95).IEEE Computer Society Press,July 1995.

[8]ADAR E, KIM M. SoftGUESS: visualization and exploration of code clones in context \\[C\\]//International Conference on Software Engineering (ICSE’07), 2007: 762-766.

[9]張鵬.C代碼相似代碼識別方法的研究與實現\\[D\\]. 大連:大連理工大學,2007.

[10]劉鑫.重復代碼檢測方法及其應用\\[D\\]. 哈爾濱:哈爾濱工業大學,2007.

[11]SIMON F, LOFFLER S, LEWERENTZ C. Distance based cohesion measuring \\[C\\]//European Software Measurement Conference 99, Technologist Institute Amsterdam, 1999.

[12]SIMON F,STEINBR F, LEWERENTZ C. Metrics based refactoring\\[C\\]//Proc European Conf Software Maintenance and Reengineering,2001.

[13]TAHVILDARI L, KONTOGIANNIS K. A metric-based approach to enhance design quality through meta-pattern transformations \\[C\\]// European Conference Software Maintenance and Reengineering, 2003:183-192.

[14]TSANTALIS N, CHATZIGEORGIOU A. Identification of extract method refactoring opportunities \\[C\\]// Software Maintenance and Reengineering (CSMR'09), Kaiserslautern, Germany, March 2009:119-128.

[15]REDDY K R, RAO A A. Dependency oriented complexity metrics to detect rippling related design defects \\[J\\]. ACM SIGSOFT Software Engineering Notes, 2009, 34(4):1-7.

[16]REDDY K N, RAO A A. A quantitative evaluation of software quality enhancement by refactoring using dependency oriented complexity metrics[C]//International Conference of Emerging Trends in Engineering and Technology (ICETET), 2009: 1011-1018.

[17]Sant’ ANNA C, GARCIA A, LUCENA C, Evaluating the efficacy of concern-driven metrics: a comparative study \\[C\\]//Assessment of Contemporary Modularization Techniques (ACoM’08), 2008: 25-30.

[18]LUNG C H, ZAMAN M. Using clustering technique to restructure programs \\[C\\]// International Conference on Software Engineering Research and Practice. Las Vegas: CSREA Press, 2004:853-858.

[19]LUNG C H, XU X, ZAMAN M, et al. Program restructuring using clustering techniques \\[J\\]. The Journal of Systems and Software, 2006,79(9):1261-1279.

[20]ALKHALID A, ALSHAYEB M, MAHMOUD S. Software refactoring at the function level using new Adaptive K-Nearest Neighbor algorithm \\[J\\]. Advances in Engineering Software, 2010, 41(10-11):1160-1178.

[21]SRINIVAS S S. Package level software refactoring using A-KNN clustering technique \\[C\\]// International Conference on Computing and Control Engineering (ICCCE 2012),2011, 5(3): 276-284.

[22]RATZINGER J,SIGMUND T, VORBURGER P, et al. Mining software evolution to predict refactoring \\[J\\]. Empirical Software Engineering and Measurement, 2007:354-363.

[23]GROSSER D, SAHRAOUI H A, VALTCHEV P. Analogy-based software quality prediction \\[C\\]// Quantitative Approaches In Object-Oriented Software Engineering, QAOOSE, 2003,3.

[24]BANERJEE J, KIM W. Semantics and implementation of schema evolution in object-oriented databases \\[C\\]//ACM SIGMOD Conference,1987.

[25]OPDYKE W F. Refactoring object-oriented frameworks \\[D\\]. Ph.D. thesis,University of Illinois,1992.

[26]李軍超,尹俊文,徐振陽.基于抽象語法樹的代碼味道識別工具的分析與設計\\[J\\].株洲工學院學報.2005,19(6):53-56.

[27]KONTOGIANNIS K A, DEMORI R, MERLO E, et al. Pattem matching for clone and concept detection \\[J\\]. Automated Sotrware Engineering, 1996,3(1-2):77-108.

[28]劉建賓.過程藍圖設計方法學\\[M\\].北京:科學出版社,2005.

[29]李建忠,劉建賓.重復代碼自動檢測工具的研究與設計\\[J\\].韓山師范學院學報,2006,6:24-29.

[30]KATAOKA Y, IMAI T, ANDOU H, et al. A quantitative evaluation of maintainability enhancement by refactoring \\[C\\]// International Conference of Software Maintenance, 2002: 576-585.

[31]TAHVILDARI L, KONTOGIANNIS K. A metric-based approach to enhance design quality through meta-pattern transformations \\[C\\]//European Conference of Software Maintenance and Reengineering,2003:183-192.

[32]MURPHY E, BLACK A. Breaking the barriers to successful refactoring \\[C\\]//ACM International Conference on Software Engineering. 2008,5:421-430.

[33]TSANTALIS N, CHATZIGEORGIOU A. Identification of move method refactoring opportunities \\[J\\]. IEEE Transactions on Software Engineering, 2009,35(3):347-367.

[34]BANSIYA J, DAVIS C. A hierarchical model for object-oriented design quality assessment \\[J\\]. IEEE Transactions on Software Engineering ,2002,28(1):4-17.

[35]O’KEEFFE M. Search-based refactoring for software maintenance \\[D\\]. PhD Thesis, School of Computer Science and Informatics, University College Dublin, October 2007.

[36]O’KEEFFE M, CINNIDE M. Getting the most from search-based refactoring \\[C\\]//Genetic and Evolutionary Computation Conference (GECCO’07), 2007:1114-1120.

[37]O’ KEEFFE M, CINNIDE M. Search-based refactoring: an empirical study \\[J\\]. Journal of Software Maintenance and Evolution: Research and Practice, 2008, 20(5): 345-364.

[38]ABBES M, KHOMH F, GUE W G, et al. An empirical study of the impact of two antipatterns, blob and spaghetti code, on program comprehension \\[C\\]//European Conference on Software Maintenance and Reengineering (CSMR), 2011:181-190.

[39]YANG L M, LIU H, NIU Z D. Identifying fragments to be extracted from long methods \\[C\\]// Asia-Pacific Software Engineering Conference, 2009,12:43-49.

[40]MEANANEATRA P, RONGVIRIYAPANISH S. Using software metrics to select refactoring for long method bad smell \\[C\\]//International Conference on Electrical Engineering/Electronics, Computer, Telecommunications and Infromation Technology, 2011,5:492-495.

[41]TSANTALIS N, CHATZIGEORGIOU A. Identification of move method refactoring opportunities \\[J\\]. IEEE Transactions on Software Engineering, 2009,35(3):347-367.

[42]TSANTALIS N, CHATZIGEORGIOU A. Identification of extract method refactoring opportunities \\[C\\]// European Conference on Software Maintenance and Reengineering, 2009,3:119-128.

[43]MURPHY E, BLACK A. Breaking the barriers to successful refactoring \\[C\\]//ACM International Conference on Software Engineering,2008,5:421-430.

[44]RAO A A, REDDY K N. Identifying clusters of concepts in a low cohesive class for extract class refactoring using metrics supplemented agglomerative clustering technique \\[J\\]. International Journal of Computer Science Issues, 2011,8(5):185-194.

主站蜘蛛池模板: 亚洲成年人片| www.亚洲国产| 国产内射在线观看| 国产sm重味一区二区三区| 亚洲欧洲自拍拍偷午夜色| 老司国产精品视频91| 亚洲精品色AV无码看| 亚洲精品第一页不卡| 亚洲激情99| 国产成人在线小视频| 凹凸精品免费精品视频| 亚洲一区黄色| 中文字幕在线观看日本| 国产99欧美精品久久精品久久| 重口调教一区二区视频| 91视频区| 97亚洲色综久久精品| 日本91视频| 曰韩人妻一区二区三区| 日日拍夜夜操| 日韩免费毛片视频| 国产一级毛片高清完整视频版| 成年午夜精品久久精品| 高清色本在线www| 国产一级精品毛片基地| 亚洲精品第1页| 一级片一区| 国产第一福利影院| 国内毛片视频| 伊人久久大香线蕉aⅴ色| 呦女精品网站| 精品一区国产精品| 乱人伦99久久| 亚洲天堂成人| 97影院午夜在线观看视频| 国产91导航| 亚洲欧美一区在线| 一本大道东京热无码av| 97国内精品久久久久不卡| 亚洲一区波多野结衣二区三区| 国产精品原创不卡在线| 狠狠亚洲五月天| 99视频精品全国免费品| 91网址在线播放| 91探花国产综合在线精品| 精品無碼一區在線觀看 | 国产成人亚洲毛片| 啪啪免费视频一区二区| 亚洲国产日韩在线成人蜜芽| 91在线无码精品秘九色APP| 在线观看无码av免费不卡网站 | 狠狠干欧美| 国产美女91呻吟求| 欧美日韩国产在线人| 欧美精品啪啪| 毛片免费试看| 国产精品片在线观看手机版| 欧美成一级| 国产91丝袜在线播放动漫 | 国产浮力第一页永久地址| 国产91麻豆免费观看| 天天躁日日躁狠狠躁中文字幕| 精品国产成人三级在线观看| 福利国产微拍广场一区视频在线| 日韩成人高清无码| 亚洲bt欧美bt精品| 亚洲国产精品不卡在线| 欧美性猛交一区二区三区| 国产欧美视频综合二区| 狠狠五月天中文字幕| 亚洲人在线| 日韩一级毛一欧美一国产| 丁香五月激情图片| 狠狠操夜夜爽| 无码一区18禁| 成人伊人色一区二区三区| 久久久精品无码一二三区| 9999在线视频| 青青久久91| 亚洲色图欧美一区| 精品在线免费播放| 国产熟女一级毛片|