2: Object Orientation: A New Software Paradigm
3: Gathering User Requirements
4: Ensuring Your Requirements Are Correct: Requirement Validation Techniques
5: Understanding The Basics: Object-Oriented Concepts
6: Determining what to build: Object-Oriented Analysis
7: Determining How to Build your System: Object-Oriented Design
8:Building your system: Object-Oriented Programming
9: Object-Oriented Testing
10: Putting it all together: Software Process
11: Where to go from here
References and recommended reading
Scott Ambler comes from the pragmatic no-nonsense school of design and communication and has produced a book that works and looks wonderful. Well written and astonishingly well lain out, the book is perfect for studying, for dipping in and out of, for previewing and for revision. I'd love to include some sample pages here just to show you how effective the layout is but I'll try to describe it instead. Cambridge have a downloadable excerpt (the contents page, introduction and chapter 6). Every chapter has a summary overview, the pages have large white space borders that are used for hints and tips and are great for scanning. The diagrams are clear, appropriate and are allowed to use the border space on the page to accommodate their width. Definitions, and tips are boxed out clearly in the main page. Every chapter has a summary ending and a set of review questions to help the reader think on what they have learned.
This book is a classic of object oriented explanation. All the ground that you would expect to be covered is covered. An error in the contents page made me think that the testing coverage had expanded dramatically from the first edition but Chapter 8 was merely mis-titled, this will no doubt be fixed in a later printing but the error is plain to see in the downloadable excerpt. Testing gets a full, but small, chapter, as you can see from the contents page. The testing section covers misconceptions that can be found associated with object oriented development: that we can do less testing, that we don't need new techniques, that all testing can be done at the GUI level. The chapter is little more than a summary and the reader will have to look elsewhere to get the details on these techniques. I was surprised to see that there was little mention of Junit (www.junit.org) or one of the other testing frameworks given that it does point out that Kent Beck recommends writing the testing code first.
But considerations of "getting it right" are emphasised throughout and not just left to the testing chapter. Scott Ambler is a great advocate of validation and verification techniques and if you compare his extended Unified Process diagram with Rational Unified Process then it is obvious that he really wants the process to produce a quality product.
Quality can only be achieved when people understand what they are doing. The primer goes a long way to improving the understanding of object oriented development. The challenge in a software development process is to use simple techniques judiciously to produce systems that work in a complex domain. It is the domain and the management of these techniques that are complicated, not the techniques themselves.
Scott Ambler also covers areas that are often neglected by UML books such as User Documentation and the GUI, and techniques for GUI modelling are provided.
There is a fairly extensive introduction to object oriented programming using examples in Java.
I have tried to ask myself, could people who know nothing or very little about programming get much from this chapter and I think they can. This book can act as a primer for all parts of the object oriented lifecyle and will easily help the reader come to grips with some of the terms which are used to bamboozle the unfamiliar trespasser into OO country: polymorphism, inheritance, abstraction, persistence.
This book teaches using a language free from complexity, in a way that is reminiscent of UML Distilled, all terms are explained well and in the text where required (as well as the glossary), there are liberal doses of heuristic lessons learned from experience to accompany each technique. Scott Ambler wants the reader to know when and why these techniques can be used to allow them to tailor their approaches to be as effective as they can be, and also explain the techniques as well as he can to allow them to be used.
In true primer fashion there is a small section on what to do next. Testers are pointed in the direction of Binder's Testing Object-Oriented Systems which I too would thoroughly recommend. The only obvious weakness in the text is that the recommended reading list is not annotated, but in the age of the internet, information is there if you look for it and there are pointers in the text on where to start, but one obvious point of call is Scott Ambler's web sites his personal one (www.ambysoft.com), or his company (www.ronin-intl.com)and there are pointers in the text itself.
A primer acts as a first step towards understanding. This primer is a best of breed and once finished, the reader will be able to use the techniques, and understand why they are used in the context of the entire Object Process.