A Sip From The Firehose: June 16, 1996

By: David Intersimone

Abstract: Life is like a box of chocolates.

Life is like a box of chocolates

Sunday, June 16, 1996 - Happy Fathers Day
La Selva Beach, CA

Object Modeling - Required for all Object Oriented Development

My kids gave me a box of chocolates (See's Famous Old Time Candies) for Fathers Day. I spent part of my sunday eating chocolates and watching one of my favorite movies, Forrest Gump with Tom Hanks. I'm sure most of you remember the famous Gump phrase, "Life is like a box of chocolates. You never know what you're gonna get." I sometimes feel this way when thinking about the future of development tools.

The first development tools were command line compilers, programmer's editors and make files (solid chocolates). Then came the integrated development environments that combined the tools together (chocolate and caramels). Next came the stand along and integrated debuggers (chocolate with caramel and nuts). I don't know of any developer today who can live without a debugger, do you? Are there any other indispensable tools that all programmers must have?

In short order, error detection and analysis tools are becoming a required part of every programmer's tool set.

One new category of tools that I can't live without are the error detection and analysis tools. Codeguard for Borland C++ (from Borland) and BoundsChecker by Numega Technologies (version 4.0 is now available supporting Borland C++ and Delphi 2.0) are two examples. These tools catch many of the common and obscure memory and windows errors that we all make (chocolate with a surprise in the middle, usually a cherry). In short order, error detection and analysis tools are becoming a required part of every programmer's tool set. What tool will be the next addition?

Looking in the box at all those sweet objects (wondering which one to chose, in what order, and what I would find inside), made me think how great it would be to have an cool analysis and design tool for devouring a box of chocolates. To successfully build object-oriented systems developers need a tool that helps you design, implement, redesign and document your projects. Object-Oriented Analysis and Design has been around since the early 1980's and has gone through (at least) three generations of improvements.

First Generation - OOA/D Methodology
Books and seminars appeared from some of the top OOP practitioners showing other developers how to successfully build systems using analysis and design methodologies. The most popular of the first generation methodologies were the Booch (Grady Booch - Rational Software), OMT: Object Modeling Technique (Jim Rumbaugh et al - General Electric Research and Development) and Use Cases (Ivar Jacobsen - Objectory). Unfortunately for developers, there was little or no tool support for these early methodologies forcing programmers to use paper, paint programs and CAD tools.

Anyone still have their Booch cloud plastic template?

Second Generation - OOA/D Automation
Companies started building tools that automated the design and documentation of objects. Some of these early tools even supported generation of code from the models (one way engineering). Like a one way ticket on an airplane, once you started coding you needed to separately keep the models up to date. New methodologies and revisions to existing methodologies appeared during this second generation. Those methodologies that were supported by tools (Rational Rose for Windows, Select OMT, Objectory, Popkin System Architect to name a few) were adopted by developers. As the methodologies started looking more and more like each other, OO developers and methodologists began to discuss whether there was a way to unify all the best features of the leading methodologies. Discussions would take place about clouds versus rectangles (anyone still have their Booch cloud plastic template?). At the end of this generation we also saw the emergence of advanced OOA/D tools that provided "round trip engineering". With round trip engineering you can work on the model and code at the same time and keep each in sync with the other. Together C++ from Object International and Rational Rose from Rational Software both provide this kind of two way tool.

Third Generation - Unified Modeling Language
Could there be one modeling language that we could all use? Could the top methodologists agree to put their best ideas together? Weren't most of the methodologies starting to look the same anyway? A good answer to all of these questions is the new Unified Modeling Language (UML) being defined by the methodologists at Rational Software. UML is a third generation methodology that covers specification, notation and documentation for object-oriented application development. The modeling language is a combination of Booch, OMT, and Objectory as well as the work by Peter Coad, Ward Cunningham, Rebecca Wirfs-Brock, Ed Yourdon and many other renowned methodologists. At OOPSLA '95 in Austin Texas, Jim Rumbaugh introduced a hit song about the Unified Method "Both Sides Now (with apologies to Joni Mitchell)." A choice stanza from the song includes:

It's the clouds' delusions I appall
I really can't stand clouds at all.

I've looked at clouds from both sides now
Both in and out, and still somehow
It's clouds' delusions I appall
I really can't stand clouds at all.

If you are interested in the Unified Modeling Language check out the Rational Software Object Technology page. This is a major advancement for all OO developers - one modeling language, one notation, one vocabulary.

The next required tool for every developers toolbox is a round trip engineering object modeling tool that supports the Unified Modeling Language (white and milk chocolate with caramel, nuts, cherries, coconut, sprinkles and toffee).

Next year for Father's Day I hope I get an even larger box of chocolates! (My dentist, Glen, needs the money.)


PS: My apologies for not taking a Sip last week.

Server Response from: ETNASC04