The document introduces the Unified Modeling Language (UML) as a common language for visual modeling in software engineering. UML can be used to model systems ranging from enterprise systems to embedded systems. It provides standard visual notations for specifying, constructing, and documenting artifacts of a software system, including use case diagrams, class diagrams, sequence diagrams, and state machine diagrams. UML models can be used for forward engineering code from designs or reverse engineering designs from existing code.