Processo software e modelli di sviluppo

Processo software e modelli di sviluppo

Il processo software descrive tutta la sequenza delle varie fasi (fasi del processo software) che si susseguono per arrivare allo sviluppo di un sistema software che, essendo un sistema complesso, non può avere sviluppo immediato. E’ una dinamica temporale che decide in che sequenza far susseguire le diverse fasi. Il processo è talvolta detto anche “ciclo di vita”.

Ciò che studieremo sono i diversi modelli (schemi) secondo cui le fasi si alternano.

Nel corso degli anni sono stati sviluppati vari modelli, ma si può dire che NON c’è un modello migliore in senso assoluto rispetto a un altro, poiché va sempre contestualizzato e scelto in base al contesto. In un contesto di “non-modello” ossia il code-‘n fix, si colloca lo sviluppo dell’ingegneria del software. Il code-‘nfix era formato da attività casuali, non organizzate, che dava vita a risultati come progetti non gestibili, caotici, difficilmente modificabili.

Modello a cascata

I primi modelli che vennero creati rientrano nella categoria detta PROCESSO PRESCRITTIVO, cioè un processo secondo fasi predefinite.

Il primo è il MODELLO A CASCATA, nato nel 1970, secondo cui le fasi si susseguono in maniera sequenziale. La caratteristica principale ed il grande vincolo di questo modello è il non poter ritornare a fasi precedenti. Ad esempio se si riscontrava un errore in fase di programmazione non si poteva rifare l’analisi ma si doveva procedere con il rifare da capo tutto il codice.

Processo software e modelli di sviluppo - Modello a cascata
Processo software e modelli di sviluppo – Modello a cascata

La prima fase è la studio di fattibilità, che non è una fase informatica, ma è una verifica di costi e risorse che mi permette di capire ciò che posso o non posso fare. La fase successiva è quella di analisi e specifica dei requisiti, ossia uno studio del dominio, l’individuazione dei requisiti e l’imposizione di vincoli. Nella fase di progettazione i requisiti devono essere trasformati in specifiche tecniche.

Successivamente si procede con la programmazione e test di unità, dato che siamo in un’ottica modulare non ci sarà mai un blocco unico ma tanti blocchi separati per cui si può pensare di testare i blocchi uno alla volta e poi unirli e testarli nuovamente nell’insieme. Fare quindi un test di unità e un test di integrazione. Infine la manutenzione che si svolge nell’arco del tempo. Il sistema deve presentarsi bene ad eventuali interventi dall’esterno.

Dati i limiti esposti prima, di questo modello si sono proposte due varianti:

  • CASCATA CON PROTOTIPAZIONE, secondo cui si realizza un prototipo, un esempio funzionante dall’inizio senza aspettare tutte le fasi.
  • CASCATA CON RITORNI, che consente al termine di ogni fase di ritornare sulle precedenti e apportare modifiche.

Modello a spirale

Dopo lo sviluppo del modello a cascata si trovano il modello incrementale e il modello evolutivo. Nei modelli incrementali è come se si avesse una cascata con ritorno.

In quelli evolutivi si fa tutto e però poi si possono aggiungere e avere tante versioni diverse del prototipo fino a quando non si ottiene  la versione definitiva.

Tra i modelli evolutivi quello di riferimento è il MODELLO A SPIRALE ideato da Boehm. Il processo ritorna sempre su se stesso e ogni volta si pianifica la fase successiva. Ci si affida molto alla dinamicità del sistema.

Tra le caratteristiche vi è una forte interazione col committente e uno studio economico molto più approfondito e forte.

Processo software e modelli di sviluppo - Modello a spirale
Processo software e modelli di sviluppo – Modello a spirale

Modelli specializzati e processo unificato (UP)

Possiamo ancora trovare altri modelli, i modelli specializzati al processo unificato che non sono a sé stanti ma possono essere integrati con altri modelli. Precisamente lo sviluppo a componenti è una pratica di progettazione che dobbiamo necessariamente utilizzare quando si realizzano sistemi distribuiti, per garantire la modularità.

Il PROCESSO UNIFICATO (UP) è un modello di processo che definisce le fasi ed è fortemente legato all’utilizzo dell’UML.

Lo SVILUPPO AGILE (nato nell’anno 2001) è un modello secondo cui è inutile la documentazione e tende a snellire la programmazione.

L’EXTREME PROGRAMMING (XP), è una programmazione estrema senza alcuna documentazione e con un codice estremamente complesso.

Processo software e modelli di sviluppo - Modello XP Practices
Processo software e modelli di sviluppo – Modello XP Practices

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *