Refactoring Improving the Design of Existing Code - Fowler, Martin 1963- (Addison - Wesley, 2000)