The Responsible Designer

Object design and analysis methods before and after UML


An illustration of the proliferation of object analysis and design methods in the 1990s
https://upload.wikimedia.org/wikipedia/commons/d/d1/OO_Modeling_languages_history.jpg
Wikipedia's view of object analysis and design methods pre- and post- UML

In my previous post, I explored whether standardizing on UML killed modeling innovation. At the time of UML’s inception, object technology was in its heyday, and distributed object systems using CORBA technology were gaining in popularity. Java was 2 years old, C++ adoption was growing rapidly, and Smalltalk, after some enterprise development adoption, was in steep decline. The world was rife with object-oriented analysis and design methods, ad-hoc notations, and competing object analysis and design techniques.

The creation of UML (the Unified Modeling Language) was motivated by a desire to standardize both how to express models of object-oriented software systems and processes for creating them. CASE (Computer-Aided Software Engineering) tool vendors (Rational being a major player) sought to solidify their marketing position by dominating both the software development tool and methodology markets. It was in their best interests to have the industry consolidate on a single way of working that was optimized for their toolchain.

A Booch-style class diagram. The classes are represented as cloud-like figures (some might call them popcorn-like) Grady Booch was Rational’s Chief Scientist. In 1994 Rational released a product called Rational Rose. Initially it supported CRC (class-responsibility-collaborators) cards CRC cards were invented by Kent Beck and Ward Cunningham, originally as a tool for teaching object-oriented thinking. They were promoted as a lightweight modeling technique in our book, Designing Object-Oriented Software which were used in Responsibility-Driven Design and Booch notation for classes (Booch’s puffy clouds to represent objects didn’t make it into UML). Rational hired Jim Rumbaugh away from GE in 1995, where he had been working on the Object Modeling Technique (OMT) which had its roots in Entity-Relationship models. Ivar Jacobson joined Rational in 1995 bringing his Objectory tool and OOSE method (Object-oriented Software Engineering).

Booch, Rumbaugh, and Jacobson (named the “three amigos” by industry pundits) and their Rational colleagues embarked on an effort to standardize object modeling techniques and integrate their collective work. Eventually, their respective object analysis and design methods merged into a single Rational Unified Process, which used UML as its standard notation. The backcover of The Unified Software Development Process tells all: “This landmark book provides a thorough overview of the Unified Process for software development, with a practical focus on modeling using the Unified Modeling Language (UML). The Unified Process goes beyond mere object-oriented analysis and design to spell out a proven family of techniques that supports the complete software development life cycle. The result is a component-based process that is use-case driven, architecture-centric, iterative, and incremental.”

In 2000, Rational continued to expand their market, acquiring ObjecTime Ltd, a Canadian company focused on real-time object modeling techniques and tools. In 2003, IBM, who knew a good thing when it saw it, cornered the design tool and methodology market by acquiring Rational in 2003. Shortly thereafter, Jacobson left to form his own company, and Rumbaugh retired. Booch, still with IBM, is an IBM Fellow and Chief Scientist of Software Engineering.

Over a period of a few short years UML became the de facto standard for expressing object-oriented software models and RUP (the Rational Unified Process) became the market leading object-oriented development process.

It is important to remember that there were other CASE tool vendors. I’ll mention just one: TogetherSoft, co-founded in 1999, by Peter Coad. They had a nifty tool which supported roundtrip engineering in Java. Coad also edited a series of books on object design, patterns and modeling. Borland acquired TogetherSoft in 2003 and Coad left within a year to pursue non-software interests.

Before UML, there were several well-known object-oriented analysis and design methods, each with their unique slant on what was important. After UML, the world hunkered down, accepting UML as a preferred “language” for communicating software designs, and many authors jumped on the UML bandwagon. Here’s a rough timeline showing when popular books promoting various flavors of object design and analysis methods came on the scene. When found, I have provided links to books available through the Internet Archive. Unfortunately, I did not find all books in the Internet Archive. A few are only available for borrowing for those with print disabilities. However, they can still be browsed online.

1988
Object Oriented Systems Analysis: Modeling the World in Data, by Sally Shlaer and Stephen Mellor

