Applying UML and Patterns An introduction to object - oriented analysis and design - Larman, Craig (Prentice Hall, 1998)