针对代码克隆的面向对象程序的重构研究

来源 :复旦大学 | 被引量 : 0次 | 上传用户:leiweiwei42
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
软件重构是软件工程的一个重要研究领域,是当前软件工程界的一个重要研究课题。通过软件重构,人们可以去除软件中的不良设计,改进软件质量。代码克隆是软件源程序中普遍存在的一个问题,一个软件中往往存在着很多相同或基本相似的代码片段。代码克隆不利于软件的维护及更新,因为假如有一处需要修改,其他克隆之处都要作相应修改。 由于代码克隆存在这种负面影响,我们有必要针对代码克隆进行软件重构。针对代码克隆的软件重构研究主要包括克隆的度量、检测及消除。其目的就是尽可能全面地找出源程序中的代码克隆,并根据不同的克隆情况采取最合理的消除措施,以得到最优的重构效果。 本文从代码克隆出发,以Java语言为例,讨论面向对象程序中针对代码克隆的重构方法。本文首先用基于编辑距离的相似度来度量代码克隆,即通过计算两个代码片段对应的标符序列的编辑距离,并求出其相似度来判断是否克隆。本文接着讨论源程序中的克隆检测,详细阐述克隆检测的各个步骤,包括确定代码片段、生成标符序列、计算编辑距离及相似度。本文同时考虑了满足语义逻辑等价性的代码克隆,即将形式上不相似但逻辑上等价的代码片段也视为克隆,本文使用程序逻辑图来判断逻辑等价性。本文最后针对不同的克隆情况实行不同的消除克隆方法以实现最有效的重构。
其他文献
伴随着计算机应用技术与信息技术的不断发展,计算机及其智能芯片系统的应用在日常生活中已是随处可见。合理、高效地开发嵌入式系统,使其更加优质地服务于人们的生活,已成为计算
图形用户界面系统(GUI)是系统级的支撑软件,它可以和文件系统、操作系统内核等一起构成一个完整的操作系统,GUI为用户提供与应用系统交互的可视化通道,同时也为程序员提供了一种
本文主要介绍了如何在CML语言中实现带指针类型的编译器。指针类型在编译器中的实现主要涉及到语法分析、语义分析、中间代码生成以及存储空间的管理。语法分析器有三类。一
高速磁浮交通作为一种高效、经济和安全的交通技术,如何确保磁浮列车的行车安全,是建设和发展高速磁浮列车系统必须解决的首要问题。其中,磁浮列车系统分区间数据传输的安全性、
本文研究的中心内容为近似算法,其具体应用是围绕网络中的调度问题展开的,这里的网络环境主要指的是网格。近年来,由于网格技术的高速发展,其上的任务调度问题也成为研究的热点。
据调查,目前国内食品行业中瓜子类扁平颗粒体精细分拣工作主要由人工完成,为改善这一现状,本文结合图像处理技术以及数理统计分析相关理论知识,对瓜子彩色图像中纹理与颜色重
语音识别是一门交叉学科,语音识别正逐步成为信息技术中人机接口的关键技术,近年来,计算机语音识别的应用有了长足的进展,基于英语的特殊地位,世界上对于英语作为第一语言的语音数
煤层自燃严重影响着煤炭工业发展,给矿井生产带来极大安全隐患。由于实际条件下的煤自燃过程很难描述清楚,使得煤层自然发火预测预报技术的发展受到严重制约,当务之急是建立有效
妊娠高血压综合征(简称妊高征)是妊娠期特有的疾病。发病率在我国为9.4%,国外为5%~12%,该病严重影响母婴健康,是孕产妇和围生儿患病及死亡的主要原因[1]。妊高征的发病原因及病
基于多Agent的WebGIS系统的研究,是当前和今后一段时间的研究热点。本文在讨论了相关的基础理论之后,提出了基于Agent的WebGIS的体系结构,并给出了详细的功能说明及关键技术