Applying UML and Patterns : An Introduction to Object-Oriented Analysis and Design and Iterative Development - LARMAN, Craig (Prentice Hall, 2005)