is a family of graphical notations, backed by single meta-model, that help in describing
and designing software systems, particularly software systems built using the
object-oriented (00) style . That's a somewhat simplified definition . In fact, the UML
is a few different things to different people . This comes both from its own history and
from the different views that people have about what makes an effective software
engineering process . As a result, my task in much of this chapter is to set the scene
for this book by explaining the different ways in which people see and use the UML.
Graphical modeling languages have been around in the software industry for a long time .
The fundamental driver behind them all is that programming languages are not at a high enough level of abstraction to facilitate discussions about design. Despite the fact that graphical modeling languages have been around for a long time, there is an enormous amount of dispute in the software industry about their role . These disputes play directly
into how people perceive the role of the UML itself. The UML is a relatively open standard, controlled by the Object Management Group (OMG), an open consortium of companies .
The OMG was formed to build standards that supported interoperability, specifically the interoperability of object-oriented systems . The OMG is perhaps best known for the
CORBA (Common Object Request Broker Architecture) standards . The UML was born out
of the unification of the many object-oriented graphical modeling languages that thrived
in the late 1980s and early 1990s . Since its appearance in 1997, it has relegated that particular tower of Babel to history..