Working Effectively with Legacy Code by Michael C. Feathers