Object-Oriented software enginering: Practical software development using UML and Java - Timothy C. Lethbridge (McGraw-Hill, 2001)