当前位置:主页 > 科技论文 > 软件论文 >

基于软件维护历史的代码异味评估与检测

发布时间:2020-06-18 10:05
【摘要】:代码异味是软件中由于设计缺陷或不良编码习惯而导致深层次质量问题的代码症状。与一般代码缺陷不同,代码异味不一定直接导致软件运行错误,但引起可读性、可理解性、效率等方面的质量问题,造成软件维护难度随之增加。因此,亟需对代码异味进行评估与检测,以改善软件质量、节约维护成本。目前,代码异味的研究面临着若干挑战。一方面,程序员对代码异味的识别偏于主观,缺乏有效的检测工具。另一方面,除程序结构方面的代码异味之外,现有研究工作缺乏对更多类别代码异味的研究。对此,本文通过挖掘开源软件的维护历史,评估和检测影响软件可维护性的代码异味。首先,本文实现了一种基于度量的代码异味检测技术,并评估了代码异味对软件可维护性的影响程度。其次,鉴于Python等动态类型语言的流行以及用户对软件性能的要求日益提高,本文提出了动态类型使用和性能表现两方面的代码异味,并分别对代码异味的检测技术和危害程度展开研究。本文主要贡献总结如下:(1)针对代码异味检测技术的有效性问题,结合三种阈值策略构建了基于度量的代码异味检测工具(Pysmell),根据软件维护历史评估了三种阈值策略的检测效果并衡量了代码异味对软件可维护性的影响程度。结果表明,该工具能有效检测10种程序结构代码异味,且代码异味与代码变更和缺陷显著相关。(2)针对动态类型使用的代码异味问题,提出了6种动态类型滥用的代码异味,实现了对动态类型代码异味的检测方法,结合定量和定性分析调查了动态类型代码异味的特征并评估了在软件维护历史中这些代码异味与缺陷的关联性。结果表明,程序员一般在软件的前期开发阶段就引入了动态类型代码异味,且绝大部分的动态类型代码异味可能导致软件缺陷。(3)针对影响软件性能表现的代码异味问题,实现了性能问题代码异味的定位方法(Speedoo),其目的是对软件中所有函数的优化优先级进行排序。本文基于开源软件的性能优化历史对该方法的有效性和效率进行评估。结果表明,Speedoo定位性能问题代码异味的有效性比基于剖析的定位工具YourKit高出2到3倍,且能适用于大规模的软件系统。
【学位授予单位】:南京大学
【学位级别】:博士
【学位授予年份】:2018
【分类号】:TP311.53
【图文】:

数据分布,度量值


为了调查这个假设是否成立,我们在GitHub上收集了邋106个收藏数最多的逡逑开源Python项目语料库,包含了3.5MLOC代码和25,882个Python文件。我们从这逡逑些项目中提取出策略框架中的所有度量数据集,最终每个度量的分布如图3.1所逡逑不。度量值的分布均遵循幂律分布:绝大部分数据点的分布集中于一小部分值逡逑空间内。为此,本章采用的基于统计的阈值策略参考了邋Fontana等人提出的数据逡逑驱动方法[118]。方法分为两个步骤:逡逑第一步,按照非参数化过程丢弃对制定阈值无用的数据点集合。在106个逡逑Python项目的度量值分布中,度量值的分布呈现的普遍规律是:当度量值较小逡逑时,多数数据点落在该分布区域,即数据点的频率高,例如PAi?度量表示的函逡逑数参数个数通常是1-3;随着度量值变大,数据分布越来越稀疏,即数据点的频逡逑率变小,例如度量值在10以上的概率很小,这些异常度量值很可能暗示了逡逑代码异味。因此,那些频率很高的度量值区域上的数据点失去了研究意义,故逡逑而要丢弃那一部分度量值区域上的数据点。

结构框架,阈值


逦2逡逑基于训练机的阈值策略)开发出了一个代码异味检测工具,名为Pysmell8,能够逡逑检测Python软件中的10种代码异味。它的体系框架如图3.2所示,主要包含了三逡逑个功能模块:逡逑AST分析器分析了软件系统的结构并从中将Python文件转化为抽象语法树逡逑(AST)。通过遍历抽象语法树,该模块抽取了Python文件中的所有实体(例如逡逑类和函数),并收集了相关的度量值。逡逑阈值选择器实现了三种阈值策略,计算出度量阈值。基于经验的阈值是根逡逑据问卷调查中程序员反馈的经验值设定。基于统计的阈值选取是利用AST分析逡逑器模块收集的度量值分布来提取度量的异常值作为阈值。基于训练机的阈值选逡逑取是基于一个足够大的代码异味实例库来迭代地训练阈值,使得最终阈值满足逡逑检测准确率要求。逡逑代码异味检测器使用了不同阈值策略计算出的阈值来检测目标系统中的每逡逑个实体是否满足各代码异味的检测策略。在该检测过程之后,该模块将检测结逡逑果报告给用户,同时也将检测结果输出给阈值选择器模块中的训练机以便于继逡逑续训练阈值。逡逑8https://github.com/chenzhifei731/Pysmell逡逑25逡逑

【相似文献】

相关期刊论文 前10条

1 Aron Sorensen;;建立船舶设备软件维护标准[J];中国远洋海运;2017年05期

2 朱罡;;军用软件维护方法探析[J];中小企业管理与科技(中旬刊);2016年10期

