Alistair Sutcliffe
Lawrence Erlbaum Associates, 2002
ISBN: 0805839518 boards.
Buy it from Amazon.com
Buy it from Amazon.co.uk
This is a remarkable and daunting book (starting with the title), and it is a little difficult to know how to approach it. As if realizing this, Sutcliffe begins the preface not with a description of the intended audience or the book's message, but with:
If you have picked this book up and want to know what it is about, the answer is software reuse with a difference.
If we add that the book is also about (in no particular order) scenarios, requirements, object modelling, analogy and the basic mechanisms of human thought, something quite new called The Domain Theory and Object System Models (that's chapter 4), not to mention generic tasks and metadomains (that's chapter 5) and lots of deep insights into what knowledge is and how reuse can be based on tasks, claims and models, and the simple fact that much of it applies to systems of all types (not only software), then you'll either become confused or seriously excited.
This is indeed a book that sets out to rewrite a whole field of research and practice. The ideas are based on Sutcliffe's long-standing collaborations with other researchers, notably Neil Maiden (and other CREWS people), Jack Carroll and numerous workers in the realms of HCI and patterns, including Jim Coplien who wrote the Foreword.
What, then, is the Domain Theory itself?
From the outset the Domain Theory had an ambitious claim: that all software engineering problems could be described by a tractably small set of models that reprsented fundamental abstractions. The focus .. was requirements engineering..
In other words, many people are working on reusing design components such as software objects; but at deeper levels than things and design patterns are people's goals, tasks and reasons for doing things. Reusing these would indeed be powerful.
But isn't Michael Jackson's work on Problem Frames precisely about reusing requirements patterns?
Jackson's problem frames and domains are more abstract than the Domain Theory, which models generic knowledge closer to the real world and with more detail; however [it] does share Jackson's concern about defining the focus between the designed system and the external world.
Sutcliffe thus claims simultaneously to be powerfully generic (and hence abstract) and directly practical, giving enough detail for day-to-day reuse on real projects. This is startling stuff. Ultimately, any proposal for reuse succeeds or fails on the quality of the things that it suggests can be reused. A hundred pages of the book are therefore rightly devoted to appendices. These list in turn
It is difficult to judge the importance or practical impact of a book as radical as this. I suspect that Sutcliffe and his many more-or-less unsung co-workers are on to something major here - it is hard to imagine that a mere library of lumps of software will ever be sufficient in itself. On the other hand, it is rare for a book to make a serious impression on a world that is not especially literate or studious: Christopher Alexander's effect on the Gang of Four (another precursor of the Domain Theory) is a rare and perhaps fluky exception.
Jim Coplien's claim is however probably correct:
The foundations in this book are a treasure trove for contemporary design. ... I am confident that any student of design will find strong links between their research and experiences in the technical domain and the deep insights that Sutcliffe offers into who we are and how we work.
... but only if they read this book. If you want to be one of the lucky ones, get a copy now.
© Ian Alexander 2003