This Article 
 Bibliographic References 
 Add to: 
Gardening Your Architecture, Part 1: Refactoring
July/August 2011 (vol. 28 no. 4)
pp. 92-94
Refactoring has a more precise definition than common practice might suggest: it's a change that improves the developmental quality of some part of a system while preserving its functional behavior. Refactoring isn't limited to code detail but can range up to the larger scale of a system's software architecture. Yet refactoring is limited in what qualities it can help improve. It can also do more harm than good when practiced informally or ad hoc or when it's used as a synonym for any form of change in a system.

1. M. Fowler et al., Refactoring: Improving the Design of Existing Code, Addison-Wesley, 1999.
2. F. Buschmann, "Learning from Failure, Part 3: On Hammers and Nails, and Falling in Love with Technology and Design," IEEE Software, vol. 27, no. 2, 2010, pp. 49–51.
3. F. Buschmann and K. Henney, "Five Considerations for Software Architecture, Part 2," IEEE Software, vol. 27, no. 4, 2010, pp. 12–14.
4. F. Buschmann, "Unusable Software Is Useless, Part 2," IEEE Software, vol. 28, no. 2, pp. 92–94.

Index Terms:
refactoring, code quality, design quality, developmental quality
Frank Buschmann, "Gardening Your Architecture, Part 1: Refactoring," IEEE Software, vol. 28, no. 4, pp. 92-94, July-Aug. 2011, doi:10.1109/MS.2011.76
Usage of this product signifies your acceptance of the Terms of Use.