Software Modeling and Design : UML, Use Cases, Patterns, and Software Architectures - Hassan Gomaa (2011)