9. Software Maintenance: Enhancing Legacy Software Using Refactoring and Agile Methods¶
There probably isn’t a “best” way to build the system, or even any major part of it; much more important is to avoid choosing a terrible way, and to have clear division of responsibilities among the parts.
—Butler Lampson, Hints for Computer System Design, 1983
- 9.1. What Makes Code “Legacy” and How Can Agile Help?
- 9.2. Exploring a Legacy Codebase
- 9.3. Establishing Ground Truth With Characterization Tests
- 9.4. Comments and Commits: Documenting Code
- 9.5. Metrics, CodeSmells, and SOFA
- 9.6. Method-Level Refactoring: Replacing Dependencies With Seams
- 9.7. The Plan-And-Document Perspective on Working With Legacy Code
- 9.8. Fallacies and Pitfalls
- 9.9. Concluding Remarks: Continuous Refactoring