Processo di sviluppo e manutenzione di un nuovo software in informatica

Processo di sviluppo e manutenzione di un nuovo software in informatica

In generale è possibile identificare due tipologie di software dalla richiesta da cui parte l’idea dello sviluppo. Esistono infatti software così detti ‘generici’, ovvero prodotti software standardizzati, venduti sul mercato, di cui le specifiche funzionali del software vengono definite dal produttore, a partire dall’analisi delle esigenze del mercato, in modo da poter soddisfare i requisiti di clienti diversi, appartenenti a più ambiti e settori. I software definiti ‘dedicati’ invece sono quelli progettati e sviluppati ad hoc, partendo da delle richieste specifiche di un cliente.

Processo di sviluppo e manutenzione di un nuovo software in informatica

Lo sviluppo di un software parte sempre quindi da un’esigenza o da una problematica da implementare o risolvere, un Input derivante o dal mercato di riferimento o da un cliente, che deve essere preventivamente analizzato nel dettaglio. L’insieme delle fasi che si susseguono, dal momento in cui il software viene concepito, progettato, realizzato, fino alla sua messa in opera e manutenzione, costituisce il ‘ciclo di vita’ del software. La prima fase nel processo di sviluppo software consiste quindi nell’analisi delle richieste, preceduta solitamente da un attento studio di fattibilità delle stesse. La seconda fase è quella della progettazione, preliminare alla fase di implementazione dell’applicativo. Successivamente alla fase di implementazione c’è la fase di testing, dove vengono effettuate le prove del funzionamento, sia a livello delle singole unità sviluppate sia a livello dell’intero sistema applicativo. L’ultima fase, quella che si protrae nel tempo, è la manutenzione.

Da questo modello si evince una metodologia di rappresentazione molto funzionale che permette di individuare la sequenza di fasi in cui si suddivide il processo di sviluppo del software e capire quali figure professionali intervengono in merito alle singole attività.

Studio fattibilità: pianificazione iniziale con definizione di costi e priorità. Fase in cui vengono definiti i principali obiettivi del sistema informativo da sviluppare. La fattibilità del progetto viene analizzata sia sotto il profilo tecnico (possibilità di utilizzo delle risorse esistenti) sia sotto quello economico (stima costi/benefici). In questa prima fase sono coinvolti diversi profili professionali, come Manager aziendali per la gestione del budget finanziario e i Project Manager per un’analisi preventiva del progetto.

Analisi e specifica dei requisiti: è la fase in cui vengono analizzate le funzioni e le proprietà che dovrà avere il sistema. Nell’analisi dei requisiti è fondamentale il coinvolgimento dell’utenza/cliente, mediante interviste, questionari, per individuare le aspettative del destinatario finale in relazione al prodotto da realizzare. Se il software viene sviluppato per risolvere delle problematiche di un’azienda cliente, sarà utile eseguire a priori un’analisi dei processi aziendali e delle eventuali aree di criticità. Sulla base di queste analisi e ricerche dovrà essere prodotto un documento di analisi funzionale del software che sintetizzi, in maniera chiara e dettagliata, le esigenze e le problematiche dell’utente finale, le funzionalità che dovrà avere il sistema, le prestazioni, l’ambiente di utilizzo, le interfacce esterne (con utenti, altro software, hardware), gli eventuali vincoli di progetto (tempi, risorse ecc.), ma anche gli specifici requisiti di qualità. In questa fase le figure professionali di riferimento sono gli analisti funzionali.

Progettazione: in questa fase, a partire dall’analisi funzionale in cui sono descritte nel dettaglio le funzioni che dovrà svolgere il software, viene studiato il modo in cui l’applicativo dovrà essere realizzato (dal “cosa” al “come”). In questa fase infatti vengono studiate le modalità di produzione, utilizzo, aggiornamento, cancellazione e scambio di dati rilevanti nell’ambito delle singole funzioni. Questa fase dà luogo ad un progetto architetturale del software che dovrà essere dettagliato di tutte le operazioni elementari che dovranno essere tradotte in linguaggio macchina affinché il computer possa eseguirle correttamente. Il documento generato in questa fase è l’analisi tecnica del software all’interno del quale, oltre alle singole operazioni che dovrà svolgere il software, dovranno essere individuati i migliori strumenti e framework di sviluppo più adatti per l’implementazione vera e propria L’analista programmatore è la figura di riferimento che opera nella fase di progettazione. In realtà questa figura entra in merito anche alle altre fasi di sviluppo software, a partire dallo studio di fattibilità, alla programmazione, coordinando anche il team di sviluppo, alle attività di validazione dell’intero sistema informativo e di manutenzione.

