Object-oriented software engineering : using UML, patterns, and Java - Bruegge, Bernd (Prentice Hall ; Pearson, 2004)