Object oriented software engineering using UML, patterns, and Java - Brügge, Bernd; Dutoit, Allen H. (Pearson Prentice Hall, 2004)