Applying UML and patterns : An introduction to object-oriented analysis and design and iterative development. - Larman, Craig (Prentice Hall PTR, 2005)