Unified Modeling Language
The Unified Modeling Language (UML) is a general-purpose, developmental, modeling language in the field of software engineering that is intended to provide a standard way to visualize the design of a system.
The creation of UML was originally motivated by the desire to standardize the disparate notational systems and approaches to software design. It was developed at Rational Software in 1994–1995, with further development led by them through 1996.
In 1997, UML was adopted as a standard by the Object Management Group (OMG), and has been managed by this organization ever since. In 2005, UML was also published by the International Organization for Standardization (ISO) as an approved ISO standard. Since then the standard has been periodically revised to cover the latest revision of UML. In software engineering, most practitioners do not use UML, but instead produce informal hand drawn diagrams; these diagrams, however, often include elements from UML.
UML 2
UML 2.0 major revision replaced version 1.5 in 2005, which was developed with an enlarged consortium to improve the language further to reflect new experience on usage of its features.
Although UML 2.1 was never released as a formal specification, versions 2.1.1 and 2.1.2 appeared in 2007, followed by UML 2.2 in February 2009. UML 2.3 was formally released in May 2010. UML 2.4.1 was formally released in August 2011. UML 2.5 was released in October 2012 as an “In progress” version and was officially released in June 2015. Formal version 2.5.1 was adopted in December 2017.
There are four parts to the UML 2.x specification:
- The Superstructure that defines the notation and semantics for diagrams and their model elements
- The Infrastructure that defines the core metamodel on which the Superstructure is based
- The Object Constraint Language (OCL) for defining rules for model elements
- The UML Diagram Interchange that defines how UML 2 diagram layouts are exchanged
Until UML 2.4.1, the latest versions of these standards were:
- UML Superstructure version 2.4.1
- UML Infrastructure version 2.4.1
- OCL version 2.3.1
- UML Diagram Interchange version 1.0.
Since version 2.5, the UML Specification has been simplified (without Superstructure and Infrastructure), and the latest versions of these standards are now:
- UML Specification 2.5.1
- OCL version 2.4
It continues to be updated and improved by the revision task force, who resolve any issues with the language.
Design
UML offers a way to visualize a system’s architectural blueprints in a diagram, including elements such as:
- any activities (jobs);
- individual components of the system;
- and how they can interact with other software components;
- how the system will run;
- how entities interact with others (components and interfaces);
- external user interface.
Although originally intended for object-oriented design documentation, UML has been extended to a larger set of design documentation (as listed above), and been found useful in many contexts.
Software development methods
UML is not a development method by itself; however, it was designed to be compatible with the leading object-oriented software development methods of its time, for example OMT, Booch method, Objectory and especially RUP that it was originally intended to be used with when work began at Rational Software.
Modeling
It is important to distinguish between the UML model and the set of diagrams of a system. A diagram is a partial graphic representation of a system’s model. The set of diagrams need not completely cover the model and deleting a diagram does not change the model. The model may also contain documentation that drives the model elements and diagrams (such as written use cases).
UML diagrams represent two different views of a system model:
- Static (or structural) view: emphasizes the static structure of the system using objects, attributes, operations and relationships. It includes class diagrams and composite structure diagrams.
- Dynamic (or behavioral) view: emphasizes the dynamic behavior of the system by showing collaborations among objects and changes to the internal states of objects. This view includes sequence diagrams, activity diagrams and state machine diagrams.
UML models can be exchanged among UML tools by using the XML Metadata Interchange (XMI) format.
In UML, one of the key tools for behavior modeling is the use-case model, caused by OOSE. Use cases are a way of specifying required usages of a system. Typically, they are used to capture the requirements of a system, that is, what a system is supposed to do.