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

軟件工程中代碼異味檢測方法的研究

2017-03-29 06:56:53李炎武
現(xiàn)代計算機 2017年5期
關(guān)鍵詞:檢測方法

李炎武

(四川大學計算機學院,成都 610065)

軟件工程中代碼異味檢測方法的研究

李炎武

(四川大學計算機學院,成都 610065)

在軟件工程中,軟件重構(gòu)具有重要意義,它可以提高軟件的可維護性、可擴展性、可重用性,進而改善軟件質(zhì)量。在軟件重構(gòu)中,代碼異味檢測是其中的重要組成部分。目前,代碼異味檢測的相關(guān)研究劃分為幾個類別。在對基于搜索的代碼異味檢測方法進行研究后,選擇決策樹算法來對四個代碼異味進行檢測,并取得不錯的效果。

軟件工程;軟件重構(gòu);代碼異味;決策樹

0 引言

隨著計算機科學的進步和發(fā)展,越來越多的行業(yè)和領(lǐng)域中需要使用計算機技術(shù),各個行業(yè)的相關(guān)軟件也相繼被開發(fā)出來。蘋果商店的應(yīng)用超過了百萬,桌面軟件和專業(yè)軟件數(shù)量更多。在軟件開發(fā)中維護費用是開發(fā)成本的2-100倍[1]。因此,為了降低軟件開發(fā)中維護費用,改善軟件的結(jié)構(gòu),提高軟件的可擴展性和可重用性,有必要進行軟件重構(gòu)[2]。在軟件工程中,軟件重構(gòu)用于調(diào)整面向?qū)ο筌浖膬?nèi)部結(jié)構(gòu),提高軟件的可維護性、可擴展性、可重用性,進而改善軟件質(zhì)量,同時軟件的外部行為保持不變[3-4]。軟件經(jīng)過重構(gòu),可以提高代碼的可讀性,改善內(nèi)部結(jié)構(gòu)并且延長代碼的生命周期。對于大型軟件項目的開發(fā),軟件重構(gòu)具有重要意義。在軟件重構(gòu)中,需要先進行代碼異味檢測,代碼異味會暴露出一些軟件中的問題,根據(jù)這些問題,工程師會做進一步檢查和重構(gòu)。在重構(gòu)過程中,代碼異味檢測是重要步驟。

1 相關(guān)工作

代碼異味檢測的相關(guān)研究從1999年開始,至今有將近20年研究歷史。隨著計算機學科的發(fā)展,對于代碼異味檢測的研究出現(xiàn)了不同的分支,主要分為以下幾個類別。

基于手工的代碼異味檢測方法,這個方法在代碼異味研究早期使用。Travassos等人創(chuàng)建了一個“閱讀技術(shù)”的集合,通過在紙上列舉清單,使用觀察方法幫助人們找到相關(guān)信息,并識別軟件構(gòu)件中的缺點,通過這種方式來改善軟件質(zhì)量[5]。但這類方法具有一定缺點,對于大型系統(tǒng)來說,手工進行代碼異味檢測的效率低下。

基于度量的代碼異味檢測方法,通過使用如代碼行數(shù)、參數(shù)個數(shù)、代碼字符數(shù)等數(shù)據(jù)作為度量來檢測代碼異味。Marinescu等人開發(fā)了一個Eclipse插件,插件將設(shè)計問題量化,根據(jù)問題設(shè)置相應(yīng)的度量值,并用于檢測4種代碼異味。通過使用插件能夠持續(xù)評估系統(tǒng)質(zhì)量,并幫助開發(fā)者進行軟件重構(gòu)[6]。基于度量的方法,準確性依賴于閾值的選擇,但對于標準閾值,現(xiàn)在沒有一致的定論。并且該方法受限于檢測比較簡單的代碼異味,對于較復雜的代碼異味不能直接用度量檢測。

基于癥狀的代碼異味檢測方法,通過對代碼異味定義和描述進行分析,提取特征和標記,利用檢測算法進行檢測,判斷是否具有代碼異味。Moha等人通過分析獲取代碼異味關(guān)鍵詞列表,然后使用領(lǐng)域特殊語言形成規(guī)則卡片,最后根據(jù)建模生成檢測算法,對15個代碼異味進行檢測[7]。基于癥狀的方法和代碼異味癥狀有關(guān),但是目前對于異味癥狀沒有一致的標準定義,因此該方法受到一定的限制。

基于概率的代碼異味檢測方法,統(tǒng)計代碼中類之間的屬性和關(guān)系的數(shù)據(jù),結(jié)合模糊邏輯規(guī)則和數(shù)學分析來檢測代碼異味。Ananda等人提出一種量化方法,結(jié)合直接關(guān)聯(lián)和間接關(guān)聯(lián)的數(shù)量關(guān)系,利用傳播概率矩陣來檢測2種重要代碼異味[8]。這類方法使用概率統(tǒng)計來分析檢測代碼異味,對于不方便量化的代碼異味檢測效果有限。

