论文总字数:24654字
摘 要
克隆代码是软件中存在的相同或相似的代码片段,这是复制现有的代码片段,进行修改后或者不经修改直接将其粘贴至代码的其他部分的行为造成的。一般来说,大型的软件系统中难以避免有着克隆代码的存在。克隆代码虽然可能提高软件开发人员的编程效率,但是代码之间的克隆关系往往没有记录,会带来软件难以维护的问题,造成系统冗余,增加错误传播。检测出软件系统中的克隆代码,可以有效地减轻错误传播,降低测试和修改成本,指导软件的重构和优化,提升软件进一步演进的能力。
当前,大部分克隆代码检测方法均是以代码的文本相似度为依据,忽略功能相似的检测,所以检测结果往往不够完整。本文提出一种动静态结合的克隆代码检测技术,结合文本相似度和功能相似度,从软件的静态结构和动态执行两个方面,对克隆代码进行查找,尽可能获得完整的检测结果。本文的主要工作如下:(1)提出静态检测和动态检测相结合的方法。(2)实现克隆代码检测系统。(3)构造测试用例对系统进行实验验证。
关键词:克隆代码,文本相似,功能相似
ABSTRACT
A cloned code is the same or similar piece of code that exists in the software. This is caused by copying an existing piece of code, modifying it, or pasting it directly into other parts of the code without modification. In general, it is difficult to avoid the existence of cloned code in large software systems. Although cloned code may improve the programming efficiency of software developers, the cloning relationship between code is often not recorded, which brings problems that are difficult to maintain, resulting in system redundancy and increases error propagation. Detecting cloned code in the software system can effectively mitigate error propagation, reduce testing and modification costs, guide software reconstruction and optimization, and improve the software's ability to further evolve.
At present, most of the cloned code detection methods are based on the textual similarity of the code, ignoring the detection of functional similarity, so the detection results are often not complete.A dynamic and static combination of clone code detection technology is proposed in this paper, combined with textual similarity and functional similarity, from the static structure and dynamic execution of the software, the cloned code is searched, and the complete test results are obtained as much as possible. The main work of this paper is as follows: (1) Propose a method combining static detection and dynamic detection. (2) Implement the cloned code detection system. (3) Construct test cases to verify the system.
KEY WORDS: cloned code, textual similarity, functional similarity
目 录
摘 要 Ⅲ
ABSTRACT Ⅳ
第一章 绪论 1
1.1研究背景和意义 1
1.2克隆代码检测技术发展现状 2
1.3主要工作内容 2
1.4论文组织结构 3
第二章 克隆代码检测相关理论知识基础 4
2.1克隆代码定义及分类 4
2.2基于文本相似度的克隆代码检测方法 5
2.3基于功能相似度的克隆代码检测方法 6
第三章 动静态结合的克隆代码检测技术 8
3.1整体技术路线 8
3.2静态克隆代码检测 10
3.3动态克隆代码检测 11
3.4克隆代码检测结果生成 12
第四章 克隆代码检测工具的实现 13
4.1支撑环境 13
4.1.1 软件环境 13
4.1.2 硬件环境 13
4.2功能描述 13
4.3架构设计方案 13
4.4详细设计方案 14
第五章 实验 18
5.1实验环境 18
5.2实验目标 18
5.3实验步骤 18
5.4实验结果与分析 18
5.4.1 静态克隆检测结果与分析 18
5.4.2 动态克隆检测结果与分析 20
5.5结论 23
第六章 总结与展望 24
6.1总结 24
6.2展望 25
参考文献 26
致 谢 28
绪论
这一章是绪论部分,首先介绍本项目的研究背景及其意义,并在此基础上分析相关课题、项目的研究现状,然后介绍了本次课题的主要工作内容,最后是对本毕业论文的章节安排及相应的内容介绍。
1.1研究背景和意义
复制现有的代码片段,进行修改后或者不经修改直接将其粘贴至代码的其他部分是软件开发中的一个常见过程。这种复制的代码被称为克隆代码。克隆代码又称为重复代码,通常是指软件系统中存在的相同或相似的代码片段。一般来说,软件系统中都会存在一定数量的克隆代码。阅读文献[1]可以得出,在软件系统中,一般存在5%~10%的克隆代码的结论,而在JDK1.3.0中有20%以上的代码存在克隆的现象[2],Linux系统的内核部分有15%~25%的克隆代码[3],文献[4]指出X Windows系统中大概有19%的克隆代码。这种现象的存在是有原因的,一方面,由于程序员技能的限制和时间限制,直接引用已经编写完成的代码可以提高编程效率,另一方面,减少新的代码,复制现有的功能和逻辑对于程序员理解一个大型系统来说也有着一定的帮助。
虽然克隆代码也有着提高编程效率、能够快速而直接地解决变更要求等优点,但是,它也会导致更高的维护成本,增加错误传播的可能,造成错误的繁殖,若复制粘贴时的源代码本身存在着错误,那在进行代码克隆时就会将其延续下去,甚至造成更严重的错误,而程序员在修改错误时,往往需要找到所有克隆代码,进行一致的修改,这严重影响了程序员对代码的改进,降低软件系统的整体性能,也会导致软件规模过大,造成冗余的现象。这些情况都促使程序员在实际开发中要尽量避免使用克隆代码,减少克隆代码有助于软件开发人员进行软件维护。因此,找出软件系统中存在的克隆代码,对软件开发人员进行软件维护和分析有着极其重要的意义。
剩余内容已隐藏,请支付后下载全文,论文总字数:24654字
该课题毕业论文、开题报告、外文翻译、程序设计、图纸设计等资料可联系客服协助查找;