Per festeggiare il 30 in Ingegneria del Software di ieri beccatevi “due parole” sull’argomento…
Il processo software è l’insieme di attività che determinano la produzione di un software specifico. È questo l’oggetto principale di studio dell’Ingegneria del Software. Ogni processo sw è caratterizzato da quattro attività principali: specifica, sviluppo, convalida ed evoluzione.
- La fase di specifica prevede la definizione delle funzionalità e dei vincoli operativi del software.
- La fase di sviluppo prevede azioni finalizzate alla produzione del sw.
- La fase di convalida prevede l’approvazione del sw prodotto qualora siano soddisfatte le specifiche.
- Infine, la fase di evoluzione afferisce alla necessità di adattarsi da parte del prodotto sw alle successive richieste e ai cambiamenti dell’ambiente in cui opera. Comprende anche la correzione degli errori riscontrati successivamente al rilascio del prodotto.
MODELLI DI PROCESSO
Un modello di processo è una rappresentazione astratta (un modello, appunto) delle azioni che caratterizzano un processo software. Esistono diversi modelli, qui di seguito ne vedremo alcuni.
MODELLO A CASCATA
Caratterizzato da una rigida successione delle seguenti fasi:- analisi e definizione dei requisiti;
- progettazione del sistema sw, fase in cui si compiono astrazioni che permettono la descrizione dell’architettura del sw;
- implementazione e test delle unità /moduli del sw, prevede lo sviluppo concreto di ogni elemento di cui l’architettura sw è stata suddivisa nella fase precedente. I test riguardano la verifica dei requisiti per ogni singolo modulo;
- integrazione e test globale di sistema, vengono integrati i singoli moduli, quindi viene verificato il buon esito di ogni integrazione e se il sistema, nella sua globalità , soddisfa i requisiti;
- operatività e manutenzione, afferisce a tutta quelle attività successive al rilascio del prodotto finale, quali miglioramenti, correzione errori, evoluzione del sistema per incontrare nuove richieste.
Ogni fase prevede scambio di feedback con le altre e i problemi incontrati in ognuna di esse posso determinare il ritorno dell’elaborazione ad una fase precedente.
| PRO | CONTRO |
| Fortemente orientato alla documentazione | La forte rigidità comporta un alto costo in tempo e altre risorse in caso di errore |
| Si integra facilmente con altri modelli di processo |
MODELLO A “V”
Come si evince dallo schema è caratterizzato da fasi successive ma fortemente connesse. Ognuna delle fasi precedenti all’implementazione afferisce a compiti di analisi e design via via più dettagliati. Ogni singola fase produce documentazione che costituirà la specifica a cui ogni fase del test, speculare nel grafo, a cui dovrà corrispondere esito positivo.
Il vantaggio principale di questo modello consta nell’attività di produzione della documentazione che diventa specifica per ogni fase di testing.
MODELLO A SPIRALE
Questo modello è caratterizzato da quattro branche di attività a cui appartengono tutte le azioni relative alla produzione di sw: determinazione degli obiettivi, valutazione e riduzione del rischio, sviluppo e convalida, pianificazione. La successione delle azioni di produzione trova uno sviluppo a spirale se partizioniamo l’insieme delle attività nelle quattro branche suddette. Ogni ciclo della spirale corrisponde ad una fase del processo, componendo via via, dal più interno al più esterno, un piano caratterizzato da maggior dettaglio. I fattori che rendono questo modello uno dei più usati sono una forte flessibilità e l’esplicita gestione del rischio.RUP: RATIONAL UNIFIED PROCESS
Processo unificato? Che nome altisonante… Ne parleremo ampiamente in un altro momento (credo).
MODELLO SYNCH AND STABILIZE
Modello di processo iterativo sviluppato da Microsoft, caratterizzato da due fasi fondamentali:
- pianificazione, prevede la definizione degli obiettivi, attribuzione di priorità alle funzionalità da sviluppare, suddivisione del progetto in sottoprogetti più piccoli da affidare ad ogni team di sviluppo. Questi team sono caratterizzati da un responsabile e da un pari numero di sviluppatori e tester;
- sviluppo, vede ogni team all’opera nell’implementare le funzionalità assegnatogli. Le varie squadre si sincronizzano attraverso determinati momenti di verifica e controllo detti Milestone.
EXTREME PROGRAMMING
Argomento già trattato in passato.
MODELLO OPEN SOURCE
Caratterizzato da un processo pubblico: tutti gli utenti sono (potenziali) sviluppatori, questa è la via per un debbuging efficace e rapidi miglioramenti del sw. Infatti con una così ampia base di beta-tester e co-sviluppatori ogni bug verrà presto individuato e risolto. Le modifiche proposte vengono sottoposte al controllo di un board (consiglio) che può accettarle o no. Da tutto ciò deriva:
- “distribuisci presto e spesso”;
- assenza di manutenzione del sw che viene semplicemente rilasciato insieme al sorgente;
- dare ascolto agli utenti;
- proprietà collettiva (almeno come proprietà intellettuale).
Linux è l’evidente esempio della bontà commerciale di questo approccio.








30? Sei un cecchione…
@Saverio – Ma vaff…
Sto frequentando un corso proprio di Ingegneria del Software, e ho visto esattamente queste cose. Ho il Pressman come libro di testo, tu?
@Phenix – Anche io lo stesso libro, ma l’ho trovato decisamente dispersivo.