UML (Unified Modeling Language) is a standard notation for the modeling of real-world objects as a first step in developing an object-oriented design methodology. Its notation is derived from and unifies the notations of three object-oriented design and analysis methodologies:
- Grady Booch's methodology for describing a set of objects and their relationships
- James Rumbaugh's Object-Modeling Technique (OMT)
- Ivar Jacobson's approach which includes a use case methodology
Other ideas also contributed to UML, which was the result of a work effort by Booch, Rumbaugh, Jacobson, and others to combine their ideas, working under the sponsorship of Rational Software. UML has been fostered and now is an accepted standard of the Object Management Group (OMG), which is also the home of Common Object Request Broker Architecture (CORBA), the leading industry standard for distributed object programming. Vendors of computer-aided software engineering (CASE) products are now supporting UML and it has been endorsed by almost every maker of software development products , including IBM and Microsoft (for its Visual Basic environment).
Martin Fowler, in his book UML Distilled, observes that, although UML is a notation system enabling people to communicate about a model, it is developed from methodologies that also describe the processes in developing and using the model. While there is no one accepted process, the contributors to UML all describe somewhat similar approaches and these are usually described along with tutorials about UML itself.
Among the concepts of modeling that UML specifies how to describe are: class (of objects), object, association, responsibility, activity, interface, use case, package, sequence, collaboration, and state. Fowler's book provides a good introduction to UML. Booch, Rumbaugh, and Jacobson all have or soon will have published the "offficial" set of books on UML.