Prendersi cura dell’architettura, nel tempo, come se fosse un giardino. “Gardening Your Architecture” è il titolo di due articoli di Frank Buschmann su IEEE Software, July/August e September/October 2011.
Analogie e differenze tra refactoring (ristrutturazioni locali, limitate, mirate), reengineering (ristrutturazioni complessive) e rewriting (rifacimento) delle applicazioni.
In particolare vengono elencate le motivazioni per il reengineering, “an activity that protects existing core investments”:
“There are four main reasons to contemplate reengineering:
- Refactoring is insufficient for achieving the required qualities.
- Bug fixes in one place repeatedly cause bugs in other places.
- New operational or functional requirements can’t be realized appropriately within the given architecture.
- The business case for the system changed.”
Buschmann conclude con un confronto tra le tre forme di intervento:
- “Continuously practice refactoring. It’s cheap and (mostly) under the radar, and helps minimize the need for reengineering.
- Consider reengineering when refactoring doesn’t help or is inappropriate. But be aware that it’s expensive and requires much ritual.
- Consider rewriting when reengineering doesn’t help. But know that it’s often very risky.”