QUICK REVIEW
[论文解读] On the Detection of High-Impact Refactoring Opportunities in Programs
Jens Dietrich, Catherine McCartin|arXiv (Cornell University)|Jun 9, 2010
Software Engineering Research参考文献 31被引用 3
一句话总结
本文提出一种方法,通过分析 Java 程序中设计缺陷模式内的引用参与度,检测高影响的重构机会。通过识别一组少量关键引用,其移除可消除大部分模块化缺陷实例,该方法在 95 个开源项目中高效地聚焦于高杠杆作用的代码改进。
ABSTRACT
We present a novel approach to detect refactoring opportunities by measuring the participation of references between types in instances of patterns representing design flaws. This technique is validated using an experiment where we analyse a set of 95 open-source Java programs for instances of four patterns representing modularisation problems. It turns out that our algorithm can detect high impact refactorings opportunities - a small number of references such that the removal of those references removes the majority of patterns from the program.
研究动机与目标
- 识别能以最少改动解决大部分模块化相关设计缺陷的重构机会。
- 通过聚焦于高影响变更,解决在大型代码库中优先处理重构工作的挑战。
- 开发一种技术,对单个引用在设计模式实例存在中的贡献进行定量测量。
- 在真实世界开源 Java 系统上验证该方法,以评估其实际有效性。
提出的方法
- 该方法测量在与模块化相关的四种特定设计缺陷模式实例中,类型之间引用的参与度。
- 识别出移除后可在整个代码库中消除最多模式实例的引用。
- 该方法使用静态分析检测模式实例并计算引用参与度得分。
- 若某引用的移除能导致多个模式实例被消除,则认为其为高影响引用。
- 该算法根据引用对模式普遍性的贡献程度进行排序,优先处理影响最大的引用。
- 该方法在 95 个开源 Java 程序上进行评估,以衡量其可扩展性和精确度。
实验结果
研究问题
- RQ1移除哪些引用能最大程度减少检测到的设计缺陷实例数量?
- RQ2在真实世界的 Java 程序中,需要移除多少引用才能消除大部分模块化模式实例?
- RQ3一组少量引用是否能解释多样代码库中大部分设计缺陷的出现?
- RQ4与启发式或随机选择相比,所提出的方法在识别高影响重构机会方面的有效性如何?
主要发现
- 在分析的 95 个程序中,移除少量引用即可消除大部分检测到的模块化缺陷实例。
- 该方法通过聚焦于在模式实例中参与度高的引用,成功识别出高影响的重构机会。
- 该方法通过精确定位极少数修改即可解决广泛存在的设计问题,展现出实际应用价值。
- 在真实系统上的验证结果证实,该方法在识别重构杠杆点方面具有良好的可扩展性和精确度。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。