Object- oriented software engineering : practical software development using UML and java - Lethbridge, Timothy C. (Mc Graw Hill Education, 2005)