Object-Oriented Reengineering Patterns

There are many patterns that are not specifically concerned with reengineering, but are still relevant to the reengineering process. In this appendix we have listed only those patterns that are specifically referred to at some point in this book. We have grouped them into the following three categories:
Testing patterns. These patterns help you to focus your testing efforts. Our principal source is a pattern language by DeLano and Rising [DeLa98], although of course a vast literature is available on the subject. Binder, for example, devotes an entire book to the subject [Bind99].
Refactoring patterns. These patterns focus on individual refactoring steps that you might apply during a reengineering project, or that you might just as well apply during any forward engineering project. Our principal sources are Fowler et al. [Fowl99], and Roberts's Ph.D. thesis [Robe99].
Design patterns. Very frequently the result of a reengineering operation is to put a particular design pattern into place. Here we remind you of some of the most common design patterns that pop up in a reengineering context. Our main source is, of course, the Design Patterns book [Gamm95].
Problem: How do you know what areas of the system should receive concentrated testing, irrespective of the features being implemented?
Solution: Keep a list of persistent problem areas and test cases to verify them, not just for resolving the current problems but also for use in subsequent testing. Test these areas...