Designing flexible object-oriented systems with UML - RICHTER (Macmillan, 1999)