Friday, May 20, 2005

Why UML?

I have had some interesting questions from people from all walks of life, no just kidding, mainly from the software engineering community!

Why Should I use UML?

Well try writing a letter to somebody in English without using the English alphabet! Try replacing traffic signs with something else. Will it convey the intended meaning? Will you be able to capture what you intend to say in the first place? Every domain has a notation to capture and communicate people's intentions.

People use the English alphabet to construct words and phrases and convey their thoughts. Traffic signs on the other hand convey the signals (no pun intended) to motorists and pedestrians unambiguously. UML is the language to communicate the thoughts of a designer in OOAD. Such that other designers are able to decipher the design intentions without ambiguity. There is no substitute.

No amount of voluminous documentation can be a substitute for a well articulated UML diagram delivered in the petal file (.PTL / .MDL if you are using Rational Rose, Together J uses a different extension)

The advantages are enormous, for one componentisation and reusability is built in the design model so forward engineering it to any platform takes lesser time. That is you don't have to redo the initial phases of the project. Just continue from the design stage to the platform of your choice.

Two, You'll have a 360 degree view of your model rather than parts of it. However you can expose only certain portions of the design to your feature teams e.g. the data model can be exposed to the DBA.

Three, If you have hived off several portions of your application to different development locations (could also be teams, sub-contractors/vendors, countries) plumbing them together is rather simple.

Four, You can do away with all those voluminous design documents done on word processors. Saves a lot of time and hence money. They are ambiguous anyway because meaning of written words are prone to interpretation especially when things go wrong.

Five, Development is faster because programmers understand pictures better than the written word ( A picture is worth a hundred words! May not, may be its worth more than a thousand words or maybe its worth more than your entire design document!)

Your biggest advantage, your designs are unambiguous. Convey the same meaning to your entire development team no matter where they are located. Provided, they are literate in the unified modeling language!

While I write this, I have a great view of the fortune fountain, A stage is being erected for some sort of show right in the centre. Its dark but I can still people scampering with diagrams and blue prints (likely because something's being spread on the table and people are huddled over it) in their hands waving to each other while they erect the structures. Now just think how much would erecting a stage cost? A few thousand dollars? Does one have to go to such great lengths as to draw blue prints for a two hour show? Maybe, Maybe not. Now think about your next application that will cost you a few million dollars from inception to deployment. Which ideally should last a lifetime. Want to start building without a sound architecture?

Keep checking I'll be talking about how to get started on UML.

No comments: