Review: Object-Oriented Re-engineering Patterns

Object-Oriented Re-engineering Patterns

A practical guide to reverse engineering

Reviewed by Major Keary

From the foreword to Object-Oriented Re-engineering Patterns:

"For a long time it has puzzled me that most books on
software processes talk about what to do when you are starting from a
blank sheet of editor screen. It's puzzled me because that's not the
most common situation that people are in when they are writing code.
Most people have to make changes to an existing code base, even if it's
their own. In an ideal world this code base is well designed and well
factored, but we all know how often the ideal world appears in our

The term, well factored, relates to code design and is
probably best explained by the definition of refactoring, which
"is the process of changing a software system in such a way that it
does not alter the external behaviour of the code yet improves its
internal structure" [Martin Fowler et al., Refactoring:
Improving the Design of Existing Code
, Addison-Wesley, 1999].

The book's authors are leading academics at European universities
and have been actively involved in industrial software
re-engineering in an object-oriented context. Even though the book is about 're-engineering', it is a valuable resource for those engaged
in—ethical, of course—reverse engineering.

Legacy software is often crucial to a business, but "may have been
developed using and outdated programming language or an obsolete
development method. Most likely it has changed hands several times and
shows signs of many modifications and adaptations". Anyone who was
involved in preparing for the Y2K transition will
appreciate those issues. The authors list reasons for re-engineering:
unbundle a monolithic system; improve performance; port to a new
platform; extract design for the purpose of a new implementation; make
use of new technology or standards; and "reduce human dependency by
documenting knowledge about the system and making it easier to

The book is not a source of code examples that can be modified to some
particular task. There are some code examples, but the focus is on how
to identify the need for re-engineering, the techniques, use of
re-engineering patterns, and other issues such as migration strategies.

The term, pattern, is not used in the sense of pattern
, but derives from "design, plan, model, etc., from which a
thing is to be made" [Shorter Oxford Dictionary]
and is employed here to mean, "a general solution that resolves a number of
forces, but must be applied in a unique way to each problem according
to the specific circumstances". The book presents about fifty patterns
that are grouped under chapter topics; they are preceded by concise
explanatory notes and each one takes the format: problem; solution;
tradeoffs (pros and cons); rationale; known uses; and related patterns.

An essential text for anyone involved in re-engineering projects. It
is also recommended to those responsible for making decisions in
respect of software re-engineering; reader's don't need much technical
background to appreciate the issues.

Serge Demeyer, Stéphanie Ducasse, and Oscar Nierstrausz: Object-Oriented Reengineering Patterns
ISBN 1-55860-639-4
Published by Morgan
Kaufmann, hc., 282 pp., RRP $140.25 incl. GST

This title is available direct from Elsevier Australia Customer
tel. 1800 263 951, fax 02 9517 2249,
or email