Introduzione
2
collaborazione che tutto il personale aziendale, altamente qualificato, ha sempre
fornito per l’intera durata del progetto.
La tesi si articola in quattro capitoli e presenta cinque appendici in cui è
riportato un sunto delle caratteristiche del metalinguaggio XML, degli aspetti
principali dei sistemi informativi territoriali, delle proiezioni cartografiche e il
codice scritto per l’implementazione.
Nel primo capitolo sono poste le basi teoriche per la realizzazione del progetto:
si descrivono i sistemi complessi, l’architettura su cui poggiano, quindi
s’introducono i sistemi Web-based, le applicazioni e i servizi Web,
soffermandosi sulla struttura dati e sui protocolli per lo scambio di messaggi,
infine si presenta l’esempio del sistema di gestione territoriale Terrapack con le
fasi salienti della propria evoluzione da architettura client-server a Web GIS.
Nel secondo capitolo si definiscono i modelli di dati geografici. In principio si
chiarisce l’importanza di modellare la realtà in dati geografici standard, quindi si
presentano le rappresentazioni raster, e vettoriale, sottolineandone pregi e difetti.
Solo in ultima analisi s’introduce il linguaggio di codifica per dati geografici in
uso in applicazioni Web, il GML e si definiscono gli elementi di rilevanza per il
progetto.
Richiamata la teoria necessaria per una maggiore comprensione dei risultati, il
terzo capitolo è dedicato più strettamente al lavoro di tesi. Si è deciso di
presentare la teoria concernente gli standard mondiali OGC al fianco del lavoro
di implementazione così da chiarirne gli aspetti e validare la consistenza del
software sviluppato. In particolare ci si è soffermati sulle operazioni di un WFS
base, sull’estrazione dei dati geografici da file XML inviati da un server dati e
sulla routine di tracciamento delle feature geografiche.
Argomento del quarto ed ultimo capitolo è il WMS, complemento ideale del
servizio Web di gestione delle feature; il servizio di gestione e rappresentazione
Introduzione
3
mappe è spiegato negli aspetti fondamentali per maggiore chiarezza e
completezza sul progetto MapViewer.
Infine sono state tratte le conclusioni a cui si è giunti e sono stati indicati i
possibili sviluppi futuri del lavoro svolto.
Cap.1 I sistemi complessi
4
CAPITOLO 1
I SISTEMI COMPLESSI
Nel presente capitolo sarà introdotto il concetto di sistema complesso su cui
poggiano le basi teoriche del lavoro di tesi, ne sarà presentata la struttura
generale e le principali architetture.
1.I I sistemi complessi
Un sistema complesso può essere definito come un insieme di elementi
(individui, elementi di rete, nodi, ecc) che interagiscono a vari livelli gli uni con
gli altri. Ogni elemento svolge un determinato compito all’interno del sistema e
nella maggioranza dei casi può essere esso stesso considerato come un sistema
elementare. La totalità degli elementi agisce come se il sistema complesso fosse
un’entità singola e non l’insieme di più entità autonome. Il comportamento di un
sistema complesso è quindi molto più articolato della semplice somma delle
singole parti che lo compongono. Esempi di sistemi complessi sono i sistemi
sociali, i computer, la rete Internet, i circuiti elettrici, il clima, ecc.
È possibile rappresentare un sistema complesso come l’insieme di più entità
connesse che interagiscono tra loro in modo cooperativo sulla base di un
software funzionale che gestisce le proprietà globali del sistema. Un sistema
complesso è assimilabile da un punto di vista fisico ad una rete di nodi
intelligenti interconnessi fra loro con varie tecnologie che comunicano in rete.
Cap.1 I sistemi complessi
5
Nel tempo si è passati da topologie prettamente punto-punto a reti a stella fino a
giungere alla topologia oggi maggiormente in uso per la mappatura di un
sistema complesso, la rete a maglia completamente connessa (figura 1.1).
Fig.1.1 Topologia di una rete a maglia
Ogni nodo della rete è dotato di software locale e l’insieme delle funzioni
disponibili nei nodi di input-output caratterizzano l’interattività con l’utente ai
diversi livelli (diagnostica, gestione messaggi di controllo, visualizzazione
output, ecc).
I nodi di interesse si possono classificare in:
ξ Nodi sensori;
ξ Nodi di input direttive;
ξ Nodi di output informazione;
ξ Nodi di comunicazione.
Cap.1 I sistemi complessi
6
I nodi sensori sono dedicati alla raccolta, all’elaborazione e alla trasmissione
delle grandezze ambientali di interesse. Possono eseguire elaborazioni
esclusivamente sulle grandezze locali oppure incrociare tali grandezze su base
algoritmica con quelle provenienti da altri nodi. I nodi sensori devono inoltre
fornire informazioni georeferenziate.
1
I nodi di input consentono l’inserimento nel sistema delle direttive del decisore
esterno, dei comandi e degli algoritmi necessari all’elaborazione dei dati.
I nodi di output sono dedicati alla presentazione delle informazioni di interesse.
Possono essere costituiti da un semplice comunicatore alfanumerico o dalle
strutture di presentazione di una sala operativa.
I nodi di pura comunicazione sono preposti alla gestione intelligente delle
comunicazioni di rete ottimizzando il traffico ed il percorso sulla base delle
ridondanze e delle finalità delle informazioni circolanti. Non richiedono di
essere georeferenziati se è nota la loro posizione nel grafo e le caratteristiche
delle interconnessioni con gli altri nodi.
Un nodo può possedere una o più proprietà, inclusa ovviamente quella di
comunicazione, senza la quale sarebbe impossibile lo scambio di informazioni.
1
La georeferenziazione è la tecnica che permette di associare ad un dato in formato digitale una coppia di
coordinate che ne fissino la posizione sulla superficie terrestre. [N.d.A.]
Cap.1 I sistemi complessi
7
Fig. 1.2 Struttura a nodi di un sistema complesso
La progettazione di sistemi complessi si basa su approcci architettonici client-
server e sullo sviluppo delle applicazioni e dei servizi Web. Nei paragrafi
seguenti esamineremo gli aspetti rilevanti di tali argomenti, infine presenteremo
come esempio il sistema di gestione territoriale Terrapack.
Cap.1 I sistemi complessi
8
1.II L’architettura client-server
Un sistema complesso è idealmente rappresentato, come già detto nel paragrafo
precedente, da una rete di nodi intelligenti. I nodi possono richiede dati
memorizzati in nodi remoti della rete. Ad esempio, un nodo di presentazione
richiede il segnale elaborato da una stazione di input. Il nodo di presentazione
effettuerà una richiesta e il nodo servente la soddisferà. L’architettura descritta è
di tipo client-server (figura 1.3) e rappresenta il modello di riferimento per il
networking e per le applicazioni di database.
Con il termine client si indica un componente hardware o software che accede ai
servizi o alle risorse di un altro componente, detto server. Il client può
supportare diversi livelli di funzionalità a seconda dei quali si classifica come:
ξ Fat client: supporta funzionalità di elaborazione e gestione dati;
ξ Thin client: propone esclusivamente funzionalità di presentazione;
ξ Thick client: la logica applicativa è distribuita in modo intermedio tra
client e server.
Il fat client gestisce in proprio l’elaborazione e generalmente richiede dati o
documenti al server, sfruttandolo nelle vesti di database. Il thin client riveste il
ruolo di nodo di presentazione espletando solo funzionalità di presentazione
dell’output e dei dati; il server in questo caso opera nel ruolo di nodo di
elaborazione. Infine il thick client rappresenta una via intermedia in cui le
funzionalità sono distribuite con il server. Oltre alla logica del sistema, il server
deve implementare tutte le tecniche di gestione degli accessi, allocazione e
rilascio delle risorse, condivisione e sicurezza dei dati o delle risorse.
Cap.1 I sistemi complessi
9
Fig.1.3 Architettura client-server
Il sistema client-server può essere scomposto, senza perdita di generalità, nelle
procedure atte al completamento di una richiesta di servizio e nel servizio stesso.
Nella figura 1.4 si sottolineano i processi e le azioni che consentono il
raggiungimento di un generico servizio richiesto.
Fig.1.4 Flusso di lavoro di un sistema client-server
Cap.1 I sistemi complessi
10
Aspetto fondamentale per la realizzazione di un tale sistema tra il client e il
server è la comunicazione, lo scambio di richieste e di dati che avviene tramite
le socket e i protocolli di trasmissione dati UDP e TCP/IP di cui nel seguito si
chiariscono i concetti principali.
1.II.I Socket
Una socket è l'astrazione usata per indicare il terminale di una connessione tra
due processi residenti su host diversi. Una socket identifica l'interfaccia tra
l'applicazione e i protocolli di comunicazione ed è definita dalla porta, dal
protocollo di comunicazione e dall'indirizzo IP. Ad esempio, la socket
127.0.0.1:80 fa riferimento alla porta 80 sul nodo identificato dall’indirizzo
127.0.0.1.
A seconda del protocollo di comunicazione adoperato si riconoscono due tipi di
socket:
ξ Datagram Socket: impiega il protocollo UDP per supportare
comunicazioni bidirezionali senza connessione;
ξ Stream Socket: con protocollo TCP, garantisce comunicazione con
connessione, ricezione dei pacchetti informativi e predispone eventuale
ritrasmissione dei dati persi.
1.II.I.I UDP
Il protocollo UDP (User Datagram Protocol) è un protocollo di trasporto che si
colloca sopra lo strato IP. Fornisce un servizio di trasmissione dati
Cap.1 I sistemi complessi
11
connectionless. L’unità informativa UDP contiene, oltre ai dati spediti, il numero
di porta di origine e di destinazione (figura 1.5).
Fig.1.5 Datagramma UDP
Il messaggio UDP è composto da due parti: UDP header e UDP data area,
entrambi incapsulati nel datagramma IP. L'header è diviso in quattro campi da
16 bit:
ξ Source port: identifica il numero di porta sull'host mittente del
datagramma;
ξ Destination port: identifica il numero di porta sull'host destinatario del
datagramma;
ξ Lunghezza UDP: contiene la lunghezza totale del datagramma UDP
(header+dati);
ξ Checksum: contiene il codice di controllo del datagramma (header+dati).
Cap.1 I sistemi complessi
12
Il protocollo UDP non assicura la ricezione dei pacchetti informativi né l’esatto
ordine di arrivo, non essendo specificato nel datagramma alcun campo per la
conferma di ricezione o per l’ordine ma solo la sorgente, la destinazione e la
lunghezza del messaggio. Il vantaggio di un tale protocollo consiste nella
velocità del processo di scambio dati; non è necessario trasmettere informazioni
di controllo e il risultato è una trasmissione dati più veloce del TCP e più
immediata.
1.II.I.II TCP
Il TCP (Transmission Control Protocol) è un protocollo di trasporto con
connessione definito nella RFC 793. Un’unità informativa TCP è strutturata e
suddivisa in un TCP header e un TCP data (figura 1.6).
Fig.1.6 Datagramma TCP
Cap.1 I sistemi complessi
13
I campi presenti nell'header sono:
ξ Porta di provenienza (Source Port): identifica la porta sull'host mittente
associata alla comunicazione TCP; serve per distinguere trasferimenti dati
contemporanei;
ξ Porta di destinazione (Destination Port): identifica la porta sull'host
destinatario associata alla comunicazione TCP;
ξ Numero sequenziale: indica la posizione dei byte nel flusso spedito
all'interno del segmento; serve per ordinare i pacchetti in ricezione e per
verificare di non averne perso alcuno;
ξ Numero di riscontro (Acknoledgment number): conferma la ricezione
di una parte del flusso dati;
ξ HLEN: indica la lunghezza dell’header;
ξ Riservato: bit non impiegati attualmente e riservati per sviluppi futuri;
ξ Bit codice: bit per il controllo del protocollo;
2
2
I flag di controllo sono:
ξ CWR (Congestion Window Reduced) - settato a 1 indica che l'host sorgente ha ricevuto un segmento
TCP con il flag ECE settato a 1 (aggiunto all'header in RFC 3168);
ξ ECE (ECN-Echo) - settato a 1 indica che l'host supporta ECN (Explicit Congestion Notification)
durante il 3-way handshake (aggiunto all'header in RFC 3168);
ξ URG - settato a 1 indica che nel flusso sono presenti dati urgenti alla posizione (offset) indicata dal
campo Urgent pointer;
ξ ACK- settato a 1 indica che il campo Acknowledgment number è valido;
ξ PSH - settato a 1 indica che i dati in arrivo non devono essere bufferizzati ma passati subito ai livelli
superiori dell'applicazione;
ξ RST - settato a 1 indica che la connessione non è valida;
ξ SYN - settato a 1 indica che l'host mittente del segmento vuole aprire una connessione TCP con l'host
destinatario e specifica nel campo Sequence Number il valore dell' Initial Sequence Number (ISN);
sincronizza i numeri di sequenza dei due host. L'host che ha inviato il SYN deve attendere dall'host
remoto un pacchetto SYN/ACK.
ξ FIN - settato a 1 indica che l'host mittente del segmento vuole chiudere la connessione TCP aperta con
l'host destinatario. Il mittente attende la conferma dal ricevente (con un FIN-ACK). A questo punto la
connessione è ritenuta chiusa per metà: l'host che ha inviato FIN non potrà più inviare dati, mentre
l'altro host ha il canale di comunicazione ancora disponibile. Una volta che l'altro host invierà il
pacchetto con FIN impostato, la connessione sarà considerata completamente chiusa.
Cfr. Rfc 793.
Cap.1 I sistemi complessi
14
ξ Finestra: consente al ricevente di indicare la dimensione della finestra per
il trasferimento dati;
ξ Checksum: campo di controllo per la verifica della validità del segmento;
ξ Puntatore urgente: punta a dati urgenti.
Il protocollo TCP garantisce un servizio affidabile caratterizzato da:
ξ Stream Orientation: l'ordine di ricezione del flusso dati è identico a
quello di origine;
ξ Virtual Circuit Connection: fornisce una connessione dedicata virtuale;
ξ Buffered Trasfer: i router interessati dal trasferimento sono provvisti di
buffer per minimizzare ed ottimizzare il traffico di rete;
ξ Unstructured Stream: non è necessario nessun tipo di formattazione
specifica dello stream; è quindi demandata agli applicativi la corretta
estrazione dei dati dai segmenti ricevuti;
ξ Full-duplex Connection: il trasferimento dati è contemporaneo ed
indipendente in entrambe le direzioni.
L'affidabilità del servizio TCP è garantita dal meccanismo di acknowledgement
with retransmission. Il destinatario invia al mittente un messaggio di
acknowledgement (ack) una volta ricevuto il pacchetto. Se l'ack non giunge al
mittente entro un intervallo di tempo, detto timeout, il messaggio sarà
ritrasmesso. Tale meccanismo assicura la ricezione del corretto stream di dati
senza perdita di alcuna unità informativa.
Per migliorare l'utilizzazione di banda è stato introdotto inoltre il controllo di
flusso con il protocollo Sliding Window. La finestra scorrevole permette la
Cap.1 I sistemi complessi
15
trasmissione di tutti i pacchetti nella finestra senza dover aspettare il riscontro di
ciascuno. L'ampiezza della finestra viene contrattata all'inizio della
comunicazione e può variare dinamicamente.
1.III L’architettura Data Oriented
Dalla nascita del Web ad oggi la rete internet è divenuta la più estesa e la più
importante a livello mondiale. Se al principio il Web poteva sembrare un enorme
database di informazioni presenti sotto forma di pagine Web statiche, oggi
risulta sempre più spesso essere la sede di servizi e applicazioni Web.
Affinché terminali differenti possano comunicare ed utilizzare questi servizi è
stato necessario affidarsi ad un linguaggio comune per lo scambio dei dati.
Proprio i dati e il loro trattamento diventano l’argomento centrale delle
problematiche in un Web Service o in una Web Application. Si parla quindi di
architettura Data Oriented.
In un’architettura Data Oriented i calcolatori sono connessi in rete con un server
Web, a sua volta collegato ad un Application server (figura 1.7).
Fig. 1.7 Architettura Web Technology Data Oriented
Calcolatore
1
Calcolatore
2
Web
Server
Application
Server