Software refactoring is an effective means to improve software quality. Automated identification of refactoring opportunities is a hot topic in this field. Existing approaches identify refactoring opportunities by detecting code smells based on static source code analysis. They ignored the fact that characters of refactoring participants and software applications might influence identification of refactoring opportunities. To this end, we would investigate how to adjust thresholds for existing approaches according to feedback from users. We would also investigate how to identify similar refactoring opportunities according to current refactorings. Finally, we would investigate how to discover refactoring orders by minding refactoring history, and how to identify related refactoring opportunities according to current refactorings. Identification of refactoring opportunities according to current refactorings relies less on formal definition of code smells and characters of refactoring participants and software applications. Besides this benefit, the proposed approach could cooperate with existing code smell-based approaches to improve recall.
软件重构是提高软件质量的一个有效手段。重构机会的自动检测是其中的一个难点和热点问题。现有检测方法主要基于源代码的静态分析,通过检测代码坏味以寻找重构机会。现有方法过于依赖代码坏味的形式描述以及代码静态分析技术,忽视了程序员以及应用程序的个体差异对重构机会检测的影响。为此本项目计划研究如何根据程序员对检测结果的反馈动态优化调整现有检测算法的阈值设置,从而降低程序员和应用程序的个体差异对检测算法的影响;拟以"重命名"为例研究如何根据程序员的当前重构推荐类似重构机会及重构方案;计划挖掘重构历史数据找出时序上紧密相连的重构操作,分析前后重构之间的内在联系,进而提出相应的规则以根据当前重构推荐相关重构机会及重构方案。基于当前重构推荐相似及相关重构的方法既降低了对代码坏味形式化描述的依赖,也降低了程序员和应用程序的个体差异对检测算法的影响。此外该方法与基于代码坏味的检测方法可互为补充从而提高查全率。
软件重构机会的自动检测对软件开发与维护具有重要意义,但现有的检测方法过于依赖代码坏味的形式化描述以及源代码的静态分析,忽视了重构参与人员及应用程序的个体差异对重构机会检测的影响。为此,本项目研究分析了重构参与者对重构机会检测结果的反馈,提出了基于反馈的代码坏味阈值动态优化方法;研究分析了重构操作的内在联系,提出了基于监控的相似重构机会检测方法;研究分析了需求-代码追踪关系对软件重构的影响,提出了基于需求追踪关系的重构方案推荐方法。这些方法很好地利用了软件重构的上下文信息,避免了对代码静态结构的过度依赖,提高了重构机会推荐的准确率和召回率。此外,项目探索研究了基于深度学习的重构机会推荐方法,提出了反重构(anti-refactoring)的概念,很好地解决了训练数据的问题,为基于深度学习的重构推荐奠定了基础。在此基础上,研究提出了基于深度学习的特征依恋检测方法、基于深度学习的上帝类检测方法、基于深度学习的长函数检测方法等一系列的代码坏味检测方法,大幅度提高了重构推荐的准确率和召回率。针对最常见的重命名重构,提出了基于文本相似性的重命名推荐方法以及缩写词自动扩展方法。针对冗长重构菜单的选择困难,研究分析了重构参与者针对不同重构类型的代码选择模式,提出了重构菜单项的动态排序方法等。课题组还设计并实施相关实验,初步证明了以上研究成果的有效性。上述研究成果深入探索了基于多源信息和深度学习的重构推荐方法,对后续软件重构的研究具有重要意义。基于理论研究成果研发的相关工具也较大幅度地提高了软件重构的自动化水平以及软件重构的效率和效果。相关研究成果发表于国内外一流学术期刊与学术会议。在软件工程领域的顶级国际期刊IEEE Transactions on Software Engineering上发表论文3篇;在ICSE、ASE等软件工程领域顶级国际会议发表论文2篇;在重要国际SCI期刊与主流国际会议发表录用论文10篇;在国内一级学报发表论文3篇;培养中青年学术骨干3人、博士研究生8人、硕士研究生9人。
{{i.achievement_title}}
数据更新时间:2023-05-31
演化经济地理学视角下的产业结构演替与分叉研究评述
青藏高原狮泉河-拉果错-永珠-嘉黎蛇绿混杂岩带时空结构与构造演化
基于全模式全聚焦方法的裂纹超声成像定量检测
基于图卷积网络的归纳式微博谣言检测新方法
人工智能技术在矿工不安全行为识别中的融合应用
基于执行反馈的多核软件动态分析方法研究
软件重构调度方法研究
基于紧急异常声音事件检测与分类的音频监控系统方法研究
移动恶意软件规避检测行为的机理与检测方法研究