Object-Oriented Software Engineering: Practical software development using UML and Java, Ed. 2 - Lethbridge, Timothy C. (McGraw-Hill Education, 2005)