克隆代码的识别与重构

来源 :东南大学 | 被引量 : 0次 | 上传用户:likkjiang
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
克隆代码是执行相同或类似功能的若干完全相同或十分相似的代码片段,它们差别细微,分散在软件的不同部分,手工方法难以进行统一维护,是程序中常见的“坏味道”代码。软件重构技术在不改变程序外部行为的前提下对软件进行有序、规范的结构调整和优化,消除“坏味道”。克隆代码的自动化识别与重构对于改善软件结构和降低软件维护成本,有着重要意义。 本文首先根据克隆代码的分散度和覆盖度成负相关的特性,提出了一种基于抽象语法树的克隆识别方法,其主要特点是通过构建克隆类关系树,识别出了任意覆盖度上的克隆类,然后结合克隆代码的基本特征和现有的重构方法,给出了可重构克隆代码的基本模式,制定了相应的重构方案;最后实现了一个克隆代码识别系统,并对多个开源软件代码进行了实验研究和分析。 论文的工作包括几个方面: (1)针对抽象语法树无法反映语法成分间次序的特点,在构建抽象语法二叉树表示(BAST)的基础上,逐条判断各语句BAST子树的同构性,识别出相似的语句序列作为克隆序列:根据子树同构识别一元克隆类,然后通过克隆类的连接操作,逐步识别多元克隆类; (2)总结出了可重构克隆代码的基本模式以及相关模式的判定算法,以JDK 1.5为实例,详细分析了克隆代码的常见形式,制定了相应的重构方案; (3)研究了克隆代码自动化识别和重构的实现技术,以Eclipse为平台,设计与实现了克隆识别器Dolly; (4)以Jhotdraw6.0、Websphinx0.5和JDK1.5等开源项目为实验对象,识别出了其中的克隆代码,分析了这些克隆代码的分散特征,统计分析了多元克隆类在软件中的分布情况。
其他文献
随着计算机以及通信技术的发展,图像处理被广泛应用于各个领域。伴随着大规模图像数据库的产生,传统的信息管理方式已经不能满足实际的需求。为了便于图像的检索和识别,基于内容
一方面,传统的操作系统花费大量的CPU时间来执行任务、进行任务管理、进程间通信以及其它相关的操作。另一方面,任何在实时操作系统上运行的软件应用程序都会导致代码量的增
发布/订阅(Publish/Subscribe)通信泛型由于具有时空松耦合的特点,适用于大规模分布式计算环境,近年来得到了广泛的关注。时空松耦合包含时间和空间的松耦合。其中,空间的松耦
本文采用一种新型分布式防火墙的策略管理方案,即分散生成策略。这种策略管理方案解决了策略控制中心的单点失效问题,但是带来的问题是如何检测这种情况下的策略异常。本文针对
网格是随着计算机技术与互联网技术的进一步发展,所提出的一种新型的网络计算平台,整合了广域网中分布的、动态的、异构的资源,实现充分的资源共享和计算协同。网格计算技术
近年来,我国的铁路事业得到了飞速发展,高速铁路的出现更是极大的压缩了时间和空间,改变着人们的生活方式。高速铁路在方便人们出行的同时,其可靠性也是人们关注的焦点。然而
差分演化算法,自1995年被提出以来,受到了相关领域中专家学者们的重视和青睐,并且已经在多峰函数优化、数据过滤、神经网络学习、多目标优化等十九个大方向上得到了较好的仿真结
随着互联网的迅速普及,网络技术已经渗透到人们的工作、生活、娱乐等各个角落。IP组播技术以其高效的网络带宽利用率日益赢得人们的青睐。组管理协议IGMPv3是IP组播体系结构
随着信息安全领域对内网安全日益重视,在主板上引入可信平台模块作为可信根的可信计算技术成为目前解决终端安全的研究热点。本文主要围绕可信计算技术展开研究,针对目前大部
移动智能网技术发展到今天,已经在移动通信网上得到了广泛的应用。近几年来移动通信市场的竞争愈加激烈,用户也对移动通信的服务和质量提出了越来越高的要求。为了提高市场竞