analisi-disegno.com

Homepage  | Blog | Per essere avvisati in caso di nuovi documenti | In English


Processo di sviluppo software iterativo

Non è certo chi sia stato il vero ideatore, ma una delle prime presentazioni è quella di Barry Boehm, nel 1988 ("A Spiral Model of Software Development and Enhancement", in "Computer", May 1988).

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

  • gestione dei requisiti
  • analisi
  • design
  • codifica
  • test

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 dei rischi di progetto, attraverso iterazioni volte alla loro progressiva riduzione.

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

Svantaggi

Nessuno, piuttosto due punti di attenzione.

La pianificazione dei progetti condotti in modo iterativo è più complessa. Il piano di un processo iterativo evolve durante tutta la durata del progetto stesso, e richiede un controllo sistematico degli avanzamenti.

Un punto cruciale per il successo di un progetto iterativo è la collaborazione sistematica tra committenti (e altre parti interessate) e gruppo di progetto.

Torna a pagina introduttiva processo


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