Gardening Your Architecture, Part 2: Reengineering and Rewriting

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]  Frank Buschmann Gardening Your Architecture, Part 1: Refactoring , 2011, IEEE Software.

[2]  Mikael Lindvall,et al.  Evaluating software architectures , 2004, Adv. Comput..

[3]  Oscar Nierstrasz,et al.  Object-oriented reengineering patterns , 2004, Proceedings. 26th International Conference on Software Engineering.