Ciclo di vita del software
Il ciclo di vita del software, in informatica, e in particolare nell'ingegneria del software, si riferisce al modo in cui una metodologia di sviluppo scompone l'attività di realizzazione di prodotti software in sottoattività fra loro coordinate, il cui risultato finale è la realizzazione del…
Il ciclo di vita del software, in informatica, e in particolare nell'ingegneria del software, si riferisce al modo in cui una metodologia di sviluppo scompone l'attività di realizzazione di prodotti software in sottoattività fra loro coordinate, il cui risultato finale è la realizzazione del prodotto stesso e tutta la documentazione a esso associata: fasi tipiche includono lo studio o analisi, la progettazione, la realizzazione, il collaudo, la messa a punto, l'installazione, la manutenzione e l'estensione, il tutto a opera di uno o più sviluppatori software.
Lo sviluppo software è una procedura assai complessa e vasta in tutte le sue fasi, tali da richiedere a volte molti sviluppatori software per il completamento in tempi ragionevoli o prefissati; talvolta un progetto software è portato avanti da una comunità di utenti distribuita in una rete attiva attraverso un gruppo di discussione, come accade ad esempio per diverse distribuzioni Linux; quando poi da un progetto software se ne sviluppa un altro a partire dallo stesso tipo di programma, ma portato avanti da un'altra community, si parla di fork.
Storia
La comparsa in letteratura e nella pratica dello sviluppo del software del concetto di "ciclo di vita" si può far coincidere con la nascita dell'ingegneria del software, in quanto rappresenta un passaggio storico dallo sviluppo del software inteso come attività "artigianale" (ovvero affidata alla libera creatività dei singoli individui) a un approccio più industriale, in cui la creazione di programmi e sistemi software viene considerata come un processo complesso che richiede pianificazione, controllo, e documentazione appropriati (così come avviene tradizionalmente nei settori più maturi dell'ingegneria).
Questa transizione si può ricondurre, in ultima analisi, all'aumentata complessità dei sistemi, all'avvento di un vero e proprio mercato del software, nonché a nuovi e più stringenti requisiti di qualità, legati per esempio all'uso di sistemi informatici in contesti critici (centrali energetiche, sistemi aerospaziali, armamenti e così via). Questo mutamento di prospettiva iniziò a verificarsi, storicamente, fra la fine degli anni sessanta e l'inizio del decennio successivo. Da allora, la ricerca su questi temi è stata estremamente prolifica in ambito sia industriale sia accademico. Spesso la complessità di un progetto software richiede la supervisione o gestione da parte di uno o più project manager da parte del back office aziendale.
Descrizione
Quasi tutti i modelli di ciclo di vita del software prevedono una scomposizione del processo di sviluppo in insiemi di attività simili (quando non addirittura identici). Le distinzioni fra diversi cicli di vita si evidenziano su altri aspetti, quali:
l'enfasi relativa che si attribuisce a ciascuna attività;
l'individuazione degli attori specifici incaricati di ciascuna attività;
l'ordine in cui le attività si svolgono.
In tutti i cicli di vita del software svolge inoltre un ruolo essenziale la documentazione dei prodotti delle varie sottoattività; la stesura della documentazione viene quindi regolamentata nello stesso modo delle attività menzionate. Le fasi di progettazione del software sono:
Analisi
Esplicitazione dei requisiti
Analisi dei requisiti
Analisi del dominio
Analisi di fattibilità
Analisi dei costi
Progettazione
Progetto architetturale
Localizzazione software
Progetto di dettaglio
Programmazione
Ispezione e Debugging
Collaudo
Deployment
Manutenzione
Analisi
L'analisi è l'indagine preliminare del contesto in cui il prodotto software deve inserirsi, sulle caratteristiche o requisiti che deve esibire ed eventualmente su costi e aspetti logistici della sua realizzazione; questa fase può essere scomposta in sottoattività quali analisi di fattibilità, analisi e modellazione del dominio applicativo, analisi dei requisiti e così via. In senso più ampio si può dire che l'analisi ha lo scopo di definire (il più precisamente possibile) il problema da risolvere. Questa fase è costituita anche da raccolta dei dati tramite colloqui tra cliente/committente e relativi sviluppatori. Al termine della fase verrà creato un documento che descrive le caratteristiche del sistema, tale documento viene definito documento di specifiche funzionali.
Progettazione
Nell'attività di progettazione si definiscono le linee essenziali della struttura del prodotto software in funzione dei requisiti evidenziati dall'analisi, tipicamente appannaggio di un analista programmatore. Anche la progettazione può essere scomposta in sottoattività, dal progetto architetturale al progetto dettagliato. Si può dire che la progettazione ha lo scopo di definire (a un certo livello di dettaglio) la soluzione del problema. In questa fase sarà sviluppato un documento che permetterà di avere una definizione della struttura di massima (architettura di alto livello) e una definizione delle caratteristiche dei singoli componenti (moduli).
Implementazione
L'implementazione, detta anche sviluppo o codifica del prodotto software, è la fase di realizzazione del software, che concretizza la soluzione software attraverso la programmazione, ovvero la stesura di programmi da parte di programmatori o sviluppatori.
MCMX