UML (Unified Modeling Language) is a standardized modeling language used to visualize, specify, construct and document artifacts of a software system. It can be used to model both software and non-software systems. The document discusses the history, features, diagrams and real-world applications of UML. It also covers advantages like being easy to understand and standardized, as well as disadvantages such as difficulty synchronizing models with code. Finally, it briefly describes several open source UML modeling tools.