Refactoring is about `improving the design of existing code' and as such, it has been practised as long as programs have been written. The term refactoring specifically refers to a common activity in programming and software maintenance: changing the structure of a program without changing its semantics. Often, refactoring precedes a program modification or extension, bringing the program into a f