Nel modello iterativo, il processo iterativo inizia con una semplice implementazione di un piccolo insieme di requisiti del software e migliora iterativamente le versioni in evoluzione finché il sistema completo è implementato e pronto per essere distribuito.
Un modello di ciclo di vita iterativo non cerca di iniziare con una specifica completa dei requisiti. Invece, lo sviluppo inizia specificando e implementando solo una parte del software, che viene poi rivista per identificare ulteriori requisiti. Questo processo viene poi ripetuto, producendo una nuova versione del software alla fine di ogni iterazione del modello.
Modello iterativo – Progettazione
Il processo iterativo inizia con una semplice implementazione di un sottoinsieme dei requisiti del software e migliora iterativamente le versioni in evoluzione finché il sistema completo è implementato. Ad ogni iterazione, vengono apportate modifiche al design e vengono aggiunte nuove capacità funzionali. L’idea di base di questo metodo è di sviluppare un sistema attraverso cicli ripetuti (iterativo) e in porzioni più piccole alla volta (incrementale).
La seguente illustrazione è una rappresentazione del modello iterativo e incrementale –
Lo sviluppo iterativo e incrementale è una combinazione sia del design iterativo o metodo iterativo che del modello di costruzione incrementale per lo sviluppo. “Durante lo sviluppo del software, più di una iterazione del ciclo di sviluppo del software può essere in corso allo stesso tempo”. Questo processo può essere descritto come un approccio di “acquisizione evolutiva” o “build incrementale”.”
In questo modello incrementale, l’intero requisito è diviso in varie build. Durante ogni iterazione, il modulo di sviluppo passa attraverso le fasi di requisiti, progettazione, implementazione e test. Ogni release successiva del modulo aggiunge funzioni alla release precedente. Il processo continua fino a quando il sistema completo è pronto secondo il requisito.
La chiave per un uso di successo di un ciclo di vita iterativo di sviluppo del software è la convalida rigorosa dei requisiti, e il test di verifica & di ogni versione del software contro quei requisiti all’interno di ogni ciclo del modello. Come il software si evolve attraverso cicli successivi, i test devono essere ripetuti ed estesi per verificare ogni versione del software.
Modello iterativo – Applicazione
Come altri modelli SDLC, lo sviluppo iterativo e incrementale ha alcune applicazioni specifiche nell’industria del software. Questo modello è più spesso usato nei seguenti scenari –
-
I requisiti del sistema completo sono chiaramente definiti e compresi.
-
I requisiti principali devono essere definiti; tuttavia, alcune funzionalità o miglioramenti richiesti possono evolvere col tempo.
-
C’è un vincolo di tempo per il mercato.
-
Una nuova tecnologia viene usata e viene imparata dal team di sviluppo mentre lavora al progetto.
-
Le risorse con le competenze necessarie non sono disponibili e sono pianificate per essere usate su base contrattuale per iterazioni specifiche.
-
Ci sono alcune caratteristiche e obiettivi ad alto rischio che potrebbero cambiare in futuro.
Modello iterativo – Pro e contro
Il vantaggio di questo modello è che c’è un modello funzionante del sistema in una fase molto iniziale dello sviluppo, che rende più facile trovare difetti funzionali o di progettazione. Trovare i problemi in una fase iniziale dello sviluppo permette di prendere misure correttive in un budget limitato.
Lo svantaggio di questo modello SDLC è che è applicabile solo a progetti di sviluppo software grandi e voluminosi. Questo perché è difficile rompere un piccolo sistema software in ulteriori piccoli incrementi/moduli utilizzabili.
I vantaggi del modello SDLC iterativo e incrementale sono i seguenti –
-
Alcune funzionalità funzionanti possono essere sviluppate rapidamente e presto nel ciclo di vita.
-
I risultati sono ottenuti presto e periodicamente.
-
Lo sviluppo parallelo può essere pianificato.
-
I progressi possono essere misurati.
-
Meno costoso cambiare lo scopo/requisiti.
-
Test e debugging durante le iterazioni più piccole è facile.
-
I rischi sono identificati e risolti durante l’iterazione; e ogni iterazione è una pietra miliare facilmente gestibile.
-
Più facile gestire il rischio – la parte ad alto rischio è fatta per prima.
-
Con ogni incremento, il prodotto operativo è consegnato.
-
I problemi, le sfide e i rischi identificati da ogni incremento possono essere utilizzati/applicati all’incremento successivo.
-
L’analisi del rischio è migliore.
-
Supporta il cambiamento dei requisiti.
-
Il tempo operativo iniziale è minore.
-
Più adatto per progetti grandi e mission-critical.
-
Durante il ciclo di vita, il software è prodotto presto, il che facilita la valutazione e il feedback del cliente.
Gli svantaggi del modello SDLC iterativo e incrementale sono i seguenti –
-
Possono essere richieste più risorse.
-
Anche se il costo del cambiamento è minore, ma non è molto adatto a requisiti mutevoli.
-
È richiesta più attenzione da parte del management.
-
Possono sorgere problemi di architettura o progettazione del sistema perché non tutti i requisiti sono raccolti all’inizio dell’intero ciclo di vita.
-
La definizione degli incrementi può richiedere la definizione del sistema completo.
-
Non è adatto ai progetti più piccoli.
-
La complessità di gestione è maggiore.
-
La fine del progetto può non essere nota, il che è un rischio.
-
Sono richieste risorse altamente qualificate per l’analisi del rischio.
-
Il progresso del progetto dipende molto dalla fase di analisi del rischio.