analisi-disegno.com


Processo di sviluppo software iterativo

Non è certo chi sia stato il vero ideatore, ma nel 1988 compaiono una presentazione di Barry Boehm, ("A Spiral Model of Software Development and Enhancement", da cui è tratta l'immagine che segue), e il metodo Evo (evolutivo) di Tom Gilb.

figura processo a spirale

La spirale parte dal centro, con un insieme di obiettivi e requisiti iniziali per il progetto. Ogni ciclo di lavorazione (o iterazione) comporta lo svolgimento di una serie di attività:

Cioè le stesse attività che, in un processo di sviluppo a cascata, sono considerate come delle fasi da svolgersi in sequenza rigida, una dopo l'altra. Nel processo iterativo, in ogni iterazione (in ogni ciclo della spirale) vengono svolte le medesime (tipologie di) attività. Sembra oneroso e poco sensato? Sembra, ma non lo è.

L'articolazione di un progetto iterativo è guidata non da una rigida seguenza di fasi predefinite, ma da una gestione sistematica dei rischi di progetto, per arrivare alla loro progressiva diminuzione.

All'inizio di un progetto di sviluppo software, i rischi sono tipicamente molto elevati. Manca la chiarezza sui requisiti, le scelte sulle tecnologie e sulla strutturazione del sistema (le scelte architetturali) sono ipotesi non ancora consolidate. In alcuni casi, sono state scelte tecnologie innovative, per le quali manca però una sufficiente esperienza nel gruppo di progetto. In altri, anche a fronte di tecnologie conosciute, esistono incertezze legate alla necessità di fare fronte a un numero di utilizzatori contemporanei molto elevato, o a volumi di dati mai gestiti in precedenza.

Ogni iterazione, in un progetto iterativo, ha lo scopo di ridurre i rischi di progetto.

Inizialmente, tramite la costruzione di prototipi. Prototipi di interazione (interfacce utente), per affrontare i rischi legati all'incertezza sui requisiti. Prototipi architetturali (realizzazione e test di aspetti infrastrutturali), per affrontare i rischi legati alla scelta delle tecnologie ed i dubbi sulla strutturazione del sistema.

Successivamente, quando i rischi principali sono stati messi sotto controllo, ogni iterazione ha lo scopo di costruire, in modo progressivo, nuove porzioni del sistema, via via integrate con le precedenti, e di verificarle con il committente e le altre parti interessate. Sotto questo profilo, esiste più di un'affinità con il processo di sviluppo incrementale; ma anche una differenza significativa. Un processo iterativo, infatti, prevede una gestione sistematica del cambiamento di requisiti in corso d'opera. Prevede, in particolare, la "nascita" di nuovi requisiti espressi dal committente e dalle altre parti interessate al sistema come effetto dell'utilizzo del sistema stesso (delle sue parti già rese disponibili agli utilizzatori).

Diffusione del processo iterativo

I processi di sviluppo software attuali sono tutti di natura iterativa. Qualche esempio:

Quanto più il successo dei progetti software è critico per gli obiettivi di un'organizzazione, tanto più è probabile che il processo di sviluppo adottato abbia caratteristiche di natura iterativa.

Vantaggi

Gestione sistematica e progressiva riduzione dei rischi di progetto.

Rispetto al processo di sviluppo a cascata, in generale, maggiore qualità dei prodotti, e maggiore produttività dei progetti (costi e tempi inferiori).

Svantaggi

Nessuno, ma due punti di attenzione:


Pagina principale sui processi di sviluppo software


analisi-disegno.com , servizi e materiali per lo sviluppo dei sistemi software, a cura di Adriano Comai.