Académique Documents
Professionnel Documents
Culture Documents
Q. Talk about some OO/UML artifacts you have used. What did
they mean to you? How did you apply them to yout project?
instances created
associations formed
associations broken
attributes changed
Q. What does an Operations Contract do?
A. Provides a snapshot of the System's state before and after a System
Event. It is not interested in the Event's specific behavior.
Low coupling
High cohesion
Controller
Creator
Don't Talk to Strangers
Pure Fabrication
Indirection
Polymorphism
Expert
--------------------------------------------------------------------------------
Given that the Booch and OMT methods were already independently growing together
and were collectively recognized as the dominant object-oriented methods worldwide,
Booch and Rumbaugh joined forces in October 1994 to forge a complete unification of
their work. Both Booch and OMT had begun to adopt Ivar Jacobson's use cases, and thus
it was natural that in the fall of 1995, Jacobson formally joined this unification effort.
--------------------------------------------------------------------------------
At the start of our work, we called our effort simply "The Unified Method" because we
needed a simple working title. We began a name search, but we never found a name that
was cool (like Java) or right-on (like Fusion) that sounded good to us. We are still hoping
to find a suitable name (suggestions are most welcome), although "The Unified Modeling
Language" has entered such common usage that it may end up being the default name.
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Where can I get more information?
--------------------------------------------------------------------------------
Second, the Unified Modeling Language pushes the envelope of what can be done with
existing methods. In particular, we have targeted the modeling of concurrent, distributed
systems, meaning that the Unified Modeling Language will contain elements that address
these domains.
Third, the Unified Modeling Language focuses on a standard language, not a standard
process. It is our experience that different organizations and problem domains require
different processes. (For example, the Microsoft development process is an interesting
one, but building shrink-wrapped software is vastly different from building hard-real-
time avionics systems upon which lives depend.) Therefore, our efforts are concentrating
first on a common metamodel (which unifies semantics) and second on a common
notation (which provides a human rendering of these semantics). We will not necessarily
standardize a process, although we will continue to promote an architecture-driven,
incremental, and iterative development process.
--------------------------------------------------------------------------------
From the inside, the Unified Modeling Language consists of three things:
A formal metamodel
A graphical notation
A set of idioms of usage
We began with a formal metamodel, using the notation of the Unified Modeling
Language itself supplemented by English text. The purpose of the metamodel was to
provide a single, common, and unambiguous statement of the syntax and semantics of the
elements of the Unified Modeling Language. The presence of this metamodel has made it
possible for us to agree on semantics, decoupled from the human factors issues of how
those semantics would best be rendered. Additionally, the metamodel has made it
possible for us to explore ways to make the modeling language much more simple by, in
a sense, unifying the elements of the Unified Modeling Language. (For example, we have
discovered commonality among the concepts of protocols and use cases.) We expect to
make this metamodel even more precise by describing its dynamic semantics using
formal logic. The graphical notation is the most visible part of the Unified Modeling
Language, and it constitutes the graphical syntax that humans and tools use to model
systems. Lastly, the Unified Modeling Language encompasses a set of idioms that
describe common usage (by humans) and degrees of freedom (by tools).
From the outside, the Unified Modeling Language encompasses a number of models that
can be rendered in a variety of projections:
Use-case diagrams
Class diagrams
State-machine diagrams
Message-trace diagrams
Object-message diagrams
Process diagrams
Module diagrams
Platform diagrams
Use-case diagrams are as found in Objectory, and they serve to organize the use cases
that encompass a system's behavior. Class diagrams, derived from Booch and OMT,
capture the static semantics of the classes that constitute a system. State-machine
diagrams, derived from David Harel, capture the dynamic semantics of a class. Message-
trace diagrams, object-message diagrams, and process diagrams, derived from Booch,
OMT, and Fusion, capture the dynamic semantics of collaborations of objects. Module
diagrams serve to model the development view of a system, whereas platform diagrams
serve to model the physical computing topology upon which a system executes.
These are the primary artifacts that a modeler sees, although the method (and tools)
provide for a number of derivative views.
--------------------------------------------------------------------------------
Metamodels are important, because they can provide a single, common, and
unambiguous statement of the syntax and semantics of a model. We began our work on
the Unified Modeling Language by starting with a metamodel, because it let us come to
rapid agreement about the meaning of things (and the very things themselves) that were
to constitute our unification. Thus, our metamodel includes some obvious things like
classes and objects (which are isomorphic to the elements of the modeling language) and
some nonobvious things like uninterpreted and nonclass decls (which are artifacts of the
metamodel).
For most users, the metamodel is invisible (as it should be). It's valuable to us, because it
lets us communicate our intended semantics to each other and to tool builders. It also
gives us something to throw stones at as we try new modeling problems: If we can model
something complex easily, then we know we are on the right path. Similarly, it gives us
something to evolve. A large part of our latest work has been making the metamodel
simpler (which is a very hard thing to do).
Currently, we are working to make this model more formal, in two ways. First, we are
writing a number of use cases against the metamodel, which lets us try out common and
not-so-common modeling problems. Second, we are writing a number of use cases
against the dynamic semantics of the metamodel, using formal logic. This is definitely
not for the meek, but again it helps us be sure we are generating models that are self-
consistent and precise.
--------------------------------------------------------------------------------
From the outside, the Unified Modeling Language encompasses the following models:
Use-case diagrams
Class diagrams
State-machine diagrams
Message-trace diagrams
Object-message diagrams
Process diagrams
Module diagrams
Network diagrams
Use-case diagrams look pretty much as they do in Objectory.
Class diagrams look much like OMT class diagrams (classes are rendered as rectangles)
but with most relationships drawn from Booch.
State-machine diagrams, as developed by David Harel, are the same as in Booch and
OMT.
Message-trace diagrams were in all three methods (and have thus been unified). Object-
message diagrams are derived from Booch (with the change that objects are no longer
clouds, but structured clouds; we also adopt the numbering convention from Fusion).
Process diagrams are a new invention, and module diagrams and network diagrams
derive from Booch.
Thus, if you are a Booch user, you'll need to get over the use of clouds (rectangles are
more space-efficient), but pretty much things look the same. If you are an OMT user,
you'll see a number of niggling changes (such as the multiplicity balls replaced with more
explicit expressions) but no fundamental changes (though there are a number of
additions). If you are an Objectory user, you'll see new notation (because Objectory didn't
deal with much graphical modeling postanalysis). For all three kinds of users, there will
be new things to learn (such as stereotypes and properties) but nothing that a few minutes
of reading won't do.
--------------------------------------------------------------------------------
Booch, Objectory, and OMT all have well-defined processes, and these are indeed
sufficient for the Unified Modeling Language. Beyond that, we don't yet specify a
process. Our focus first is on a common, standard modeling language. Processes by their
very nature must be tailored to the organization, culture, and problem domain at hand.
What works for one context (shrink-wrapped software development, for example) would
be a disaster for another (hard-real-time, human-rated systems, for example).
This does not mean that we are blind to the importance of process. We do think we
understand what such a process looks like, but it is unnecessary for us to bind the Unified
Modeling Language to a particular process, because experience has shown that the
modeling languages of Booch, Objectory, and OMT are amenable to a spectrum of
different processes. Thus, we have kept in mind which artifacts are important for
visualizing different aspects of a system under development and which artifacts are
critical for controlling and measuring the progress of a development team. Doing so has
been sufficient for us to know what to keep and what to throw out yet still permit diverse
organizations to apply the Unified Modeling Language successfully.
--------------------------------------------------------------------------------
How does the Unified Modeling Language compare to Booch, Objectory, and OMT?
The Unified Modeling Language is simpler, more self-consistent, and more expressive.
Furthermore, the Unified Modeling Language is a natural successor to Booch, Objectory,
and OMT, and as such it is compatible with each.
It's simpler in that we've found a number of elements collapse into one. For example,
Booch used the notion of active objects and persistent objects. We generalize this by
denoting them as stereotypes or properties in the Unified Modeling Language--which
also lets us express things like location for distributed systems. Similarly, Objectory used
different kinds of classes in its models. This generalizes to the stereotype concept as well.
OMT had data-flow diagrams, which are thrown out and replaced with, among other
things, use cases.
It's more self-consistent in that the metamodel hangs together well. We've eliminated the
confusion surrounding has relationships in Booch. Objectory's use cases have application
in a number of places in the metamodel. OMT's semantics of associations have been
cleaned up.
It's more expressive as well. The Unified Modeling Language lets you express the
semantics of concurrent and distributed systems. We've introduced new elements, such as
protocols, interfaces, and stereotypes. Also, we have a means of making the notation
tailorable, through the use of properties, some of which we predefine and some of which
we leave open.
For the Booch user, the new notation requires getting used to rectangles instead of clouds,
plus learning a few new things. For the Objectory user, the new notation requires learning
some new notation. For the OMT user, the new notation requires changing the icons for
some things and adding a few new things. In all, we expect the learning curve for Booch,
Objectory, and OMT users to be very, very small. Indeed, it's not hard to explain the
changes from any of these three methods to an experienced user in an hour or less.
--------------------------------------------------------------------------------
What are some of the new features of the Unified Modeling Language?
The goals of our unification efforts were to keep it simple, to cast away elements of
classic Booch, Objectory, and OMT that just didn't work in practice, and to add only new
elements that let us address modeling problems that neither Booch nor Objectory nor
OMT had yet addressed. Because we were in effect designing a new language (albeit a
graphical one), we had to strike a proper balance between minimalism (everything is text
and boxes) and overengineering (having an icon for every conceivable modeling
element). To that end, we were very careful about adding new things, because we didn't
want to make the unified method more complex. Along the way, however, we found some
things that we genuinely needed to add, because they were useful in practice in other
methods and previously had been handled only informally in either Booch or OMT.
Distribution is handled quite nicely with properties (the location of an object is one of its
properties), and thus we needed to add no special mechanism. This suggests that we
selected the right primitive modeling elements in the Unified Modeling Language
metamodel.
Threads and processes are a subject of ongoing work. We are toying with some
approaches (again using properties and conventions with object-message diagrams), but
we need a little more experience to make sure we have settled on the right constructs. We
are considering treating threads and processes as first-class citizens (possibly warranting
a special icon).
For the issues of both distribution and concurrency, we are particularly sensitive to the
modeling needs of systems built with technologies such as CORBA and OLE/COM, as
well the style of distribution found in Java applets. These are the target technologies that
we want to be certain we can model well, because we expect that one of more of these
approaches will become pervasive. This is not to say that we will settle on supporting
only certain proprietary technologies; rather, we will be as general as we can be but
pragmatic enough to realize that we can't be overly general. As it turns out, the fact that
interfaces are treated as first-class citizens in the Unified Modeling Language (this is
another important addition to the method) helps us deal with the publish/subscribe
paradigm found in both CORBA and COM, So again, we think we are on the right path to
address many of distribution and concurrency modeling problems without adding
numerous special mechanisms to the method.
--------------------------------------------------------------------------------
How does the Unified Modeling Language affect existing Booch, Objectory, and OMT
users?
There are three parts to this answer.
First, it should be made clear that the Unified Modeling Language is not a radical
departure from Booch, Objectory, or OMT, but rather the legitimate successor to all three.
This means that if you are a Booch, Objectory, or OMT user today, your training,
experience, and tools will be preserved, because the Unified Modeling Language is a
natural evolutionary step.
Second, the Unified Modeling Language is more expressive yet simpler, cleaner, and
more uniform than Booch, Objectory, or OMT. This means that there is value in moving
to the Unified Modeling Language, because it will allow projects to model things they
could not have done before.
Third, you need not wait for the Unified Modeling Language to get value out of object-
oriented technology. It will take some time for the Unified Modeling Language to wind
its way through the standards process; it will take some time for tools vendors to support
the method. If you choose to use object-oriented stuff, then choose Booch. If you are
construction-oriented, choose Objectory if your focus is more on business process
reengineering (BPR), and choose OMT if your focus is more on analysis. The important
point is that you will not make a wrong decision if you choose any one of these three, and
the migration from any one of these methods to the Unified Modeling Language will be
relatively painless.
--------------------------------------------------------------------------------
It is most likely that tools will stage their support for the Unified Modeling Language
either by starting with use cases first, plus perhaps a few other things (like the cosmetics
of the graphical syntax and possibly stereotypes and properties), or by supporting simple
semantics first and then adding deeper semantic support later. Clearly, there won't be
complete tools supporting the Unified Modeling Language until the method itself is
finalized sometime early in 1997, but we expect that multiple sources of tool support will
emerge very shortly thereafter.
--------------------------------------------------------------------------------
What are the plans for making the Unified Modeling Language a standard?
We are participating in the Object Management Group's (OMG's) call for information on
object-oriented methods. Clearly, we can't just declare the Unified Modeling Language to
be a standard: That status has to be earned and granted. We are thus doing all we can to
be responsive to this proposal, and we will continue to work with the OMG. On the other
hand, we will continue to make the Unified Modeling Language pervasive, by making the
fruits of our work readily available as well as by encouraging other methodologists to
work with us and other tool vendors and training organizations to adopt the Unified
Modeling Language.
--------------------------------------------------------------------------------
In the Unified Modeling Language, clouds disappear. This was the Right and Noble
Decision: Rectangles are easier to draw and more space efficient, although they are
heavily overloaded. We preserve the concept in object diagrams, which use structured
clouds (basically, vertically elongated hexagonal shapes). Jim's pointed out that when
clouds crystallize, they form hexagons :-) so we probably made the right choice here.
--------------------------------------------------------------------------------