Programmazione: è la fase di implementazione del software mediante l’utilizzo di un linguaggio di programmazione, dotato di una sintassi molto rigida e precisa, che può essere di proprietà (come C# di Microsoft) oppure Open Source (come il linguaggio Java). Un apposito interprete, ovvero un “compilatore”, tradurrà il linguaggio di programmazione in linguaggio macchina, producendo un programma eseguibile dal computer. Per la scrittura del codice vengono utilizzati degli ambienti di sviluppo, o IDE, ovvero software che aiutano i programmatori nella fase di sviluppo del codice, segnalando eventuali errori di sintassi del codice in fase di scrittura. Gli IDE aiutano nella fase di debugging (ricerca degli errori) dal punto di vista del linguaggio, non errori di logica del software. Risulta fondamentale effettuare dei test di validazione delle singole funzioni sviluppate, per rendere la realizzazione del progetto il più fluida possibile. I programmatori informatici sono le figure di riferimento che operano all’interno di questa fase. Nel caso di applicativi Web dinamici ci sono i programmatori così detti di Front End che lavorano “lato client”, ovvero sull’interfaccia dell’applicativo, per ottimizzare l’interazione del software con l’utente, permettendo di ricevere dati di ingresso. I programmatori di Back End invece operano “lato server”, elaborando i dati ricevuti e generando delle risposte inerenti, permettendo così l’effettivo funzionamento dell’interazione.

Attività di testing/validazione: è la fase in cui vengono integrate tutte le unità sviluppate, una così detta “versione beta”, della quale viene eseguita una verifica sia del suo effettivo funzionamento sia del soddisfacimento dei requisiti tecnico/funzionali. Durante questa fase possono emergere degli errori per i quali sarà necessario intervenire tempestivamente, facendo riferimento all’unità di sviluppo da cui deriva la natura dell’errore stesso, prima del rilascio finale del software. Le attività di testing vengono svolte dai tester, tecnici che hanno come compito principale quello di verificare la completezza e l’affidabilità delle componenti realizzate, nell’ottica di una qualità costante nello sviluppo. In particolare, deve essere in grado di testare il software e valutare se il comportamento di questi rispetta i requisiti richiesti.

Rilascio del software: consiste nella messa a disposizione di una versione definita del software, solitamente la versione 1.0, ai suoi utenti finali.

Manutenzione: è la fase che si estende per tutta la vita del sistema, in cui vengono apportate modifiche dell’applicativo, dettate spesso da cambiamenti delle esigenze dell’utente, da variazioni nell’architettura del sistema o variazioni legislative. In questa fase “a lungo termine” possono intervenire tutte le figure professionali menzionate in precedenza, in base all’intervento e conseguenti modifiche da effettuare. La manutenzione del software può avvenire anche mediante il servizio di help desk, interno o esterno, ovvero il supporto delle infrastrutture software e hardware nelle aziende, dedicato all’assistenza tecnica per garantire una continuità sia dei processi aziendali, sia del servizio al cliente. In realtà il tipico help desk ha molte funzioni, costituendo un punto di riferimento a cui poter chiedere aiuto sotto diversi punti di vista. L’help desk in genere gestisce le richieste tramite un software che permette di monitorare le richieste dei dipendenti o utenti esterni, aprendo un apposito ticket con la problematica riscontrata. Il ticket viene ricevuto da un primo livello di help desk e, qualora sia in grado di risolverlo, il ticket verrà chiuso immediatamente e la soluzione dovrà essere documentata per consentire agli altri tecnici di help desk di consultare soluzioni già individuate. Qualora il ticket non dovesse essere risolto ad un primo livello verrà passato ad un secondo livello di competenza. Alcune organizzazioni prevedono anche un terzo, ancor più alto, livello di supporto che spesso gestisce software con necessità specifiche, quali aggiornamenti e aggiustamento di problematiche (o bug), che possono richiedere l’intervento diretto da parte degli sviluppatori. Maggiore è quindi il livello di intervento, maggiori sono le competenze necessarie per risolvere il ticket.

Precedente Successo e strategia di una azienda di consulenza Successivo Types of software testing: The exploratory test

Lascia un commento