Home Page -------------------
[Home Page] - [Reviews Main]
-------------------

Book Review
Object-Oriented Development (The Fusion Method) by Coleman
Highly Recommended
ISBN: 0-13-338823-9       Publisher: Prentice Hall       Pages: 312pp       Price: £31-95
Categories:   object oriented    
Reviewed by Kevlin Henney in C Vu 7-1 (Nov 1994)
There is a great deal of activity in the area of OO development. That OO methods are in no short supply is a consequence of this is. The Fusion method has been developed by members of HP Labs in Bristol to address general development needs. The method is used both within HP and by a number of outside companies.

The approach taken by the book is direct and no-nonsense. In 300 or so pages the book addresses analysis, design and implementation. There are plenty of examples and code is given in Eiffel and C++ - I was relieved to see that no space had been wasted on attempting to implement OO designs in FORTRAN, as some authors do (notably Meyer and Rumbaugh et al) and with results that are both suspect OO and questionable FORTRAN.

Another relief was that not only were DFDS not used anywhere, they were actually warned against! In my opinion they have no place in any OO method (as some have tried to claim) and have been described as a notation in search of semantics.

In brief, the approach taken by Fusion is to initially develop an object model. The system boundary is drawn around part of the overall object model to give the system object model. The system interface is established using scenarios. The interface model is developed further using operational specification and a life-cycle model.

The operational model uses a number of ideas from formal methods and Meyer's notion of 'design by contract'. Their approach is as rigorous as you can get without entering the debate on formal methods. I am, however, less convinced by the life-cycle model used. It is expressed in regular expressions, as in JSD, but as formulae rather than a graphical notation. Given that there is a simple graphical representation, their notation is definitely less readable by comparison.

Design involves elaboration of the system object model to create object interaction graphs (OIGs) that implement system operations in collaboration with other objects reflected within the system. The OIG notation is one of the clearest and most usable I have come across. Object visibility and lifetime are also given a thorough treatment.

I will admit that my areas of interest do not cover databases and I was not sad to see that Fusion, unlike some methods, does not spend trees on attempting to flatten and disassemble the elegant analysis model you have so carefully constructed.

Given that the foreword is by Bertrand Meyer, I was a little surprised to see that the Eiffel examples were in an older dialect of Eiffel. Chris Dollin, one of the authors and an ACCU member, told me that this was due to pressure of time. He also explained that the varying quality of the C++ was due to different authorship and minor oversights before going to press. It is one of the few books that acknowledges problems arising from default copy constructors and assignment operators.

In summary, the book is well written and suffers neither the fresh-from-the- acetate feel of some books nor the aimless waffle of others. Beyond what I have already said, my only criticisms would related to scalability and handling of concurrency and distribution. I would, however, whole heartedly recommend it as important reading for all serious developers.


Last Update - 13 May 2001.

To link to this review, please use the URL: http://www.accu.org/bookreviews/public/reviews/o/o000889.htm

Copyright © The Association of C & C++ Users 1998-2000. All rights reserved.

Mirrored from http://www.accu.org/