软件工程代码

更新时间:2023-03-27 18:08:15 阅读: 评论:0

学生综合素质测评-槭树科

软件工程代码
2023年3月27日发(作者:回家乡)

软件工程中代码异味检测方法的研究

李炎武

【摘要】在软件工程中,软件重构具有重要意义,它可以提高软件的可维护性、可扩

展性、可重用性,进而改善软件质量.图坦卡蒙法老 在软件重构中,代码异味检测是其中的重要组成

部分.目前,代码异味检测的相关研究划分为几个类别.在对基于搜索的代码异味检测

方法进行研究后,选择决策树算法来对四个代码异味进行检测,并取得不错的效果.

【期刊名称】《现代计算机(专业版)》

【年(卷),期】2017(000)005

【总页数】3页(P31-33)

【关键词】软件工程;软件重构;代码异味;决策树

【作者】李炎武

【作者单位】四川大学计算机学院,成都610065

【正文语种】中文

随着计算机科学的进步和发展,越来越多的行业和领域中需要使用计算机技术,各

个行业的相关软件也相继被开发出来。苹果商店的应用超过了百万,桌面软件和专

业软件数量更多。在软件开发中维护费用是开发成本的2-100倍[1]。因此,为了

降低软件开发中维护费用,改善软件的结构,提高软件的可扩展性和可重用性,有

必要进行软件重构[2]。在软件工程中,软件重构用于调整面向对象软件的内部结

构,提高软件的可维护性、可扩展性、可重用性,进而改善软件质量,同时软件的

外部行为保持不变[3-4]。软件经过重构,可以提高代码的可读性,改善内部结构

并且延长代码的生命周期。对于大型软件项目的开发,软件重构具有重要意义。在

软件重构中,需要先进行代码异味检测,代码异味会暴露出一些软件中的问题,根

据这些问题,工程师会做进一步检查和重构。在重构过程中,代码异味检测是重要

步骤。

代码异味检测的相关研究从1999年开始,至今有将近20年研究历史。随着计算

机学科的发展,对于代码异味检测的研究出现了不同的分支,主要分为以下几个类

别。

基于手工的代码异味检测方法,这个方法在代码异味研究早期使用。Travassos等

人创建了一个“阅读技术”的集合,通过在纸上列举清单,使用观察方法帮助动漫性感美女 人们

找到相关信息,并识别软件构件中的缺点,通过这种方式来改善软件质量[5]。但

这类方法具有一定缺点,对于大型系统来说,手工进行代码异味检测的效率低下。

基于度量的代码异味检测方法,通过使用如代码行数、参数个数、代码字符数等数

据作为度量来检测代码异味。Marinescu等人开发了一个Eclip插件,插件将设

计问题量化,根据问题设置相应的度量值,并用于检测4种代码异味。通过使用

插件能够持续评估系统质量,并帮助开发者进行软件重构[6]。基于度量的方法,

准确性依赖于阈值的选择,但对于标准阈值,现在没有一致的定论。并且该方法受

限于检测比较简单的代码异味,对于较复杂的代码异味不能直接用度量检测。

基于症状的代码异味检测方法,通过对代码异味定义和描述进行分析,提取特征和

标记,利用检测算法进行检测,判断是否具有代码异味。Moha等人通过分析获

取代码异味关键词列表,然后使用领域特殊语言形成规则卡片,最后根据建模生成

检测算法,对15个代码异味进行检测[7]。基于症状的方法和代码异味症状有关,

但是目前对于异味症状没有一致的标准定义,因此该方法受到一定的限制。

基于概率的代码异味检测方法,统计代码中类之间的属性和关系的数据,结合模糊

逻辑规则和数学分析来检测代码异味。Ananda等人提出一种量化方法,结合直接

关联和间接关联的数量关系,利用传播概率矩阵来检测2种重要代码异味[8]。这

类方法使用概率统计来分析检测代码异味,对于不方便量化的代码异味检测效果有

限。

基于可视化的代码异味检测方法,结合自动检测工具和人的手动检测来识别代码异

味。Emerson等人使用一个可交互的代码异味检测工具来快速观察和认识代码异

味,通过不同的角度来理解和可视化代码异味[9]。由于在方法中结合人的手动检

测,因此该类方法受限于人的效率,可扩展性不强。

基于搜索的代码异味检测方法,使用不同的算法直接从源代码中识别和检测代码异

味,其中大部分检测使用机器学习相关算法。对于机器学习方法,需要对输入进行

处理,根据标准输入来得到最后的分类输出结果。Fontana等人使用机器学习技

术进行代码异味检测,利用机器学习方法对代码异味进行分类,自动检测代码异味。

他们使用了16种机器学习算法,对4种代码异味DataClass,Large

Class,FeatureEnvy,LongMethod进行检测,并在软件系统中进行实验,并通过

人工确认来构造代码异味样本,把这些样本作为机器学习的标准输入,最后通过交

叉验证对实验结果进行评价[10]。基于搜索的方法的算法成功依赖于数据集和训练

集的质量,在处理未知和变化的代码异味时受到一定限制。

基于协作的代码异味检测方法,以合作的方式执行不同的活动来改善方法效果,提

高检测方法的准确性和性能。目前相关文献较少,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,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/zhishi/a/1679911695155607.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:软件工程代码.doc

本文 PDF 下载地址:软件工程代码.pdf

下一篇:返回列表
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
  • 四年级下册数学教案
    黄金种类-雄狮子2023年2月28日发(作者:学家电维修)四年级下册数学全册教案、教学计划、总结第一单元四则运算第一课时:教学内容:P4例1、例2(只含有同一级运算的混合运算)教学目标:1.使学生进一步掌握含有同一级运算的运算顺序。2.让学生经历探索和交流解决实际问题的过程,感受解决问题的一些策略和方法。3.使学生在解决实际问题的过程中,养成认真审题、独立思考等学习习惯。教学过程:一、主题图引入观
  • 261℃青草伊伊
  • 258℃班级管理细则
  • 188℃活动
  • 166℃年休假管理办法
  • 116℃志愿者工作总结
  • 100℃赏樱花
  • 97℃优文网
  • 97℃招生策划
  • 89℃停电应急预案
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|