Sviluppo incrementale

Lo sviluppo incrementale si base sull'idea di sviluppare una implementazione iniziale, esporla agli utenti e perfezionarla attraverso molte versione, fino a che non si ottiene il risultato richiesto.

In questo caso: specifica, sviluppo e convalida sono intrecciate anziché separate, con feedback veloci tra le varie attività.

Lo sviluppo incrementale è l'approccio più comune per sviluppare sistemi di applicazioni e prodotti software. Questo approccio può essere:

  • Plan driven: in cui gli incrementi del sistema sono stabiliti in anticipo
  • Agile: in cui vengono identificati gli incrementi iniziali, ma lo sviluppo dei successivi incrementi dipende dall'avanzamento del lavoro e dalle priorità del cliente.

Lo sviluppo incrementale è migliore dell'approccio a cascata per quel tipo di progetti in cui è probabile che i requisiti cambino durante il processo di sviluppo. Questa modalità è simile a come affrontiamo i problemi: non abbiamo subito una soluzione finale ad un problema, ma giungiamo ad essa seguendo una serie di passaggi, se la soluzione non ci soddisfa, torniamo indietro e la riprendiamo per perfezionarla.

Caratteristiche di questo modello di sviluppo:

  • Apportare modifiche al progetto in fase di sviluppo è più economico e semplice
  • Ogni incremento apportato al progetto è parte dei requisiti richiesti dall'utente
  • Gli incrementi iniziali sono quei requisiti che hanno un'altra priorità per il cliente, questi possono essere valutati e convalidati dal cliente. Nell'eventualità in cui occorre apportare modifiche al progetto, viene modificato solo l'ultimo rilascio, e non le parti precedenti all'incremento corrente.
ProContro
Il costo dell'implementazione delle modifiche dei requisiti è ridottoIl processo non è visibile, i manager devono avere delle consegne regolari per misurare i progressi
É più facile ottenere feedback dal cliente sul lavoro di sviluppo che è stato fattoLa struttura dei sistemi tende a degradarsi quando vengono aggiunti nuovi incrementi. Per ridurre il livello di degrado strutturale, i metodi agili consigliano un costante refactoring (miglioramento della struttura) del software
É possibile consegnare in anticipo al cliente una versione utilizzabile del software, anche se non sono state incluse tutte le sue funzionalitàNei sistemi grandi e complessi, dove diversi team cooperano per sviluppare diverse parti del progetto, le responsabilità devono essere definite in modo chiaro. Ciò richiede una pianificazione in anticipo

Nella fase di progettazione ricopre una buona fetta di importanza il Riutilizzo del codice. Ovvero componenti software o applicativi software pre-esistenti vengono integrati al progetto che si vuole sviluppare per commissione. Le fasi principali dell'integrazione e della configurazione sono:

  • Specifica dei requisiti (iniziali del sistema)
  • Ricerca e valutazione del software che possono fornire le funzionalità richieste dal cliente
  • Perfezionamento dei requisiti utilizzando le informazioni sul software trovato
  • Configurazione del sistema delle applicazioni per creare il nuovo sistema
  • Adattamento e integrazione dei componenti se non disponibile un sistema pronto all'uso
    I vantaggi del riutilizzo del software riduce la quantità di codice da sviluppare, riducendo i costi e rischi e portando a consegne più veloci. In questo contesto, il software riutilizzato potrebbe non soddisfare pienamente i requisiti dell'utente che potrebbero essere più complesso, in tal caso si può giungere a qualche compromesso nei requisiti stessi. Infine un atro contro è quello di non avere pieno controllo sull'evoluzione del componente integrato.

Statisticamente il metodo di sviluppo incrementale ha fatto si che venissero prodotti in percentuale maggiore progetti di successo e di maggiore produttività e meno inclini a difetti.

Lo sviluppo incrementale è utilizzato da modelli basati sullo Sviluppo iterativo ed evolutivo.