Classical and object-oriented software engineering with UML and Java /