亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        代碼壞味檢測及重構的現(xiàn)狀分析

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

        收稿日期:2014-03-08

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

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

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

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

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

        關鍵詞:研究現(xiàn)狀; 代碼壞味; 壞味檢測; 壞味重構

        中圖分類號: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\\]就是指代碼中出現(xiàn)的一種“跡象”,導致代碼難于理解和修改。壞味并不是代碼中已經(jīng)出現(xiàn)的錯誤或者缺陷,但是可能會導致錯誤或者缺陷的發(fā)生。所以說,壞味實際上是代碼中潛在問題的警示信號。因此,當出現(xiàn)代碼壞味時,就應當對其進行重構。重構是指對軟件內(nèi)部結構的一種調(diào)整,在不改變軟件可觀察行為的前提下,借助重構提高其可理解性,降低其修改成本。

        壞味破壞了程序的設計質(zhì)量,特別是面向?qū)ο蟪绦蛑谢趯ο缶幊痰脑O計質(zhì)量。壞味會影響程序的可理解性。并且,壞味導致程序出現(xiàn)錯誤的可能性增大。因此,程序中出現(xiàn)壞味,將降低程序的整體質(zhì)量,非常不利于程序的開發(fā)、修改、維護及擴展。壞味的檢測分為人工檢測和自動檢測兩種。人工檢測代碼的速度較慢,且主觀性較高,檢測準確性也較低。但是由于壞味的特征不夠明確和統(tǒng)一,自動檢測仍具有較大難度。

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

        1壞味的定義和描述

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

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

        2壞味檢測

        本文提到的壞味檢測,是指壞味的自動檢測。壞味的自動檢測即是使用程序?qū)Υa中可能存在的壞味進行檢測的過程。可以按照檢測方法的不同將相關研究分為以下幾類。

        2.1基于文本的壞味檢測

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        2.3基于聚類的壞味檢測

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

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

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

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

        Srinivas \\[21\\]采用K近鄰聚類方法來進行面向?qū)ο蟠a中包層級的重構。文章認為在包的層級,包內(nèi)的類具有高內(nèi)聚性,而包間耦合度低。通過判斷各類中是否存在其他類的實例,做為內(nèi)聚算法的數(shù)據(jù)。

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

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

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

        2.4其他壞味檢測方法

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

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

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

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

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

        3壞味重構的研究現(xiàn)狀

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

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

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

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

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

        Tsantalis和Chatzigeorgiou\\[33\\]根據(jù)程序?qū)嶓w間的距離關系來確定進行“移動方法”重構的時機,通過此重構操作來解決依戀情結代碼壞味。在進行重構操作之后,本著面向?qū)ο蟪绦蛟谠O計層面上高內(nèi)聚、低耦合的思想,定義并計算類和整個系統(tǒng)的平均距離,并以此判斷重構效果的好壞。但是這種評價準則只是一個粗略的方法,并未考慮到細節(jié)情況,而且也沒有考慮到重構操作對系統(tǒng)質(zhì)量其他方面的影響。

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

        4現(xiàn)有壞味檢測及重構研究的不足

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

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

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

        4.2壞味檢測研究的不足

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

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

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

        4.3壞味重構研究的不足

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

        5結束語

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

        參考文獻:

        \\[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代碼相似代碼識別方法的研究與實現(xiàn)\\[D\\]. 大連:大連理工大學,2007.

        [10]劉鑫.重復代碼檢測方法及其應用\\[D\\]. 哈爾濱:哈爾濱工業(yè)大學,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.

        av网站免费线看精品| 亚洲AV无码乱码一区二区三区| 中文字幕一区二区区免| 蜜桃av噜噜一区二区三区策驰| 日本入室强伦姧bd在线观看| 99爱这里只有精品| 天堂av在线一区二区| 熟女一区二区中文字幕| 国产成人精品久久综合| 亚洲日韩专区在线视频| 日本视频一区二区二区| 99日本亚洲黄色三级高清网站| 国产色视频在线观看了| 国产亚洲精品成人aa片新蒲金| 亚洲人成人77777网站| 国产精品不卡无码AV在线播放| 高清不卡av一区二区| av综合网男人的天堂| 最新国产一区二区精品久久| 亚洲精品视频免费在线| 人成综合视频在线播放| 国产丝袜在线精品丝袜| 日本在线观看不卡| 国产亚洲中文字幕久久网| 3d动漫精品啪啪一区二区免费| y111111少妇影院无码| av中文字幕在线资源网| 国产成人91久久麻豆视频| 99香蕉国产精品偷在线观看| 男女视频在线一区二区| 亚洲一区二区精品在线| 在线观看视频播放| 精品伊人久久香线蕉| 亚洲自偷自拍另类第一页| 国产av无码专区亚洲a∨毛片| 亚洲学生妹高清av| 国产经典免费视频在线观看| 人妻少妇69久久中文字幕| 国产又爽又粗又猛的视频| 在线观看国产三级av| 五月激情四射开心久久久|