Object-oriented software engineering: practical software development using UML and java - LETHBRIDGE, Timothy C. (McGraw Hill, 2002)