[noun]A change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behaviour.
[verb]To restructure software by applying a series of refactorings without changing its observable behaviour. [Fowler 1999]