L' approccio incrementale utilizza un determinato numero di passaggi e lo sviluppo va dall'inizio alla fine in un percorso lineare di progressione.
Lo sviluppo incrementale avviene in fasi di progettazione, implementazione, test / verifica, manutenzione. Questi possono essere suddivisi ulteriormente in passaggi secondari, ma la maggior parte dei modelli incrementali segue lo stesso modello. Il modello Waterfall è un tradizionale approccio di sviluppo incrementale.
L' approccio iterativo non ha un numero prestabilito di passaggi, piuttosto lo sviluppo avviene in cicli.
Lo sviluppo iterativo è meno preoccupato di tenere traccia dell'avanzamento delle singole funzionalità. Invece, ci si concentra sulla creazione prima di un prototipo funzionante e sull'aggiunta di funzionalità nei cicli di sviluppo in cui le fasi di sviluppo dell'incremento vengono eseguite per ogni ciclo. La modellazione agile è un tipico approccio iterativo.
Il modello incrementale è stato originariamente sviluppato per seguire il modello tradizionale della catena di montaggio utilizzato nelle fabbriche. Sfortunatamente, la progettazione e lo sviluppo del software hanno poco in comune con la produzione di beni fisici. Il codice è il modello non il prodotto finito dello sviluppo. Le buone scelte di progettazione vengono spesso "scoperte" durante il processo di sviluppo. Bloccare gli sviluppatori in una serie di ipotesi senza il contesto appropriato può portare a progetti scadenti nel migliore dei casi o a un deragliamento completo dello sviluppo nel peggiore.
L'approccio iterativo sta diventando una pratica comune perché si adatta meglio al percorso naturale di progressione nello sviluppo del software. Invece di investire un sacco di tempo / sforzi nella ricerca del "design perfetto" basato su ipotesi, l'approccio iterativo è tutto sulla creazione di qualcosa che sia "abbastanza buono" per iniziare ed evolverlo per soddisfare le esigenze dell'utente.
tl; dr - Se stavi scrivendo un saggio sotto il Modello incrementale, proveresti a scriverlo perfettamente dall'inizio alla fine di una frase alla volta. Se lo scrivessi con il Modello Iterativo, sbaglieresti una bozza veloce e lavorerai per migliorarlo attraverso una serie di fasi di revisione.
Aggiornare:
Ho modificato la mia definizione di "approccio incrementale" per adattarlo a un esempio più pratico.
Se hai mai avuto a che fare con il contratto, l'approccio incrementale è il modo in cui vengono eseguiti la maggior parte dei contratti (specialmente per i militari). Nonostante le molte sottili variazioni del tipico "modello a cascata", la maggior parte / tutte sono applicate allo stesso modo nella pratica.
I passaggi sono i seguenti:
- Aggiudicazione
- Revisione preliminare del progetto
- Revisione del progetto critico
- Blocco delle specifiche
- Sviluppo
- Fielding / Integrazione
- Verifica
- Test di affidabilità
Il PDR e il CDR sono i punti in cui le specifiche vengono create e riviste. Una volta che la specifica è completa, dovrebbe essere congelata per prevenire lo scorrimento dell'ambito. L'integrazione si verifica se il software viene utilizzato per estendere un sistema preesistente. La verifica serve a verificare che l'applicazione corrisponda alle specifiche. L'affidabilità è un test per dimostrare che l'applicazione sarà affidabile a lungo termine, questo può essere specificato in modo molto simile a uno SLA (Service Level Agreement) in cui il sistema è tenuto a sostenere una certa percentuale di uptime (ex uptime del 99% per 3 mesi ).
Questo modello funziona alla grande per sistemi che sono semplici da specificare su carta ma difficili da produrre. Il software è molto difficile da specificare su carta con qualsiasi grado di dettaglio apprezzabile (ex UML). La maggior parte dei "tipi di attività" responsabili della gestione / contratti non riescono a rendersi conto che, quando si tratta di sviluppo del software, il codice stesso è la specifica. Le specifiche cartacee spesso richiedono tanto o più tempo / sforzo per scrivere quanto il codice stesso e di solito si dimostrano incomplete / inferiori nella pratica.
Approcci incrementali tentano di sprecare tempo / risorse trattando il codice stesso come una specifica. Invece di eseguire le specifiche della carta attraverso più passaggi di revisione, il codice stesso passa attraverso più cicli di revisione.