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. Studies show that small-scale (floss) refactoring is common in industry and can often be 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 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, its prevalence, and how tools support it. Our results from 107 industry developers demonstrate that projects commonly go through multiple large-scale refactorings, each of which requires considerable effort. While there is often a desire to refactor, other business concerns such as developing new features often take higher priority. 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. Our study demonstrates a clear need for better large-scale refactoring tools and an opportunity for refactoring researchers to make a difference in industry. The results we summarize in this paper is one concrete step towards this goal.
翻译:软件重构在软件工程中起着重要作用。 开发者在想要调整软件以提高其质量而不改变其外部行为时往往转向重新构思。 研究表明小规模( 损耗) 重新构思在行业中很常见, 通常可以由一个单一开发者在短会话中进行, 尽管开发者手工完成许多这项工作, 而不是使用再构构图工具。 但是, 一些再构工程的规模要大得多, 需要整个团队和几个月的努力, 而在这些努力中工具的作用研究得不够。 在本文中, 我们报告我们与开发者进行了一项调查, 以了解大规模重构、 其流行性以及工具的支持。 我们107个行业开发者的结果显示, 通常通过多个大型再构图进行项目, 每一个都需要大量的努力。 虽然人们往往希望重新构图, 其它商业问题, 如开发新特征往往需要更高的优先度。 我们的研究发现, 开发者使用几种工具支持大规模再构图, 并更严重地依赖像 IDE 这样的一般用途工具来理解大规模重新构图, 在具体设计的工具中, 展示一个更具有挑战性的工具中, 需要一种更清晰的重新定义的工具, 来展示一个更好的工具 。