Applying UML and patterns : an introduction to object-oriented analysis and design and iterative development - Larman, Craig (Prentice-Hall, 2007)