UML (Unified Modeling Language) is a diagramming language used for object-oriented programming. It can be used to describe the organization, execution, use, and deployment of a program. UML uses graphical notation to provide an overall view of a system, and is not dependent on any one programming language. There are several types of UML diagrams including class, component, deployment, object, package, and use case diagrams. Structure diagrams show objects in a system, while behavioral diagrams show how objects interact. Common diagrams include class, use case, activity, state machine, sequence, and communication diagrams.