In our first book, Use Case Driven Object Modeling with UML, we suggested that the difference between theory and practice was that in theory there is no difference between theory and practice, but in practice, there is. In that book, we attempted to reduce OOAD modeling theory to a practical subset that was easy to learn and pretty much universally applicable, based on our experience in teaching this material to people working on hundreds of projects since about 1993.
Now, two years after hitting the shelves, that book is in its fifth printing. But even though our work has been favorably received, it seems like the job isn't all the way done yet. "We need to see more use case and UML modeling examples" is a phrase we've been hearing fairly often over the last couple of years. And, as we've used the first book as the backbone of training workshops where we apply the theory to real client projects, it's become clear that the process of reviewing the models is critically important and not well understood by many folks.
So, although we present a fairly extensive example in our first book, we convinced Addison-Wesley to let us produce this companion workbook, in which we dissect the design of an Internet bookstore, step-by-step, in great detail. This involves showing many common mistakes, and then showing the relevant pieces of the model with their mistakes corrected. We chose an Internet Bookstore because it's relevant to many of today's projects in the Web-driven world, and because we've been teaching workshops using this example and, as a result, had a rich source of classroom UML models with real student mistakes in them.
We collected some of our favorite mistakes—that is, the kind of mistakes we saw getting repeated over and over again—and built this workbook around those models. And then we added three new chapters about reviews—one on requirements reviews, one on preliminary design reviews, and one on critical design reviews. What really makes this book unique, though, is the fact that you, the reader, get to correct the mistakes.