Premessa – L’Architettura Evolutiva ed evoluzione del software
Architettura Evolutiva
L’idea che l’architettura possa sostenere il cambiamento è descritta nel libro “Building Evolutionary Architectures“, giunto alla seconda edizione.
L’ “Architettura Evolutiva“, meglio Evolutionary Architecture, si divide sostanzialmente in due aree: meccanica e strutturale.
- Mechanics: l’insieme delle pratiche ingegneristiche e delle verifiche che consentono a un’architettura di evolvere. In quest’area rientrano pratiche note quali test, l’adozione di metriche e hosting.
- Structure: l’altro aspetto di una Architettura Evolutiva tratta la struttura, gli aspetti topologici di un progetto software. Verifica quali stili architetturali meglio si addicono nel costruire un sistema in grado di evolvere.
L’evoluzione del software
Come possiamo misurare il deterioramento di un sistema nel tempo? Esiste un indice, o una semplice indicazione, che ci possa dimostrare in maniera deterministica che il software sviluppato stia degradando in termini di prestazioni, di sicurezza e di scalabilità?
Con le espressioni “bit rot” o “software rot” ci si riferisce a un lento deterioramento della qualità del software nel corso del tempo, o una diminuzione della sua reattività che finirà per rendere il software difettoso, inutilizzabile e/o da aggiornare. Non si tratta di un fenomeno prettamente fisico, nel senso che il software non decade realmente, ma chi lo utilizza ne rileva una mancanza di reattività, o semplicemente una mancanza di aggiornamento rispetto all’ambiente mutevole in cui si trova. In pratica, “il software appare vecchio“!
È qui che entra in gioco il concetto di fitness function.