Metodologie di progettazione e sviluppo del software
La metodologia di sviluppo del software adottata è formalizzata nel Ciclo di Vita dei Prodotti Standard, procedura facente parte del Sistema di Qualità Aziendale certificato ISO 9001, e conforme alle normative vigenti, generali (IEEE 730.1) e di specifici settori (CEI EN 50128), sulla produzione del software. Tale metodologia è allo stesso tempo formale ed agile. È formale e si ispira alla metodologia RUP per la realizzazione dei documenti indispensabili per le relazioni tra i team di progettazione e sviluppo e gli altri team di progetto, mentre si ispira alle metodologie agili (prevalentemente SCRUM) internamente per la progettazione, la codifica e il test di unità del software.
Il software è realizzato secondo un ciclo di vita di tipo iterativo ed incrementale con cicli successivi di progettazione, sviluppo e test di unità, test di sistema e rilascio. L’analisi dei requisiti del software viene formalizzata attraverso il linguaggio UML; la progettazione del software avviene mediante lo stesso linguaggio, utilizzando appositi strumenti per la generazione e il reverse engineering del codice.
Gli ambienti di sviluppo utilizzati sono del tipo IDE (Integrated Development Environment), utili al mantenimento dell’allineamento tra gli elaborati di progettazione e quelli di implementazione. Il software sviluppato da Project Automation è prevalentemente Orientato agli Oggetti, a tutti i livelli logici (dal Livello Presentation al Livello Business), utilizzando linguaggi di programmazione standard quali Java, C++ e .net. Le architetture di riferimento sono diverse a seconda degli obiettivi funzionali dei sistemi sviluppati, dell’ambito di esercizio e della tipologia di utilizzo che il sistema dovrà supportare: dalle architetture Client/Server per i sistemi di monitoraggio real time, recentemente affiancate in ambito Web da tecnologie quali Rich Internet Application (RIA) e Event Driven Architecture (EDA), alle architetture Service Oriented Architecture (SOA) per l’integrazione di sistemi, sviluppando librerie di servizi orchestrate da strumenti Business Process Management (BPM) e Business Rules Management System (BRMS), integrate attraverso i più comuni Enterprise Service Bus (ESB).
Le logiche di sviluppo si rifanno alle ben note best practices in quest’ambito: modularità, scalabilità, apertura, disaccoppiamento, riuso e portabilità. Gli strumenti in uso agli sviluppatori supportano le fasi di codifica e test di unità, altri strumenti permettono di salvaguardare l’integrità del codice prodotto anche in caso di progetti di sviluppo complessi con team numerosi e distribuiti.
Il test di sistema viene gestito da team di test, distinti dai team di sviluppo, ma facenti parte del progetto, fin dalle prime fasi software del ciclo di vita. Su tutti i sistemi realizzati vengono eseguiti test di tipo funzionale, di sistema, di durata, di prestazioni e di regressione, ove possibile su installazioni pilota. Un sistema di bug tracking permette di tracciare e documentare ciascuna non conformità rilevata, permettendo ottimi livelli di sinergia tra i team di sviluppo e i team di test.
Le fasi di gestione della configurazione concludono il Ciclo di Vita, garantendo, attraverso strumenti di versioning, la formalizzazione delle richieste di variazione, della gestione delle non conformità e in generale della manutenzione del software. Attraverso la partecipazione ad associazioni quali Agile Movement e IFPUG-GUFPI/ISMA, il reparto esercita la funzione di osservatore tecnologico al fine di garantire l’innovazione dei processi di sviluppo di Project Automation, sia dal punto di vista tecnologico che metodologico.