UNIVERSITÀ DEGLI STUDI DI FERRARA
FACOLTÀ DI INGEGNERIA
Corso di Laurea in Ingegneria Informatica e dell’Automazione
Progetto e sviluppo di un'applicazione
per la gestione del Reticolo Stradale del Comune di Cento
Tesi di Laurea di:
Tommaso Vecchiattini
_____________________
Relatore:
Chiar.mo Prof. Ing. Cesare Stefanelli
_____________________________
Anno Accademico: 2007 – 2008
Università degli Studi di Ferrara
INDICE
1 Introduzione ...................................................................................................................................... 5
2 Analisi delle specifiche del reticolo stradale ........................................................................................ 7
2.1 Caratteristiche del Reticolo Stradale ......................................................................................................7
2.1.1 Entità che costituiscono il Reticolo Stradale ...................................................................................7
2.2 Associazioni tra le Entità e schema Fisico complessivo ..........................................................................8
2.3 Architettura dell’applicazione ................................................................................................................9
2.4 Struttura della Base di Dati ...................................................................................................................10
2.5 Specifiche dell’applicazione Reticolo Stradale .....................................................................................11
2.6 Struttura delle Conversazioni ...............................................................................................................12
2.6.1 Descrizione delle conversazioni utilizzate in Reticolo Strade ........................................................12
2.7 Interfaccia Web ....................................................................................................................................17
2.7.1 Layout delle pagine........................................................................................................................17
2.8 Tipologia di utenti a cui è destinato l’uso dell’applicazione .................................................................18
2.9 Accessibilità e Usabilità ........................................................................................................................ 18
3 Tecnologie e Strumenti utilizzati per la realizzazione dell'applicazione .............................................. 21
3.1 Framework Seagull ................................................................................................................................21
3.1.1 Struttura a Directory......................................................................................................................22
3.1.2 Modularità di Seagull .....................................................................................................................22
3.1.3 Astrazione dei Database ................................................................................................................23
3.1.4 Modello MVC .................................................................................................................................23
3.2 Microsoft SQL Server ............................................................................................................................24
3.3 SQL ........................................................................................................................................................25
3.4 Web Server Apache ..............................................................................................................................25
3.5 PHP .......................................................................................................................................................26
3.6 HTML.....................................................................................................................................................27
3.7 CSS ........................................................................................................................................................27
3
Università degli Studi di Ferrara
4 Sviluppo del Servizio Reticolo Strade................................................................................................ 29
4.1 Architettura della rete del Comune di Cento ...................................................................................... 29
4.2 Database dell’applicazione .................................................................................................................. 29
4.3 Struttura dell’applicazione................................................................................................................... 31
4.4 Ricerca Numero Civico ......................................................................................................................... 34
4.5 Dettaglio Numero Civico ...................................................................................................................... 36
4.6 Ricerca Arco Stradale ........................................................................................................................... 37
4.7 Dettaglio Arco Stradale ........................................................................................................................ 37
4.8 Ricerca Vie............................................................................................................................................ 41
4.9 Inserimento di un nuovo numero civico ............................................................................................. 42
4.10 Gestione di un numero civico ............................................................................................................ 42
4.11 Modifica di una arco di nuova digitalizzazione .................................................................................. 45
4.12 Gestione di un arco stradale .............................................................................................................. 45
4.13 Gestione Associazione tra un arco stradale e le strade estese amministrative/toponimi stradali ... 48
4.14 Gestione Edifici .................................................................................................................................. 50
4.15 Gestione Autenticazioni...................................................................................................................... 50
4.16 Impostazione dell’Interfaccia WEB .................................................................................................... 51
5 Conclusioni ..................................................................................................................................... 53
6 Riferimenti ...................................................................................................................................... 55
4
Università degli Studi di Ferrara
1 Introduzione
Negli ultimi anni i servizi offerti dalla pubblica amministrazione ai propri cittadini sono divenuti sempre più
numerosi e articolati. E’ nata di conseguenza la necessità di doverli gestire con più semplicità,
organizzazione e in totale sicurezza. Grazie allo sviluppo delle tecnologie legate al mondo dell’informazione,
è stato semplice intuire che gli strumenti ideali per la gestione di tali servizi potessero essere le applicazioni
Web. Per garantire questo tipo di approccio, ogni settore della pubblica amministrazione ha dovuto
informatizzare i propri processi di lavoro e produzione, introducendo al proprio interno sia una rete di
comunicazione tra i dipendenti (Intranet) sia un’area dedicata allo sviluppo e progettazione delle
applicazioni Web.
Lo sviluppo e progettazione di ogni servizio deve essere conforme alle specifiche rilasciate dall’intesa Stato
– Regioni – Enti Locali per la pubblica amministrazione e deve rispettare inoltre i criteri di accessibilità e
usabilità imposti dalla legge, per consentirne l’accesso anche a persone diversamente abili.
La seguente tesi descrive tutto il processo di progetto e sviluppo di un’applicazione Web per la
visualizzazione e gestione dei dati che compongono il Reticolo Stradale territoriale del Comune di Cento.
Questo servizio si integra nel sistema informativo territoriale (S.I.T.) del Comune assieme ad altri servizi già
presenti e perfettamente operativi.
Scopo dell’applicazione è quello di fornire ai dipendenti comunali uno strumento per la ricerca semplice,
completa e funzionale di tutti gli elementi caratteristici del Reticolo Stradale, quali i numeri civici, gli archi
stradali e le strade. E’ possibile infatti cercare un numero civico, visualizzarne dettagli e interni associati e
consultare i dati anagrafici delle persone residenti in tale civico. Stesso discorso può essere fatto per gli
archi stradali che, oltre alla ricerca, dispongono di una propria sezione di dettaglio. La ricerca può essere
effettuata anche per le strade, che si dividono in strade estese amministrative e toponimi stradali.
Il servizio Web, oltre alle funzionalità di ricerca, offre una sezione di amministrazione, tramite cui è
possibile gestire e manipolare i dati che costituiscono il reticolo stradale. Infatti, a chi è dotato dei permessi
richiesti, viene data la possibilità di inserire, eliminare o gestire un numero civico. Gestire completamente
un arco stradale, potendolo modificare, eliminare e associare con una o più strade e, infine, gestire
l’associazione tra gli edifici e un identificatore unico.
Il fatto che durante tutto lo sviluppo dell’applicazione siano state seguite dettagliatamente le specifiche
della regione, rende il servizio portabile, ossia è predisposto per funzionare su macchine differenti e su
database diversi. Inoltre questa caratteristica consente al servizio di essere usufruito anche da altri enti
comunali, nel caso questi ne facessero richiesta.
La fase di progettazione del servizio è partita con l’analisi delle specifiche rilasciate dalla regione, in cui si è
cercato di estrapolare i concetti più importanti per la realizzazione dell’applicazione. Successivamente si è
passati all’analisi e allo studio della base di dati, in cui si è cercato di individuare quali elementi fossero
differenti da quelli descritti nelle specifiche. Successivamente è stata ideata la struttura portante
dell‘applicazione, che comprende tutte le conversazioni tra le pagine e la loro costruzione.
Una volta definite le funzionalità e le conversazioni del servizio si è passato all’analisi del sistema di
autenticazione. Il servizio reticolo strade oltre a offrire uno strumento di ricerca aperto a tutti gli utenti,
mette a disposizione un’area per l’amministrazione dei dati. I dati gestiti sono tanti e molto importanti,
quindi è stato necessario inibire l’accesso a tale area a chi non fosse munito dei permessi necessari.
Una volta definiti tutti questi concetti si è passati alla fase di realizzazione vera e propria, in cui sono state
implementate tutte le logiche di controllo e gestione dei dati. A livello metodologico, terminata una
funzionalità del progetto si provvedeva immediatamente a testarla e a verificare la presenza di problemi o
5
Università degli Studi di Ferrara
malfunzionamenti. Così facendo, ogni volta che una sezione dell’applicazione risultava pronta e
perfettamente operativa, questa veniva resa subito disponibile e funzionante agli utenti.
Questa Tesi è il frutto del lavoro svolto presso l’ufficio SSI del Comune di Cento durante l’attività di
tirocinio. In tale ufficio oltre a essere gestita la rete interna, vengono sviluppate tutte le applicazioni web
per la pubblica amministrazione.
6
Università degli Studi di Ferrara
2 Analisi delle specifiche del reticolo stradale
I servizi informativi offerti da un ente comunale ai propri dipendenti servono per gestire e facilitare la
gestione di tutti i dati provinciali e territoriali della propria area amministrativa. Tali servizi vengono
progettati e sviluppati seguendo le specifiche rilasciate dalla regione d’appartenenza del comune stesso, in
modo da essere sempre in linea con quelli che sono i criteri di progettazione rilasciati dall’intesa Stato –
Regioni – Enti Locali per la pubblica amministrazione.
Fra i vari servizi che il sistema informativo territoriale può offrire, fra cui la gestione dei dati catastali
oppure la gestione dei punti di interesse (poi), noi ci occuperemo del progetto e dello sviluppo di un
servizio rivolto alla gestione della rete stradale, che in seguito chiameremo ‘reticolo stradale’. Questo
servizio, è nato con lo scopo ben preciso di rendere disponibile a tutti i dipendenti comunali un’interfaccia
semplice e intuitiva, da cui ricavare dati e informazioni riguardo gli elementi che costituiscono il patrimonio
stradale del Comune di Cento.
L’applicazione Reticolo Stradale oltre a gestire i dati riguardo alla toponomastica e alla numerazione civica
può offrire molte altre utilità. Infatti una corretta gestione di tali dati può offrire strumenti di supporto ad
altre applicazioni, come ad esempio “Car Navigation” o “Travel Planning”, che consentono di calcolare un
percorso a partire da un punto della rete stradale per arrivare a un altro punto (ad esempio un indirizzo) o
una località. Di conseguenza si fornisce un supporto anche ai servizi d’emergenza, o ad applicazioni di
pianificazione del traffico, oppure ad applicazioni di gestione dell’infrastruttura (catasto delle Strade).
2.1 Caratteristiche del Reticolo Stradale
Il reticolo stradale è organizzato in due livelli. Il primo definisce la relazione tra gli elementi stradali
(chiamati anche archi stradali) e le loro rispettive denominazioni amministrative,mentre il secondo
permette l’integrazione dei DataBase comunali che si occupano della toponomastica stradale e della
numerazione civica.
2.1.1 Entità che costituiscono il Reticolo Stradale
Di seguito verranno analizzate le entità che costituiscono il patrimonio stradale:
•
•
Arco Stradale: è quella componente vettoriale che rappresenta,nella cartografia digitale, un tratto
fisico di strada. Nell’acquisizione di tale componente è fondamentale stabilire la definizione del suo
verso, tramite l’utilizzo di coordinate che ne indichino l’inizio e la fine. La connessione di tutti gli
archi offre una rappresentazione lineare dell’intero reticolo stradale e permette di ricavare
informazioni aggiuntive relative ad alcune caratteristiche supplementari, come i numeri civici o
informazioni toponomastiche. Infatti,una volta definito un arco stradale,gli si potranno associare un
toponimo stradale oppure più numeri civici. Infine, a ogni singolo arco viene associata una
classificazione in base alle caratteristiche delle delibere della toponomastica e della proprietà.
Strada Estesa Amministrativa: corrisponde a una aggregazione ordinata di archi stradali, identificati
con uno stesso nome o codice,caratterizzate da una stessa patrimonialità, che realizzano quindi un
percorso amministrativo definito dagli enti proprietari,che possono essere lo stato,la regione,la
provincia o il comune.
7
Università degli Studi di Ferrara
• Toponimo Stradale Comunale: è la nominazione data dall’Ufficio Toponomastica di un ente
•
•
•
•
comunale a ogni strada presente nel suo territorio e rappresenta l’aggregazione di istanze di “Arco
Stradale” che sono identificate univocamente all’interno del territorio di un singolo Comune (ad
esempio “Via Saragat” del comune “Ferrara”).
Località: con località si intende il sottografo di un’area indirizzi, rappresentativa di centri
abitati,nuclei abitati,case sparse,frazioni ecc… L’entità località ha lo scopo di arricchire il contenuto
informativo della base dati,in quanto è necessaria per la costruzione di un sistema univoco di
indirizzi.
Numero Civico: identifica univocamente il luogo d’accesso da un’area pubblica a un’area privata.
Edificio: rappresenta un’entità edilizia privata, racchiusa tra muri perimetrali, ed è collegata a
un’area pubblica tramite l’entità di un numero civico.
Interno: questa entità non è presente nelle specifiche regionali per la gestione del patrimonio
stradale, ma è stata aggiunta per rendere più funzionale e completo l’intero servizio. Rappresenta
gli interni associati a un unico numero civico e permette di ricavare i dati anagrafici dei residenti.
2.2 Associazioni tra le Entità e schema Fisico complessivo
Dopo aver analizzato le entità presenti nello sviluppo del progetto, si passa all’analisi di tutte le
associazioni. Le associazioni tra le entità ricoprono un ruolo fondamentale, in quanto permettono di
descrivere elementi complessi e molto importanti, come i percorsi stradali. Tutte le associazioni con le
rispettive cardinalità sono visibili in figura 1.
L’entità ‘Strada Estesa Amministrativa’ e l’entità ‘Arco Stradale’ sono legate da un’associazione di
cardinalità n:n. Le due entità sono quindi associate tramite un elemento d’aggregazione. Questo elemento
indica appunto che l’aggregazione di più elementi dell’entità ‘arco stradale’ realizza un percorso
amministrativo. La caratterizzazione di questo percorso, ovvero la definizione di tutti i suoi attributi,
avviene tramite l’entità ‘strada estesa amministrativa’.
Un ‘Toponimo stradale’ è un aggregato di ‘Archi Stradali’. Di norma, un arco partecipa alla formazione di un
unico toponimo, tranne nel caso in cui il toponimo stesso sia riferito a un’area indirizzi (per esempio una
piazza). L’arco può essere tuttavia aggregato in toponimi diversi, nel caso in cui quest’ultimo sia un’entità
condivisa da due comuni. Quindi anche in questo caso l’associazione ha cardinalità n:n.
Tra l’entità ‘Numero Civico’ e l’entità ‘Toponimo Stradale’ vige una relazione di cardinalità 1:n. Infatti si
suppone che l’ubicazione di una singola istanza dell’entità dei civici sia identificata univocamente sul
territorio comunale. Un civico può eventualmente identificare più interni, nel caso in cui l’edificio a cui è
associato il numero sia, per esempio, un condominio.
L’entità ‘Numero Civico’ è inoltre collegata a un’istanza di ‘Località’. Come detto in precedenza, la località
serve, insieme al toponimo stradale, a creare un sistema di indirizzi unico, in grado di caratterizzare
univocamente un numero civico. La cardinalità che regola questa associazione è di tipo 1:n in quanto un
numero civico ha ubicazione in una sola località.
8
Università degli Studi di Ferrara
Figura 1 Schema Entity Relationship (E/R) del Reticolo Stradale
2.3 Architettura dell’applicazione
Prima di passare all’analisi della Base di Dati e alle specifiche dell’applicazione è doveroso soffermarsi a
descrivere l’architettura generale dell’applicazione stessa.
Innanzitutto è necessario dire che si è adottato un approccio modulare allo sviluppo del servizio, e grazie a
questa modularità è stato possibile gestire in blocchi l’applicazione. I vantaggi di una gestione in blocchi
sono molti, in quanto abbiamo la possibilità di modificare,eliminare o sostituire un blocco senza dover
modificare tutto il resto.
Il servizio Reticolo Strade si può rappresentare in 3 macro-blocchi:
• Un blocco di interfaccia Web: rappresenta tutto ciò che permette all’utente di interfacciarsi e
comunicare con l’applicazione, come per esempio il Browser Web.
• Un blocco che descrive l’applicazione: implementa tutte le funzionalità del servizio Reticolo Strade.
E’ il fulcro del servizio in quanto all’interno contiene tutte le logiche che consentono di gestire ed
elaborare i dati
• Un blocco che racchiude il DataBase e il Web Server: contiene tutti i sistemi necessari per il
corretto funzionamento del servizio. Il Web Server consentirà all’applicazione di essere eseguita e
di essere utilizzata da tutti gli utenti autorizzati, mentre la Base di Dati fornirà tutte le informazioni
e i dati utili al servizio stesso.
9
Università degli Studi di Ferrara
2.4 Struttura della Base di Dati
Tutte le tabelle necessarie per lo sviluppo dell’applicazione sono contenute nella Base di Dati SDE (Spacial
Database Engine), presente sul DataBase Server del Comune.
Le tabelle in questione sono quelle descritte nei paragrafi precedenti e visibili nello schema E/R (figura 1).
Per non replicare tabelle e di conseguenza generare una ridondanza di informazioni, si è deciso di
riutilizzarne alcune già esistenti,come nel caso delle località. La tabella che riutilizziamo ovviamente
presenta gli stessi attributi di quella descritta nel Reticolo Strade, tranne al più qualche campo aggiuntivo
che non crea però nessun problema di compatibilità. Infatti già in altre applicazioni viene usata una tabella
contenente le stesse informazioni descritte dall’entità località.
Nello specifico la tabella che doveva essere denominata TPBX51PAT è stata sostituita dalla già esistente
SDE_DBO_FRAZIONI.
Lo scopo dell’applicazione, che ricordiamo essere la gestione totale di tutto il reticolo stradale, richiede
l’utilizzo di tutte le tabelle tranne quella riguardante le giunzioni. Infatti, come vedremo più avanti, nella
realizzazione dell’applicazione la tabella STBL51NAT non verrà mai usata.
Gli attributi che caratterizzano tali tabelle sono gli stessi descritti nelle specifiche regionali, tranne alcuni
casi particolari, in cui sono stati aggiunti un certo numero di campi aggiuntivi, per rendere più ampio il
contenuto informativo delle tabelle in questione, ma soprattutto per gestire dinamicamente il
collegamento tra la cartografia digitale e l’applicazione web.
Infatti ad alcune tabelle sono stati aggiunti i campi link e shape, che nelle specifiche non sono presenti.
L’utilità di questi campi verrà analizzata nei capitoli successivi.
Le due tabelle fondamentali, ovvero quelle su cui si basa l’intero servizio sono quella contente i civici,
denominata NCBX51PAT, e quella contenente gli archi stradali denominata STBL51AAT. Le informazioni
contenute nelle altre tabelle servono per arricchire maggiormente il contenuto del patrimonio stradale e
per caratterizzare al meglio le due tabelle citate precedentemente.
Infatti la tabella STBL51NN, che contiene le Strade Estese Amministrative, e la tabella TPST51NN, che
contiene i Toponimi Stradali, associate agli Archi Stradali generano percorsi stradali. Questa associazione è
resa possibile dalle tabelle di aggregazione STBL51XN e TPST51XN, che incamerano le chiavi degli archi e le
associano con le chiavi delle Strade e dei Toponimi.
Essendo la tabella dei civici collegata con le Località e con i Toponimi,conterrà le loro rispettive chiavi
rispettando le cardinalità descritte nelle specifiche. Per quanto riguarda la gestione degli edifici, la tabella
che verrà utilizzata sarà quella denominata PFBP51PAT.
Discorso a parte va fatto per i dizionari. I dizionari sono delle tabelle aggiuntive di caratterizzazione, ovvero
forniscono informazioni supplementari a partire da un certo valore chiave memorizzato in un determinato
campo in un’altra tabella. Infatti molte tabelle presentano degli attributi il cui valore può avere più
significati. Per esempio l’arco stradale ha un campo denominato “CF_ES” (indica il codice di classifica
funzionale), che se vale ‘A’ significa che l’arco è classificato come ‘Autostrada’, se vale ‘B’ è classificato
come ‘Strada Extraurbana Principale’ e così via. Per semplificare la gestione di questi dati si è creata una
tabella chiamata D_RET_STBL51AA_CF_ES la cui chiave è il campo ‘CF_ES’ e che contiene al suo interno
tutta la classificazione funzionale.
Si è preferito generare tabelle d’appoggio ogni qual volta lo si ritenesse necessario. Ovviamente tutti i dati
utilizzati per creare questi dizionari sono dettagliatamente schematizzati nelle specifiche regionali.
10
Università degli Studi di Ferrara
2.5 Specifiche dell’applicazione Reticolo Stradale
L’applicazione Reticolo Stradale va a inserirsi nel SIT (sistema informativo territoriale) del Comune di Cento,
insieme ad altre applicazioni già in uso, quali il servizio di gestione dei dati catastali e la gestione dei punti di
interesse. Scopo dell’applicazione è quello di fornire ai dipendenti comunali un servizio di consultazione
riguardo tutto ciò che costituisce il reticolo stradale, ossia uno strumento per la ricerca di archi stradali,
numeri civici ed edifici presenti e regolarmente registrati nei Data Base comunali.
Nello specifico, ogni dipendente può sfruttare le seguenti funzionalità:
•
•
•
Ricerca di un numero civico per località,indirizzo e civico stesso
Ricerca di un arco stradale in base a tutte le sue caratteristiche, con la possibilità di visualizzare tutti
i dettagli della sua associazione con le strade estese amministrative e tutte le informazioni riguardo
alle delibere di proprietà
Ricerca di una via, che può essere una strada estesa amministrativa oppure un toponimo stradale
Inoltre l’applicazione offre un lato di gestione amministrativa, disponibile solo agli utenti autorizzati, in cui
si possono gestire tutti i tipi di entità descritti nei paragrafi precedenti.
L’amministratore può quindi usufruire dei seguenti servizi:
•
•
•
•
•
•
•
Inserimento di un nuovo numero civico
Gestione completa di un numero civico (modica,cancellazione)
Gestione Interni di un numero civico (inserimento e cancellazione)
Gestione Archi (modifica e classificazione)
Gestione associazione tra arco/estesa amministrativa e arco/toponimo stradale
Gestione delle strade (strade estese amministrative, toponimi stradali)
Gestione degli Edifici
Nel nostro caso la gestione dei dati del patrimonio stradale è affiancata dall’utilizzo di applicazioni della
famiglia ArcGis. Grazie a questi software siamo in grado di gestire e creare tutti i tipi di dati geografici,
riuscendo a realizzare così una perfetta rappresentazione digitalizzata del territorio comunale (figura 2).
Tramite quest’applicazione sarà possibile creare elementi stradali, generare giunzioni stradali,visualizzare
numeri civici,edifici e tanti altri aspetti all’interno dell’intera cartografia digitale di tutta l’area geografica
del Comune di Cento. L’interazione fra le due applicazioni sta nella possibilità di visualizzare, tramite
un’interfaccia Web, i dettagli di un qualsiasi elemento selezionandolo semplicemente all’interno della
cartografia. Ciò avviene grazie alla generazione di un link dinamico durante l’inserimento di una
determinata risorsa da parte dell’amministratore (questo punto verrà spiegato dettagliatamente nel
capitolo 3) con il quale, da un programma esterno si raggiunge una specifica pagina web.
Tutto il progetto è stato realizzato cercando di rispettare un insieme di tecniche e attenzioni progettuali,
volte a rendere i contenuti informativi raggiungibili e usabili da chiunque, e cercando di eliminare gli
ostacoli, sia di tipo tecnologico che relativi alle disabilità.
11
Università degli Studi di Ferrara
Figura 2 Rappresentazione nella cartografia digitalizzata degli elementi caratteristici del reticolo stradale
2.6 Struttura delle Conversazioni
Per conversazione si intende il flusso di dati attraverso un certo numero di pagine con il quale si realizza
una determinata azione di senso compiuto. La progettazione di una conversazione non è un procedimento
banale, perché il flusso dei dati può essere difficilmente gestibile, ma soprattutto perché le pagine
interrogate possono essere molte. Per questo si cerca sempre di utilizzare meno pagine possibili e queste
riutilizzarle per compiere azioni diverse. Per esempio l’inserimento e la modifica di un numero civico,
nonostante siano azioni concettualmente diverse, utilizzano la stessa pagina a meno di alcuni accorgimenti
che consentano di distinguere le due azioni. La soluzione più semplice che è stata adottata è l’inserimento
di una variabile che indichi per quale scopo viene interrogata tale pagina, se per la modifica oppure per
l’inserimento. Utilizzando le conversazioni si ha un maggior riuso di codice, e vista la quantità di codice
prodotto per realizzare il servizio, è un beneficio di non poco conto, anche se si ha una maggiore
complessità generale nello sviluppo dell’applicazione.
2.6.1 Descrizione delle conversazioni utilizzate in Reticolo Strade
Nel servizio reticolo strade le conversazioni possono essere suddivise in due gruppi:
• Il primo gruppo contiene tutte le conversazioni che rappresentano le funzionalità accessibili da tutti
gli utenti di dominio
• Il secondo gruppo contiene le conversazioni accessibili solamente dagli amministratori
Conversazioni per gli utenti di dominio
Appena si accede all’applicazione sono disponibili le seguenti opzioni:
•
12
Ricerca Numero Civico: tramite questa opzione si accede al modulo di ricerca di un numero civico. I
parametri necessari per la ricerca sono la località,la via e il numero del civico stesso. Essendo il
numero dei civici molto elevato, in quanto bisogna tenere conto di tutta l’area amministrativa di
cento, si è deciso di rendere obbligatoria l’immissione del campo località, in modo da avere un
minimo livello di filtraggio sui risultati. Inserendo anche gli altri due parametri di ricerca,la via e il
numero civico, ovviamente il filtraggio risulterà essere più preciso. Una volta inseriti i parametri per
la ricerca, tramite una pagina web verranno visualizzati i risultati.
Università degli Studi di Ferrara
Giunti alla pagina di visualizzazione si ha la possibilità di mostrare i dettagli dei numeri civici
ottenuti dalla ricerca. Infatti, tramite l’opzione di dettaglio, all’utente viene mostrata una pagina
contenente tutte le informazioni riguardanti un determinato numero civico.
La conversazione in questione è schematizzata in figura 3.
•
Ricerca Arco Stradale: accedendo a questa sezione si ha la possibilità di ricercare,tramite un
modulo di ricerca, un determinato arco stradale. La ricerca si basa sull’inserimento di molti
parametri, fra cui gli identificatori e gli attributi di caratterizzazione dell’arco stesso. Una volta
inseriti i parametri per la ricerca, si accede alla pagina dei risultati in cui vengono visualizzati tutti gli
archi filtrati. Come per i civici, l’utente avrà la possibilità di visualizzare i dettagli di tutti gli archi
accedendo alla sezione dettaglio.
Se si accede al dettaglio di un arco, verrà visualizzata una pagina che mostrerà tutte le informazioni
che caratterizzano tale arco, in più verranno visualizzati, in ordine, le strade estese amministrative e
i toponimi stradali associati all’elemento selezionato.
L’utente può accedere inoltre a ulteriori livelli di dettaglio. Infatti essendo l’associazione tra arco e
strada estesa amministrativa caratterizzata da una serie di attributi, tramite un link dedicato si può
accedere ad una pagina che mi permette di visualizzare tali proprietà. Infine, possono essere
visualizzati tutti i dati riguardanti le delibere della toponomastica e della proprietà associate all’arco
scelto. La conversazione in questione è schematizzata in figura 4.
Figura 3 Rappresentazione della conversazione per la ricerca di un numero civico
Figura 4 Schema della conversazione per la ricerca di un arco stradale
13
Università degli Studi di Ferrara
Conversazioni per gli Amministratori
Accedendo all’area di amministrazione si hanno le seguenti conversazioni:
•
Inserimento Nuovo Numero Civico: scegliendo l’opzione ‘nuovo numero civico’ si raggiunge la
pagina contenente la maschera di inserimento. Questa maschera contiene tutti i campi necessari
per poter caratterizzare univocamente un nuovo elemento. Una volta inseriti i valori, se non
vengono riscontrati problemi, il civico viene inserito nella base di dati e successivamente si ritorna
all’area di amministrazione.
•
Gestione Numero Civico: tramite questa conversazione l’amministratore ha la possibilità gi gestire
completamente i numeri civici. Una volta selezionata l’opzione di gestione, si raggiunge la pagina di
ricerca per un numero civico. Finita la ricerca ci si ritrova nella pagina dei risultati dove, oltre alla
possibilità di raggiungere il dettaglio dei civici, vengono abilitate le opzioni per la gestione dei civici
stessi. Si hanno di conseguenza quattro possibili azioni:
Dettaglio Numero Civico: possibilità di visualizzare i dettagli del numero civico
Gestione Interni: opzione che permette di raggiungere la pagina dove
l’amministratore può inserire ed eliminare gli interni del civico selezionato
Modifica Civico: tramite questa azione si raggiunge la pagina di modifica di un
numero civico. La pagina che si utilizza è la stessa adoperata per l’inserimento,
visto che gli oggetti necessari per compiere l’operazione sono gli stessi.
Eliminazione Civico: opzione che consente di eliminare definitivamente un civico.
Per offrire maggiore usabilità all’applicazione, le opzioni di gestione del numero civico sono state
rese disponibili all’amministratore anche nella pagina di visualizzazione dei dettagli del numero
civico. In questo caso è stato molto conveniente riutilizzare alcune pagine già usate nelle
conversazioni precedenti. Così facendo il risparmio di lavoro è stato notevole, semplificando di
molto lo sviluppo dell’applicazione. La conversazione appena descritta è schematizzata in figura 5.
•
Compilazione Nuovo Arco Stradale: questo servizio permette di compilare archi di nuova
digitalizzazione, inseriti nella base di dati tramite ArcGis. Quando si sceglie questa opzione viene
visualizzata una pagina in cui compaiono tutti i nuovi archi ancora non compilati. Scelto un arco da
gestire, viene caricata la pagina di modifica, in cui si compilerà l’elemento in questione. Completato
l’inserimento dei dati, l’utente viene portato direttamente nella pagina d’amministrazione, come
mostrato in figura 6.
Figura 5 Conversazione per la gestione di un numero civico
14
Università degli Studi di Ferrara
Figura 6 Schema della conversazione per la compilazione di un arco di nuova digitalizzazione
•
Associazione di un Arco Stradale con una Strada Est. Amm. e con un Toponimo Stradale: questa
conversazione permette di gestire il processo di associazione di un’istanza dell’entità Arco Stradale.
Questo processo prevede quindi il coinvolgimento di più elementi oltre agli archi, come le strade
estese amministrative e i toponimi stradali. In particolare, la conversazione prevede inizialmente la
visualizzazione di tutti gli archi stradali non ancora associati, ossia quegli elementi che non fanno
parte di nessun percorso stradale. Una volta selezionato l’elemento desiderato si raggiunge la
schermata principale di associazione, in cui si può scegliere, in modo del tutto indifferente, se
associare per primo il toponimo oppure la strada. In entrambe i casi si avrà la possibilità di decidere
se associare l’arco ad un nuovo oggetto oppure se legarlo ad un elemento già esistente. Nel primo
caso verrà aperta una maschera di inserimento, mentre nel secondo verrà visualizzata una pagina
contenente la lista di tutti gli elementi disponibili. Finito l’inserimento,oppure scelto l’oggetto
desiderato già esistente, viene generata l’associazione e si procede ritornando alla schermata
principale dell’associazione, in cui si ripeterà la procedura una seconda volta. Associato l’arco alla
strada estesa amministrativa e al toponimo stradale, la procedura di associazione termina e si
ritorna nell’area d’amministrazione. Conversazione raffigurata in figura 7.
•
Gestione Arco Stradale: tramite questa conversazione è possibile selezionare un arco e modificarlo.
Infatti tramite un modulo di ricerca vengono visualizzati tutti gli archi disponibili. Una volta
selezionato l’arco desiderato è possibile visualizzare i suoi dettagli, modificarlo e gestire le sue
associazioni. Inoltre l’amministratore ha la possibilità di inserire e modificare i dati riguardanti le
delibere associate all’arco selezionato, tramite una maschera specifica. Come per la gestione dei
civici, anche in questo caso è stato utile riutilizzare pagine già usate in conversazioni precedenti.
Questa conversazione è rappresentata in figura 8.
•
Gestione Edifici: la conversazione in questione permette all’amministratore di aggiornare tutti gli
edifici di nuova digitalizzazione con una nuova chiave. Tali edifici sono quelli inseriti nella
cartografia digitale, ma ancora sprovvisti della chiave univoca settata nella base di dati. La
conversazione prevede per prima cosa una pagina di visualizzazione di tutti gli elementi appena
descritti. Per ogni edificio si ha la possibilità, tramite un opportuno metodo, di aggiornarlo con una
nuova chiave. Una volta selezionato e poi aggiornato un edificio si ritorna alla pagina di
visualizzazione. La conversazione appena descritta è schematizzata in figura 9.
15
Università degli Studi di Ferrara
Figura 7 Conversazione per l’associazione tra un arco stradale e un toponimo stradale/strada estesa amministrativa
Figura 8 Conversazione che permette di gestire un arco stradale
Figura 9 Conversazione per la gestione degli edifici
16
Università degli Studi di Ferrara
2.7 Interfaccia Web
L’interfaccia web è l’elemento fondamentale che permette all’utente di usufruire di un determinato
servizio. Proprio per la sua importanza, durante tutta la progettazione del servizio si è cercato di realizzare
un’interaccia web in grado di:
•
•
•
•
•
far percepire i contenuti
permettere di individuare le principali aree tematiche
far orientare il visitatore, cioè far capire dove si trova in ogni momento
consentire di passare agevolmente da un argomento all'altro con percorsi diretti e rapidi
facilitare la ricerca di un argomento
In generale, si è cercato comunque di seguire lo stile adottato per i servizi già esistenti, fornendo così
all’intero sistema informativo un interfacciamento omogeneo.
2.7.1 Layout delle pagine
Ogni sezione del servizio Reticolo Stradale utilizza una pagina web per visualizzare i propri dati e risultati.
Tutte queste pagine devono avere una base comune, in modo da avere una grafica e una struttura il più
simile possibile. Infatti, più le pagine sono simili e graficamente uniformi, più la navigazione risulterà
semplice. Queste pagine vengono chiamate templates e permettono di visualizzare dinamicamente le
informazioni. Ovvero, agendo sul templates si agisce direttamente su tutte le pagine da esso generate.
Per fornire una rappresentazione dei dati chiara e semplice da usare, si è strutturato il layout delle pagine
in tre blocchi principali (figura 10):
•
•
•
Header
Content
Footer
L’header, oltre a contenere i loghi e le intestazioni del Comune di Cento, contiene tutte le funzionalità
necessarie per navigare all’interno dei servizi informativi del comune. Inoltre visualizza le informazioni degli
utenti loggati o meno che accedono al servizio (figura 11). Il blocco denominato content visualizza il
contenuto del servizio selezionato. Infine il footer visualizza informazioni aggiuntive, che possono essere
d’aiuto all’utente per la navigazione. Nel nostro caso infatti, vengono visualizzate tutte le access key
utilizzate nei vari templates che compongono il servizio. Questa sezione di layout è fondamentale per
garantire al servizio un alto livello accessibilità (figura 12).
Figura 10 Struttura del Layout utilizzare per realizzare le pagine web del servizio
17
Università degli Studi di Ferrara
Figura 11 Header contente il menù di navigazione all’interno del sistema informativo e le informazioni dell’utente
Figura 12 Footer che contiene tutte le access key utilizzate nel template
2.8 Tipologia di utenti a cui è destinato l’uso dell’applicazione
Il servizio Reticolo Strade gestisce un’elevata quantità di dati importanti. Proprio per questo,a pochissimi
utenti è rilasciata la possibilità di gestirli in totale libertà.
Di conseguenza l’utenza che usufruirà di quest’applicazione può essere divisa in due tipologie: la prima è
composta dagli utenti di dominio, ossia tutti i dipendenti comunali, che tramite la rete interna dell’azienda
possono consultare e ricercare informazioni. La seconda tipologia di utenti ha invece la possibilità di
sfruttare tutte le funzionalità del servizio, fungendo così da amministratore. L’adimn può quindi
inserire,modificare ed eliminare i record di una qualsiasi entità. La distinzione tra le due tipologie di utenti è
resa possibile grazie alle funzionalità del framework con cui è stata realizzata l’applicazione, ovvero il
framework Seagull.
Tramite Seagull possiamo infatti decidere chi può accedere al servizio come amministratore, con quali
permessi, e chi invece può accedervi solo come utente di dominio. Il vero vantaggio di questa politica sta
nel fatto che il riconoscimento dell’utente avviene in modo totalmente automatico e trasparente al
programmatore. Vi è inoltre un superAdmin, un utente di root che gestisce direttamente il framework
Seagull. Tale utente ha il compito di amministrare tutto il sistema informativo, e di sovrintendere alla
gestione dei moduli di cui è composto.
2.9 Accessibilità e Usabilità
Durante tutta la fase di progettazione del servizio Reticolo Strade, ma in generale per tutte le applicazioni
web, si è tenuto conto di due aspetti fondamentali e imprescindibili: l’accessibilità e l’usabilità.
L'accessibilità è la capacità di un dispositivo, di un servizio o di una risorsa d'essere fruibile con facilità da
una qualsiasi categoria d'utente. Il termine è comunemente associato alla possibilità anche per persone con
ridotta o impedita capacità sensoriale o motoria di fruire dei sistemi informatici e delle risorse software a
disposizione. Un’applicazione web accessibile facilita l'accesso a questa categoria di utenti, ma anche ad
individui non affetti da patologie. Più nello specifico:
•
•
•
•
•
18
Utilizza un codice semanticamente corretto, logico e validato secondo i parametri del W3C;
Utilizza testi chiari, fluenti e facilmente comprensibili;
Utilizza testo alternativo per ogni tipo di contenuto multimediale;
Sfrutta titoli e link che siano sensati anche al di fuori del loro contesto;
Ha una disposizione coerente e lineare dei contenuti e dell'interfaccia grafica.
Università degli Studi di Ferrara
Il termine accessibile implica, inoltre, che i diversi servizi forniti e le informazioni siano disponibili
indipendentemente dal browser utilizzato, dal sistema operativo di cui si dispone e dagli strumenti di
navigazione usati. In Italia per le nuove realizzazioni e le modifiche apportate dalla pubblica
amministrazione al proprio o alle proprie applicazioni web si deve tenere conto della Legge Stanca (Legge 4
del 9 Gennaio 2004). Secondo questa normativa tutti i servizi offerti dalla pubblica amministrazione,
destinati all’uso pubblico, hanno l'obbligo di rispettare tutti i criteri di accessibilità.
L’usabilità è invece quel criterio di progettazione che permette all’applicazione di:
•
•
•
•
•
•
essere utile, ossia di non fornire servizi che non servano a nulla
essere facile da comprendere, in modo da offrire agli utenti che la utilizzano per la prima volta un
apprendimento facile e veloce.
offrire a chiunque un utilizzo efficiente di tutte le risorse disponibili
essere facile da ricordare nel tempo
limitare il numero di errori, cercando di prevederli e quindi risolverli in anticipo
risultare piacevole e soddisfacente nell’utilizzo
I criteri di accessibilità e usabilità sono fondamentali nello sviluppo di un’applicazione web, perché devono
mettere a proprio agio l’utente che usufruisce di tale servizio, ma soprattutto devono facilitarlo nel
compimento delle sue azioni.
19
Università degli Studi di Ferrara
3 Tecnologie e Strumenti utilizzati per la realizzazione dell'applicazione
La realizzazione del progetto ha richiesto l’utilizzo di svariate tecnologie. Le tecnologie usate sono Open
Source e proprietarie, anche se si è sempre preferite usare le prime, in quanto garantiscono una libertà
maggiore di azione, e offrono la possibilità di reperire e modificare il codice sorgente a proprio piacimento.
Ovviamente si è cercato di riutilizzare gli stessi strumenti adottati per creare altri servizi, in modo da
rendere compatibile la nuova applicazione con quelle già esistenti.
Lo strumento principale che è stato utilizzato nella realizzazione del progetto è il framework Seagull, in
quanto è stato l’elemento fondamentale che mi ha permesso di creare e soprattutto gestire l’applicazione
reticolo strade. Il linguaggio di programmazione usato è il PHP , affiancato, per la creazione della grafica
pagine web, dai linguaggi HTML e CSS.
Le basi di dati sono state gestite tramite il Database Management System (DBMS) presente nel sistema
informativo del comune, ossia Microsoft SQL Server. Il server Web che si è impiegato è stato il server Web
Apache, attivo su una macchina virtuale Windows 2003 Server.
3.1 Framework Seagull
Seagull è un framework OOP (Object Oriented Programming) [Seagull] che si basa su classi PEAR. Per
framework si intende una struttura di supporto su cui progettare e realizzare un software. OOP è un
termine che indica una collezione di oggetti, di solito librerie di classi ,precostruiti nei contenuti e nelle
reciproche correlazioni. Tali strutture o moduli possono essere facilmente ampliati con nuove funzionalità,
e perciò semplificano il lavoro dei costruttori di tools e di applicazioni consentendo di sviluppare funzioni
facilmente portabili.
Grazie all’utilizzo di Seagull il programmatore ha la possibilità di riutilizzare blocchi di codice, circostanza
che si è presentata sempre più spesso man mano che le interfacce utente sono divenute sempre più
complesse.
Il framework Seagull è un progetto Open Source sostenuto da una grande comunità di sviluppatori. È
concesso sotto la licenza BSD (Berkeley Software Distribution), il che significa che può essere utilizzato a fini
commerciali. Grazie alla flessibilità del PHP seagull può operare in maniera quasi identica sia su piattaforme
Windows che su piattaforme Unix. Inoltre presenta una grande stabilità di codice in quanto, al fine di
mantenere il codice strutturato in modo pulito e stabile, gli sviluppatori osservano le linee guida di
sicurezza e rispettano gli standard Web come XHTML e CSS.
Gli aspetti chiave del framework Seagull sono i seguenti:
• la struttura a directory
• la modularità
• l’astrazione dei database
• il modello MVC (Model – View – Controller)
21
Università degli Studi di Ferrara
3.1.1 Struttura a Directory
La struttura del framework Seagull è organizzata a directory, ovvero l’ambiente di sviluppo è simile ad un
file system. Nello specifico, seagull adotta un sistema a directory così organizzato:
•
•
•
•
seagull
o etc: configurazione di file, sql files, etc..
o lib (librerie rese disponibili dal framework):
SGL: libreria di Seagull
data: librerie di lingua,data ecc…
other: altre librerie
pear: libreria PEAR
modules: cartella in cui vengono posizionati i servizi veri e propri
o nome-modulo: nome del modulo, nel nostro caso reticolo strade
classes: modulo che contiene le classi di gestione dei dati
data: il modulo specifico per i dati sql
templates: cartella che contiene tutte le pagine html
var: tutti i dati temporanei che devono essere scritti dal webserver.
o cache
entities:le entità DataObject
tmpl: I templates compilati di Flexy
o log: contiene i file base per la registrazione
o tmp: le sessioni sono memorizzate in questa directory
www: solamente l’applicazione webroot dovrebbe essere visibile sul web, a meno che non venga
disposto diversamente
o images: per immagazzinare le immagini da usare nell’applicazione
o js: locazione in cui posizionare tutti i javascript che vengono usati nel sito
o themes: in questa cartella vengono salvati i temi usati nell’applicazione
default:
• css: file css utilizzati nelle pagine web
3.1.2 Modularità di Seagull
Seagull è un’applicazione OOP che si basa fortemente sulla modularità. Il framework consiste in un set di
classi di base organizzate rispettando il design pattern MVC, che si prende cura dei permessi, delle
autenticazioni, delle sessioni, delle operazioni di input/output e dello strato di astrazione dei database.
Molte altre funzionalità provengono dalle librerie messe a disposizione. Molto spessp infatti vengono
utilizzate le funzioni rese disponibili dalla libreria PEAR, che può essere tranquillamente e
indipendentemente aggiornata ogni qual volta siano disponibili degli aggiornamenti. Qualsiasi oggetto
nell’applicazione viene rappresentato come un’entità. Proprio per questo gli sviluppatori hanno la
possibilità, attraverso strumenti specifici, di creare i prototipi delle entità, in modo da generare una sorta di
scheletro delle classi che potrà essere successivamente modificato e aggiornato.
22
Università degli Studi di Ferrara
3.1.3 Astrazione dei Database
Una delle caratteristiche principali del PHP è il supporto nativo per un notevole numero di database
relazionali, non solo quindi RDBMS (Relational Database Management System) open source come MySQL,
ma anche Oracle, DB2 e Informix. Inoltre tramite la libreria PEAR,il framework Seagull mette a disposizione
la possibilità di connettersi a tutti DBMS prima citati. Tuttavia questo comporta che quasi per ogni database
esiste un'estensione e un’API client con un gran numero di funzioni specifiche, caratteristica che può
rivelarsi piuttosto scomoda qualora si debbano realizzare applicazioni in grado di appoggiarsi
indifferentemente a più basi di dati senza subire ogni volta modifiche importanti. In questi casi diventa
necessario creare un "livello di astrazione" (abstraction layer), cioè un filtro unico che si interponga tra il
database e il linguaggio svolgendo tre funzioni:
1. annullare le differenze tra le varie API client
2. attenuare le incompatibilità tra i diversi dialetti SQL
3. limitare le difformitàtra i tipi di dato riconosciuti dal database
Per realizzare questo livello di astrazione è necessario utilizzare i DataObject, che rappresentano
un’interfaccia con gli elementi dei DataBase relazionali, e che danno la possibilità al programmatore di
lavorare sulle tabelle del DB senza utilizzare i comandi SQL, ma usando semplicemente una classe di metodi
messa a disposizione da PEAR. I DataObject svolgono due funzioni importanti: attraverso i metodi di PEAR
costruiscono automaticamente le espressioni SQL e immagazzinano i dati di una tabella o il risultato di una
query.
La libreria PEAR dispone di due livelli di astrazione, denominati PEAR DB e PEAR MDB2. Entrambe i livelli
utilizzano i dataobject, con l’unica differenza che PEAR MDB2 rappresenta l’evoluzione di PEAR DB, che
rimane comunque il livello di base utilizzato dal framework Seagull.
3.1.4 Modello MVC
MVC (Model-View-Controller) è un pattern architteturale molto diffuso nello sviluppo di interfacce grafiche
di sistemi sofware object-oriented. Il suo scopo principale è quello di separare le componenti di logica (M),
presentazione(V) e controllo(C):
•
•
•
Model: il model contiene i dati e fornisce i metodi per accedervi.
View: questa componente offre una rappresentazione grafica dei dati provenienti dalla
componente di logica, pronta per essere utilizzata. Nel nostro caso questo compito viene svolto dai
templates.
Controller: il controller è quella componente che riceve i comandi dall’utente (generalmente
provenienti dall’interazione con il livello di presentazione) e li attua modificando lo stato degli altri
due componenti.
Dalla figura si deduce che il funzionamento avviene secondo le seguenti modalità (figura 13):
•
•
•
•
Il Controller riceve una richiesta da parte dell’utente, generalmente proveniente dalla componente
di visualizzazione, successivamente inizializza il sistema.
Il Controller chiama il Model e in base alle richieste ricevute ne cambia lo stato.
In base ai risultati e alla logica dell’applicazione, viene scelta una View.
L’interfaccia utente si mette in attesa di un nuovo evento, per ripartire così con un nuovo ciclo.
23
Università degli Studi di Ferrara
Figura 13 Rappresentazione in grafica del funzionamento del Pattern MVC
3.2 Microsoft SQL Server
Un Database Management System (il cui acronimo è DBMS) è un sistema software progettato per
consentire la creazione e manipolazione efficiente di database (ovvero di collezioni di dati strutturati)
solitamente da parte di più utenti. E’ un livello applicativo che pone tra l’utente e la base dati e il suo
compito è quello di organizzare, memorizzare e reperire i dati (campi, record e archivi) in un database. Il
DBMS accetta richieste di dati da parte del programma applicativo e "istruisce" il sistema operativo per il
trasferimento dei dati appropriati. In più ha anche il compito di controllare la sicurezza e l'integrità del
database, non consentendo a più utenti di modificare lo stesso record contemporaneamente.
Il DBMS usato per il progetto del servizio è Microsoft SQL Server [Miscrosoft SQL Server], sistema per la
gestione delle basi di dati progettato da Microsoft, e fra i più diffusi nel mondo. Le radici di questo DBMS
risalgono alla fine degli anni ’80, anni in cui Microsoft e Sybase stipularono un accordo per sviluppare e
commercializzare un software per la gestione di basi di dati. Successivamente a questo accordo la
collaborazione si allargò con l’ingresso della dBase, azienda leader del mercato dei DBMS. Dopo alcuni anni,
finita la collaborazione, la Microsoft cominciò a sviluppare un proprio DBMS partendo dal codice sorgente
di SQL Server della Sybase. La vera svolta in casa Micorosoft, per quanto riguarda lo sviluppo del proprio
SQL Server, avviene con l’uscita delle versione 7.0, versione versatile, semplice da usare e soprattutto
distribuita a prezzi contenuti. Oltre a queste caratteristiche, il DBMS di casa Microsoft si distingueva dagli
altri prodotti per l’affidabilità e per le prestazioni convincenti. Il passare degli anni e il boom di Internet
hanno fatto si che il prodotto di casa Microsoft si consolidasse nel mercato dei DBMS, portandolo a nuove
release e nuove versioni sempre più performanti.
I difetti maggiori di Microsoft SQL Server sono dovuti dalla scarsa portabilità del prodotto, in quanto può
girare solamente su macchine Windows. Per questo i prodotti Open Source, quali MySQL, si stanno
affermando sempre di più nel mercato globale, perché hanno la caratteristica di potersi adattare e
funzionare su qualsiasi tipo di sistema, divenendo così dei forti concorrenti per la leadership nel mercato
dei DBMS.
24
Università degli Studi di Ferrara
3.3 SQL
SQL (Structured Query Language) [SQL] è un linguaggio creato per l'accesso a informazioni memorizzate nei
database, ovvero è un linguaggio utilizzato per interrogare le basi di dati relazionali e reperire informazioni.
Dopo una prima versione introdotta da IBM alla fine degli anni ‘70 per un prototipo di ricerca denominato
System R, negli anni ’80 fu adottato con il nome attuale come linguaggio per i software DBMS prodotti dalla
IBM. Nel 1986 l’ANSI (American National Standards Institute) pubblicò il prima standard del linguaggio SQL,
al quale seguì lo standard dell’ISO (International Standards Organizations) pubblicato nel 1987. Le
specifiche del linguaggio vennero precisate e ampliate con aggiornamenti successivi pubblicati sempre da
ANSI e ISO.
Il linguaggio SQL viene usato in tutti i prodotti DBMS come linguaggio di comandi per l’utente della base di
dati. Molti di questi DBMS, sviluppati originariamente per sistemi di elaborazione medio grandi, sono stati
poi adattati con versioni per PC, con l’uso di SQL come linguaggio relazionale. Le diverse versioni del
linguaggio SQL sono in genere aderenti agli standard internazionali, ma ci sono sicuramente delle differenze
che possono essere facilmente individuate attraverso le documentazioni rese disponibili sulla rete oppure
fornite con i prodotti software.
Spesso si possono trovare le istruzioni SQL inserite nei programmi scritti con i linguaggi di programmazione
tradizionali (linguaggi ospite), oppure il linguaggio SQL rappresenta uno degli strumenti principali all’interno
di ambienti di sviluppo software: in questi casi si parla di Embedded SQL.
Il linguaggio SQL consente all’utente di:
•
•
•
•
Definire la struttura delle relazioni del database (funzioni di DDL – data definition language)
Modificare i dati contenuti nel database, con le operazioni di inserimento, variazione e
cancellazione (funzioni di DML – data manipulation language)
Gestire il controllo degli accessi e i permessi per gli utenti (funzioni di DCL – data control language)
Porre interrogazioni al database (funzioni di Query Language)
3.4 Web Server Apache
Apache [Server Web Apache] è il Server http più utilizzato dal 1996, e a tutt’oggi, secondo le statistiche
mantiene circa il 70% dei siti Web presenti su Internet. Il progetto nasce a metà degli anni ’90, partendo dal
codice del Server Web sviluppato dalla NCSA (National Center for Supercomputing Applications). Apache è
un software che realizza le funzioni di trasporto delle informazioni, di internetwork, di collegamento, ha il
vantaggio di offrire anche funzioni di controllo per la sicurezza fungendo così da Proxy ed è in grado di
operare sia su sistemi operativi Unix sia su sistemi operativi Microsoft garantendo un elevato grado di
portabilità.
Apache è un Server Web basato su processi. Infatti al suo avvio, tramite Fork, genera diversi figli
indipendenti l’uno dall’altro. Ognuno di questi processi figli avrà il compito di gestire una singola richiesta.
Con questo approccio, se un figlio riscontra dei problemi di funzionamento, può essere interrotto senza
alcun effetto sugli altri. Il Server Web Apache presenta un architettura modulare, quindi ad ogni richiesta
del client, vengono svolte funzioni specifiche da ogni modulo di cui è composto, come unità indipendenti.
Ciascun modulo si occupa di una funzionalità mentre il controllo delle operazioni è gestito dal core.
25
Università degli Studi di Ferrara
Figura 14 Gestione di una richiesta da parte del Web Server Apache
I moduli che compongono Apache sono:
•
•
•
•
•
•
Core: è il programma principale, composto da un ciclo sequenziale di chiamate ai moduli.
Translation: modulo che traduce la richiesta del client.
Access Control: modulo che verifica la presenza o meno di richieste dannose
MIME Type: verifica la natura del dato contenuto nella richiesta
Response: modulo che indirizza e invia la risposta al client
Logging: tiene traccia di tutto ciò che è stato fatto dal Server Web
Il core suddivide la richiesta ai vari moduli in modo sequenziale, usando i parametri di uscita di un modulo
come parametri di accesso per l'altro, creando così l'illusione di una comunicazione orizzontale fra i moduli.
In informatica questa caratteristica viene chiamata pipeline software (figura 14).
3.5 PHP
Il PHP (acronimo ricorsivo che sta per PHP: Hypertext Preprocessor) [PHP] è un linguaggio di scripting
interpretato, con licenza Open Source, originariamente concepito per la realizzazione di pagine web
dinamiche. Essendo un linguaggio interpretato il codice PHP viene eseguito da un interprete PHP, che ha il
compito di leggere il codice, interpretarlo e infine eseguirlo. PHP, per le sue caratteristiche, ha una sintassi
molto simile al C e del Perl, ed è inoltre un linguaggio a tipizzazione debole, ossia non è necessario definire
una tipizzazione dei dati. E’ un linguaggio lato Server, quindi il codice viene elaborato e interpretato dal
Server il quale, successivamente, invia i risultati al Client. Un programma scritto in PHP viene sempre
elaborato sul server e mai reso disponibile all'utente, il quale può visualizzare solo il risultato del
programma. Questo concetto è molto importante in quanto sta alla base della sicurezza e dell'affidabilità
offerti dalla programmazione lato server.
PHP è in grado di interfacciarsi a innumerevoli database tra cui MySQL,Oracle,IBM DB2,Microsoft SQL
Server e si integra anche con altri linguaggi quali Java e .Net. Dispone di un archivio chiamato Pear che
mette a disposizione del programmatore un framework di librerie riusabili per lo sviluppo di applicazioni
PHP.
Infine il PHP è HTML-embedded, in quanto si possono inserire script PHP all’interno di pagine HTML. La
presenza di tali script è delimitata dai tag <?php e ?>, che racchiudono al loro interno blocchi di codice PHP.
26
Università degli Studi di Ferrara
Sarà compito poi del Server Web distinguere se la pagina contiene o meno codice PHP, in base alla sua
estensione. Nel caso l’estensione fosse HTML oppure HTM la pagina sarebbe costituita solo da codice HTML
e non necessiterebbe di essere interpretata, mentre se l’estensione fosse PHP oppure PHTML la pagina
verrebbe immediatamente girata all’interprete PHP.
3.6 HTML
HTML (acronimo di Hyper Text Mark-Up Language) [HTML] è un linguaggio di formattazione usato per
descrivere i documenti ipertestuali disponibili nella rete. E’ stato sviluppato alla fine degli anni ’80 al CERN
di Ginevra e la sua diffusione è avvenuta a meta degli anni ’90. L’HTML è un linguaggio di pubblico dominio
la cui sintassi è stabilita dal World Wide Web Consortium (W3C).
Tutti i siti Web sono scritti in HTML, codice che viene letto ed elaborato dal browser, il quale genera e
visualizza la pagina internet. L’HTML non è un linguaggio di programmazione ma un linguaggio di markup,
ossia descrive il contenuto, testuale e non, di una pagina web. Ogni documento ipertestuale scritto in
HTML deve essere contenuto in un file la cui estensione deve essere .htm oppure .html. La caratteristica
innovativa dell’HTML è la possibilità di creare e definire dei collegamenti (link) verso altri documenti, anche
remoti. Il grosso svantaggio di questo linguaggio è la statisticità, in quanto il contenuto di un documento
web scritto in HTML viene definito al momento della sua creazione, rimanendo tale e quale fino a una
nuova modifica del documento da parte del programmatore. Qualunque richiesta di pagina statica fornisce
sempre la stessa risposta. Questo tipo di programmazione ha il vantaggio di essere molto semplice e
affidabile, ma ha lo svantaggio molto pesante di essere poco flessibile, in quanto non fornisce all’utente un
minimo di dinamicità.
3.7 CSS
I fogli di stile a cascata (CSS Cascading Style Sheets) [CSS] vengono usati per definire la rappresentazione di
documenti HTML e XHTML. Le rogle per comporre i fogli di stile sono contenute in un insieme di direttive
emanate dal W3C. L’introduzione dei fogli di stile si è resa necessaria per separare i contenuti dalla
formattazione e permettere una programmazione più semplice da utilizzare, sia per gli autori delle pagine
HMTL che per gli utenti. Un foglio di stile altro non è che un insieme di regole accompagnate da un
eventuale commento.
Una regola CSS è costituita da due blocchi principali: il selettore e il blocco delle dichiarazioni (figura 15). Il
selettore può indicare il nome della regola che verrà poi applicata oppure il tag di un certo elemento già
esistente che si vuole formattare. Il blocco delle dichiarazioni contiene tutte le opzioni che servono per
formattare il testo regolato dal CSS. Esse sono composte dalla coppia proprietà e valore. La proprietà
definisce un aspetto dell'elemento da modificare (margini, colore di sfondo, etc) secondo il valore espresso.
Proprietà e valore devono essere separati dai due punti.
Figura 15 Struttura di una regola CSS
27
Università degli Studi di Ferrara
4 Sviluppo del Servizio Reticolo Strade
Terminata la fase di progettazione e di studio delle tecnologie adottate si passa alla realizzazione del
servizio. Lo sviluppo dell’applicazione Reticolo Strade parte dall’analisi della rete su cui il S.I.T. viene
eseguito e dalla strutturazione della base di dati contenente tutte le tabelle descritte nelle specifiche
regionali. Una volta terminata questa prima fase si passa all’implementazione dei servizi per la gestione dei
dati, creando così la logica dell’applicazione. Infine si procede con la realizzazione delle interfacce che
costituiscono il livello di visualizzazione.
4.1 Architettura della rete del Comune di Cento
Prima di descrivere la realizzazione del progetto, è necessario soffermarsi per analizzare gli strumenti che
permettono al servizio Reticolo Strade di funzionare. L’elemento fondamentale che permette
all’applicazione di essere eseguita è la rete Intranet, ossia quella struttura hardware e software usata,
all'interno del Comune di Cento, per facilitare la comunicazione e l'accesso alle informazioni.
La rete Intranet del Comune di Cento è separata da Internet grazie all’utilizzo di un Firewall, che controlla il
traffico sia in entrata che in uscita e protegge la rete interna da possibili attacchi esterni. Questa
configurazione di rete permette di generare una zona demilitarizzata (DMZ), ossia un segmento isolato di
LAN raggiungibile sia da reti interne che da reti esterne. La DMZ permette però connessioni esclusivamente
verso l’esterno: gli host definiti sulla DMZ infatti non possono connettersi alla rete interna del comune.
Questo tipo di configurazione viene spesso utilizzata per consentire ai Server posizionati sulla DMZ di
fornire servizi all’esterno senza compromettere la sicurezza della rete interna, nel caso una di queste
macchine sia soggetta ad un attacco informatico: per chi si connette dall’esterno la DMZ è di fatto una sorta
di vicolo cieco. Sulla zona demilitarizzata sono collegati i Server pubblici (ossia quei server che devono
essere raggiungibili dall’esterno della rete aziendale) che rimangono separati dalla LAN interna, evitando
così di compromettere l’integrità interna.
La rete del comune presenta Server che lavorano sia su piattaforma Linux che su piattaforma Windows.
Queste macchine fungono da Server di posta, DNS, Server Proxy, Server DB, mettono a disposizione tutti i
servizi del S.I.T., offrono la possibilità di utilizzare un Desktop remoto e permettono alla rete interna di
funzionare correttamente e in totale sicurezza.
4.2 Database dell’applicazione
L’applicazione Reticolo Strade gestisce i dati contenuti nella base di dati SDE(spacial database engine),
presente sul Server DB del Comune di Cento. La struttura delle tabelle utilizzate per il corretto
funzionamento del servizio è fornita dalle specifiche regionali per la gestione del reticolo stradale
comunale. Il numero di entità che vengono utilizzate è notevole e questo implica, di conseguenza, la
presenza di un’elevata mole di dati.
Le relazioni esistenti tra le tabelle sono descritte nei capitoli precedenti, anche attraverso lo schema E/R
specifico. Il modello E/R è uno strumento usato per analizzare le caratteristiche di una realtà in modo
indipendente dagli eventi che in essa accadono, cioè per costruire un modello concettuale dei dati
indipendente dalle applicazioni. Lo schema E/R mette in evidenza gli aspetti fondamentali del modello
concettuale con i dati caratterizzanti e le associazioni tra essi.
29
Università degli Studi di Ferrara
A livello di database molte tabelle presentano alcuni campi aggiuntivi rispetto alle specifiche, quindi è stato
necessario, come primo passo, analizzarle una a una per verificare quali campi fossero stati aggiunti e quali
di questi fossero indispensabili o meno. Infatti, a tutte le tabelle i cui record vengono rappresentati con
una figura geometrica sulla cartografia digitale (archi stradali ed edifici), è stato aggiunto un campo
denominato Shape, ossia figura. Questo campo ha il compito di identificare univocamente una forma
geometrica, che può essere:
•
•
Nel caso l’oggetto sia un arco stradale questo sarà rappresentato da un vettore
Nel caso degli edifici la figura disegnata sarà un poligono
Il compito di gestire la creazione e l’associazione della figura geometrica con i record del reticolo stradale è
affidato ai dipendenti del S.I. che gestiscono la cartografia digitale. Per quanto riguarda i numeri civici non è
necessario assegnare loro una figura geometrica, in quanto essi possono essere rappresentati
semplicemente da un punto. Di conseguenza necessitano solamente di una coppia di coordinate x e y.
Proprio per questo la tabella dei civici presenta due campi, COORD_X e COORD_Y, che servono appunto a
definire la posizione del numero civico all’interno della cartografia.
Un campo che è stato aggiunto alle tabelle dei numeri civici, archi stradali ed edifici è il campo chiamato
link. Questo attributo è molto importante, perché contiene un link dinamico che consente, a chi utilizza la
cartografia digitale, di raggiungere l’interfaccia web del servizio direttamente dalla cartografia stessa. Il
funzionamento e la creazione dei link dinamici verrà descritta in seguito.
Alla tabella dei numeri civici sono stati aggiunti alcuni attributi utili a caratterizzare ancora di più i record di
tale entità. Infatti sono stati inseriti i campi contenenti la data di inserimento e modifica del record e un
campo note, in cui l’amministratore può memorizzare annotazioni personali sullo stato del numero civico.
Rispetto alle specifiche è stata aggiunta una tabella in più. Questa tabella, denominata
NCBX51PAT_INTERNI, serve per contenere gli interni associati a un determinato numero civico. Grazie a
questa tabella, chi usufruisce del servizio reticolo strade, può visualizzare i dati anagrafici dei residenti
semplicemente ricercando un numero civico. Infatti l’applicazione si collega al servizio, già esistente,
ANAGRAFE ON-LINE del Comune di Cento.
Molte tabelle presentano dei campi multi valore, ossia dei campi il cui contenuto può assumere più
significati. Per esempio, il campo tipo_es dell’entità Arco Stradale, rappresenta la tipologia dell’arco in
relazione alla funzione svolta (figura 16).
Si è deciso quindi, per ogni campo di questo tipo, di creare una tabella indipendente contenente tutti i
possibili valori che esso può assumere. Queste tabelle sono denominate dizionari, in quanto servono per
descrivere il significato di un certo valore. Nel caso del campo tipo_es è stata creata una tabella chiamata
D_RET_STBL51AAT_TIPO_ES, che contiene tutte le possibili descrizioni del campo tipo_es della tabella degli
archi stradali.
Infine, durante l’analisi della base di dati è stato deciso di non utilizzare la tabella contenente le giunzioni, la
tabella STBL51NAT. Infatti, durante lo sviluppo dell’applicazione, non è mai stato necessario un suo utilizzo.
30
Università degli Studi di Ferrara
Figura 16 Esempio di un campo che può assumere più significati in base al suo valore
4.3 Struttura dell’applicazione
L’applicazione Reticolo Strade è un nuovo modulo che è stato aggiunto a quelli già esistenti e funzionanti
del Sistema Informativo Territoriale (S.I.T.). E’ una componente indipendente che opera autonomamente
rispetto agli altri moduli del sistema. Questo tipo di approccio modulare consente di semplificare di molto il
lavoro compiuto dagli sviluppatori, in quanto offre loro la possibilità di sviluppare, testare e verificare
l’applicazione in modo del tutto separato da quello che viene fatto per gli altri moduli. Inoltre a chi sviluppa
le applicazioni viene data la possibilità di riutilizzare codice, o perché no, moduli già esistenti.
Il concetto di modularità dell’applicazione è reso possibile dall’utilizzo del framework Seagull. Infatti, com’è
già stato spiegato nel capitolo precedente, la struttura a directory del framework contiene una cartella
chiamata modules, che a sua volta contiene tutti i singoli moduli che compongono il sistema informativo.
Nello specifico, quello che verrà descritto è il modulo ‘Reticolo Strade’.
Il modulo Reticolo Strade contiene al suo interno tre cartelle (figura 17):
•
Classes: questa cartella contiene tutti i manager dell’applicazione, ossia tutte le classi che
implementano la logica di funzionamento del servizio:
o ReticolostradeMgr.php: permette all’utente di scegliere il tipo di ricerca, che può
interessare i numeri civici, gli archi stradali oppure le strade (strade estese
amministrative,toponimi stradali)
o ArchiMgr.php: gestisce la ricerca di un arco stradale, la sua visualizzazione in dettaglio e la
visualizzazione dei dati patrimoniali associati.
o CiviciMgr.php: manager che consente di ricercare un numero civico e visualizzarne il
dettaglio. Inoltre si collega con il servizio di Anagrafe On-Line per visualizzare i dati
anagrafici dei residenti del numero civico selezionato.
31
Università degli Studi di Ferrara
o ReticoloAdminMgr.php: gestisce tutto il lato amministrativo riguardante i numeri civici.
Implementa le funzionalità di inserimento,modifica e cancellazione di un numero civico.
o StradeAdminMgr.php: manager per l’amministrazione degli archi stradali. Gestisce quindi
la modifica di un arco di nuova digitalizzazione o di un arco già esistente, l’eliminazione e
implementa il modulo d’associazione tra arco e strade.
o EdificiAdminMgr.php: implementa la funzionalità che aggiorna i nuovi edifici con un nuovo
identificatore.
o InternoAdminMgr.php: questo manager consente di gestire gli interni associati ad un
numero civico, quindi implementa le funzionalità di inserimento e di cancellazione.
o VieMgr.php: classe che implementa le logiche per la gestione (modifica e cancellazione)
delle strade estese amministrative e dei toponimi stradali.
o Output.php: questa classe contiene una serie di funzioni costruite con l’unico scopo di
formattare l’output. Queste funzioni vengono richiamate all’interno dei templates.
o Utility.php: in questa classe invece sono state implementate moltissime funzioni che
verranno poi usate all’interno dei vari manager. L’idea di costruire una classe separata per
implementare queste funzioni è alla base del principio del riutilizzo di codice. In questo
modo infatti il risparmio di lavoro è stato notevole.
•
Templates: questa directory contiene tutti i templates utilizzati nell’applicazione. Questi sono i
file.html che permettono di visualizzare i risultati provenienti dai manager. Si è cercato, laddove se
ne avesse la possibilità, di riutilizzare le stesse pagine per compiere azioni differenti.
•
Data: all’interno di questa cartella è presente un file di configurazione di seagull chiamato
‘data.default.my.sql’ che permette al modulo di essere installato correttamente all’interno del
contesto in cui esso opera.
Oltre a queste cartelle il modulo reticolo strade contiene anche un file di configurazione chiamato ‘conf.ini’,
che contiene al suo interno il nome di tutte le classi manager implementate all’interno della cartella
‘modules’. Oltre alle classi manager, il file di configurazione contiene anche alcuni parametri che vengono
usati all’interno dell’applicazione. In questo modo l’amministratore ha la possibilità di intervenire su tali
parametri senza agire sul codice. Nell’applicazione reticolo strade sono stati parametrizzati i link dinamici,
in modo che, quando si devono aggiornare i record delle tabelle che contengono tale campo, basta
richiamare il parametro specifico contenuto nel file conf.ini.
Per ogni tabella utilizzata durante lo sviluppo del servizio è stato creato un DataObject (D.O.). Un D.O. è un
file con estensione .php, al cui interno è presente una classe che estende la classe DataObject. Estendendo
tale classe, l’oggetto creato ne eredita tutti i metodi e funzionalità. Un D.O. è l’astrazione di una tabella
presente in una base di dati. Infatti, agendo sul D.O. con i metodi ereditati si agisce direttamente sulla
tabella. All’interno delle azioni contenute nei manager, quando si deve comunicare con una determinata
tabella dapprima si crea un’istanza del suo DataObject e successivamente si usano i metodi ereditati per
creare le Query SQL.
Infine, relativamente alla struttura del layout delle pagine, grazie a Seagull è possibile impostare una
struttura di template il cui contenuto è generato dinamicamente dal codice. Tale struttura è costituita da
un template principale chiamato ‘master.html’ che a sua volta contiene i templates ‘header.html’,
‘banner.html’ e ‘footer.html’. Quest’ultimo include il file ‘accesskeys.html’, che permette di visualizzare il
menù delle access keys.
32
Università degli Studi di Ferrara
Figura 17 Organizzazione dell’applicazione Reticolo Strade
33
Università degli Studi di Ferrara
4.4 Ricerca Numero Civico
La prima funzionalità a essere stata sviluppata, nonché la più importante, è la ricerca di un numero civico.
La si raggiunge dal menù principale del servizio reticolo strade (figura 18) e il suo scopo è quello di restituire
all’utente una selezione di numeri civici, scelti in base a opportuni parametri di ricerca.
La ricerca di un civico si basa sull’inserimento di tre parametri (figura 19):
•
•
•
Località
Via
Numero civico
La località rappresenta il paese in cui è ubicato il civico e il suo inserimento è obbligatorio. Si è deciso di
rendere obbligatorio il suo inserimento in modo da avere un minimo livello di filtraggio sui record presenti
nella tabella dei civici. Infatti il numero di record presenti in tale tabella è molto elevato e la prospettiva di
doverli visualizzare tutti sarebbe risultata troppo sconveniente in termini di tempo speso.
Una volta inseriti i parametri e avviata la ricerca viene visualizzata la pagina contenente i risultati
dell’operazione (figura 20). I numeri civici selezionati vengono suddivisi in pagine a gruppi di dieci e l’utente
ha la possibilità di modificare la sua ricerca modificando i parametri precedentemente inseriti, oppure di
effettuare una nuova ricerca.
L’utente ha la possibilità, per ogni numero civico visualizzato, di consultarne i dettagli, tramite il link
dinamico ‘dettaglio’ situato al loro fianco.
Figura 18 Schermata principale del Servizio Reticolo Strade
34
Università degli Studi di Ferrara
Figura 19 Modulo di ricerca di un numero civico
Figura 20 Pagina di visualizzazione dei numeri civici
35
Università degli Studi di Ferrara
4.5 Dettaglio Numero Civico
Una volta selezionato il numero civico, l’utente ha la possibilità di consultarne i dettagli. Cliccando sul
pulsante ‘dettaglio’ si raggiunge la pagina in cui vengono visualizzate tutte le informazioni associate al
numero civico (figura 21).
Tutte le informazioni visualizzate sono quelle descritte nelle specifiche regionali, più il campo aggiuntivo
per le annotazioni. E’ inoltre presente un link che offre la possibilità di visualizzare i dati anagrafici di tutte
le persone che abitano in quel civico (figura 22). Il link in questione è dinamico, ovvero cambia in base al
civico che è stato selezionato e si collega al servizio di Anagrafe On-Line passando come parametri il
numero civico,il codice della via e, se presente, il subcivico. Compito del link è solamente quello di passare i
parametri per la ricerca, perché la ricerca vera e propria viene effettuata dal servizio AOL. Nel caso al civico
fossero associati degli interni, per ognuno di essi verrebbe generato un ulteriore link all’anagrafe, con un
ulteriore livello di filtraggio dovuto appunto dalla presenza dell’interno. Il link che permette di raggiungere
l’anagrafe è così definito:
http://ssi/aol/anagrafeonline/risultati_via.php?codvia=*****&num_civ=***&interno=***
Figura 21 Pagina di visualizzazione del dettaglio di un numero civico
36
Università degli Studi di Ferrara
Figura 22 Visualizzazione dei dati anagrafici dei residenti tramite il servizio di Anagrafe On-Line
4.6 Ricerca Arco Stradale
La funzionalità di ricerca è stata implementata anche per gli archi stradali. Tramite il modulo di ricerca,
raggiungibile dal menù principale tramite il link ‘ricerca archi stradali’, è infatti possibile filtrare i record
della tabella contenente gli archi (figura 23). La ricerca si basa su molti attributi, ma per nessuno di essi è
obbligatorio l’inserimento, in quanto la quantità di record selezionabili è molto inferiore a quella dei civici.
In questa pagina sono stati utilizzati i dizionari, ossia quelle tabelle particolari descritte nel paragrafo 3.2.
Difatti tutti i menù a tendina presenti nel modulo di ricerca, sono stati inizializzati con un vettore
contenente i valori dei campi del dizionario. Il valore associato all’opzione scelta verrà utilizzato nella
ricerca dell’arco stradale.
Una volta effettuata la ricerca viene caricata la pagina contenente i risultati (figura 24). A ogni arco è
associato un link che permette di visualizzarne il dettaglio e le associazioni con le strade (strade estese
amministrative e toponimi stradali).
4.7 Dettaglio Arco Stradale
Cliccando sul bottone ‘dettaglio’ di un arco stradale si raggiunge la pagina di visualizzazione dettagli (figura
25). In questa pagina vengono visualizzate le seguenti informazioni:
•
•
•
Dettagli Arco Stradale
Strade Estese amministrative associate
Toponimi Stradali Associati
L’utente ha la possibilità di visualizzare le informazioni del patrimonio stradale dell’arco (figura 26), ossia le
delibere di proprietà, tramite il pulsante ‘dettaglio [d]’ situato nella maschera di dettaglio dell’arco stesso.
Infine tramite il link ‘dettaglio’ posizionato a fianco di ogni strada estesa amministrativa, si possono
visualizzare i dettagli dell’associazione tra l’arco stradale e la strada stessa (figura 27).
37
Università degli Studi di Ferrara
Figura 23 Modulo di ricerca di un arco stradale
Figura 24 Visualizzazione dei risultati della ricerca archi stradali
38
Università degli Studi di Ferrara
Figura 25 Pagina di dettaglio dell’arco stradale
39
Università degli Studi di Ferrara
Figura 26 Dettaglio del Patrimonio Stradale dell’arco
Figura 27 Dettaglio Associazione tra Arco Stradale e Strada Estesa Amministrativa
40
Università degli Studi di Ferrara
4.8 Ricerca Vie
Questo tipo di ricerca è stata aggiunta a fine progetto per ampliare i servizi offerti dall’applicazione reticolo
strade. Analogamente alle ricerche descritte nei paragrafi precedenti, è stata implementata la possibilità di
effettuare la ricerca di una strada estesa amministrativa o di un toponimo stradale (figura 28).
L’inserimento dei parametri per la ricerca avviene in un modulo specifico, mentre i risultati vengono
proiettati in una pagina di visualizzazione (figura 29).
Figura 28 Ricerca di un strada estesa amministrativa o di un toponimo stradale
Figura 29 Visualizzazione dei risultati delle ricerche
41
Università degli Studi di Ferrara
4.9 Inserimento di un nuovo numero civico
L’inserimento di un nuovo numero civico è un’operazione che permette di inserire un nuovo record nella
tabella dei civici, ed è consentita solo agli utenti autorizzati. Tutto ciò avviene tramite una maschera di
inserimento raggiungibile dalla pagina d’amministrazione (figura 30). L’operazione di inserimento richiede
l’immissione obbligatoria di tutti i campi presenti nella maschera, tranne quelli che riguardano le
informazioni aggiuntive. Molto importanti sono i campi per le coordinate, in quanto la loro presenza è
fondamentale per rappresentare il civico nella cartografia digitale. Una volta inserito il civico viene
generato il link dinamico, aggiunto automaticamente nell’omonimo campo del civico stesso, che permette
di raggiungere i dettagli dell’entità direttamente dalla cartografia digitale.
La struttura del link è la stessa per tutti i civici, tranne il parametro ‘id_nciv’, che permette di identificarli
univocamente:
http://ssi/sitweb/index.php/reticolostrade/CiviciMgr/action/dettaglio/id_nciv/***********
4.10 Gestione di un numero civico
La gestione di un numero civico prevede:
• Modifica di un numero civico
• Gestione degli interni di un numero civico
• Eliminazione di un numero civico
Scelta l’opzione di gestione di un numero civico viene caricato il modulo di ricerca. Questo modulo è lo
stesso utilizzato nella ricerca descritta nel paragrafo 3.4. Una volta visualizzato il civico vengono abilitate
tutte le opzioni di gestione. Vengono infatti visualizzati tutti i pulsanti necessari per eseguire le operazioni
elencate precedentemente.
L’opzione di modifica permette di aggiornare i dati di un determinato numero civico. La pagina di modifica
è la stessa usata per l’inserimento, tranne al più qualche accorgimento grafico. Infatti, utilizzando lo stesso
template, è stato possibile riutilizzare una buona parte di codice, distinguendo le operazioni di inserimento
e modifica tramite l’utilizzo di una variabile di stato. Se arrivo nel template con la variabile stato settata con
il valore ‘insert’, l’azione della pagina riguarderà l’inserimento, mentre se la variabile stato è settata con
‘modify’ l’azione che verrà richiamata è la modifica.
Il secondo servizio di gestione riguarda la coordinazione degli interni associati a un numero civico. Questa
funzionalità permette agli utenti autorizzati di aggiungere o eliminare un interno. L’interno di un numero
civico è caratterizzato da tre attributi: il numero dell’interno, il piano e la scala. Sono dunque questi i
parametri necessari per l’inserimento di un nuovo elemento, anche se solo il numero dell’interno è
obbligatorio. Se al numero civico sono associati uno o più interni questi vengono visualizzati in una lista, da
cui è possibile selezionarli ed eliminarli (figura 31).
L’ultima azione abilitata è l’eliminazione. Con questa azione viene data la possibilità di eliminare
definitivamente un numero civico. Una volta che è stata selezionata l’eliminazione viene comunque
richiesta la conferma, in quanto tale azione non è reversibile (figura 32). La richiesta della conferma
dell’eliminazione avviene lato server e non lato client in quanto è più sicura e non raggirabile. E’ stato
infatti creato un template al cui interno è presente un form di conferma. La realizzazione di una ‘conferma
eliminazione’ che non risieda sul Server, è resa possibile grazie all’utilizzo di tecnologie Client Side, come
per esempio JavaScript. Il problema però è che non tutti i Browser supportano tali tecnologie, quindi si
rischierebbe di eseguire azioni senza che l’utente ne sia completamente certo.
42
Università degli Studi di Ferrara
Figura 30 Modulo di inserimento di un numero civico
43
Università degli Studi di Ferrara
Figura 31 Pagina per la gestione degli interni
Figura 32 Conferma eliminazione lato Server
44
Università degli Studi di Ferrara
4.11 Modifica di una arco di nuova digitalizzazione
Quando viene creato un nuovo arco stradale nella cartografia digitale, automaticamente viene inserito un
nuovo record nella tabella degli archi. Questo record è privo di ogni attributo e per essere utilizzato o
associato, deve essere compilato. Dalla pagina di amministrazione, accedendo alla sezione ‘Compila Nuovo
Arco Stradale’, si arriva in una pagina in cui vengono visualizzati tutti gli archi di nuova digitalizzazione.
Selezionandone uno viene caricata la maschera di modifica di un arco stradale. La modifica prevede
l’inserimento di tutti i parametri necessari a caratterizzare l’arco. Una volta inseriti tutti gli attributi,
automaticamente viene generato il link automatico necessario per raggiungere il dettaglio dell’arco
direttamente dalla cartografia. Il link è così costruito:
http://ssi/sitweb/index.php/reticolostrade/ArchiMgr/action/viewdettaglio/id_arco/***********
Infine tutte le informazioni vengono inserite nel record dell’arco, che verrà successivamente rimosso dalla
lista degli archi di nuova digitalizzazione.
Una volta che la modifica è stata apportata all’elemento selezionato l’utente viene riportato alla pagina
d’amministrazione.
4.12 Gestione di un arco stradale
La gestione di un arco stradale prevede la possibilità di:
• Modificare un arco stradale
• Eliminare un arco stradale
• Gestire i dati sulle delibere del patrimonio strade associati ad un arco stradale
La ricerca dell’arco stradale da gestire viene effettuata grazie alla funzionalità descritta nel paragrafo 3.6. In
questo caso però, dato che è un’operazione di amministrazione, vengono abilitate le funzioni di gestione.
La modifica di un arco permette di aggiornare i dati di un arco già esistente. Questa operazione viene
effettuata nella stessa pagina in cui viene compilato un arco di nuova digitalizzazione. Infatti, come per la
gestione di un numero civico, viene usata la stessa pagina sia per la modifica di un nuovo arco sia per la
modifica di un arco già esistente (figura 33).
L’eliminazione di un arco stradale consente di eliminare definitivamente un arco stradale e tutti gli elementi
a lui associati. Infatti, confermando l’eliminazione di tale entità, vengono eliminati i seguenti elementi:
• Arco stradale
• Associazioni con le strade estese amministrative
• Associazioni con i toponimi stradali
• Dati sulle delibere patrimoniali
Come per i numeri civici anche per gli archi stradali la conferma dell’eliminazione avviene lato Server.
La gestione dei dati patrimoniali è una funzionalità che permette di inserire alcune informazioni riguardo
alle delibere di proprietà associate all’arco stradale. Queste informazioni servono per indicare chi è l’ente
proprietario dell’arco e quando questa patrimonialità è stata certificata. Nel caso l’arco sia di nuova
digitalizzazione, non sarà presente nessun dato a riguardo e di conseguenza la gestione di tali dati prevede
un’azione di inserimento mediante un’opportuna maschera. Nel caso l’arco risulti già compilato e dotato
dei dati patrimoniali, viene data la possibilità di modificare tali dati (figura 34).
45
Università degli Studi di Ferrara
Figura 33 Azione di modifica di un arco stradale
46
Università degli Studi di Ferrara
Figura 34 Gestione dati delle delibere
47
Università degli Studi di Ferrara
4.13 Gestione Associazione tra un arco stradale e le strade estese amministrative/toponimi
stradali
Questa funzionalità permette di associare un elemento della tabella degli archi stradali con uno o più
elementi provenienti dalle tabelle delle strade estese amministrative o dei toponimi stradali. Bisogna infatti
rispettare i vincoli di cardinalità tra le entità descritti nel primo capitolo, che permettono ad un singolo arco
di essere associato con più elementi.
L’operazione di associazione avviene tramite un modulo speciale, che può essere raggiunto da due pagine
differenti:
• Dal menù di amministrazione: scegliendo l’opzione ‘Modulo Associazione Arco Strade’ vengono
visualizzati tutti gli archi che non hanno alcuna associazione con le strade (strade estese
amministrative o toponimi stradali). Scegliendo uno di questi archi si raggiunge il modulo di
associazione.
• Dal dettaglio di un arco: durante la gestione di un arco, oltre a essere abilitate le funzionalità
descritte nel paragrafo precedente, viene abilitata anche la possibilità di raggiungere il modulo
d’associazione direttamente dalla pagina di dettaglio dell’arco, grazie al pulsante ‘aggiungi
elemento da associare’.
Il modulo è diviso in due sotto-moduli:
• Il primo consente di associare l’arco a una strada estesa amministrativa. Permette di scegliere tra
una strada già esistente o di crearne una nuova. Nel caso che la strada esista già, viene caricata una
pagina in cui vengono visualizzate tutte le strade estese amministrative esistenti. Nel caso si voglia
generarne una nuova viene aperta una maschera di inserimento. Una volta che la strada da
associare è stata scelta (o creata), si passa al modulo di inserimento dei dettagli dell’associazione
tra arco e strada. Questi dettagli sono descritti nelle specifiche e servono per caratterizzare il
percorso stradale generato dall’associazione.
• Il secondo sotto-modulo permette invece di associare l’arco stradale a un toponimo stradale. Il
procedimento d’associazione tra le due entità è analogo a quello implementato per le strade
estese amministrative, con l’unica differenza che non è previsto l’inserimento di ulteriori dettagli
per l’associazione.
Una volta che l’arco è stato associato con uno dei due elementi, oppure con entrambi, la procedura di
associazione può essere terminata utilizzando il pulsante ‘completa’.
Nel caso in cui sia necessario annullare l’operazione, è predisposta l’opzione di ‘annulla associazione’, che
permette di cancellare tutte le azioni svolte fino a quell’istante. In figura 35 è raffigurata la successione di
eventi che porta un arco a essere associato con una strada estesa amministrativa già esistente.
Oltre alla possibilità di aggiunta è stata implementata la possibilità di eliminare singolarmente ogni
associazione tra arco e strade. Infatti, nella pagina di dettaglio dell’arco, a fianco di ogni strada estesa
amministrativa e a fianco di ogni toponimo stradale, è presente l’opzione ‘elimina associazione’, che
permette di eliminare la singola associazione che intercorre tra l’arco e l’elemento selezionato.
48
Università degli Studi di Ferrara
Figura 35 Associazione tra un arco stradale e una strada estesa amministrativa
49
Università degli Studi di Ferrara
Figura 36 Gestione Edifici
4.14 Gestione Edifici
Ogni qual volta venga disegnato un nuovo edificio sulla cartografia digitale, automaticamente viene inserito
un nuovo record nella tabella degli edifici presente sulla base di dati. Questo nuovo record è però
sprovvisto dell’identificatore denominato ID_Edificio. La funzionalità ‘Gestione Edificio’ consente di
aggiornare tutti quei record che sono sprovvisti del campo ID_Edificio con un nuovo valore. Dal menù di
amministrazione, selezionando l’opzione ‘Gestione Edificio ’, si accede a una pagina in cui vengono
visualizzati i record degli edifici con il campo ID_Edificio settato a Null. A fianco di ogni elemento appare
l’opzione ‘Calcola ID’ (figura 36), che genera un nuovo identificatore e lo associa all’elemento selezionato.
4.15 Gestione Autenticazioni
L’applicazione reticolo strade mette a disposizione di tutti gli utenti una serie di funzionalità ad accesso
libero, mentre tutto ciò che può essere usato per manipolare i dati del database è stato protetto. Il
concetto di protezione è stato implementato assegnando a un gruppo ristretto di utenti una serie di
permessi. Grazie a questi permessi gli utenti autorizzati hanno la possibilità di raggiungere zone protette
dell’applicazione.
La realizzazione del sistema di autenticazione è stato realizzato grazie al framework Seagull e alla sua
funzionalità di Filter Chain (catena di filtraggio). I filtri che compongono questa catena, oltre a processare
l’input e l’output dei dati, provocano l’evento di autenticazione, permettendo all’utente che sta
usufruendo del servizio di essere registrato all’interno di Seagull. Una volta che l’autenticazione è stata resa
disponibile, grazie a Seagull è possibile attivarla sui singoli moduli che compongono l’intero sito.
Quest’azione è realizzabile settando i seguenti parametri nel file di configurazione ‘conf.ini’:
• requiresAuth: questo parametro attiva l’autenticazione di Seagull
• requiresDomainAuth: abilita l’autenticazione di dominio
• filterChain: questo parametro definisce la catena di filtraggio, ossia dichiara tutti gli elementi che, in
catena, processano i dati verificando l’autorizzazione.
Settati questi parametri, l’area di amministrazione diventa accessibile solo agli utenti autorizzati che sono
registrati nei moduli di configurazione di Seagull. Infatti, provando ad accedere a quest’area, vengono
richiesti all’utente Username e Password (figura 37). Una volta che l’utente ha avuto il lasciapassare per
accedere all’area di amministrazione, deve avere un ulteriore gruppo di permessi per poter usufruire dei
servizi protetti. L’assegnamento di questi servizi avviene sempre tramite Seagull, che permette di
assegnare, a ogni utente, i permessi in modo del tutto capillare.
50
Università degli Studi di Ferrara
Figura 37 Richiesta di autenticazione per l’accesso all’area di amministrazione del servizio
4.16 Impostazione dell’Interfaccia WEB
L’interfaccia Web del servizio è stata realizzata cercando di mantenere il suo aspetto il più possibile simile a
quello utilizzato negli altri servizi Web del Comune di Cento. Questa omogeneità è stata resa possibile
grazie alla presenza, nella struttura a directory di Seagull, di una cartella contenente tutte le regole CSS
utilizzate nell’intero sito. In questo modo, a ogni istante dello sviluppo, si disponeva di tutti gli elementi
necessari per realizzare un’interfaccia chiara,leggibile,usabile e accessibile.
Infine, per ogni pagina, sono state aggiunte le Access Key. Le Access Key sono quelle combinazioni di tasti
che consentono agli utenti invalidi, o che non intendono utilizzare il mouse, di accedere a tutti i contenuti
del servizio reticolo strade. Infatti attraverso queste combinazioni è possibile accedere ai campi da
compilare, utilizzare pulsanti e accedere ai link.
Una volta terminata l’impostazione di tutte le pagine web che compongono il servizio e verificato il corretto
funzionamento dell’applicazione, il servizio Reticolo Strade è stato reso interamente disponibile a tutti i
dipendenti del Comune di Cento.
51
Università degli Studi di Ferrara
5 Conclusioni
Le tesi ha presentato lo sviluppo e il progetto di un servizio per la gestione del reticolo stradale del Comune
di Cento. Tramite questo servizio, gli utenti che si interfacciano all’applicazione possono consultare ed
eventualmente gestire i dati e le informazioni che costituiscono il reticolo stradale territoriale.
Nel suo complesso il servizio è molto vasto perché, dovendo gestire molte entità, offre all’utente un set di
funzionalità molto ampio. Molto problematica è stata la fase iniziale del progetto, fase in cui è stato
obbligatorio analizzare la base di dati contenente le tabelle da utilizzare. Rispetto agli standard imposti
dalla regione sono stati infatti rilevati, nelle tabelle contenute nella base di dati SDE, una serie di campi non
definiti nelle specifiche di progetto. Questi campi sono stati aggiunti dai dipendenti dell’ufficio SSI per
rendere disponibile, agli sviluppatori delle applicazioni Web, una gamma più ampia di informazioni. La
presenza di questi campi aggiuntivi non pregiudica comunque la corretta realizzazione del progetto, in
quanto esso segue le linee guida imposte dagli standard descritti nelle specifiche.
Questo processo di ispezione ha richiesto l’impiego di non poco tempo e, finita la riorganizzazione di tutte
le tabelle, si è passati subito allo sviluppo dell’applicazione, consci del fatto che con le tabelle ordinate e
private di tutti i campi inutili, il lavoro sarebbe stato più semplice e scorrevole.
L’intera realizzazione del servizio è stata affiancata dall’utilizzo delle ultime tecnologie disponibili per la
creazione di applicazioni web.
Grazie al framework Seagull tutto il lavoro svolto è risultato più semplice e soprattutto organizzato. Infatti
la gestione modulare delle applicazioni offerta dal framework, ha permesso di progettare il servizio Reticolo
Strade in modo del tutto indipendente dai moduli già esistenti.
Il linguaggio che è stato utilizzato per lo sviluppo del servizio è il PHP. Nonostante non lo avessi mai usato e
neppure visto si è rivelato abbastanza semplice da imparare e questa peculiarità mi ha permesso di
adattarmi velocemente a questo nuovo ambiente di sviluppo. Un ulteriore tecnologia utilizzata è quella per
la gestione dei Database, ossia Microsoft SQL Server. Essendo stato abituato a usare DBMS più semplici,
come per esempio Microsoft Access, credevo di trovarmi in difficoltà davanti a un sistema molto più
evoluto e complicato come SQL Server, ma il fatto di lavorare in un ambiente sicuro e controllato mi ha
dato la possibilità di poter imparare ad usarlo senza particolari problemi.
Durante tutto il progetto del servizio è stata posta molta attenzione riguardo ai concetti di accessibilità e
usabilità. Di fatti, fin da subito si è cercato di realizzare un‘interfaccia che rispettasse tali caratteristiche. Per
raggiungere questo obiettivo, cioè per raggiungere la massima efficienza e per rispettare i vincoli di
accessibilità e usabilità, il servizio è stato revisionato più e più volte.
Dal punto di vista individuale sono convinto che questa esperienza lavorativa passata in comune sia stata di
fondamentale importanza per lo sviluppo della mia formazione personale. Dico questo perché ho avuto la
possibilità di vivere e lavorare all’interno di un gruppo di lavoro competente, preparato e affiatato. Inoltre
ho avuto la possibilità di sviluppare un servizio tangibile, che sarà reso disponibile e utilizzabile da utenti
finali. Ho imparato molto, molto di più di quello che pensassi e questo credo sia il lato più positivo
dell’intera esperienza.
Infine un plauso lo voglio rivolgere al personale dell’ufficio sistemi informativi. A partire da Michele
Tedeschi, che con la sua grandissima competenza mi ha sempre aiutato ogni qual volta ne abbia avuto
bisogno. A Leonardo Busi, che, come Michele, è sempre stato disponibile a darmi spiegazioni e consigli.
Infine al sig. Ennio Barbieri, che ha sempre coordinato tutte le operazioni con serietà e simpatia.
53
Università degli Studi di Ferrara
6 Riferimenti
[APACHE WEB SERVER]
http://www.apache.org/
[CSS]
http://www.w3.org/Style/CSS/
[HTML]
http://www.w3.org/TR/REC-html40/
[MISCROSOFT SQL SERVER]
http://www.microsoft.com/sql/default.mspx
[SEAGULL FRAMEWORK]
http://seagullproject.org/
[SQL]
http://www.wiscorp.com/SQLStandards.html
55