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