Object-oriented Reengineering Patterns
Serge Demeyer
Computers & Technology
Object-oriented Reengineering Patterns
Free
Description
Contents
Reviews

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.

Print editions available via the authors' web site.

Language
English
ISBN
978-3-9523341-2-6
Foreword
Preface
I Introduction
Reengineering Patterns
Why do we Reengineer?
The Reengineering Lifecycle
Reengineering Patterns
The Form of a Reengineering Pattern
A Map of Reengineering Patterns
II Reverse Engineering
Setting Direction
Agree on Maxims
Appoint a Navigator
Speak to the Round Table
Most Valuable First
Fix Problems, Not Symptoms
If It Ain't Broke, Don't Fix It
Keep It Simple
First Contact
Chat with the Maintainers
Read all the Code in One Hour
Skim the Documentation
Interview During Demo
Do a Mock Installation
Initial Understanding
Analyze the Persistent Data
Speculate about Design
Study the Exceptional Entities
Detailed Model Capture
Tie Code and Questions
Refactor to Understand
Step Through the Execution
Look for the Contracts
Learn from the Past
III Reengineering
Tests: Your Life Insurance!
Write Tests to Enable Evolution
Grow Your Test Base Incrementally
Use a Testing Framework
Test the Interface, Not the Implementation
Record Business Rules as Tests
Write Tests to Understand
Migration Strategies
Involve the Users
Build Confidence
Migrate Systems Incrementally
Prototype the Target Solution
Always Have a Running Version
Regression Test After Every Change
Make a Bridge to the New Town
Present the Right Interface
Distinguish Public from Published Interface
Deprecate Obsolete Interfaces
Conserve Familiarity
Use Profiler Before Optimizing
Detecting Duplicated Code
Compare Code Mechanically
Visualize Code as Dotplots
Redistribute Responsibilities
Move Behavior Close to Data
Eliminate Navigation Code
Split Up God Class
Transform Conditionals to Polymorphism
Transform Self Type Checks
Transform Client Type Checks
Factor out State
Factor out Strategy
Introduce Null Object
Transform Conditionals into Registration
IV Appendices
Thumbnail patterns
Testing Patterns
Retest Persistent Problems
Test Fuzzy Features
Test Old Bugs
Refactorings
Encapsulate Field
Extract Method
Move Method
Rename Attribute
Rename Method
Replace Conditional with Polymorphism
Design Patterns
Abstract Factory
Adapter
Facade
Factory Method
Flyweight
Null Object
Quantity
Singleton
State
State Patterns
Strategy
Template Method
Visitor
The book hasn't received reviews yet.