Designing flexible object-oriented systems with UML - Charles Richter (Techmedia, New Delhi, 2000)