UML (Unified Modeling Language) is a standard language for modeling software systems. It provides notation for visualizing, specifying, constructing and documenting software artifacts. The key components of UML include classes, attributes, operations, relationships, and diagrams. Common UML diagrams are use case diagrams, class diagrams, sequence diagrams, and deployment diagrams. UML is widely used for object-oriented analysis and design. It helps model the problem domain, visualize the system design, and document implementation.