The Unified Modeling Language (UML) is an Object Management Group (OMG) standard object modeling language. The standard was developed in response to a proliferation of object modeling notations that, for the most part, differed primarily in syntax and process. The UML has evolved into a rich set of modeling notations that can be used to model systems from a variety of views at different levels of abstraction. It is important to note that the UML is a set of notations: it is not a method, nor does it prescribe a process for applying the models. The rich variety of models in the UML can make understanding and applying the UML a daunting task. A generic process, called the Unified Process, was recently published, but tailoring the process requires a good understanding of how UML notations can be used to model requirements, architectures, and designs. In this tutorial materials will be presented that will help participants develop an understanding of UML models that can lead to effective use of the notations in a development process. We present, as examples, mappings of models to development phases and discuss the relationships among models at the same level of abstraction as well as refinement and abstraction relationships across models at different levels of abstractions. The relationships are based on precise semantics for a core set of UML constructs that will be presented in the tutorial.