Ingegneria del software
Il processo di produzione del software: dalle idee al rilascio
Il software non è solo codice. Dietro un applicativo affidabile c'è sempre un processo: attività, decisioni, documenti, revisioni. Capire questo processo aiuta sia chi commissiona un progetto sia chi lo sviluppa.
Perché serve un processo, non solo “bravi programmatori”
Nei primi anni dell'informatica si usava un approccio chiamato code and fix: si scriveva codice, si correggevano errori, si aggiungevano funzionalità, e si continuava così finché il sistema “sembrava” funzionare.
Questo approccio ha portato alla cosiddetta “crisi del software”:
- progetti lunghi, costosi e difficili da stimare;
- codice difficile da manutenere per mancanza di documentazione;
- prodotti finali spesso lontani dalle aspettative degli utenti.
Da qui nasce l'ingegneria del software: l'idea di applicare metodo e processi controllabili alla produzione di software.
Le attività ricorrenti in ogni progetto
Qualunque sia il modello scelto, ci sono attività che ritornano sempre:
- Studio di fattibilità: ha senso sviluppare questo sistema? Quali alternative ci sono?
- Analisi e specifica dei requisiti: cosa deve fare il software, per chi, con quali vincoli.
- Progettazione dell'architettura: moduli, componenti, interfacce, tecnologie.
- Implementazione e test dei singoli moduli.
- Integrazione e test di sistema: verificare che tutto lavori insieme.
- Rilascio e manutenzione: bug fix, evoluzioni, adattamenti a nuovi contesti.
Modello a cascata: ordine e documentazione
Il modello a cascata è uno dei primi modelli proposti: le fasi si susseguono in modo lineare (analisi → progettazione → sviluppo → test → rilascio).
Vantaggi:
- molta enfasi su documentazione e pianificazione;
- processo chiaro, utile in contesti molto regolamentati.
Limiti principali:
- poca flessibilità nel gestire cambiamenti ai requisiti;
- feedback dell'utente spesso arriva troppo tardi.
Modelli evolutivi e incrementali
Un approccio più moderno è quello evolutivo/incrementale: il prodotto viene rilasciato a piccoli passi, ognuno dei quali aggiunge funzionalità utilizzabili.
L'idea di base è:
- rilasciare al più presto qualcosa di utile;
- misurare il valore reale per gli utenti;
- adattare obiettivi e funzioni in base all'esperienza sul campo.
È l'approccio che uso più spesso quando realizzo gestionali su misura per PMI: partire dal cuore del processo e allargare il perimetro passo dopo passo.
Modello a spirale e RUP: rischio e iterazioni controllate
Il modello a spirale introduce esplicitamente la gestione del rischio: ogni ciclo prevede analisi degli obiettivi, valutazione dei rischi, sviluppo di una versione e pianificazione del passo successivo.
Il Rational Unified Process (RUP) propone invece un ciclo di vita suddiviso in fasi (concezione, elaborazione, costruzione, transizione) ognuna articolata in diverse iterazioni controllate.
In pratica: non un unico “big bang” finale, ma tanti passi misurabili, con milestone e deliverable verificabili lungo il percorso.
Cosa significa per un’azienda che commissiona software
Per chi commissiona un software, capire (anche a grandi linee) il processo usato dal fornitore è fondamentale:
- aiuta a leggere correttamente tempi e costi;
- permette di programmare meglio test e rilasci interni;
- riduce il rischio di fraintendimenti tra business e tecnica.
Quando lavoro con un cliente, esplicito sempre il tipo di processo che useremo (più o meno formale a seconda del contesto) e quali feedback mi aspetto lungo la strada.
