Practical object-oriented design with UML (McGraw-Hill, 2003)