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.

Servizi correlati

Altre voci

S

Software as a service

Software as a service (acronimo SaaS, lett. "software come servizio", in alcuni casi anche Pay Per Use - PPU cioè lett. "pagare ad [ogni] utilizzo") è un modello di servizio del software applicativo realizzato da un produttore che mette a disposizione un programma, direttamente o tramite terze…

Leggi la voce →
B

Backend as a service

Backend come un servizio (in inglese "backend as a service" o in sigla BaaS), noto anche come "mobile backend as a service" (mBaaS), è un modello per fornire a sviluppatori di app web o mobili un modo per collegare le loro applicazioni a un backend cloud storage e API (interfacce di…

Leggi la voce →
S

SAP CRM

SAP CRM è un'applicazione di customer relationship management (Gestione della relazione col cliente) integrata prodotta da SAP per le richieste della media e grande impresa in tutti i settori industriali.

Leggi la voce →
E

Enterprise resource planning

Un enterprise resource planning o ERP, conosciuto come pianificazione delle risorse d'impresa, è un software di gestione (o Software gestionale) che integra tutti i processi aziendali e tutte le funzioni aziendali rilevanti, ad esempio vendite, acquisti, gestione magazzino, finanza o…

Leggi la voce →
F

Front office

Nell'organizzazione aziendale, il termine inglese front office (letteralmente "ufficio frontale") indica l'insieme delle strutture di un'organizzazione che gestiscono l'interazione con il cliente. Si contrappone al back office che rappresenta invece il motore aziendale, ossia ciò che accade…

Leggi la voce →
C

Customer communications management

Il Customer Communications Management (CCM) è un’attività che consente alle aziende di gestire le comunicazioni con i clienti che avvengono attraverso un’ampia gamma di canali. Originariamente, il customer communications management riguardava i documenti stampati, i documenti digitali…

Leggi la voce →