Software design 2/E - Budgen, David (Vidhyanagar Pearson, 2006)