1990
Object-Oriented Software Construction, by Bertrand Meyer
Designing Object-Oriented Software, by Rebecca Wirfs-Brock, Brian Wilkerson, and Lauren Wiener

1991
Object oriented design with applications, by Grady Booch
Object-Oriented Analysis, by Peter Coad and Ed Yourdon
Object-Oriented Design, by Peter Coad and Ed Yourdon.
Object-Oriented Modeling and Design, by James Rumbaugh

1992
Object Behavior Analysis Goldberg and Rubin didn’t publish a book but they did write an article for the Communications of the ACM and built an analysis tool used for a short while by some of our ParcPlace-Digitalk customers., by Adele Goldberg and Kenneth Rubin
Object-oriented Software Engineering: A Use Case Driven Approach, by Ivar Jacobson
Object lifecycles: modeling the world in states by Sally Shlaer

1993
Object-Oriented Programming, by Peter Coad and Jill Nicola
Principles of Object-Oriented Analysis and Design, by James Martin and James Odell
Object-oriented Analysis and Design, by James Martin and James Odell

1994
Object-Oriented Analysis and Design With Applications, by Grady Booch
Object-Oriented Development: The Fusion Method, by Derek Coleman and colleagues
Designing Object Systems: Object-Oriented Modelling with Syntropy, by Steve Cook and John Daniels
Seamless Object-Oriented Software Architecture: Analysis and Design of Reliable Systems, by Kim Waldén and Jean-Marc Nerson

1995
Succeeding With Objects: Decision Frameworks for Project Management, by Adele Goldberg and Kenneth Rubin
What Every Programmer Should Know About Object-Oriented Design, by Meilir Page-Jones

1996
The object primer: the application developer's guide to object-orientation, by Scott Ambler
Object-Oriented Methods: Pragmatic Considerations, by James Martin and James Odell
Working with Objects: the OOram Software Engineering Method, by Trygve Reenskaug

In 1997, not surprisingly, UML started appearing in titles.

1997
Object Models: Strategies, Patterns, and Applications, by Peter Coad, Mark Mayfield, and David North
UML Distilled: Applying the Standard Object Modeling Language, by Martin Fowler
Object-Oriented Methods: A Foundation, UML Edition, by James Martin and James Odell

1998
The Rational Unified Process: An Introduction, by Philippe Kruchten
Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and the Unified Process, by Craig Larman
Advanced Object-Oriented Analysis and Design Using UML, by James Odell

1999
Java Modeling In Color With UML: Enterprise Components and Process, by Peter Coad, Jeff de Luca, and Eric Lefebvre
Objects, Components, and Frameworks with UML: the Catalysis Approach, by Desmond D'Souza and Alan Wills
The Unified Software Development Process, by Ivar Jacobson, Grady Booch and James Rumbaugh
The Unified Modeling Language Reference Model, by James Rumbaugh, Ivar Jacobson, and Grady Booch

2000
Fundamentals of Object-Oriented Design in UML, by Meilir Page-Jones

2001
The Object Primer: The Application Developer's Guide to Object Orientation and the UML, by Scott Ambler

2002
Executable UML: A Foundation for Model-Driven Architecture by Stephen Mellor and Marc Balcer

2003
The Elements of UML Style, by Scott Ambler
The Rational Unified Process Made Easy: A Practitioner's Guide to the RUP, by Per Kroll and Philippe Kruchten
Object Design: Roles, Responsibilities, and Collaborations, by Rebecca Wirfs-Brock and Alan McKean
Domain-Driven Design: Tackling Complexity in the Heart of Software, by Eric Evans

In the early 2000s numerous books were also published on application development and design using Java and C++.

I left ParcPlace-Digitalk in late 1997, to start my own training and consulting company. Object Design: Roles, Responsibilities, and Collaborations (2003), collected the wisdom we’d gleaned from years of working with clients designing and implementing object-oriented systems in Smalltalk and Java. Of course, there were UML diagrams in my book! But the main focus was Responsibility-Driven Design principles and techniques, and practical ways to increase reliability and design flexibility.