Refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior
— M. Fowler, www.refactoring.com
A change made to the internal structure of the software to make it easier to understand and cheaper to modify without changing its observable behavior
— M. Fowler. Refactoring. Improving the Design of Existing Code. Addison-Wesley, 2nd Edition, 2008.