基于软件演化的克隆代码分析与一致性维护方法研究

来源 :哈尔滨工业大学 | 被引量 : 1次 | 上传用户:ktzgy
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
在软件开发过程中,开发人员通过复制粘贴既有代码向系统中引入大量的克隆代码。克隆代码会随着时间和软件系统更新而进行演化,使软件系统变得越来越臃肿、难以维护,从而影响了软件的质量、可理解性和可维护性。这引发了对克隆代码的大量研究,例如克隆检测、克隆分析和克隆维护等。克隆检测帮助开发人员收集系统中的克隆代码,克隆分析帮助开发人员理解系统中存在的克隆代码,克隆维护帮助开发人员解决克隆代码已经引发或者可能引发的问题。克隆代码研究对帮助提高软件系统的质量、增强软件系统的可理解性和可维护性,具有重要理论意义和实际应用价值。  在克隆代码随着软件系统的演化过程中,克隆代码可能会被开发人员修改而发生变化,进一步地加剧了克隆代码的问题。演化中克隆代码的变化使得克隆代码难以理解,降低了软件的可理解性。由于克隆代码彼此之间的相似性,一个克隆代码的变化可能会导致其它克隆代码的变化,称为克隆代码的一致性变化。该一致性变化会导致系统额外的维护代价,而遗忘这种变化则会导致克隆代码一致性违背缺陷,降低了软件质量和可维护性。鉴于此,本文基于软件演化研究克隆代码分析与一致性维护方法,通过分析提取克隆代码的演化特征,帮助软件开发人员理解克隆代码及其演化过程,验证了克隆代码一致性维护需求预测的必要性,并通过预测克隆代码的一致性维护需求帮助解决克隆代码的一致性维护问题,最后结合软件开发过程实现对克隆代码的同步开发与维护,可以提高软件质量、降低软件维护代价。  针对演化中的克隆代码难于理解和分析的问题,研究并提出了基于聚类的克隆代码演化特征分析方法,验证了克隆代码一致性需求预测的必要性。首先,使用克隆检测工具检测系统中的克隆代码,并构建克隆家系描述克隆代码的演化过程。然后,从克隆片段、克隆组和克隆家系三个不同维度提取相应的属性特征描述克隆代码及其演化过程。最后,聚类系统中的克隆代码并挖掘克隆代码演化特征。实验结果发现大部分的克隆代码在演化过程中是稳定的,但也存在相当数量发生变化的克隆代码,在发生变化的克隆代码中有超过一半的发生了一致性变化,为克隆代码一致性维护需求预测研究奠定了基础。  针对新创建的克隆代码在其演化中的一致性变化会导致额外的维护代价问题,研究并提出了克隆代码创建一致性维护需求预测方法,帮助开发人员从规避克隆代码产生的角度降低克隆代码的维护代价。将软件系统中最早出现的克隆代码称为克隆创建实例,并将其在未来演化过程中是否发生一致性变化称为克隆代码创建时一致性维护需求。首先,通过检测软件系统的克隆代码并构建其克隆家系,收集系统中新创建的克隆代码。然后,提取代码属性和上下文表示新创建的克隆代码。最后,使用机器学习方法训练预测模型,并预测克隆代码创建时的一致性维护需求。实验结果表明本文所提出的方法可以高效地预测克隆代码的一致性维护需求,可以帮助软件开发人员降低克隆代码的额外维护代价。  针对演化中克隆代码的一致性变化可能会导致克隆一致性违背缺陷的问题,研究并提出了克隆代码变化一致性维护需求预测方法,帮助开发人员实现克隆代码的同步开发与维护。将软件系统中发生变化的克隆代码称为克隆变化实例,并将该变化是否会引发克隆代码的一致性维护称为克隆代码变化时的一致性维护需求。首先,通过检测系统的克隆代码并构建系统克隆家系收集系统中的克隆变化实例。然后,从克隆组的角度提取三组不同的属性特征用于表示克隆变化实例,即代码属性、上下文属性和演化属性。最后,使用机器学习模型训练预测模型,并预测克隆代码变化时的一致性维护需求。实验结果表明本文所提出的方法可以有效地预测克隆代码的一致性维护需求,可以帮助软件开发人员避免克隆代码一致性违背缺陷。  针对在软件开发初期软件系统中因数据不足而无法预测克隆代码一致性维护需求的问题,研究并提出了跨项目克隆代码一致性维护需求预测方法。将克隆代码创建、变化实例统称为克隆实例,并将相应的一致性维护需求统一为克隆代码一致性维护需求。首先,对软件系统通过构建其克隆家系收集克隆实例,并使用不同的属性表示克隆实例。然后,将不同的软件系统划分为训练系统和测试系统,使用训练系统的数据训练机器学习模型,在测试系统上验证跨项目克隆一致性维护需求的预测效果。实验结果表明跨项目一致性维护需求预测模型可以在软件开发初期预测其它项目的克隆代码的一致性维护需求。最后,结合软件开发过程设计并实现了一个eclipse插件预测克隆代码一致性维护需求,可以边开发、边预测克隆代码的一致性维护需求,有助于降低软件的维护代价。  综上所述,本文提出的基于软件演化的克隆代码分析与一致性维护方法,为在软件开发过程中解决分析和理解克隆代码、维护克隆代码的一致性、避免克隆代码相关缺陷、降低克隆代码维护代价、提高软件质量和可维护性等问题提供了一种新思路和新方法。
其他文献
进入21世纪90年代,嵌入式技术已成为通信和消费类产品的共同发展方向。嵌入式地理信息系统(Embedded GIS)是集成GIS功能的嵌入式系统产品,是系统设计与开发层次上的应用,是一个
目前,公钥基础设施(PKI,Public Key Infrastructure)已成为网络安全建设的基础与核心,是电子商务安全实施的基本保障,对PKI技术的研究和开发已成为当前信息安全领域的热点。P
本文主要研究的是二值图像的信息隐藏技术。信息隐藏技术已在多个领域获得应用,但研究较少、具挑战性的工作是二值图像的信息隐藏。二值图像只有黑白两种颜色,该类图像的信息隐
该文所要研究的动态测试不同于软件工程中的定义,而是在协议测试中,按照测试集的执行和生成情况,将协议的一致性测试分为静态测试和动态测试两类.所谓静态测试就是测试集在整
无线射频识别(RFID)技术是一种非接触的自动识别技术,现在已被广泛应用于物流、医疗、零售、交通等领域。然而,随着该技术的快速发展和广泛应用,日益增大的数据量已使RFID系统间的
简单网络管理协议(SNMP)是最早提出的网络管理协议之一,它一推出就得到了广泛的应用和支持。目前SNMP已成为网络管理领域中事实上的工业标准。 当SNMP被广泛地用于管理Inte
随着因特网应用的普及,电子病历系统不仅要具备电子病历的快速录入功能;同时,在当前的技术条件下,还需要借助因特网解决电子病历的传输问题,以加强医疗合作,提供远程医疗服务。在这
该文主要研究了模糊推理的数学结构及其应用.主要研究成果有W×W上R代数结构及其构造及模糊一可能推理的几种推理形式.文章分为两个部分:第一部分主要研究了二维空间上R代数
人脸检测问题最初作为自动人脸识别系统的定位环节被提出,近年来由于其在安全访问控制、视觉监测、基于内容的检索和新一代人机界面等领域的应用价值,开始作为一个独立的课题受
人脸识别是一项极富挑战性的课题。传统方法需要极其繁多的前期工作和识别阶段的诸多限制,因而不论从理论上还是在实际应用中都极为困难。本文把遗传算法应用于人脸识别的分割