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