首页> 中文学位 >基于K-最近邻的C克隆代码重构方法研究
【6h】

基于K-最近邻的C克隆代码重构方法研究

代理获取

目录

基于K-最近邻的C克隆代码重构方法研究

Code Clone Restructuring of C Programs Via K-Nearest Neighbor Algorithm

摘 要

Abstract

目 录

第1章绪 论

1.1课题研究的目的与意义

1.2国内外研究现状及分析

1.3课题研究的主要内容及章节安排

第2章基于K-最近邻的C克隆代码重构方法涉及的关键技术

2.1抽象语法树

2.2变量的定值-使用信息

2.3聚类分析

2.4重构

2.5本章小结

第3章基于K-最近邻的C克隆代码重构方法研究

3.1基于K-最近邻的C克隆代码重构模型

3.2依赖关系分析

3.3基于控制依赖子图的K-最近邻聚类算法

3.4过程提取算法

3.5本章小结

第4章基于K-最近邻的C克隆代码重构的实验与分析

4.1算法实现环境

4.2算法测试与分析

4.3本章小结

结论

参考文献

攻读硕士学位期间发表的论文及其它成果

哈尔滨工业大学学位论文原创性声明及使用授权说明

致 谢

展开▼

摘要

随着计算机软件的快速发展,程序员开始对软件进行复用以减少工作量。但是这种方法的结果是软件系统中充斥着大量的克隆代码。在大部分情况下,克隆代码对系统是有害的,它增加了软件的长度,使软件体系架构变得更加臃肿,维护起来非常困难,降低了系统运行效率,并且导致软件中存在很多的错误。而重构技术的出现,可以有效对克隆代码进行处理,降低其对系统的危害。但是目前对克隆代码重构的研究还不是很多。
  针对目前的现状,本文提出了一种基于K-最近邻的克隆代码重构方法。该方法首先为C克隆代码构造语法树,并在语法树的基础上建立程序依赖图,然后进行静态分析,从而获得程序的控制流信息和数据流信息。然后,采用基于控制依赖子图的K-最近邻聚类算法对代码进行分析,选取可执行语句作为实体,利用数据属性和控制属性对实体进行归类,分离出便于提取、功能独立的代码片段。接着,调用基于抽象语法树的过程提取算法,求得变量类型,确定要提取的过程的参数类型及个数,解决新过程的返回值问题,最后将代码片段提取为独立的过程,并用过程调用替换其在源代码中的位置。
  本文使用已有文献中的代码和开源代码对基于K-最近邻的克隆代码重构方法模型进行了测试。实验结果表明,本文提出的重构模型能够有效地提取内聚度低、功能交叉的克隆代码,具有较高的聚类准确性。

著录项

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号