基于可視化的代碼異味檢測方法,結(jié)合自動檢測工具和人的手動檢測來識別代碼異味。Emerson等人使用一個可交互的代碼異味檢測工具來快速觀察和認識代碼異味,通過不同的角度來理解和可視化代碼異味[9]。由于在方法中結(jié)合人的手動檢測,因此該類方法受限于人的效率,可擴展性不強。

基于搜索的代碼異味檢測方法,使用不同的算法直接從源代碼中識別和檢測代碼異味,其中大部分檢測使用機器學習相關(guān)算法。對于機器學習方法,需要對輸入進行處理,根據(jù)標準輸入來得到最后的分類輸出結(jié)果。Fontana等人使用機器學習技術(shù)進行代碼異味檢測,利用機器學習方法對代碼異味進行分類,自動檢測代碼異味。他們使用了16種機器學習算法,對4種代碼異味Data Class,Large Class,Feature Envy,Long Method進行檢測,并在軟件系統(tǒng)中進行實驗,并通過人工確認來構(gòu)造代碼異味樣本,把這些樣本作為機器學習的標準輸入,最后通過交叉驗證對實驗結(jié)果進行評價[10]。基于搜索的方法的算法成功依賴于數(shù)據(jù)集和訓練集的質(zhì)量,在處理未知和變化的代碼異味時受到一定限制。

基于協(xié)作的代碼異味檢測方法,以合作的方式執(zhí)行不同的活動來改善方法效果,提高檢測方法的準確性和性能。目前相關(guān)文獻較少,Abdelmoez等人使用兩個并行算法加速搜索過程,減少搜索空間,使用風險評估來檢測代碼異味[11]。但這個方法用于檢測其他代碼異味時,存在一些泛化問題。

2 異味檢測方法

本文選擇基于搜索的代碼異味檢測方法,采用機器學習算法來對所選擇的幾種代碼異味進行識別。在選擇代碼異味時,主要考慮幾個方面,代碼異味有較高出現(xiàn)頻率,代碼異味對于軟件質(zhì)量有較大負面影響,代碼異味已經(jīng)有相關(guān)研究文獻和應(yīng)用實現(xiàn)[10]。根據(jù)要求,最后本文選擇了Data Class,Duplicated Code,Inappropriate Intimacy,Long Method四個代碼異味進行檢測。通過對相關(guān)機器學習算法的研究和比較,發(fā)現(xiàn)在代碼異味檢測中,決策樹算法具有較好的分類效果[10]。在本文中,使用J48決策樹算法作為檢測算法,對所選擇的四個代碼異味進行識別。

本文使用k重交叉驗證來對實驗結(jié)果進行驗證,通過算法的精確率,召回率以及定義的到目標精確率平均距離來比較算法效果[12],公式如下:

其中,P表示精確率,R表示召回率,TP表示正確正類,F(xiàn)P表示錯誤正類,F(xiàn)N表示錯誤負類,D表示到目標精確率平均距離,TAPi表示某個實驗中精確率,TAP表示目標精確率。

通過比較實驗,可以知道,本文使用的異味檢測方法,在選擇的四種代碼異味上具有較好的識別效果。

3 結(jié)語

現(xiàn)有的代碼異味檢測方法劃分為幾個類別,在對基于搜索的代碼異味檢測方法進行研究后,本文選擇決策樹算法來對代碼異味進行檢測,并在選擇的四種代碼異味上取得了不錯的識別效果。

[1]Palomba F,Bavota G,Di Penta M,et al.Detecting Bad Smells in Source Code Using Change History Information[C].Automated Software Engineering(ASE),2013 IEEE/ACM 28th international conference on.IEEE,2013:268-278.

[2]Rasool G,Arshad Z.A Review of Code Smell Mining Techniques[J].Journal of Software:Evolution and Process,2015,27(11):867-895.

[3]Mens T,Tourwé T.A Survey of Software Refactoring[J].IEEE Transactions on Software Engineering,2004,30(2):126-139.

[4]Opdyke W F.Refactoring Object-Oriented Frameworks[D].University of Illinois at Urbana-Champaign,1992.

[5]Travassos G,Shull F,Fredericks M,et al.Detecting Defects in Object-Oriented Designs:Using Reading Techniques to Increase Software Quality[C].ACM Sigplan Notices.ACM,1999,34(10):47-56.

[6]Marinescu R,Ganea G,Verebi I.inCode:Continuous Quality Assessment and Improvement[C].Software Maintenance and Reengineering(CSMR),2010 14th European Conference on.IEEE,2010:274-275.

[7]Moha N,Gueheneuc Y G,Duchien L,et al.DECOR:A Method for the Specification and Detection of Code and Design Smells[J].IEEE Transactions on Software Engineering,2010,36(1):20-36.

