Developing Software with UML: Object-oriented analysis and design in practice (Addison Wesley Object Technology Series)