UML (Unified Modeling Language) is a standard modeling language used to specify, visualize, construct and document software systems. It uses graphical notations to express the design of object-oriented software projects. UML includes diagrams, relationships and elements that help design different perspectives of a system including design, implementation, process and deployment. The key building blocks of UML are things (like classes and use cases), relationships (like generalization and dependency), and diagrams (like class, sequence and deployment diagrams) which are used to model different aspects of a software system.