Refactoring is the process of changing a software system in such a way that it does not alter the external behavior of the code yet improves its internal structure. – Martin Fowler