首页> 中文学位 >基于软件演化数据挖掘的代码坏味道检测
【6h】

基于软件演化数据挖掘的代码坏味道检测

代理获取

目录

声明

1绪 论

1.1 软件重构的重要性

1.2 代码坏味道的概念和负面影响

1.3 代码坏味道检测的研究现状

1.4 研究目标和内容

1.5 论文结构

2方法概述

2.1 研究思路

2.2 总体技术框架

2.3 6种代码坏味道

2.4 本章小结

3代码变更的关联规则挖掘

3.1 代码演化耦合的概念

3.2 代码演化数据的提取

3.3 代码演化数据的预处理

3.4 关联规则挖掘

3.5 本章小结

4基于启发式算法的代码坏味道检测

4.1 重复代码的自动检测

4.2 霰弹式修改的自动检测

4.3 发散式变化的自动检测

4.4 并行继承的自动检测

4.5 大对象的自动检测

4.6 依恋情结的自动检测

4.7 本章小结

5实验

5.1 实验问题

5.2 实验数据

5.3 实验设计

5.4 参数标定

5.5 实验结果及讨论

5.6 实验问题总结

5.7 本章小结

6总结与展望

6.1 本文贡献

6.2 展望

参考文献

攻读学位期间发表的学术论文

展开▼

摘要

大量的研究表明,代码坏味道的存在对于软件质量有极大的影响,甚至会导致软件系统失败。所以,如何发现代码中的坏味道吸引了大量研究者和实践者的注意力,成为软件工程的研究热点之一。研究者们已提出了一系列代码坏味道检测方法,但这些方法仅仅基于从源代码中所提取的静态结构化信息。本文观察发现,有一些代码坏味道具有能够从软件演化的变更历史特征来进行检测的特性;还有一些代码坏味道,在以往使用的是代码结构信息进行静态检测,但是演化历史数据可以帮助改进检测效果。
  基于这个发现,本文提出了一种基于软件演化数据挖掘的代码坏味道检测方法BADE,它从软件的版本管理系统的演化信息中,提取变更事务集,运用机器学习方法进行代码变更的频繁模式发现和关联规则挖掘,在此基础上,利用启发式的算法来检测6种典型的代码坏味道――重复代码、霰弹式修改、发散式变化、并行继承、大对象和依恋情结。
  具体地,本文的贡献包括:
  1)代码变更的关联规则挖掘。本文定义了代码演化耦合度的概念,以代表代码实体之间的演化联系。BADE从版本管理系统的历史版本数据中,根据演化耦合概念构建变更事务集,过滤分支合并。接着采用自顶向下的搜索方法、剪枝策略和并行化运算的方式改进了关联规则挖掘算法 FP-Growth,从代码演化的变更事务集中发现代表代码实体之间的耦合关系的频繁模式。
  2)基于启发式算法的代码坏味道检测。根据演化历史中代码实体之间的关联规则,设计启发式的算法来进行代码坏味道的检测。同时本文对代码进行静态检测获取代码的结构,来辅助启发式算法更准确地发现代码坏味道。
  3)实验。本文选取了5个开源软件项目,采用BADE和其他现有方法进行了对比实验。实验结果表明:BADE能够获得较高的准确率和召回率,F-measure值在64%到92%之间;对于本身具有演化特性的坏味道,例如霰弹式修改,发散式变化和并行继承,BADE胜过现有基于单个代码快照的静态分析技术;对于重复代码、大对象和依恋情结等代码坏味道,BADE表现也较好;通过将演化数据挖掘和代码静态分析技术结合起来,能获得更好的检测性能。

著录项

相似文献

  • 中文文献
  • 外文文献
  • 专利
代理获取

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号