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