论文部分内容阅读
克隆代码进化研究以软件的多个版本为基础,通过克隆代码检测及跟踪来获取克隆代码进化信息。克隆代码进化研究对于了解克隆代码特征,维护和重构克隆代码、评价克隆代码有害性以及检测软件缺陷有着重要意义。克隆家系提取是克隆代码进化研究中的关键技术,而克隆群映射又是克隆家系提取中的难点问题。现有的克隆家系提取方法中,能够处理近似克隆代码的较少,并且由于在克隆代码表示及克隆群映射等方面存在局限,这些方法容易出现误差大、效率低或鲁棒性差等问题。为解决上述问题,本文主要完成了以下工作。首先,针对不能有效处理近似克隆代码的问题,选择新型的NICAD工具作为前端,完成多版本软件精确及近似克隆代码的检测;其次,针对传统克隆代码表示方法的信息量过少,不能反映克隆代码特征的局限,改进了原有的克隆区域描述符模型,并使用该模型对克隆代码进行建模;然后,针对现有克隆群映射方法的局限,提出了基于CRD的克隆群映射算法完成相邻版本克隆群映射;接着,针对现有克隆群进化模式定义方法不适合近似克隆代码的问题,改进了进化模式的定义,并依据该定义完成进化模式识别;最后,采用连接克隆群映射的方法完成克隆家系的构建。为了检验上述方法的有效性,本文开发了多版本软件克隆家系提取原型系统CGE,并在3个不同语言编写、不同规模的开源系统上进行了克隆家系提取和克隆群映射实验。本文对实验结果进行了分析,并与其他方法进行了对比。实验证明本文的方法能够有效地完成克隆家系的提取工作。