Object-oriented software engineering using UML, Patterns, and JavaBernd Bruegge, Allen H. Dutoit - Bruegge, Bernd (Prentice Hall, 2004)