论文部分内容阅读
克隆代码(又称重复代码)一直以来都是软件工程领域里的热门研究问题。传统观点将视角局限在软件单一版本中,认为克隆代码对程序是有害的,应及时检测并予以重构。然而近几年来的最新研究发现,克隆代码并不一定是有害的——在代码进化过程中,一些克隆代码生命周期很短,另一些始终无变化的克隆代码具有较强的健壮性,一味地对其进行重构得不偿失。因此,综合考虑系统稳定性、维护成本、重构难度等多方面因素对克隆代码进行有害性评价显得十分必要。但遗憾的是,到目前为止,对这个问题的研究很少。为了有效解决克隆代码有害性评价的问题,本文提出了基于支持向量机的静态度量与进化度量相结合的有害性评价方法。本文方法参考软件缺陷预测领域里的相关研究方法,将克隆代码有害性评价看作是机器学习中的有监督分类问题,首先提出一种克隆代码有害性标准的定义与对应的样本标注方法,接着结合软件缺陷预测与克隆代码进化相关领域的最新研究,提出了两组软件度量——静态度量和进化度量来表征克隆代码的信息,并建立了以支持向量机为核心算法的评价模型。最后使用该模型对完成标注与度量提取的克隆代码样本进行训练与测试,经过交叉验证、参数优化等过程,完成了本文克隆代码有害性评价模型的建立工作。最后,为了验证该克隆代码有害性评价模型的有效性与适用性,本文选择3种编程语言6种类型的开源软件作为研究对象进行了实验与测试。实验结果表明本文提出的评价方法具有较好的适用性与较高的准确率,是克隆代码有害性评价研究的一次很有意义的尝试。另外,结合实验结果的各度量影响分析也为今后该方向的研究提供了有价值的参考。