Sviluppo iterativo ed evolutivo

Nell'approccio iterativo lo sviluppo è organizzato in una serie di mini-progetti brevi, di lunghezza fissa, chiamati iterazioni. Il risultato di ogni iterazione è un sistema eseguibile, testato e integrato, ance se parziale. Ciascuna iterazione comprende le proprie attività di analisi dei requisiti, progettazione, implementazione e test.
Pasted image 20230228232145.png
Lo sviluppo è:

  • incrementale: il sistema cresce in modo, appunto, incrementale nel tempo, iterazione dopo iterazione
  • evolutivo: il feedback e l'adattamento (rispetto ad esso) fanno evolvere il progetto dirigendolo verso la sua forma finale e completa

In questo tipo di procedimento non vi è fretta di iniziare la codifica, né una fase di progettazione lunga che provi a perfezionare tutti i dettagli della progettazione prima della programmazione. Il risultato di ciascuna iterazione è un sistema eseguibile, ma incompleto. Sarà completo dopo qualche iterazione. Il risultato di un'interazione non è un prototipo, ma un sottoinsieme del sistema finale. Ciascuna iterazione comporta la scelta di un piccolo gruppo di requisiti da sviluppare, una rapida progettazione, implementazione e test. Questo permette dei feedback rapidi (è stata sviluppata un piccola porzione dei requisiti) da parte degli utenti, degli sviluppatori e dei test. Ogni iterazione è un'opportunità per modificare o adattare una migliore comprensione dei requisiti al progetto. Grazie ai feedback il sistema evolve e converge verso i requisiti corretti.

Esempi di processi di sviluppo iterativo ed evolutivo sono: UP (di cui stiamo affrontando l'argomentazione), Extreme Programming (XP) e Scrum.
I vantaggi di questo modello di sviluppo sono:

  • Riduzione precoce dei rischi maggiori (tecnici, requisiti, obiettivi, usabilità,...)
  • Progresso visibile fin dall'inizio
  • Feedback precoce
  • Gestione della complessità (evita la "paralisi da analisi")

Fondamentali sono passi piccoli: iterazioni da due a sei settimane, feedback rapido e adattamento.
Un'iterazione di lunghezza fissata (come si vede nell'immagine) è detta timeboxed.

Qui un esempio di un progetto iterativo che utilizza il modello UP, composto da 20 iterazioni prima del rilascio al cliente (dal libro di testo sezione 2.5).

Nei processi iterativi, in ogni iterazione viene stabilito il piano di lavoro per una sola iterazione, questa viene detta pianificazione iterativa o adattiva:

  • UP: alla fine di ciascuna iterazione per l'iterazione successiva
  • Scrum: all'inizio di ciascuna iterazione, per stabilire il piano dell'iterazione corrente
    La pianificazione è guidata dal rischio e guidata dal cliente: le iterazioni iniziali vengono scelte per identificare e attenuare i rischi maggiori e per costruire e rendere visibili le caratteristiche a cui il cliente tiene di più. Lo sviluppo guidato dal rischio comprende più nello specifico la pratica dello sviluppo iterativo centrato sull'architettura, nel senso che le prime iterazioni si concentrano sulla costruzione, il test e la stabilizzazione del nucleo dell'architettura. Infatti, è un rischio molto alto non avere una base architetturale solida.

Una volta stabiliti gli obiettivi dell'iterazione essi non cambiano in corso di sviluppo. Il requisiti sono bloccati, il team non può essere interrotto o disturbato durante una iterazione.