# Object-modeling language

An object-modeling language is a standardized set of symbols used to model a software system using an object-oriented framework. The symbols can be either informal or formal ranging from predefined graphical templates to formal object models defined by grammars and specifications.
A modeling language is usually associated with a methodology for object-oriented development. The modeling language defines the elements of the model. E.g., that a model has classes, methods, object properties, etc. The methodology defines the steps developers and users need to take to develop and maintain a software system. Steps such as Define requirements, Develop code, and Test system.
It is common to equate the modeling language and the modeling methodology. For example, the Booch method may refer to Grady Booch's standard for diagramming, his methodology, or both. Or the Rumbaugh Object Modeling Technique is both a set of diagrams and a process model for developing object-oriented systems.
In the early years of the object-oriented community there were several competing modeling and methodology standards. Booch and Rumbaugh were two of the most popular. Ivar Jacobson's Objectory, Shlaer-Mellor, and Yourdon-Coad were also popular.
However, the object-oriented community values re-use and standardization. As shown in the graphic there were efforts starting in the mid 1990s to reconcile the leading models and focus on one unified specification. The graphic shows the evolution of one of the most important object modeling language standards: the Unified Modeling Language (UML).
The UML began as an attempt by some of the major thought leaders in the community to define a standard language at the OOPSLA '95 Conference. Originally, Grady Booch and James Rumbaugh merged their models into a unified model. This was followed by Booch's company Rational Software purchasing Ivar Jacobson's Objectory company and merging their model into the UML. At the time Rational and Objectory were two of the dominant players in the small world of independent vendors of Object-Oriented tools and methods.
The Object Management Group then picked up and took over ownership of the UML. The OMG is one of the most influential standards organizations in the object-oriented world. The UML is both a formal metamodel and a collection of graphical templates. The meta-model defines the elements in an object-oriented model such as classes and properties. It is essentially the same thing as the meta-model in object-oriented languages such as Smalltalk or CLOS. However, in those cases the meta-model is meant primarily to be used by developers at run time to dynamically inspect and modify an application object model. The UML meta-model provides a mathematical formal foundation for the various graphic views used by the modeling language to describe an emerging system.
The following diagram illustrates the class hierarchy of the various graphic templates defined by the UML. Structure diagrams define the static structure of an object: its place in the class hierarchy, its relation to other objects, etc. Behavior diagrams specify the dynamic aspects of the model, business process logic, coordination and timing of distributed objects, etc.