Previous | Table of Contents | Next |
The Unified Modeling Language (UML) is a graphical language for modeling discrete systems. Although the UML is not necessarily
tied to any particular application area or modeling process, its greatest applicability is in the area of object-oriented
software design.
UML is the synthesis, or unification, of three preceding modeling languages that had previously dominated the field of object-oriented
software development: The Booch (Grady Booch), OMT (James Rumbaugh), and OOSE (Ivar Jacobson) notational systems were combined
together by their authors into the Unified Modeling Language, at Rational Software Corporation, in the 1994-1995 time frame.
The UML definition was subsequently submitted by Rational and a number of other OMG member companies, as a proposal to the
Object Management Group in September, 1997, in response to an OMG RFP (OA&DTF RFP-1), requesting a standard approach to object-oriented
modeling. The UML submission was created by a team consisting of both its original authors and representatives from the various
OMG submitters. The UML submission was subsequently ratified by the OMG in November 1997. Today, UML, along with the Meta
Object Facility and XML Meta Data Interchange specifications, serves as one of the cornerstones of the OMG metadata architecture
(of which CWM is a domain-specific extension).
The various modeling elements of UML support the specification of both static and behavioral aspects of discrete, object-oriented
systems. UML static models include the definition of classes, their attributes, operations, and interfaces. Standard relationships
between classes, such as inheritance/generalization, association, dependency and containment can be specified under UML and
are used in the construction of class diagrams. The behavioral semantics of the system being modeled can be specified using
UML conventions for expressing time-ordered inter-object message sequencing (sequence diagrams) and spatially-oriented collaborations
between instances (collaboration diagrams). Support for the specification of state-machines is also provide for detailed
modeling of object internals. UML also supports object-oriented analysis and the modeling of external system behavior through
use case diagrams. Finally, UML provides notations for specifying the packaging of a logical design into components and the
deployment and allocation of those components to nodes in a distributed computing architecture.
The UML language is formally defined by a metamodel (or semantic model) that is itself defined recursively, using UML. This
meta-circular definition enables the entire UML to be based on a small number of elementary terms.