Your earlier work on object-oriented analysis and design and on
OO methodology led up to your being honored as an ACM Fellow.
That work culminated in the Unified Modeling Language (UML).
What's happening with UML now?
When you look at UML it's really an amazing accomplishment, bringing together three different methodologists (Ivar Jacobson, Jim Rumbaugh, and myself), along with companies as diverse as Microsoft, Oracle, Hewlett-Packard, Texas Instruments, MCI Systemshouse, IBM, and many others. UML transcends the ongoing language wars and the operating system wars.
The nice news is that I'm out of a job with regard to the development of UML. It's now under the control of the Object Management Group's Revision Task Force. Their mission is twofold. First, to resist change and bring stability to the language, and second, to fix the things that are obviously broken, such as index numbering and some semantic errors.
UML is entering widespread use. Microsoft is using UML in their Repository and in Visual Studio, IBM has used it for their San Francisco project, and Oracle is using it as a language for data modeling in Oracle 8; it's even being used as a hardware modeling language. UML is morally neutral with respect to languages, so it's quite possible to model with UML and develop in Cobol or C as well as in Java and C++. In fact, most large, distributed, concurrent applications span multiple languages such as these. And aspects of these contemporary applications, such as distribution, concurrency, and quality of service, have direct representations in UML.
What's the best reference to your work?
Probably two books that are not yet published! The UML User's Guide will be in print shortly, and I'm working on a book on architectural patterns. There are two currently published ones:
Object-Oriented Analysis and Design with Applications. Grady Booch, Addison-Wesley, 1994, ISBN 0-805-35340-2. (I'm working on the third edition, which is due out later this year.)The other is:
Object Solutions: Managing the Object-Oriented Project. Grady Booch, Addison-Wesley, 1995, ISBN 0-805-30594-7.
What are your current research interests?
The first is study into architectural patterns. I spend about 30 percent of my time working as an architectural mentor, involved in a variety of domains. It's painfully clear that within certain classes of applications there are canonical architectures that just work. So how does one represent architectures? There are many existing languages for this, but they're textual. UML can represent architectures graphically. I'm currently involved in "harvesting" architectural patterns with large companies and big projects, working with them to find patterns that they haven't recognized or haven't been able to articulate.
My second research interest is in gaining a more rigorous understanding of the process of software development. Rational has a process group that focuses on this using an iterative, incremental development technique.
What are your current outside interests?
Believe it or not, I do have a life beyond software. My wife and I love to travel. We took a six-week trip around the world last year. We're also passionate readers: we recently added it up, and together we read about 400 books a year. I have a 22-foot bookcase just for my professional books and it's not big enough - we'll have to move to a new house to fit all of our books. My other outside interest is in music. Four years ago, after many years of playing guitar and electronic keyboard, I took up the Celtic harp, and more recently, the hammered dulcimer, playing medieval material. I also sing, primarily contemporary Christian music.
What was the greatest influence on you?
One of my instructors at the Air Force Academy, George Walther. Although it wasn't called that at the time, he had an understanding of object-oriented techniques. I remember that he graded one of my projects, and he brought it to me and said, "You did this correctly, but now let me show you how to do it elegantly." That was an enlightening moment, where I realized the potential for elegance and beauty in software.
What has been your greatest influence?
In trying to do what George did for me: bringing more science to the art of architecting software systems. It's humbling, amazing, and even frightening at times to be exposed to systems that were developed by people who've read my books and used my methodologies: I hope they read the right chapters!
Who do you think has made the greatest impact on software engineering?
That's a tough one. There are so many. Of the classic computer scientists, Edsger Dijkstra, Tony Hoare and David Parnas led the way. In contemporary times, Bjarne and James Gosling and other colleagues have brought languages to the table that have had a lasting impact. That Java even saw the light of day is an amazing accomplishment.
What's your favorite story about software engineering or development?
There are so many from which to chose. As for contemporary projects, I've collected a number of such war stories in my book "Object Solutions." As for a story that's touched me the most, well, the late Grace Hopper had far better tales that I could ever tell. In fact, I still have the nanosecond she gave me when she lectured at the Academy.
Which computer-related areas are most in need of investment by government,
business or education?
In education, computers have certainly entered the classrooms, but one rarely sees them introduced for learning the concepts of computer science. Kids often leave high school saying they know how to use computers, but have never written a line of code. Investment in teaching these foundations will be crucial to the next generation of developers. We have to realize how important computer science is to maintaining the pace of national and global innovation.
As far as government is concerned, in the short term, the best thing it can do is stay out of the way, anti-trust issues notwithstanding. The movements in the legal community toward restraints, combined with patent activity, are frightening when you consider the ill-informed decisions being made. Janet Reno has admitted she really doesn't use computers.
As far as business is concerned, there's tremendous technology churn that is eating up scarce resources. The language and operating system wars make it a crapshoot for many companies: they have to place their bets on some combination of technologies and hope the market doesn't shift out from under them. The Year 2000 problem and the currency conversion to the Euro are consuming a lot of dollars that are then not available to spend on innovation. But natural forces tend to lead business to make the right investments without outside prodding.
The best businesses are those that see software as a strategic weapon, if you will. Take Kodak: it's a company that must change from atoms to bits. Its future depends on its ability to use software to make that change. That's a fundamental business shift: software can make or break a company. Businesses that don't understand that will fall behind. Software is a technology that knows no political bounds.
What advice do you have for computer science/software engineering students?
Gain broad experience and seek an understanding of systems issues and of teams. There are two specific areas one should focus on. First, there's a need for continued growth in the levels of abstraction, from languages to tools to methodologies. Witness component-based software today. The second area is in the importance of the individual to the team. Don't just hone your individual skills; gain the skills to work with others.
My other advice is, have a life! Software development can be a great career, but the people I admire most are the ones who are whole people.
What is the most often-overlooked risk in software engineering?
It has nothing to do with technology. The fundamental risks are political as well as sociological. It's also ignorance of how teams function. Don't believe that you can simply take a set of smart men and women, put them in a room and have great software come out. There may be occasional exceptions but not for the long term, not in a sustainable way. Tom DeMarco's work on Peopleware is so important in this regard. It should be read by everyone in the field.
What is the most-repeated mistake in software engineering?
This overlaps a lot with the previous point. The mistake is in viewing everything simply as a matter of programming. Many people believe they can program themselves out of a hole, but they generally end up digging themselves in deeper.
What are the most exciting/promising software engineering ideas or techniques on the horizon?
The whole patterns movement is what really jazzes me. Gamma and his colleagues, Cunningham, Coplien, Beck, Shaw, Buschmann, Anderson and other folks are codifying different aspects of patterns. The work I'm doing on architectural patterns is just one part of this much larger body of work that's going on around the world.
Historically in corporations, much of this type of knowledge has been passed on informally as a kind of folklore. UML offers a way to formalize it through visualization, specification, construction and documentation. It's perhaps the first modeling language that's reified the idea of patterns.
What are your plans for the future or the next five years?
I have more things I'd like to do, personally and professionally, that I can possibly fit in a lifetime. Anyway, because our field is so dynamic, it's hard to predict what five years out will look like, but three things I do know: software will continue to grow in its importance to world economies, software will become more complex, and building complex software systems will continue to be a wicked problem. For the forseable future, I'll focus my professional energies on helping to push the science and art of software development so that it is less of a wicked problem.
Profiled by Greg Cooper