Updated for UML 1.4, this book is an introduction to the Unified Modeling Language for students learning about object- and component-based software design and development. The goal of the book is to encourage a pragmatic and open-minded approach to real-life software engineering. It places UML in the context of the software engineering discipline as a whole, providing students with a practical understanding of good practice in software design and development. The authors present a broad view of the subject area, enabling students to see for themselves how different practices may be appropriate for different situations. Updated for UML 1.4 UML features explained using examples drawn from case studies Web site has source code for cases and pointers for additional research and instructor's material Boxed sections cover important issues such as Design by Contract, the Law of Demeter, and persistance