This book provides an overview of the Unified Process for software development, with a practical focus on modeling using the Unified Modeling language (UML). It demonstrates how the notation and process complement one another, using UML models to illustrate the process in action. The authors describe the semantics and notation of the different higher-level constructs used in the models. Constructs such as use cases, actors, subsystems, classes, interfaces, active classes, processes, threads, nodes, and most relations are described in the context of a model.