ACCU Home page ACCU Conference Page
Search Contact us ACCU at Flickr ACCU at GitHib ACCU at Google+ ACCU at Facebook ACCU at Linked-in ACCU at Twitter Skip Navigation

Search in Book Reviews

The ACCU passes on review copies of computer books to its members for them to review. The result is a large, high quality collection of book reviews by programmers, for programmers. Currently there are 1918 reviews in the database and more every month.
Search is a simple string search in either book title or book author. The full text search is a search of the text of the review.
    View all alphabetically
Analysis Patterns
Martin Fowler
0 201 89542 0
Rob Henley
patterns; modelling languages
Appeared in:
A key point about patterns is that they are discovered, not invented. What Martin Fowler has done here is to distil and capture his experience of modelling a number of domains (principally healthcare and finance) into a book which is exceptionally clear and incisive.

Analysis patterns don't assume any particular design approach, but model the relationships between entities in the problem space. In general, patterns offer the possibility of capturing 'proven good practice' in a useful form. Civil engineers don't start from scratch when they build a bridge and by and large their bridges don't fall down even though each specific instance of a bridge is unique in some way.

So a pattern is a kind of 'recipe', but sufficiently general to be applied outside the domain in which it was discovered. It seems to me that many of the patterns in this book are actually quite tightly bound to a specific domain (though not to a specific implementation), so perhaps these would be more accurately called domain patterns.

The book is organised around chapters covering specific domains such as Corporate Finance. Each introduces a number of patterns using diagrams and examples. There is a wealth of domain information here too and I found the chapters on Trading and Derivative Contracts particularly helpful in cutting through the morass of strange vocabulary. Many of the diagrams used could be taken for entity- relationship models, though the emphasis here is very much on objects. The other diagrams used have a lot in common with the UML; for example interaction diagrams and packages.

In many cases the model is driven down to a suggested design in terms of collaborating objects, sometimes with an outline in Smalltalk or in terms of a Gang-Of-Four design pattern. Two chapters specifically address the issue of converting an analysis pattern into a concrete design. It seems to me that a key advantage of using an analysis pattern would be that the analyst can have a level of confidence in its implementation.

Not all the chapters are domain specific. There are good discussions of layered architectures (client-server vs 3 tier) and the use of application facades to separate presentation and business logic. The book is supported with a web page for further discussion and the author is committed to the idea that this should be 'a living book', which seems entirely appropriate for a book on patterns.

This book is excellent value for money and I would strongly recommend it to anyone with an interest in analysis and design. If you happen to be working in an accounting or trading domain it is going to be invaluable.