本书是Grady Booch为读者精心打造的又一力作,他在本书中为项目开发人员和管理者应用对象技术提供了大量实用的建议。无论是对第一次开发面向对象项目的新手,还是对经验丰富的面向对象老手,本书都是非常有价值的学习资源。Booch基于其多年开发面向对象项目的经验,解释了如何应用面向对象技术的合理原则,以缩短系统开发周期、提高系统开发效率。本书提供给读者许多实用建议,包括推荐做法(recommended practice)和经验法则(rules of thumb),这些建议是项目成功的关键。总之,这是一本少有的、由著名的面向对象实践者总结其实用建议的好书! 涵盖了大部分对面向对象技术管理者和开发人员来说非常重要的主题总结了作者多年在全球开发面向对象项目的经验通过提供项目问题、隐含意义、推荐做法和经验法则,着重强调了管理面向对象项目实践的方方面面提供了大量真实的项目实例,并演示了开发面向对象系统的各种方法
CHAPTER 1: FIRST PRINCIPLES 1\r\nWhen Bad Things Happen to Good Projects 5\r\nEstablishing a Project's Focus 9\r\nUnderstanding a Project's Culture 11\r\nThe Five Habits of Successful Object-Oriented Projects 22\r\nIssues in Managing Object-Oriented Projects 29\r\nCHAPTER 2: PRODUCTS AND PROCESS 33\r\nIn Search of Excellent Objects 37\r\nObject-Oriented Architectures 43\r\nThe Artifacts of a Software Project 54\r\nEstablishing a Rational Design Process 63\r\nCHAPTER 3: THE MACRO PROCESS 69\r\nThe One-Minute Methodology 74\r\nConceptualization 80\r\nAnalysis 86\r\nDesign 108\r\nEvolution 129\r\nMaintenance 151\r\nCHAPTER 4: THE MICRO PROCESS 155\r\nI'm OK, My Program's OK 159\r\nIdentifying Classes and Objects 161\r\nIdentifying the Semantics of Classes and Objects 167\r\nIdentifying Relationships Among Classes and Objects 174\r\nImplementing Classes and Objects 181\r\nCHAPTER 5: THE DEVELOPMENT TEAM 185\r\nManagers Who Hate Programmers, and the Programmers\r\nWho Work For Them 191\r\nRoles and Responsibilities 194\r\nResource Allocation 206\r\nTechnology Transfer 212\r\nTools for the Worker 219\r\nCHAPTER 6: MANAGEMENT AND PLANNING 225\r\nEverything I Need to Know I'll Learn In My Next Project 229\r\nManaging Risk 231\r\nPlanning and Scheduling 233\r\nCosting and Staffing 236\r\nMonitoring, Measuring, and Testing 237\r\nDocumenting 239\r\nProjects in Crisis 244\r\nCHAPTER 7: SPECIAL TOPICS 247\r\nWhat They Don't Teach You in Programming Class 252\r\nUser-centric Systems 254\r\nData-centric Systems 257\r\nComputation-centric Systems 260\r\nDistributed Systems 262\r\nLegacy Systems 265\r\nInformation Management Systems 267\r\nReal Time Systems 270\r\nFrameworks 274\r\nEPILOGUE 277\r\nSUMMARY OF RECOMMENDED PRACTICES 279\r\nSUMMARY OF RULES OF THUMB 293\r\nGLOSSARY 303\r\nBIBLIOGRAPHY 307\r\nINDEX 311
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.
SCOPE
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.
AUDIENCE
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.
ORGANIZATION
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.
ACKNOWLEDGMENTS
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.