Object-oriented Reengineering Patterns
A guide on how to reverse engineer legacy systems to understand their problems, and then reengineer those systems to meet new demands. It uses patterns to clarify and explain the process of understanding large code bases, hence transforming them to meet new requirements.