Software modeling and design UML, use cases, patterns and software architectures - Gomaa, Hassan (Cambridge University Press, 2011)