  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.
