A taxonomy of software product line reengineering
Wolfram Fenske, Thomas Thüm, Gunter Saake · 2014
In the context of single software systems, refactoring is commonly accepted to be the process of restructuring an existing body of code in order to improve its internal structure without changing its external behavior. This process is vital to the maintenance and evolution of software systems.