Industry Experiences with Large-Scale Refactoring

02/01/2022
by   James Ivers, et al.
0

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.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
05/30/2019

A large-scale, in-depth analysis of developers' personalities in the Apache ecosystem

Context: Large-scale distributed projects are typically the results of c...
research
10/11/2021

Using Personality Detection Tools for Software Engineering Research: How Far Can We Go?

Assessing the personality of software engineers may help to match indivi...
research
10/05/2015

On The Evolution Of User Support Topics in Computational Science and Engineering Software

We investigate ten years of user support emails in the large-scale solve...
research
07/15/2021

One Thousand and One Stories: A Large-Scale Survey of Software Refactoring

Despite the availability of refactoring as a feature in popular IDEs, re...
research
12/02/2022

The Bumpy Road of Taking Automated Debugging to Industry

Debugging is arguably among the most difficult and extremely time consum...
research
07/01/2019

Understanding GCC Builtins to Develop Better Tools

C programs can use compiler builtins to provide functionality that the C...
research
02/01/2021

Search-Based Software Re-Modularization: A Case Study at Adyen

Deciding what constitutes a single module, what classes belong to which ...

Please sign up or login with your details

Forgot password? Click here to reset