UML is a standard language for modeling software systems using graphical diagrams. It was developed in the 1990s in response to issues with communication between different roles in software development. UML uses diagrams to visualize various views of a system, including structural aspects like classes and components, and behavioral aspects like use cases and interactions. The key building blocks in UML are things like classes and use cases, and relationships like associations and generalizations. Common diagram types include class diagrams, use case diagrams, sequence diagrams, and deployment diagrams. UML aims to provide a standardized way to document software system blueprints.