Rating: Summary: Actually much more than just an object primer! Review: This is a great book! Not that it's perfect, but nothing is. This book is not only a very clear, extremely well-organized approach to learning and/or becoming expert in "Object Orientation and the UML," as the the cover says, but he presents this together with a development methodology that makes a *lot* of sense. For example, for those of you who have read Karl Wiegers' excellent "Software Requirements," did you notice that at the end of the book you knew exactly what good requirements are but not how to get there? Me too! But Ambler takes you on a whirlwind tour, with each page absolutely *packed* with value, that instead leaves you saying "hey, now I know not only what good object oriented designs are, but how to get there from here!"This is a strange thing to say, but this book actually gave me the requirements engineering methodology I needed to get from point A to B -- having requirements that Karl Wiegers would be proud of!
Rating: Summary: Finally someone has put it all together Review: This new edition of the book was well worth the wait. Finally someone has put it all together and described how to develop software using object-oriented technologies. Ambler covers development from requirements all the way through testing. Although the book does an excellent job explaining the UML, IMHO focusing on the 20% of the UML that you would actually use in practice, he supplements the UML with other techniques such as business rules, CRC cards, essential user interface prototypes, UI flow diagrams, and physical data models which he calls persistence models for some strange reason. He also goes a bit into system integration issues with external interface models, a topic that I rarely see covered in all the other OO books out there. A huge strength of the book is that it shows how to go from OO design to actual code, giving a brief but good overview of how to implement your design in Java and in a relational database. Ambler describes important implementation issues such as how to map your objects into relational databases, how to write clean code, how to write good internal documentation, and how to design your user interface cleanly. Frankly, I don't know of any books other than this one that actually deals with real-world issues like this, and I really wish he had written this book years ago. The testing chapter was solid but brief, summarizing material in his process patterns books, the 10th chapter very briefly overviewed technologies such as the RUP, EJB, and XP, and the final chapter provided career advice for success in the object industry. I would suggest this book for anyone new to object development, particularly people getting into Java or C++ for the first time, or even modelers or project managers than simply need to get up to speed on the UML.
Rating: Summary: A Great Introduction to OO, the UML, and Java Review: This second edition reprises the original version of this book, first published in 1995. This time I cover the full range of software development, including requirements, analysis, design, programming, and testing. I show you how to apply a wide range of leading edge development techniques such as essential models, user interface prototyping, and of course the techniques of the Unified Modeling language including but not limited to use cases, sequence diagrams, and class diagrams. More importantly I show you how to apply these techniques together taking both an iterative an incremental approach via the use of a running business application case study throughout the book and a second one that is used for exercises at the end of each chapter. Unlike the first edition in this version of the book I don't stop at object-oriented design but instead keep going, showing you how to transition your object design into Java code as well as how to persist your objects into a relational database such as Oracle or Sybase. Because you also have to validate your work, I discuss the techniques of the Full Lifecycle Object-Oriented Testing (FLOOT) methodology and show how to put them into practice. Finally, I put the techniques of the book into the context of several leading software processes, including the Unified Process, eXtreme Programming (XP), and the process patterns of the OOSP. I think you'll find this book to be a valuable tutorial in leading edge development techniques as well as a valuable reference.
Rating: Summary: Systems development is like a good pin ball game! Review: William Sheridan/Systems Analyst/Ottawa, Canada
Ostensibly, the purpose of Scott Ambler's book is to teach the novice about the merits of object-oriented analysis in application development. Therefore the methodology, notation and examples, all conform to the "objects" approach. This is a good thing, for there are many developers who would like a gentle introduction to object-orientation, and this presentation of the new paradigm is very appealing.
After a little reflection however, what sticks most from this book is the good sense behind Ambler's own modus operandi. For instance, at one point he claims object orientation should mean that better analysis and design will require less programming - but, as Ambler concedes, that was also actually true with the previous "structured" paradigm. So Ambler's bottom line is that systems developers should work smarter rather than harder - but most still don't!
Another of Ambler's themes is that the object-oriented approach involves much closer work with end-users than other methods. "Users do the bulk of the analysis." But in all likelihood, the difference between "user-centric" and "technology-centric" development is more a matter of temperament than technique. Ambler later implies as much: "With the way we have presented OO development, the people who understand the business do the analysis." The point is, that others have presented a far more "expert-centric" object-orientation - so this is a question of philosophy rather than methodology.
The third aspect of the book which continues to resonate, is Ambler's creation of a new "Pinball" Systems Development Life Cycle (SDLC) model. Iterative and incremental development was not represented particularly well by either the "waterfall" or the "spiral" strategies, so Scott adopted the "Pinball" metaphor. Both analysis and design really do "bounce around" between use cases, attributes, methods, classes, and collaborations on their journey to prototypes, testing and implementation, so why not say so!
Ambler is conscientious without being compulsive. At the end of each chapter he summarizes both the advantages and the disadvantages of "objectifying " analysis. Those who are determined to stick with obsolete approaches will definitely be the losers in the systems development business. The winners will be those with the good sense to look to the future. The aim of this book though, is not to convert us, but just to convince us to give the method a try. I am looking forward to the next volume of this trilogy for more of the same
|