TRENTINO SISTEMI attraverso la programmazione sfrutta le elevate capacità di calcolo dei computers al fine di rendere automatiche le procedure di gestione delle informazioni e facilitare la gestione dei dati.
Il programmatore "insegna" ai computer come svolgere un determinato compito, più o meno complesso.
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.
Il servizio offerto da TRENTINO SISTEMI si sviluppa in più fasi.
Analisi
L'analisi è l'indagine preliminare del contesto in cui il prodotto software deve inserirsi, sulle caratteristiche 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 viene creato un documento che descrive le caratteristiche del sistema, definito documento di specifica.
Progettazione
Nell'attività di progettazione si definiscono le linee essenziali della struttura del prodotto software in funzione dei requisiti evidenziati dall'analisi. Anche la progettazione può essere scomposta in sotto-attività, 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 viene sviluppato un documento che permette 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, consiste nella realizzazione di uno o più programmi in un determinato linguaggio di programmazione, benché possano essere coinvolte anche tecnologie diverse (database, linguaggi di scripting e via dicendo). Si può dire che l'implementazione è la concreta realizzazione della soluzione. Nella maggior parte dei casi è possibile distinguere almeno una sotto-attività di implementazione dei singoli moduli che costituiscono il sistema e la sotto-attività dell'integrazione di tali moduli a formare il sistema complessivo.
Collaudo
Il collaudo consiste nella verifica e validazione di quanto l prodotto software implementato soddisfi i requisiti individuati dall'analisi; il collaudo, in altre parole, valuta la correttezza rispetto alle specifiche. Anche per il collaudo possono essere individuate le due sotto-attività di collaudo dei singoli moduli e collaudo del sistema integrato; inoltre possono essere individuate ulteriori sotto-attività per ogni aspetto del prodotto software che interessa collaudare: collaudo funzionale, collaudo di performance, collaudo di rottura, collaudo di regressione, collaudo di sicurezza, collaudo di accessibilità, collaudo di accettazione, ecc... .
Rilascio
Il rilascio consiste nell'installazione del prodotto software che ha superato il collaudo nell'infrastruttura di esecuzione utilizzabile dagli utenti. A seconda della complessità di tale infrastruttura il rilascio può essere scomposto in varie sotto-attività; esso, infatti, può variare dalla semplice copia di un file alla copia opportuna di molti file organizzati in una complessa gerarchia di directory e componenti software, eventualmente distribuiti su hardware differenti.
Manutenzione
La manutenzione comprende quelle sotto-attività necessarie a modifiche del prodotto software successive il rilascio, al fine di correggerne errori, adattarlo a nuovi ambienti operativi, o estenderne le funzionalità. La manutenzione incide sui costi (si stima che il 60% dei costi dipenda dalla manutenzione). Ogni modifica al software comporta necessariamente la necessità di nuovi collaudi, sia relativi alle nuove funzionalità eventualmente introdotte, sia mirati a verificare che le modifiche apportate non abbiano compromesso funzionalità preesistenti (collaudo di regressione).
Processi di sviluppo software
La maggior parte delle metodologie di sviluppo del software consiste, almeno in linea di principio, in un linguaggio di modellazione e un processo.
Il linguaggio di modellazione è la notazione usata dalle metodologie per esprimere le caratteristiche di progetto;il processo è l’elenco delle indicazioni riguardanti i passi da intraprendere per produrre il progetto stesso.
L’UML (Unified Modeling Language), ad esempio, è un linguaggio di modellazione, utilizzato dai processi per realizzare, organizzare, documentare i prodotti realizzati dalle fasi di cui il processo si compone. Coloro che, individualmente o in gruppo, lavorano allo sviluppo o alla modifica di un software, adottano necessariamente un certo approccio nel modo di relazionarsi con i propri clienti/utenti, nell'organizzare il proprio lavoro, nella scelta delle tecniche da utilizzare, adottano un processo.
In modo consapevole o meno, ogni sviluppatore (o gruppo di sviluppatori) software ha un proprio processo di sviluppo - un proprio modo di lavorare, basato sulla propria esperienza, sulla propria cultura, e sul contesto culturale ed organizzativo in cui si trova ad operare.
La storia dei successi (e soprattutto degli insuccessi) dei progetti di sviluppo software ha insegnato che ogni processo di sviluppo ha i propri pregi ed i propri limiti. E che un processo di sviluppo inadeguato alle concrete esigenze dello specifico progetto può condurre al fallimento del progetto stesso, o comunque all'insoddisfazione dei clienti/utenti e degli stessi sviluppatori.
Il ciclo di sviluppo del software, nella maggior parte dei casi, è iterativo, e ogni iterazione produce una sua release. Elenchiamo di seguito le fasi principali che possono far parte di ogni singola iterazione:
Specifica dei requisiti: ciò che viene richiesto dal committente
- Studio di fattibilità (make or buy)
- Analisi e Design dove per analisi si intende lo studio di cosa deve fare il sistema (punto di vista "logico") e per design lo studio di come il sistema deve venire implementato (punto di vista "tecnico"). Negli ultimi anni, la distinzione tradizionale tra analisi e design è entrata in crisi.
- Implementazione
- Integrazione e test