Applying UMLl and patterns An introduction to object oriented analysis and design and - Larman, Craig (Pearson Education, 2005)