Object-Oriented Software Engineering: Using UML, Patterns - Bernd Bruegge, Allen H. Dutoit (Prentice Hall, 2010)