Applying UML and patterns: an introduction to object-oriented analysis and design and the unified process - Larman, Craig (Prentice Hall, 2002)