UML is a graphical language for specifying, visualizing, constructing, and documenting software systems. UML is useful in a variety of engineering problems, from single-process, embedded systems and stand-alone user applications to concurrent, distributed systems. This chapter focuses on UML class diagrams and package diagrams. A UML class diagram models the structure of a system by showing classes and their relationships. A UML package diagram can be used to organize model elements into groups, making UML models simpler and easier to understand.