Object-Oriented and Classical Software Engineering - Stephen R. Schach (McGraw Hill, 2005)