Evoluzione del software

In questa fase il software può essere modificato in qualsiasi momento, durante e dopo lo sviluppo del sistema. Per come si sta evolvendo l'ingegneria del software da alcuni anni a questa parte, ha più senso vedere lo sviluppo e la manutenzione come un tutt'uno, in cui il software viene modificato continuamente nel corso della sua vita per adeguarlo ai cambiamenti dei requisiti e delle necessità dei clienti.

In un modo o nell'altro, il software subirà delle modifiche e il progetto dovrà essere rilavorato, per ridurre i costi collegati a questo fenomeno, si usano due approcci:

  • Anticipazione dei cambiamenti
  • Tolleranza dei cambiamenti: implica una qualche forma di sviluppo incrementale

Può verificarsi un cambiamento dei requisiti del sistema che si sta sviluppando, per richiesta dell'utente, del mercato e quindi dei tempi. Qui entrano in gioco:

  • La prototipazione del sistema: il sistema (o una parte di esso) viene sviluppata rapidamente per verificare i requisiti del cliente e la fattibilità delle scelte di progettazione, questo consente di lavorare sulla struttura di un sistema già convalidato in cui devono essere perfezionati gli altri requisiti
  • Consegna incrementale: vengono consegnati al cliente gli incrementi del sistema per essere commentati e provati

Esempio: il cliente (una banca) vuole che venga sviluppato un sistema che consenta di prelevare i contanti da uno sportello automatico, ma che consenta anche di versare delle banconote, degli assegni, che consente di pagare le bollette e di fare le ricariche telefoniche.
Di questo, il progettista, svilupperà una struttura del progetto in cui funziona, per esempio, solo il prelievo, e in cui, col tempo, verranno rilasciate versioni che implementano gli altri requisiti.

In questo contesto il refactoring è un altro importante meccanismo che supporta la tolleranza ai cambiamenti.

Refactoring

Il procedimento attraverso cui porzioni di codice vengono modificate al fine di semplificare la leggibilità e la riusabilità del codice, senza modificarne il suo comportamento.