Object Solutions: Managing the Object-Oriented Project, by Grady Booch, gives developers and managers practical suggestions for applying object technology to their projects. This book is a valuable resource not only for those who are embarking on their first object-oriented project, but also for seasoned OO veterans. Drawing on his world-wide experience in object-oriented software engineering, Booch explains how to apply the sound principles of OO technology in order to make systems development more timely and effective. Booch presents the reader with pragmatic advice, including the recommended practices and rules of thumb that are the hallmarks of successful projects. Object Solutions is an exceptional resource that offers concise, practical advice from a noted OO practitioner.
1. First Principles.
When Bad Things Happen to Good Projects.
Establishing a Project's Focus.
Understanding a Project's Culture.
The Five Habits of Successful Object-Oriented Projects.
Issues in Managing Object-Oriented Projects.
In Search of Excellent Objects.
The Artifacts of a Software Project.
Establishing a Rational Design Process.
The One Minute Methodology.
I'm OK, My Program's OK.
Identifying Classes and Objects.
Identifying the Semantics of Classes and Objects.
Identifying Relationships Among Classes and Objects.
Implementing Classes and Objects.
Managers Who Hate Programmers, and the Programmers.
Who Work For Them.
Roles and Responsibilities.
Tools for the Worker.
Everything I Need to Know I'll Learn In My Next Project.
Planning and Scheduling.
Costing and Staffing.
Monitoring, Measuring, and Testing.
Projects in Crisis.
What They Don't Teach You in Programming Class.
Information Management Systems.
Real Time Systems.
Early adopters of object-oriented technology took it on faith that object orientation was A Good Thing, offering hope for improving some ugly aspect of software development. Some of these primordial efforts truly flourished, some failed, but overall, a number of such projects quietly began to experience the anticipated benefits of objects: better time to market, improved quality, greater resilience to change, and increased levels of reuse. Of course, any new technology is fun to play with for a short while. Indeed, there is a part of our industry that thrives on embracing the latest fad in software development. However, the real business case for any mature technology is that it delivers measurable and sustainable benefits for real projects.Object-oriented technology has demonstrated its value in a multitude of applications around the world. I have seen object-oriented languages and methods used successfully in such diverse problem domains as securities trading, medical electronics, enterprise-wide information management, air traffic control, semiconductor manufacturing, interactive video gaming, telecommunications network management, and astronomical research. Indeed, I can honestly say that in every industrialized country and in every conceivable application area, I have come across some use of object-oriented technology. Object-oriented stuff is indisputably a part of the mainstream of computing.
There exists an ample and growing body of experience from projects that have applied object-oriented technology. This experience - both good and bad - is useful in guiding new projects. One important conclusion that I draw from all such projects is that object-orientation can have a very positive impact upon software development, but that a project requires much more than just an object-oriented veneer to be successful. Programmers must not abandon sound development principles all in the name of objects. Similarly, managers must understand the subtle impact that objects have upon traditional practices.
In almost every project I have come across, be it a modest two- or three-person effort, to undertakings of epic proportions wherein geopolitical issues dominate, a common set of questions always appears: How do I transition my organization to object-oriented practices? What artifacts should I manage to retain control? How should I organize my staff? How do I measure the quality of the software being produced? How can I reconcile the creative needs of my individual programmers with management's needs for stability and predictability? Can object-orientation help me help my customers better articulate what they really want? These are all reasonable questions, and their answers strike at the heart of what is different and special about object-oriented technology.
This book serves to answer these and many other related questions, by offering pragmatic advice on the recommended practices and rules of thumb used by successful projects.
This is not a theoretical book, nor is its purpose to explain all the dark corners of object-oriented analysis, design, and programming. My previous work, Object-Oriented Analysis and Design with Applications, serves those purposes: it examines the theoretical underpinnings of all things object-oriented, and offers a comprehensive reference to a unified method of object-oriented analysis and design.
Object Solutions provides a direct and balanced treatment on all the important issues of managing object-oriented projects. I have been engaged in hundreds of projects; this book draws upon that broad experience. My intent is to explain what has worked, what has not, and how to distinguish between the two.
My intended audience includes project managers and senior programmers who want to apply object-oriented technology successfully to their projects, while avoiding the common mistakes that can befall the unwary. Professional programmers will find this book useful as well, giving them insight into the larger issues of turning cool looking object-oriented code into real products; this book will also help to explain why their managers do what they do. Students on their way to becoming professional programmers will come to understand why software development is often not very tidy in the real world, and how industrial-strength projects cope with this disorder.
I have organized this book according to the various functional aspects of managing an object-oriented project. As such, it can either be read from cover to cover or selectively by topic. To make this material more accessible, my general style is to present an issue, discuss its implications, and then offer some recommended practices and rules of thumb. To distinguish these elements in the text, I use the following typographic conventions:
- This is an issue, usually stated in the form of a question followed by its answer, regarding some functional area of project management.
- This is a recommended practice, which represents a generally acceptable way of addressing a given issue.
- This is a rule of thumb, which represents some quantifiable measure about a particular practice.
- I've numbered these practices and rules sequentially, so that specific ones can be referred to easily.
- To reinforce certain lessons, I offer examples drawn from a variety of production object-oriented projects, whose details have been changed to protect the guilty.
- I highlight these examples in the following manner:
This is an example, drawn from some production object-oriented project.
As a compendium of object-oriented wisdom, Object Solutions owes an enormous debt to the many professional managers and programmers whose contributions have advanced the state of the practice in object-oriented technology.
The following individuals deserve a special mention for reviewing my work in progress, and providing me with many useful comments and suggestions: Gregory Adams, Glen Andert, Andrew Baer, Dave Bernstein, Mike Dalpee, Rob Daly, Mike Devlin, Richard DuE, Jim Gillespie, Jim Hamilton, Larry Hartweg, Philippe Kruchten, Brian Lyons, Joe Marasco, Sue Mickel, Frank Pappas, Jim Purtilo, Rich Reitman, Walker Royce, Dave Tropeano, Mike Weeks, and Dr. William Wright.
A special thanks goes to my wife, Jan, for keeping me sane during the development of yet another book, and who always gently shows me that there is a rich life beyond all things object-oriented.