Designing flexible object-oriented systems with UML - Richter, Charles (Software engineering series, 1999)