Classical and Object-Oriented Software Engineering with UML and Java - Stephen R. Schach (The Dryden Press, 1999)