3 刘栋;刘中杰;尚玉;文昌辞;孟庆鑫;;对军用软件维护标准更新的探讨[J];航空标准化与质量;2015年02期

4 赵春城;;软件维护之重要性及方法[J];环球市场信息导报;2015年26期

5 牧童;张会娜;潘晓平;;医学信息系统软件维护问题及其对策[J];医学信息学杂志;2009年06期

6 许军刚;金融软件维护工作浅析[J];中国金融电脑;1994年09期

7 张社英;刘又诚;郭江;;软件维护技术(上)[J];计算机世界;1994年05期

8 NORMAN F.SCHNEIDEWIND;朝阳;;软件维护的现状[J];航空计算技术;1988年03期

9 王德泽;普通高校计算中心的配置及其实施[J];实验室研究与探索;1988年01期

10 赵保华;屈玉贵;;软件工程(八)——软件维护、小项目软件的开发方法[J];微型机与应用;1989年01期

相关会议论文 前9条

1 赵明航;;中广核信息系统维护探讨[A];2008电力行业信息化年会会议论文集[C];2008年

2 赵明航;高柯夫;;中广核信息系统维护探讨[A];2009电力行业信息化年会论文集[C];2009年

3 矫文成;张政保;霍晓磊;李晓辉;;指挥信息系统装备软件保障问题研究[A];第三届中国指挥控制大会论文集(上册)[C];2015年

4 赵宏;;网格理论与技术在工程计算中的应用[A];计算机技术在工程建设中的应用——第十二届全国工程建设计算机应用学术会议论文集[C];2004年

5 童丽娟;;软件维护方法综述[A];河南省冶金行业低碳冶金与节能减排学术研讨会论文集[C];2011年

6 顾秀君;;舰船中软件保障的研究[A];中国造船工程学会修船技术学术委员会船舶维修理论与应用论文集第七集(2004年度)[C];2004年

7 赵勃;孙铁鑫;王征;;高校计算机实验室综合信息管理系统设计与实现[A];第二届世纪之星创新教育论坛论文集[C];2015年

8 高红光;;高速公路ETC系统养护维修与收费运营管理相结合的探索与实践[A];中国公路学会养护与管理分会第七届学术年会论文集[C];2017年

9 杨晓飞;;微机实验室管理的探讨[A];第五届中国教育技术装备论坛获奖论文集(下)[C];2014年

相关重要报纸文章 前9条

1 刘培臣;如何做好软件维护工作[N];中国计算机报;2008年

2 福建省南平市医保中心 许椿榕;应用CMM改进软件维护过程[N];计算机世界;2005年

3 乐天 编译;软件维护你会选择第三方吗?[N];计算机世界;2010年

4 本报记者 李燕京;软件维护成消费者之痛[N];中国消费者报;2013年

5 莱芜职业技术学院 亓云;浅谈学校计算机房的软件维护技术与措施[N];莱芜日报;2006年

6 左权县城镇环境卫生管理站 乔霞;计算机软件信息软件维护和管理探讨[N];晋中日报;2015年

7 杨正军;格柏科技AccuMark 8.2版正式发布[N];中国服饰报;2006年

8 小 云;软硬兼施维护服务器[N];中国国门时报;2005年

9 ;Linux开发比Microsoft软件费用更高[N];计算机世界;2003年

相关博士学位论文 前8条

1 陈芝菲;基于软件维护历史的代码异味评估与检测[D];南京大学;2018年

2 王帆;软件维护中的成本估算和质量保证技术研究[D];浙江大学;2011年

3 鄢萌;软件仓库的主题挖掘及其在软件维护中的应用研究[D];重庆大学;2017年

4 王金水;交互式特征定位过程及支持技术研究[D];复旦大学;2013年

5 杨梦宁;软件维护中的关键预测问题研究[D];重庆大学;2016年

6 高原;面向软件重构的推荐方法研究[D];北京理工大学;2015年

7 徐小辉;构件化软件动态更新关键技术及形式化研究[D];上海交通大学;2011年

8 郁抒思;软件工程数据挖掘若干问题研究[D];复旦大学;2011年

相关硕士学位论文 前10条

1 周香云;精益思想在软件维护项目中的应用研究[D];东南大学;2015年

2 关士慧;软件维护管理平台的设计与开发[D];电子科技大学;2014年

3 陈瑜;面向嵌入式系统的在轨软件维护技术研究[D];浙江大学;2006年

4 范佳佳;兼顾软件维护开发以及提供技术支持的流程管理研究[D];上海交通大学;2013年

5 李玉鹏;维护离岸外包过程管理及应用研究[D];西北大学;2007年

6 曾映雪;基于C/S的远程软件维护系统的研究与实现[D];河海大学;2003年

7 刘玉羊;软件维护精益模型以及数据挖掘技术的应用[D];复旦大学;2008年

8 周思成;福田公司维护项目交接案例研究[D];大连理工大学;2013年

9 刘湘月;基于主题模型的程序理解技术的研究[D];扬州大学;2016年

10 孙赢盈;基于程序关联性分析的软件测试方法研究[D];西安理工大学;2008年



本文编号:2719083

资料下载
论文发表

本文链接:https://www.wllwen.com/kejilunwen/ruanjiangongchenglunwen/2719083.html


Copyright(c)文论论文网All Rights Reserved | 网站地图 |

版权申明:资料由用户cb69d***提供,本站仅收录摘要或目录,作者需要删除请E-mail邮箱bigeng88@qq.com