Refactoring: Improving the Design of Existing Code (1999)

by M Fowler, K Beck, J Brant, W Opdyke, D Roberts