REVIEW - Analysis Patterns - Reusable Object Models

Title:

Analysis Patterns - Reusable Object Models

Author:

Martin Fowler

ISBN:

0201895420

Publisher:

Addison-Wesley Professional (1997)

Pages:

357pp

Reviewer:

Rob Henley

Reviewed:

April 1998

Rating:

★★☆☆☆

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.


Book cover image courtesy of Open Library.