[8]Rao A A,Reddy K N.Detecting Bad Smells in Object Oriented Design Using Design Change Propagation Probability Matrix[J].Lecture Notes in Engineering&Computer Science,2008,2168(1).

[9]Murphy-Hill E,Black A P.An Interactive Ambient Visualization for Code Smells[C].Proceedings of the 5th International Symposium on Software Visualization.ACM,2010:5-14.

[10]Fontana F A,Mantyla M V,Zanoni M,et al.Comparing and Experimenting Machine Learning Techniques for Code Smell Detection [J].Empirical Software Engineering,2016,21(3):1143-1191.

[11]Abdelmoez W,Kosba E,Iesa A F.Risk-Based Code Smells Detection Tool[C].The International Conference on Computing Technology and Information Management(ICCTIM).Society of Digital Information and Wireless Communication,2014:148.

[12]Liu H,Liu Q,Niu Z,et al.Dynamic and Automatic Feedback-Based Threshold Adaptation for Code Smell Detection[J].IEEE Transactions on Software Engineering,2016,42(6):1-1.

Research on Code Smell Detection Method in Software Engineering

LI Yan-wu
(College of Computer Science,Sichuan University,Chengdu 610065)

In software engineering,software refactoring is very important,it can improve the quality of software in maintainability,extensibility and reusability.Code smell detection is one of the important components in software refactoring.At present,the research of code smell detection is divided into several categories.After studying of search-based code smell detection,the decision tree algorithm is selected to detecting the four code smells and it gets a good results.

Software Engineering;Software Refactoring;Code Smell;Decision Tree

1007-1423(2017)05-0031-03

10.3969/j.issn.1007-1423.2017.05.008

李炎武(1992-),男,四川宜賓人,碩士研究生,研究方向為數(shù)字娛樂與人機交互

2016-12-01

2017-02-10

猜你喜歡
檢測方法
“不等式”檢測題
“一元一次不等式”檢測題
“一元一次不等式組”檢測題
“幾何圖形”檢測題
“角”檢測題
學習方法
小波變換在PCB缺陷檢測中的應(yīng)用
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
主站蜘蛛池模板: 一边摸一边做爽的视频17国产| 亚洲人精品亚洲人成在线| 中文字幕色站| 国产成在线观看免费视频| 九一九色国产| 午夜日b视频| 国产精品久久久久久久伊一| 国产第四页| 波多野结衣第一页| 高清无码手机在线观看| 青青草原国产一区二区| 精品久久蜜桃| 日韩av在线直播| 在线观看欧美国产| 免费一级毛片完整版在线看| JIZZ亚洲国产| 欧美日韩另类在线| 精品人妻一区无码视频| 久久综合九色综合97婷婷| 国产不卡在线看| 国产欧美日韩一区二区视频在线| 2048国产精品原创综合在线| 午夜日韩久久影院| 三级国产在线观看| 不卡的在线视频免费观看| 麻豆精选在线| 国产精品无码一二三视频| 国产精女同一区二区三区久| 亚洲成人精品久久| 亚洲欧美综合在线观看| 亚洲国产精品成人久久综合影院| 内射人妻无套中出无码| 中文字幕人妻av一区二区| 26uuu国产精品视频| 国产精品太粉嫩高中在线观看| 乱系列中文字幕在线视频 | 88av在线播放| 国产精品流白浆在线观看| 91精品久久久无码中文字幕vr| 欧美精品H在线播放| 色妞www精品视频一级下载| 在线观看国产精美视频| 国产熟睡乱子伦视频网站| 婷婷六月在线| 欧美亚洲第一页| 色老二精品视频在线观看| 98精品全国免费观看视频| 国产精品综合色区在线观看| 一区二区日韩国产精久久| 四虎国产精品永久在线网址| 91人妻在线视频| 亚洲成人黄色在线观看| 波多野结衣无码中文字幕在线观看一区二区 | 91无码人妻精品一区| 欧美成人综合视频| 久久国产精品国产自线拍| 国产欧美日韩视频怡春院| 伊人成人在线| 中文字幕亚洲专区第19页| 国产精品所毛片视频| 国产精品专区第一页在线观看| 国产超碰一区二区三区| 日本成人精品视频| 视频二区亚洲精品| 午夜福利在线观看入口| 久久国产V一级毛多内射| 日本亚洲欧美在线| 亚洲国产成人综合精品2020| 国产成人在线无码免费视频| 欧美精品黑人粗大| 久久香蕉欧美精品| 亚洲精品国产综合99| 成人福利一区二区视频在线| 中国成人在线视频| 狠狠色丁香婷婷综合| 国产亚洲欧美在线人成aaaa| 成人久久精品一区二区三区| 亚洲无码视频一区二区三区| 亚洲永久色| 天堂久久久久久中文字幕| 999在线免费视频| 亚洲精品免费网站|