Object-Oriented Reengineering Patterns

old and new front covers

About this book

Object-Oriented Reengineering Patterns collects and distills successful techniques in planning a reengineering project, reverse-engineering, problem detection, migration strategies and software redesign.

When the original edition published by Morgan Kaufmann in 2003 went out of print, the copyright reverted to the authors. We consequently made this volume available under a Creative Commons Attribution-ShareAlike 4.0 license.

You can download the book as a free PDF, or you can order a paperback copy from Lulu. The original hardcover is also available again from Amazon.


The documentation is missing or obsolete, and the original developers have departed. Your team has limited understanding of the system, and unit tests are missing for many, if not all, of the components. When you fix a bug in one place, another bug pops up somewhere else in the system. Long rebuild times make any change difficult. All of these are signs of software that is close to the breaking point.

Many systems can be upgraded or simply thrown away if they no longer serve their purpose. Legacy software, however, is crucial for operations and needs to be continually available and upgraded. How can you reduce the complexity of a legacy system sufficiently so that it can continue to be used and adapted at acceptable cost?

Based on the authors’ industrial experiences, this book is a guide on how to reverse engineer legacy systems to understand their problems, and then reengineer those systems to meet new demands. Patterns are used to clarify and explain the process of understanding large code bases, hence transforming them to meet new requirements. The key insight is that the right design and organization of your system is not something that can be evident from the initial requirements alone, but rather as a consequence of understanding how these requirements evolve.

This book speaks with experience. It gives you the building blocks for a plan to tackle a difficult code base and the context for techniques like refactoring. It is a sad fact that there are too few of these kinds of books out there, when reengineering is such a common event. But I’m at least glad to see that while there aren’t many books in this vein, this book is an example of how good they are.

— From the foreword by Martin Fowler

About the Authors

Serge Demeyer is a professor in the Department of Mathematics and Computer Science at the University of Antwerp in Belgium. Stéphane Ducasse is a research director at INRIA Lille in France. Oscar Nierstrasz is a professor emeritus of computer science at the University of Bern, and now works for feenk.com.

Published by Square Bracket Associates