In software engineering, the Unified Modeling Language (UML) is a non-proprietary specification language for object modeling. UML is a general-purpose modeling language that includes a standardized graphical notation used to create an abstract model of a system, referred to as a UML model. UML is extendable as it offers a profile mechanism for customization. If a concept you need is not present, you may introduce it by defining a stereotype. The semantics of extension by profiles has been improved with the UML 2.0 major revision.
UML is officially defined at the Object Management Group (OMG) by the UML metamodel – a Meta-Object Facility metamodel (MOF). Like other MOF-based specifications, the UML metamodel and UML models may be serialized in XMI.. While UML was designed to specify, visualize, construct, and document software-intensive systems, UML is not restricted to modeling software. UML is also used for business process modeling, systems engineering modeling, and representing organizational structures. The Systems Modeling Language (SysML) is a Domain-Specific Modeling language for systems engineering that is defined as a UML 2.0 profile.
UML has been a catalyst for the evolution of model-driven technologies, which include ModelDriven Development (MDD), Model Driven Engineering (MDE), and model-driven architecture. By establishing an industry consensus on a graphic notation to represent common concepts like classes, components, generalization, aggregation, and behaviors, UML has allowed software developers to concentrate more on design and architecture.