Industry experiences with large-scale refactoring

Industry experiences with large-scale refactoring
复制标题

DOI:
10.1145/3540250.3558954
复制
发表时间:
2022-02
期刊:
Proceedings of the 30th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering
影响因子:
--
通讯作者:
James Ivers;R. Nord;Ipek Ozkaya;C. Seifried;C. Timperley;Marouane Kessentini
James Ivers;R. Nord;Ipek Ozkaya;C. Seifried;C. Timperley;Marouane Kessentini
中科院分区:
其他
文献类型:
--
作者:
James Ivers;R. Nord;Ipek Ozkaya;C. Seifried;C. Timperley;Marouane Kessentini

文献摘要

被引文献

相似文献

软件重构在软件工程中扮演着重要角色。当开发人员希望在不改变软件外部行为的情况下重组软件以提高其质量时,他们通常会求助于重构。小规模(floss)重构在行业中很常见,通常由单个开发人员在短时间内完成,即使开发人员不使用重构工具,而是手动完成大部分工作。然而,有些重构工作的规模要大得多,需要整个团队、数月或数年的努力,而工具在这些工作中的作用却没有得到很好的研究。本文报告了我们为了解大规模重构及其工具支持需求而对开发人员进行的一项调查。我们对 107 名行业开发人员进行的调查结果表明,项目通常会经历多次大规模重构,而每次重构都需要付出相当大的努力。我们的研究发现,开发人员使用几类工具来支持大规模重构,他们更依赖于集成开发环境等通用工具,而不是专门为支持重构而设计的工具。不同的活动对工具的支持各不相同,一些特别具有挑战性的活动在实践中很少使用工具。此外,我们的分析表明,通过改进对理解和测试的工具支持,以及对业务利益相关者需求的支持,有可能产生重大影响。
Software refactoring plays an important role in software engineering. Developers often turn to refactoring when they want to restructure software to improve its quality without changing its external behavior. Small-scale (floss) refactoring is common in industry and is often performed by a single developer in short sessions, even though developers do much of this work manually instead of using refactoring tools. However, some refactoring efforts are much larger in scale, requiring entire teams and months or years of effort, and the role of tools in these efforts is not as well studied. In this paper, we report on a survey we conducted with developers to understand large-scale refactoring and its tool support needs. Our results from 107 industry developers demonstrate that projects commonly go through multiple large-scale refactorings, each of which requires considerable effort. Our study finds that developers use several categories of tools to support large-scale refactoring and rely more heavily on general-purpose tools like IDEs than on tools designed specifically to support refactoring. Tool support varies across the different activities, with some particularly challenging activities seeing little use of tools in practice. Furthermore, our analysis suggests significant impact is possible through advances in tool support for comprehension and testing, as well as through support for the needs of business stakeholders.