La PEC europea, il cui nome è REM (Registered Electronic Mail), è un’email che risponde…
Il ciclo di vita del software: il Modello a cascata
Il modello a cascata, conosciuto come “waterfall model”, è il più classico dei modelli per il ciclo di vita del software. Prevede l’esecuzione lineare di una precisa sequenza di fasi, ciascuna delle quali genera un output utilizzato come input dalla fase successiva (da qui l’origine del termine “a cascata”). Pur essendo stato oggetto di numerose critiche nel tempo, rimane ancora oggi un riferimento per l’industria del software, dal quale molti altri modelli, più recenti, traggono spunto. Le fasi che compongono il modello a cascata sono descritte di seguito.
Analisi
L’analisi è la prima fase del ciclo di vita del software ed ha come scopo la definizione delle esigenze espresse dai clienti. Solitamente cliente e fornitore si incontrano per identificare nel modo più chiaro e preciso possibile i requisiti che il software deve possedere. La fase si conclude con la redazione di un documento, chiamato specifica dei requisiti software (in inglese Software Requirements Specification) contenente le funzionalità e le caratteristiche che il software deve avere per soddisfare le esigenze espresse dal cliente. Al riguardo. uno standard di riferimento per la scrittura della Software Requirements Specification è l’IEEE Std 830-1998. Il documento, solitamente redatto da un analista funzionale (Functional Analyst) descrive “cosa” il software deve fare e non “come” debba essere realizzato.
Progettazione
Se la fase di analisi mira a definire le esigenze del cliente, quella di Progettazione mira a definire la soluzione adatta a soddisfarle. Partendo dal documento di Software Requirements Specification , redatto nella precedente fase, si realizza un progetto del software che comprende sia il disegno dell’intera architettura di soluzione sia dei singoli componenti che la costituiscono. Il professionista maggiormente coinvolto in questa fase è l’architetto del software (Software Architect) affiancato, a seconda del tipo di soluzione da realizzare, anche da esperti di architetture di rete, di database, di sistemi.
Implementazione
Nella fase di implementazione, più conosciuta come “sviluppo”, viene concretamente realizzato il software progettato nella fase precedente, principalmente attraverso la scrittura di codice in particolari linguaggi di programmazione, da parte di uno o più programmatori software (Software Developer). Le attività svolte in questa fase sono in realtà più numerose e complesse della sola programmazione e comprendono ad esempio la realizzazione dei singoli moduli costituenti l’intera soluzione, la loro integrazione in un sistema più ampio (la soluzione software finale), l’ individuazione e la correzione di errori in fase di scrittura del codice (Debug), la realizzazione di eventuali database, la redazione della documentazione.
Collaudo
Una volta che il software è stato realizzato deve essere sottoposto ad una serie di controlli, il cui scopo è la verifica del livello di corrispondenza fra software realizzato e specifiche espresse dal cliente. È chiara quindi l’importanza che assume il documento di specifica (Software Requirements Specification) ai fini della determinazione dell’esito finale del collaudo. Eventuali vizi, mancanze o difformità del software possono essere contestate al fornitore solo a fronte di requisiti ben documentati che descrivono quale debba essere il corretto comportamento atteso dal software. Come per la fase di implementazione, le attività di verifica vengono svolte sia sui singoli moduli che sull’intera soluzione, per assicurarsi il corretto funzionamento del software complessivo a seguito dell’integrazione dei singoli componenti. Le eventuali anomalie rilevate durante il collaudo sono tracciate e comunicate agli sviluppatori affinché provvedano alla loro correzione.
Rilascio
In questa fase, conosciuta anche come deployment, il software, che ha superato con successo la fase di collaudo, viene rilasciato e reso disponibile agli utilizzatori finali. A seconda della tipologia di software e della tecnologia impiegata per realizzarlo, il rilascio può richiedere l’installazione del software direttamente sui computer degli utenti, oppure l’installazione su un unico ambiente accessibile a tutti gli utenti (si pensi ad esempio alle applicazioni web). La fase di rilascio può prevedere anche lo svolgimento di attività di formazione in favore degli utilizzatori del software, allo scopo di trasferire le conoscenze per utilizzare correttamente il prodotto.
Manutenzione
Le attività che vengono svolte sul software, successivamente al suo rilascio, rappresentano la fase di manutenzione. In particolare, gli interventi realizzati allo scopo di correggere eventuali errori, vizi e difformità presenti nel software, sfuggiti al Collaudo o introdotti successivamente dagli utenti, fanno parte della manutenzione correttiva. Sono invece chiamati interventi di manutenzione evolutiva quelli eseguiti sul software allo scopo di arricchire, migliorare, ampliare le sue funzionalità. Infine, siamo in presenza di manutenzione adattiva quando le attività vengono svolte allo scopo di adeguare il software ai cambiamenti dell’ambiente nel quale risiede. Gli interventi di manutenzione eseguiti comportano lo svolgimento di nuove attività di analisi, sviluppo e collaudo. In particolare assume molta importanza il collaudo di regressione, finalizzato ad accertare l’integrità del software dopo le modifiche, a verificare cioè che non siano state compromesse le funzionalità presenti prima degli interventi di manutenzione.