It aims to help software developers specify, visualize, construct, and document the artifacts of software systems and is also used for modeling non-software systems. It is more of a set of best engineering practices than a specific tool or a programming language.
Different types of diagrams included in UML describe the boundaries, structures, and behaviors of the system and the objects it is made of.
The UML is meant to manage the complexity of systems as they increase in scope and scale and as a technique that helps to solve recurring architectural problems, such as physical distribution, concurrency, replication, security, load balancing, and fault tolerance.