Industry experiences with large-scale refactoring
Open accessAbstract
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.
Integrity signals
Registry
Cites
Statistics
Claims the paper makes
Claims other papers make about this one
Each is checked against this paper’s own text: does it say what the citing paper says it does?
Impact analysis for architecture refactoring requires a conceptual grasp of overall code structure and deep understanding of design decisions of a software system.
“Impact analysis for architecture refactoring requires a conceptual grasp of the overall code structure, as well as a deep understanding of design decisions of a software system, as discussed in the literature (e.g., [37]).”
From Software Architecture in Practice: Challenges and Opportunities (2023) · cites this paper as [37]
Cites
The Coding Manual for Qualitative Researchers
Lungu, M. (2022) · American Journal of Qualitative Research · doi:10.29333/ajqr/12085 · Cited by 10,887 · see citing works
Refactoring: Improving the Design of Existing Code
Fowler, M. (2002) · Lecture notes in computer science · doi:10.1007/3-540-45672-4_31 · Cited by 5,615 · see citing works
The 4+1 View Model of architecture
Kruchten, P. B. (1995) · IEEE Software · doi:10.1109/52.469759 · Cited by 2,165 · see citing works
Documenting software architectures: views and beyond
Clements, P., Garlan, D., Little, R., Nord, R. L., & Stafford, J. A. (2003) · ACM/IEEE International Conference on Software Engineering: Companion Proceedings (ICSE-Companion) · doi:10.1109/icse.2003.1201264 · Cited by 1,434 · see citing works
Self-citationHow We Refactor, and How We Know It
Murphy-Hill, E., Parnin, C., & Black, A. P. (2012) · IEEE Transactions on Software Engineering · doi:10.1109/tse.2011.41 · Cited by 547 · see citing works
How are Java software developers using the Eclipse IDE?
Murphy, G. C., Kersten, M., & Findlater, L. (2006) · IEEE Software · doi:10.1109/ms.2006.105 · Cited by 413 · see citing works
Why we refactor? confessions of GitHub contributors
Silva, D., Tsantalis, N., & Valente, M. T. (2016) · ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE) · doi:10.1145/2950290.2950305 · Cited by 288 · see citing works
2012 34th International Conference on Software Engineering (ICSE)
(2012) · doi:10.1109/icse19354.2012 · Cited by 269 · see citing works
(2012) · doi:10.1145/2393596.2393655 · Cited by 239 · see citing works
An Empirical Study of RefactoringChallenges and Benefits at Microsoft
Kim, M., Zimmermann, T., & Nagappan, N. (2014) · IEEE Transactions on Software Engineering · doi:10.1109/tse.2014.2318734 · Cited by 231 · see citing works
The role of refactorings in API evolution
Dig, D., & Johnson, R. E. (2005) · Proceedings/Proceedings - Conference on Software Maintenance · doi:10.1109/icsm.2005.90 · Cited by 157 · see citing works
Refactoring Tools: Fitness for Purpose
Murphy-Hill, E. R., & Black, A. P. (2008) · IEEE Software · doi:10.1109/ms.2008.123 · Cited by 155 · see citing works
An empirical investigation into the role of API-level refactorings during software evolution
Kim, M., Cai, D., & Kim, S. (2011) · Proceedings/Proceedings - International Conference on Software Engineering · doi:10.1145/1985793.1985815 · Cited by 141 · see citing works
Practical Experiences in the Design and Conduct of Surveys in Empirical Software Engineering
Ciolkowski, M., Laitenberger, O., Vegas, S., & Biffl, S. (2003) · Lecture notes in computer science · doi:10.1007/978-3-540-45143-3_7 · Cited by 96 · see citing works
Interactive and guided architectural refactoring with search-based recommendation
Lin, Y., Peng, X., Cai, Y., Dig, D., Zheng, D., & Zhao, W. (2016) · ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE) · doi:10.1145/2950290.2950317 · Cited by 90 · see citing works
Mkaouer, M. W., Kessentini, M., Bechikh, S., Cinnéide, M. Ó., & Deb, K. (2015) · Empirical Software Engineering · doi:10.1007/s10664-015-9414-4 · Cited by 87 · see citing works
Self-citationHow do i refactor this? An empirical study on refactoring trends and topics in Stack Overflow
Peruma, A., Simmons, S., AlOmar, E. A., Newman, C. D., Mkaouer, M. W., & Ouni, A. (2021) · Empirical Software Engineering · doi:10.1007/s10664-021-10045-x · Cited by 70 · see citing works
Recommending Refactorings to Reverse Software Architecture Erosion
Terra, R., Valente, M. T., Czarnecki, K., & Bigonha, R. S. (2012) · Euromicro Conference on Software Maintenance and Reengineering (CSMR) · doi:10.1109/csmr.2012.40 · Cited by 57 · see citing works
Challenges to and Solutions for Refactoring Adoption: An Industrial Perspective
Sharma, T., Suryanarayana, G., & Samarthyam, G. (2015) · IEEE Software · doi:10.1109/ms.2015.105 · Cited by 46 · see citing works
Architectural refactoring for the cloud: a decision-centric view on cloud migration
Zimmermann, O. (2016) · Computing · doi:10.1007/s00607-016-0520-y · Cited by 33 · see citing works
Support for architectural smell refactoring
Rizzi, L., Fontana, F. A., & Roveda, R. (2018) · doi:10.1145/3242163.3242165 · Cited by 26 · see citing works
When Are Smells Indicators of Architectural Refactoring Opportunities
Sousa, L., OIZUMI, W. N., Garcia, A., Oliveira, A., Cedrim, D., & de Lucena, C. J. P. (2020) · International Conference on Program Comprehension · doi:10.1145/3387904.3389276 · Cited by 18 · see citing works
Interactive Refactoring of Web Service Interfaces Using Computational Search
Wang, H., Kessentini, M., & Ouni, A. (2017) · IEEE Transactions on Services Computing · doi:10.1109/tsc.2017.2787152 · Cited by 16 · see citing works
Self-citationDecision-making framework for refactoring
Leppänen, M., Lahtinen, S., Kuusinen, K., Mäkinen, S., Männistö, T., Itkonen, J., Yli-Huumo, J., & Lehtonen, T. (2015) · IEEE/ACM International Conference on Technical Debt (TechDebt) · doi:10.1109/mtd.2015.7332627 · Cited by 9 · see citing works
The Future of Refactoring (Dagstuhl Seminar 14211)
Dig, D., Griswold, W. G., Murphy-Hill, E. R., & Schäfer, M. (2014) · DROPS (Schloss Dagstuhl – Leibniz Center for Informatics) · doi:10.4230/dagrep.4.5.40 · Cited by 2 · see citing works
Lessons Learned from Large-Scale Refactoring
Wright, H. K. (2019) · IEEE International Conference on Software Maintenance (ICSM) · doi:10.1109/icsme.2019.00058 · Cited by 2 · see citing works
Flagged first, then by citations
1 of the 29 references couldn’t be matched to a known paper.
Cited by
Sorted by citations
Software Architecture in Practice: Challenges and Opportunities
Wan, Z., Zhang, Y., Xia, X., Jiang, Y., & Lo, D. (2023) · Proceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering · doi:10.1145/3611643.3616367 · Cited by 30 · see citing works
“Architecture refactoring [37], also known as large-scale refactoring, involves structural and broad changes at an architectural scale to maintain the structural quality of an evolving software system, and facilitate its success to facilitate the integration of new features.”
BackgroundBehind the Intent of Extract Method Refactoring: A Systematic Literature Review
AlOmar, E. A., Mkaouer, M. W., & Ouni, A. (2024) · IEEE Transactions on Software Engineering · doi:10.1109/tse.2023.3345800 · Cited by 21 · see citing works
Extract Class Refactoring Based on Cohesion and Coupling: A Greedy Approach
Alzahrani, M. (2022) · Computers · doi:10.3390/computers11080123 · Cited by 8 · see citing works
A metrics-based approach for selecting among various refactoring candidates
Nikolaidis, N., Mittas, N., Ampatzoglou, A., Feitosa, D., & Chatzigeorgiou, A. (2023) · Empirical Software Engineering · doi:10.1007/s10664-023-10412-w · Cited by 7 · see citing works
Liu, J., Jin, W., Zhou, J., Feng, Q., Fan, M. Y., Wang, H., & Liu, T. (2024) · IEEE Transactions on Software Engineering · doi:10.1109/tse.2024.3449564 · Cited by 5 · see citing works
Swain, V. K., Panigrahi, R., Sahu, K. K., & Padhy, N. (2024) · International Conference on Emerging Systems and Intelligent Computing (ESIC) · doi:10.1109/esic60604.2024.10481609 · Cited by 5 · see citing works
Ivers, J., Ghammam, A., Gaaloul, K., Özkaya, İ., Kessentini, M., & Aljedaani, W. (2024) · IEEE International Conference on Software Maintenance (ICSM) · doi:10.1109/icsme58944.2024.00023 · Cited by 4 · see citing works
Self-citationProgram Equivalence in the Erlang Actor Model
Bereczky, P., Horpácsi, D., & Thompson, S. (2024) · Computers · doi:10.3390/computers13110276 · Cited by 3 · see citing works
Industry's cry for tools that support large-scale refactoring
Ivers, J., Nord, R. L., Özkaya, İ., Seifried, C., Timperley, C. S., & Kessentini, M. (2022) · IEEE/ACM International Conference on Software Engineering: Software Engineering in Practice (ICSE-SEIP) · doi:10.1145/3510457.3513074 · Cited by 3 · see citing works
Self-citationWill Generative AI Fill the Automation Gap in Software Architecting?
Ivers, J., & Özkaya, İ. (2025) · IEEE International Conference on Software Architecture Companion (ICSA-C) · doi:10.1109/icsa-c65153.2025.00014 · Cited by 2 · see citing works
Self-citationAskGraph: A Dependency-Aware Code Assistant Powered by Code Graphs and LLM-Generated Cypher Queries
Yang, N., Reynolds, J., Prast, L., & Corvino, R. (2025) · IEEE International Conference on Software Maintenance (ICSM) · doi:10.1109/icsme64153.2025.00065 · Cited by 2 · see citing works
Refactoring Legacy Code Using Cleaning Up Cycles: An Experience Report
Girjoaba, A. V., & Capiluppi, A. (2024) · IEEE International Conference on Software Maintenance (ICSM) · doi:10.1109/icsme58944.2024.00079 · Cited by 2 · see citing works
Refactoring Revisited: An Expanded Study on Refactoring Practices
Zhao, Y., Li, X., Guo, J., Li, C., & Nie, L. (2025) · IEEE International Conference on Software Quality, Reliability and Security (QRS) · doi:10.1109/qrs65678.2025.00054 · Cited by 1 · see citing works
The Engineering Implications of Code Maintenance in Practice
Lee, N., Abreu, R., Yatbaz, M., Qu, H., & Nagappan, N. (2022) · IEEE International Conference on Software Maintenance (ICSM) · doi:10.1109/icsme55016.2022.00078 · Cited by 1 · see citing works
Soares, V., Arkoh, L., Farah, P. R., Uchôa, A., Garcia, A., & Assunção, W. K. G. (2025) · International Conference on Evaluation and Assessment in Software Engineering (EASE) · doi:10.1145/3756681.3756949
Assessing the Bug-Proneness of Refactored Code: A Longitudinal Multi-Project Study
Ferreira, I., Arkoh, L., Uchôa, A., Bibiano, A. C., Garcia, A., & Assunção, W. K. G. (2025) · International Conference on Evaluation and Assessment in Software Engineering (EASE) · doi:10.1145/3756681.3756948
When Tools Overlook Domain Knowledge: An Empirical Study of Refactoring in Scientific Software
Pudari, R., Awon, A. M., Ernst, N., & Zhou, S. (2026) · ACM Transactions on Software Engineering and Methodology · doi:10.1145/3821432
Automated Refactoring Adoption—Results from an Adapted Multivocal Literature Review
Siddik, M., Oloruntola, S., Ahmmed, A., Yousif, M., Marks, G., Yılmaz, M., McCarren, A. L., & Mccarren, A. (2026) · Communications in computer and information science · doi:10.1007/978-3-032-36816-4_15
Java Code Refactoring using Transformer-based Model
Iziludin, M. I. H., & Daud, N. M. N. (2026) · International Conference on Artificial Intelligence and Data Sciences (AiDAS) · doi:10.1109/aidas71914.2026.11712760
- Authors
- Ivers, J., Nord, R. L., Ozkaya, I., Seifried, C., Timperley, C. S., & Kessentini, M.
- Affiliations
- Carnegie Mellon University (US)
- Carnegie Mellon University, USA
- Oakland University (US)
- Venue
- Proceedings of the 30th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering
- Publisher
- ACM
- Published
- 2022-11-07
- Pages
- 1544-1554
- OpenAlex
- W4308643086
- Cited by
- 19
- References
- 29
- Citations by year
- 2026: 3 · 2025: 5 · 2024: 6 · 2023: 2 · 2022: 3
- FWCI
- 3.58
- Type
- conference paper
- Language
- en
- Open access
- hybrid
- doi.org
- Licence
- Locations
- ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE) (publishedVersion, cc-by)
- arXiv (Cornell University) (submittedVersion)
- arXiv (Cornell University) (cc-by)
- Funders
- U.S. Department of Defense (FA8702-15-D-0002, Contract No. FA8702-15-D-0002)
- Carnegie Mellon University (FA8702-15-D-0002)
- Topics
- Physical Sciences › Computer Science › Information Systems › Software Engineering Research
- Physical Sciences › Computer Science › Information Systems › Software Engineering Techniques and Practices
- Physical Sciences › Computer Science › Artificial Intelligence › Advanced Software Engineering Methodologies
- Keywords
- refactoring, refactoring tools, developer survey, integrated development environment, program comprehension, software testing, software restructuring
About these checks
Registry, retraction, Cites and statistics results are computed, not judged, with one exception: a printed reference that no index lists is read once by a model before it counts as a citation error. Claims are extracted by a model and kept only when their quote appears verbatim in the text; each cited source is then checked, with a model’s help, for whether it says what the claim relies on. Those verdicts can be wrong — read the claim’s quote and the cited source before relying on one.
Statistics and arithmetic are recomputed, not judged.
Confidence bands are shown only for fields calibrated on our annotated test set. None is calibrated yet, so no band is shown.
What counts as a claim ›How we measure confidence ›How we check this ›
Are you an author, or do you see a problem with this page? Request a review