APPLYING UML AND PATTERNS - CRAIG LARMAN (PEARSON, 2014)