Story about lost collaboration and its impact on tools

Short history of UML

When OOA & OOD had developed very rabidly from 1990 to 1994 it became evident that the overlapping OO diagram notations would severely harm the usage and the development of OO methods.  This started a process which result was to be UML. This was done mainly be three persons namely Grady Booch, Jim Rumbaugh and Ivar Jacobsson inside Rational company.

The work took more time than expected but the result was (is) good. In 1995 this team came out with UML 0.9 standard and it did indeed unify different notation dialect of OO diagrams. Important aspect to identify here is that the standard was purely Object-Oriented.

Pretty soon Rational’s Rose tool implemented this standard. The tool was (is?) very good but somewhat expensive, which is of course quite relative thing.

This was the time of OO boom and most important players like big DB- and development tool vendor  wanted to be part of this. The trouble with this was that many of these hade nothing OO to offer to this marketplace.

This mismatch was much more important than just diagram notations that UML was all about. Behind this was the whole OO to procedural antagonistic paradigms – world views.

So it meant really difficult problem for those big legacy company. On one hand they wanted to be part of the enthusiasm and the success story but on the other hand they did not fundamentally agree anything. At least the impression that I got was that at these early day OMG was supporting a clear genuine OO paradigm.

That tactic (perhaps even a planned strategy) of these legacy newcomers was “The old lesson learned”: “If you can beat them join them”. This was what happened. Immediately after this they started to demand that the methods and diagrams they had been selling have to be included in the standard too. I don’t actually know for sure but it seemed that no-one asked how these new features fitted the OO methodology. At least the fact remains that they did not at all! This way diagrams like ER-diagram, activity diagram etc. where included into ULM! This changed UML from  OO diagram notation standard to fuzzy collection of drawing standards that hade methodological common ground any more.

This crumbling of pure OO UML reached its peak at UML 2.0. The disintegration process seems to continue. This means that under the names of UML and Object Management Group for instance things like data mining and SOA has been associated to OO.  I will give you perhaps the saddest example of this:

How powerful collaboration changed to mere communication

The cornerstone of the whole OO paradigm – this also is the most important separator between OO and procedural- is the distribution of action between the participating objects! In OO we call this collaboration. (look Grady Booch: Object-Oriented Analysis and Design with Applications; Wirfs-Brook & McKean Object design; Evans: Domain Driven design etc.)

This term collaboration indicates a committed team with a common goal to achieve and distributed responsibilities. This is actually almost the only thing that makes a difference between OO and procedural.

This is why the object diagram with messages was called collaboration diagram. The naming indicated that even if the concrete elements to be seen in the diagram where messages the emphases was that these messages where not an meaningless chimps  of a small talk but a part of serious collaboration function. Now in UML 2 the name have been changed from collaboration diagram to communication diagram! I wonder if this is intentional act of crumbling of OO or an accidental result of lack of knowledge of OO. Sadly both option are fatal. When this is not understood or deliberately neglected it leads to secondary implication in the model. These changes concern the class diagram. Then the creation of business methods in the domain classes is in threat . If these are omitted then the class diagram (actually the class model) is atrophied into a disguised ER- or data model. Then there is not a single thing of the OO model left!

I am truly sad of this situation.

The usage of collaboration diagram

I am still using actively collaboration diagrams. To remind you collaboration diagram is a diagram of a scenario. Thus it consists of objects not classes. This is a fundamental difference that by the way is quite hard for part of people to distinguish. So we talk about a single case object diagram with indicated sequence of messages between objects. This describes exactly how the process goes in this single case. Here is an example of this:

Because of the nature of the collaboration diagram, it is not possible even dream of a exhausted set of a representative of all types of collaboration. This is why in practice only a few carefully selected collaboration diagrams are worthwhile drawing. These must be the deep most important business process describing the root behavior of the business. When I have very pedant people in the analyzing in many cases team these people have difficulties to accept this fact and along the way they tend to keep asking how I know that the right ones have been selected. The mental challenge is always in analyzing and developing complex system how to accept and live with some degree of uncertainty. The teaching for agile gurus however is that this reminds the only useful path and all other option –whatever they are- are far worse.

This is still one out of two diagrams that are able to describe the dynamics of OO model. The other one is sequence diagram. Technically both diagram types contains the same information so basically it is a question of taste which to choose. I like collaboration diagram, because in many cases one can have that same or similar positioning of objects that the corresponding classes have in the class diagram and secondly when one picks up a single message in the message flow one can immediately see the sender and the receiver of that message.

The impact on tools

There are two completely separate aspects about the tools. The first thing is the most agued development of software industry. Tool production has never been a gold mine but in the old days people were able to make a living on it, but for some completely incomprehensible reason the now companies are (or have to) distributing the result of work for free. My commonsense of economy cannot solve this equation, how on earth this real work effort is financed or are we drifting in the medieval patron type of financing of arts. This will finally move the control of the direction of development into the hands of money.

The second aspect is this OMG standards that will eventually push the tools into it. From my point of view there was actually a time when Rational Rose was good but expensive. IBM acquired Rational and OMG expanded the standard most of tools did not offer as good functionality when drawing collaboration digammas. Currently I am using both MagicDraw and StarUML. Neither of these serves me well, but I can live with them.

Ideal UML and tool

The things that are lacking in current collaboration diagrams are: convenient and systematic way to show attribute values at the time of receiving message. This becomes complex when an object receives more than one message during the message flow.

But I have an idea of ideal OO tool (ME -> modeling environment). I have written first short article on 3-dimensional class diagrams. I still consider than a fascinating option. When today with 2D class diagrams we are able to read up to 70 -100 classes in one diagram. These could “easily” double the max size of single diagram and at the same time add semantics.

Collaboration –as they are processes- they should be able to show the timeline rather than just to the end state. At some point of time Rose had and collaboration animation feature and this would be a must also today.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: