Applying Uml And Patterns - An Introduction To Object-Oriented Analysis And Design And The Unified Process, 2nd Edition