Object-Oriented Software Engineering Using UML, Patterns, and Java - Bruegge, Bernd (Pearson Education, 2014)