Object-Oriented Software Engineering Using UML, Patterns, and Java? - Bruegge, Bernd; Dutoit, Allen H.