
軟件工程中代碼異味檢測方法的研究
李炎武
【摘要】在軟件工程中,軟件重構具有重要意義,它可以提高軟件的可維護性、可擴
展性、可重用性,進而改善軟件質量.圖坦卡蒙法老 在軟件重構中,代碼異味檢測是其中的重要組成
部分.目前,代碼異味檢測的相關研究劃分為幾個類別.在對基于搜索的代碼異味檢測
方法進行研究后,選擇決策樹算法來對四個代碼異味進行檢測,并取得不錯的效果.
【期刊名稱】《現代計算機(專業版)》
【年(卷),期】2017(000)005
【總頁數】3頁(P31-33)
【關鍵詞】軟件工程;軟件重構;代碼異味;決策樹
【作者】李炎武
【作者單位】四川大學計算機學院,成都610065
【正文語種】中文
隨著計算機科學的進步和發展,越來越多的行業和領域中需要使用計算機技術,各
個行業的相關軟件也相繼被開發出來。蘋果商店的應用超過了百萬,桌面軟件和專
業軟件數量更多。在軟件開發中維護費用是開發成本的2-100倍[1]。因此,為了
降低軟件開發中維護費用,改善軟件的結構,提高軟件的可擴展性和可重用性,有
必要進行軟件重構[2]。在軟件工程中,軟件重構用于調整面向對象軟件的內部結
構,提高軟件的可維護性、可擴展性、可重用性,進而改善軟件質量,同時軟件的
外部行為保持不變[3-4]。軟件經過重構,可以提高代碼的可讀性,改善內部結構
并且延長代碼的生命周期。對于大型軟件項目的開發,軟件重構具有重要意義。在
軟件重構中,需要先進行代碼異味檢測,代碼異味會暴露出一些軟件中的問題,根
據這些問題,工程師會做進一步檢查和重構。在重構過程中,代碼異味檢測是重要
步驟。
代碼異味檢測的相關研究從1999年開始,至今有將近20年研究歷史。隨著計算
機學科的發展,對于代碼異味檢測的研究出現了不同的分支,主要分為以下幾個類
別。
基于手工的代碼異味檢測方法,這個方法在代碼異味研究早期使用。Travassos等
人創建了一個“閱讀技術”的集合,通過在紙上列舉清單,使用觀察方法幫助動漫性感美女 人們
找到相關信息,并識別軟件構件中的缺點,通過這種方式來改善軟件質量[5]。但
這類方法具有一定缺點,對于大型系統來說,手工進行代碼異味檢測的效率低下。
基于度量的代碼異味檢測方法,通過使用如代碼行數、參數個數、代碼字符數等數
據作為度量來檢測代碼異味。Marinescu等人開發了一個Eclip插件,插件將設
計問題量化,根據問題設置相應的度量值,并用于檢測4種代碼異味。通過使用
插件能夠持續評估系統質量,并幫助開發者進行軟件重構[6]。基于度量的方法,
準確性依賴于閾值的選擇,但對于標準閾值,現在沒有一致的定論。并且該方法受
限于檢測比較簡單的代碼異味,對于較復雜的代碼異味不能直接用度量檢測。
基于癥狀的代碼異味檢測方法,通過對代碼異味定義和描述進行分析,提取特征和
標記,利用檢測算法進行檢測,判斷是否具有代碼異味。Moha等人通過分析獲
取代碼異味關鍵詞列表,然后使用領域特殊語言形成規則卡片,最后根據建模生成
檢測算法,對15個代碼異味進行檢測[7]?;诎Y狀的方法和代碼異味癥狀有關,
但是目前對于異味癥狀沒有一致的標準定義,因此該方法受到一定的限制。
基于概率的代碼異味檢測方法,統計代碼中類之間的屬性和關系的數據,結合模糊
邏輯規則和數學分析來檢測代碼異味。Ananda等人提出一種量化方法,結合直接
關聯和間接關聯的數量關系,利用傳播概率矩陣來檢測2種重要代碼異味[8]。這
類方法使用概率統計來分析檢測代碼異味,對于不方便量化的代碼異味檢測效果有
限。
基于可視化的代碼異味檢測方法,結合自動檢測工具和人的手動檢測來識別代碼異
味。Emerson等人使用一個可交互的代碼異味檢測工具來快速觀察和認識代碼異
味,通過不同的角度來理解和可視化代碼異味[9]。由于在方法中結合人的手動檢
測,因此該類方法受限于人的效率,可擴展性不強。
基于搜索的代碼異味檢測方法,使用不同的算法直接從源代碼中識別和檢測代碼異
味,其中大部分檢測使用機器學習相關算法。對于機器學習方法,需要對輸入進行
處理,根據標準輸入來得到最后的分類輸出結果。Fontana等人使用機器學習技
術進行代碼異味檢測,利用機器學習方法對代碼異味進行分類,自動檢測代碼異味。
他們使用了16種機器學習算法,對4種代碼異味DataClass,Large
Class,FeatureEnvy,LongMethod進行檢測,并在軟件系統中進行實驗,并通過
人工確認來構造代碼異味樣本,把這些樣本作為機器學習的標準輸入,最后通過交
叉驗證對實驗結果進行評價[10]?;谒阉鞯姆椒ǖ乃惴ǔ晒σ蕾囉跀祿陀柧?/p>
集的質量,在處理未知和變化的代碼異味時受到一定限制。
基于協作的代碼異味檢測方法,以合作的方式執行不同的活動來改善方法效果,提
高檢測方法的準確性和性能。目前相關文獻較少,Abdelmoez等人使用兩個并行
算法加速搜索過程,減少搜索空間,使用風險評估來檢測代碼異味[11]。71年屬什么 但這個方
法用于檢測其他代碼異味時,存在一些泛化問題。
本文選擇基于搜索的代碼異味檢測方法,采用機器學習算法來對所選擇的幾種代碼
異味進行識別。在選擇代碼異味時,主要考慮幾個方面,代碼異味有較高出現頻率,
代碼異味對于軟件質量有較大負面影響,代碼異味已經有相電腦音箱沒聲音 關研究文獻和應用實現
[10]。根據要求,最后本文選擇了DataClass,DuplicatedCode,
InappropriateIntimacy,LongMethod四個代碼異味進行檢測。通過對相關機
器學習算法的研究和比較,發現在代碼異味檢測中,決策樹算法具有較好的分類效
果[10]。在本文中,使用J48決策樹算法作為檢測算法,對所選擇的四個代碼異味
進行識別。
本文使用k重交叉驗證來對實驗結果進行驗證,通過算法的精確率,召回率以及
定義的到目標精確率平均距離來比較算法效果[12],公式如下:
其中,P表示精確率,R表示召回率,TP表示正確正類,FP表示錯誤正類,FN
表示錯誤負類,D表示到目標精確率平均距離,TAPi表示某個實驗中精確率,
TAP表示目標精確率。
通過比較實驗,可以知道,本文使用的異味檢測方法,在選擇的四種代碼異味上具
有較好的識別效果。
現有的代碼異味檢測方法劃分為幾個類別,在對基于搜索的代碼異味檢測方法進行
研究后,本文選擇決策樹算法來對代碼異味進行檢測,并在選擇的四種代碼異味上
取得了不錯的識別效果。
李炎武(1992-),男,四川宜賓人,碩士研究生,研究方向為數字娛樂與人機交
互
【相關文獻】
[1]PalombaF,BavotaG,DiPentaM,ingBadSmellsinSourceCodeUsing
ChangeHistoryInformation[C].AutomatedSoftwareEngineering(ASE),2013IEEE/ACM
,2013:268-278.
[2]RasoolG,wofCodeSmellMiningTechniques[J].Journalof
Software:EvolutionandProcess,2015,27(11):867-895.
[3]MensT,TourwyofSoftwareRefactoring[J].IEEETransactionsonSoftware
Engineering,2004,30(2):126-139.
[4]oringObject-OrientedFrameworks[D].UniversityofIllinoisat
Urbana-Champaign,1992.
[5]TravassosG,ShullF,FredericksM,ingDefectsinObject-Oriented
Designs:UsingReadingTechniquestoIncreaSoftwareQuality[C].ACMSigplan
,1999,34(10):47-56.
[6]MarinescuR,GaneaG,:ContinuousQualityAsssmentand
Improvement[C].SoftwareMaintenanceandReengineering(CSMR)新鮮芡實 ,201014thEuropean
,2010:274-275.
[7]MohaN,GueheneucYG,DuchienL,:AMethodfortheSpecificationand
DetectionofCodeandDesignSmells[J].IEEETransactionsonSoftware
Engineering,2010,36(1):20-36.
[8]RaoAA,ingBadSmellsinObjectOrientedDesignUsingDesign
ChangePropagationProbabilityMatrix[J].Lectur魏晉南北朝服飾 eNotesinEngineering&Computer
Science,2008,2168(1).
[9]Murphy-HillE,ractiveAmbientVisualizationforCode
Smells[C].Proceedingsofthe5thInternationalSymposiumonSoftware
,2010:5-14.
[10]FontanaFA,MantylaMV,ZanoniM,ingandExperimentingMachine
LearningTechniquesforCodeSmellDetection[J].EmpiricalSoftwareEngineering,2016,21
(3):1143-1191.
[11]AbdelmoezW,KosbaE,-BadCodeSmellsDetectionTool[C].The
InternationalConferenceonComputingTechnologyandInformationManagement
(ICCTIM).SocietyofDigitalInformationandWirelessCommunication,2014:148.
[12]LiuH,LiuQ,NiuZ,candAutomaticFeedback-BadThresholdAdaptation
forCodeSmellDetection[J].IEEETransactionsonSoftwareEngineering,2016,42(6):1-1.
本文發布于:2023-03-27 18:08:14,感謝您對本站的認可!
本文鏈接:http://www.newhan.cn/zhishi/a/1679911695155607.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:軟件工程代碼.doc
本文 PDF 下載地址:軟件工程代碼.pdf
| 留言與評論(共有 0 條評論) |