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

        ?

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

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

        李炎武

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

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

        李炎武

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

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

        軟件工程;軟件重構;代碼異味;決策樹

        0 引言

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

        1 相關工作

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

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

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

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

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

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

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

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

        2 異味檢測方法

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

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

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

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

        3 結語

        現(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缺陷檢測中的應用
        用對方法才能瘦
        Coco薇(2016年2期)2016-03-22 02:42:52
        四大方法 教你不再“坐以待病”!
        Coco薇(2015年1期)2015-08-13 02:47:34
        少妇高潮精品在线观看| 丁香婷婷色| 日本熟妇高潮爽视频在线观看| 亚洲女同免费在线观看| 97人人模人人爽人人喊网| av潮喷大喷水系列无码| 欧洲亚洲第一区久久久| 国产精品高清一区二区三区人妖| 日韩精品久久中文字幕| а√资源新版在线天堂| 91福利视频免费| 国产亚洲亚洲精品视频| 日本熟女人妻一区二区| 亚洲avav天堂av在线网毛片| 成人国产午夜在线视频| 国产精品亚洲美女av网站| 在线国人免费视频播放| 日韩一区国产二区欧美三区| yeyecao亚洲性夜夜综合久久| 亚洲高清在线观看免费视频| 日本免费一区二区三区在线播放| 婷婷色香五月综合激激情| 九九精品视频在线观看| 扒开非洲女人大荫蒂视频 | 午夜内射中出视频| 亚洲自拍另类欧美综合| 日本一区二区高清视频| 国产三级a三级三级| 亚洲 暴爽 av人人爽日日碰 | 亚洲国产精品成人av| 亚洲中文字幕人妻av在线| 色多多a级毛片免费看| 在线免费欧美| 精品一区二区三区国产av| 后入到高潮免费观看| 国产精品-区区久久久狼| 亚洲av永久久无久之码精| 日韩精品在线视频一二三| 亚洲av无码av制服另类专区| 成人午夜视频一区二区无码| av一区二区在线免费观看|