Applying UML and patterns : an introduction to object-oriented analysis and design - Larman, Graing (Prentice Hall, 1997)