Object-oriented software engineering:using uml, patterns, and java - Bruegge, Bernd (Pearson Education, 2009)