Caso 2. L’evento che ha dato luogo alla cancellazione si è verificato o ha avuto decorrenza giuridica successiva al censimento. La persona doveva essere censita
4. IL SISTEMA DI REVISIONE DELLE ANAGRAFI - SIREA 1
4.3 Architettura del sistema
Il sistema informatico Sirea è un sistema multimodale che supporta i comuni nello svolgimento delle attività di revisione anagrafiche, offrendo diverse modalità di comunicazione delle informazioni di revisione. Tale sistema è stato realizzato attraverso un’applicazione web in cui l’utente viene guidato durante le operazioni di revisione su ogni singolo individuo. Il sistema offre diverse funzionalità di sup-porto all’attività degli operatori quali, ad esempio:
• funzione di invio massivo dei dati revisionati, nel caso in cui il comune abbia già lavorato e revisionato ogni singolo individuo tramite sistemi proprietari; • funzioni di reportistica (bilanci), che supportano i comuni permettendo agli
stessi di monitorare le attività di revisione.
L’introduzione di sistemi informativi web integrati ha permesso di gestire la complessità del processo di revisione delle anagrafi, fornendo uno strumento che favorisse l’interazione e la collaborazione tra i diversi attori impegnati nella
Menù principale
Area filtri di ricerca: visualizzazione informazioni inserite
Area dati anagrafici e informazioni già presenti nel sistema
Area per le funzioni utente e l'inserimento di nuove informazioni
revisione. La realizzazione di questa applicazione ha coinvolto un team eteroge-neo (informatici, statistici) e ha favorito lo scambio di conoscenze ed esperienze professionali.
In particolare, la progettazione di un sistema web con un elevato grado di complessità, come il software Sirea, ha richiesto un’attenta analisi riguardante diversi aspetti: definizione dei casi d’uso, definizione del processo statistico, va-lutazione dei rischi, progettazione dell’architettura hardware e software ecc.
Dal punto di vista architetturale, è stato realizzato un sistema replicato do-tato di un meccanismo di bilanciamento del carico. Il middleware alla base del sistema è fondato su uno stack tecnologico consolidato dalle precedenti esperienze censuarie, che non ha richiesto onerose rielaborazioni del codice sorgente.
L’infrastruttura software di Sirea si è basata sul design pattern Model-View-Controller e sulla tecnologia Java Enterprise Edition (Jee). La scelta di tale lin-guaggio è stata dettata sia da motivazioni tecnologiche che di valorizzazione delle competenze già presenti in Istituto, maturate durante il 6° Censimento generale dell’agricoltura e durante il 15° Censimento della popolazione e delle abitazioni. Il team di sviluppo responsabile della realizzazione del sistema ha infatti prodotto un software migliorato in termini di sicurezza e qualità, riutilizzando le compo-nenti principali dell’infrastruttura e al tempo stesso adottando framework open source allo stato dell’arte e ampiamente diffusi (Struts2, Spring and Hibernate). L’utilizzo di tali framework ha determinato un impatto estremamente positivo in termini di pulizia del codice, semplicità e velocità di sviluppo e test, robustezza dell’applicazione, manutenibilità.
La figura 4.3 mostra l’integrazione tra i layer applicativi e i framework utiliz-zati. Il layer di accesso alla base dati ha lo scopo di astrarre la complessità del DBMS facilitando le operazioni di interrogazione attraverso un semplice modello a oggetti Java, chiamati “beans”: gli sviluppatori delegano al framework la gene-razione delle query SQL, utilizzando la sintassi Java.
Form Utente: visualizza
Lista utenti validazione conversione
Struts2 UtenteAction Controller Logica di business UtenteService Accesso ai dati UtenteDAO Spring Dominio ProvaUtente ProvaZona Hibernate Interfaccia
In particolare, il framework per l’Object-relational mapping (Hibernate) per-mette di semplificare tutte le funzioni di accesso alla base dati, creando un livello che associa gli oggetti utilizzati nel programma a tabelle della base dati, gestendo in maniera trasparente il caricamento degli oggetti e il loro salvataggio su base dati. L’utilizzo di questo tipo di framework consente di limitare e semplificare no-tevolmente il codice per l’accesso alla base dati, che risulta di conseguenza anche più facilmente manutenibile.
Il framework Spring permette la gestione dichiarativa delle dipendenze tra le classi: gli oggetti utilizzati nell’ambito di una classe vengono automaticamente creati dal framework al momento dell’uso (autowiring). Attraverso file di confi-gurazione xml Spring consente la gestione della connessione alla base dati, ren-dendola trasparente al programmatore; inoltre il framework permette di gestire in modo dichiarativo le transazioni. Pertanto Spring, richiedendo al programmatore la sola definizione di file di configurazione per realizzare funzioni complesse e ripetitive, riduce e semplifica il codice da scrivere, rendendolo più robusto, ma-nutenibile e meno soggetto a errori.
Struts2 permette di organizzare un’applicazione web in livelli, separando le funzionalità dei componenti di presentazione e di logica applicativa secondo un’organizzazione chiara e strutturata. Fornisce funzionalità di base per la gestio-ne semplificata dell’acquisiziogestio-ne dei dati delle form e la loro validaziogestio-ne. Inoltre, offre numerose librerie che implementano componenti di uso comune nelle pagi-ne web, riducendo il lavoro dello sviluppatore alla composiziopagi-ne e configuraziopagi-ne di tali componenti. L’utilizzo di questo tipo di framework è essenziale per la realiz-zazione di un’applicazione web complessa.
Le pagine dell’applicazione sono state rese dinamiche attraverso l’utilizzo della tecnologia Ajax, che permette una stretta interazione tra gli elementi dell’in-terfaccia utente, ad esempio bottoni, liste, menù a tendina ecc., e le conseguenti operazioni effettuate lato server. Ciò ha consentito di guidare puntualmente l’u-tente nell’uso del sistema, poiché in ogni momento venivano visualizzate tutte e solo le informazioni di interesse.
L’implementazione di Sirea è stata realizzata applicando consolidate regole di sicurezza (OWASP 2013, SAFECode 2013) quali ad esempio: meccanismi di autenticazione, uso di algoritmi di crittografia, livelli di autorizzazione basati sul-la profisul-lazione utente, protezione delle url per impedire accessi non autorizzati alle varie funzionalità. Le password sono state memorizzate cifrate (come hash SHA-256), evitando in tal modo che eventuali attacchi potessero avere accesso alle credenziali in chiaro degli utenti. L’autorizzazione è stata realizzata in modo dichiarativo attraverso un file di configurazione, il deployment descriptor, messo a disposizione dalla Java Enterprise Edition: i profili applicativi venivano associati alle rispettive funzionalità tramite la semplice definizione di tag xml. Ciascun uten-te di Sirea, loggato al sisuten-tema, può in tal modo accedere solo alle funzionalità di sua competenza; inoltre, opportune logiche di business sono state implementate per consentire di visualizzare le sole informazioni relative al proprio territorio o agli individui assegnati (Figura 4.4).