Clone detection, management and understanding are significant researches in software engineering. They have wide requirements and applications in many fields, such as software maintenance, evolution, architecture, reuse, licensing, anti-plagiarism and so on.For the key problem clone genealogies extraction, we carry out further studies on clone detection, clone group mapping, clone evolution pattern recognition, and clone genealogy extraction based on available results. By choosing the proper granularity of clones, present an optimized algorithm implement the efficient clone detection and reduces the time and space complexity of existing algorithm, map clone groups between adjacent versions of software accurately based on clone detection results, identify the origin of a code clone by its content and position, and then determine evolution pattern between clone groups, extract clone genealogies by combine clone lineages originated from the same clone group, and realize its visualization. At last, an experimental system is obtained, which is portable, language-independent, and visual, for automatically extract clone genealogies. The achievements will provide reference of code clones evolution analysis, thus provide powerful support to the management and maintenance of code clones.
克隆代码检测、管理和理解是软件工程的重要研究内容,其在软件维护、演化、架构、复用及软件授权、反剽窃等众多领域有广泛的需求与应用。基于已有研究成果,针对"克隆家系提取"这一关键问题,围绕"检测克隆代码"、"建立克隆群映射"、"识别克隆演化模式"、"提取克隆家系"四个具体核心问题深入开展研究。通过选取适当克隆代码粒度,提出改进算法实现高效检测克隆代码,并达到降低现有算法时空复杂度的目的;基于克隆检测结果,准确映射历时演化文件版本间的克隆群;从克隆片段的内容和位置两个方面来确定克隆片段的起源,从而确定克隆群之间的演化模式;把具有共同祖先的直系克隆提取出来组成克隆家系,并对其实现可视化。最终,设计开发一个与程序设计语言无关的、可移植的、可视化的克隆家系提取实验系统。预期成果将为克隆代码的演化分析提供参考,从而为克隆代码的管理和维护提供有力的支持。
在软件工程领域中,克隆代码检测、分析和管理是其重要的研究内容,在软件维护、演化、架构、复用及软件授权、反剽窃等众多领域有着广泛的需求与应用。本项目针对“克隆家系提取”这一关键问题,从检测克隆代码、建立克隆群映射、识别克隆演化模式、提取克隆家系四个方面进行研究。主要包括如下内容:通过选取适当克隆代码粒度,开发了一款基于Token编辑距离的克隆检测工具以实现高效检测克隆代码,该检测工具的匹配过程更加严格,进一步提高了查全率与查准率;基于克隆检测结果,提出了基于LDA和DBSCAN的软件多版本克隆群映射方法,准确映射历时演化文件多版本间的克隆群;结合克隆群内克隆片段数量以及内容的变化方式将克隆群分为静态、新增、去除、相同、分离、合并、 一致和不一致等八种短期演化模式,使克隆的演化过程更加清晰全面;串联所有版本中的克隆映射关系和演化模式构建克隆家系,将获得的克隆家系结果存储在XML文件中,便于后续研究中的提取使用。运用多种方法进行克隆映射和演化模式的识别,解决了克隆映射粒度较粗和演化模式识别繁琐等问题,构建了多版本的克隆家系。“克隆家系”的研究是本项目的核心,也是项目申请的主要内容。随着项目的推进,在克隆家系的基础上,项目组还分析了克隆代码不同演化模式的Bugs倾向性研究,并利用软件的演化历史,对需要重构的克隆代码进行识别与推荐。这些扩展研究不仅丰富了“克隆家系”的研究内容,还对克隆家系的研究结果进一步应用与实践。围绕本项目研究内容,项目组成员发表论文14篇,申请软件著作权5项,实现克隆群映射系统和克隆家系提取系统各一个,超额完成了项目计划任务书中预订的各项任务。项目的完成对有克隆代码的深入研究有重要理论意义,为克隆代码的演化分析提供参考,为克隆代码的管理和维护提供有力的支持,这些研究工作对学界和产业界的相关工作都具有非常重要的研究价值和现实意义。
{{i.achievement_title}}
数据更新时间:2023-05-31
演化经济地理学视角下的产业结构演替与分叉研究评述
监管的非对称性、盈余管理模式选择与证监会执法效率?
宁南山区植被恢复模式对土壤主要酶活性、微生物多样性及土壤养分的影响
青藏高原狮泉河-拉果错-永珠-嘉黎蛇绿混杂岩带时空结构与构造演化
基于全模式全聚焦方法的裂纹超声成像定量检测
基于多版本技术的自适应编译优化方法研究
基于分片复用的多版本容器镜像加载方法研究
基于人声检测及分离的多版本流行音乐检索关键技术研究
网构软件多策略信任演化博弈机制研究