This Article 
 Bibliographic References 
 Add to: 
Gardening Your Architecture, Part 2: Reengineering and Rewriting
September/October 2011 (vol. 28 no. 5)
pp. 21-23
Frank Buschmann, Siemens Corporate Technology
Reengineering and rewriting are two common approaches for improving system quality—in addition to refactoring, which the last installment of this column explored. Reengineering is a systematic approach to evolve existing software to exhibit new behavior, features, and operational quality. Refactoring and reengineering aren't the same, and they're also different from rewriting—the most radical change—which involves wiping the slate clean and starting over.

1. F. Buschmann, "Gardening Your Architecture, Part 1: Refactoring" IEEE Software, vol. 28, no. 4, 2011, pp. 92–94.
2. S. Demeyer, S. Ducasse, and O. Nierstrasz, Object-Oriented Reengineering Patterns, Morgan-Kaufmann, 2002.
3. P. Clements, R. Kazman, and M. Klein, Evaluating Software Architectures, Addison-Wesley, 2002.

Index Terms:
refactoring, reengineering, rewriting, functional quality, developmental quality, operational quality, software, software engineering
Frank Buschmann, "Gardening Your Architecture, Part 2: Reengineering and Rewriting," IEEE Software, vol. 28, no. 5, pp. 21-23, Sept.-Oct. 2011, doi:10.1109/MS.2011.97
Usage of this product signifies your acceptance of the Terms of Use.