Académique Documents
Professionnel Documents
Culture Documents
FACOLTÀ DI INGEGNERIA
Tesi di laurea in
INGEGNERIA INFORMATICA
3
1. Introduzione
Il Dipartimento di Ingegneria Civile Ambientale (DICA) dell’Università degli Studi di Trieste con l’intenzione
di presentare e rendere pubblici al dominio internet alcuni suoi progetti e i relativi risultati ottenuti, ha
richiesto la realizzazione di un sito web per la presentazione ed il continuo aggiornamento dell’attività
scientifica di un loro laboratorio di Geomatica. Si richiede inoltre la realizzazione teorica di una base di dati
da interfacciare possibilmente al sito web e che permetta al personale del laboratorio la gestione di articoli
scientifici, altri progetti relativi a quello più generale GeoSNaV e pubblicazione e gestione delle informazioni
relative ai ricercatori operanti in tali progetti.
Scopo principale di questo progetto dovrà essere quindi quello di fornire la possibilità al dipartimento di
presentare e fornire un costante aggiornamento sullo sviluppo del progetto chiamato GeoSNaV (Geodesy
and Satellite Navigation) mediante l’utilizzo del sito web richiesto e di realizzare una base di dati, completa
di procedure di gestione e interrogazione, da poter poi in futuro andare ad inserire nel sito.
Il Laboratorio GeoSNaV è stato creato presso il Dipartimento di Ingegneria Civile per enfatizzare le attività
di ricerca condotte dai membri del gruppo nell’ambito del GNSS (Global Navigation Satellite Systems),
rinforzare i collegamenti con partner europei, connettere le attività sperimentali comuni su GNSS e in
particolare EGNOS (European Geostationary Navigation Overlay Service) e facilitare la creazione di network
con altri centri di ricerca e imprese europee per la partecipazione ad altri Progetti di Ricerca banditi dalla
Comunità Europea.
Attività di ricerca e campagne sperimentali sono state condotte assieme a ricercatori di paesi come
Slovenia, Croazia, Albania, Bosnia e Erzegovina, Repubblica Ceca, Polonia, Inghilterra e Francia.
In considerazione del fatto che il contenuto della base di dati dovrà quindi essere consultabile su molte
postazioni differenti spesso localizzate al di fuori dello stesso laboratorio e dipartimento DICA, la soluzione
migliore e anche più ovvia, risulta quella di rendere l’applicativo per la comunicazione e gestione del data
base direttamente implementabile sul portale web mediante un’interfaccia utente disponibile su apposite
pagine del sito.
Questo tipo di approccio progettuale e costruttivo garantisce una facile ed immediata accessibilità ai
contenuti e alla gestione del data base senza dover essere costretti ad installazioni di programmi specifici
sui computer che in seguito verranno usati come client.
Particolare attenzione va quindi prestata al fattore compatibilità che impone all’interfaccia
dell’applicazione di essere perfettamente fruibile su tutti i browser più comunemente usati oggigiorno:
Internet Explorer, Mozilla Firefox, Google Chrome, Opera e Safari. Questo approccio risulta essere spesso
utilizzato per lo sviluppo di software simili in quanto permette di sorvolare le problematiche relative al
possibile e frequente utilizzo di postazioni con sistemi operativi differenti, come Windows, Linux o Mac OS
anche all’interno dello stesso laboratorio. Nonostante questo risulti essere un approccio abbastanza
consueto e che quindi si presentino spesso caratteristiche comuni ad altri progetti, ciò non toglie che sia
necessaria comunque un’analisi completa di tutte le problematiche e delle relative soluzioni da adottare
per arrivare poi alla realizzazione finale del sistema. Questa condizione risulta essere vera anche nel caso in
cui per la realizzazione si vadano a sfruttare delle tecnologie ben consolidate negli anni come Java, HTML,
PHP, CSS, e MS SQL Server.
4
2. Obbiettivi
Obbiettivo del lavoro di questa tesi è quello di sviluppare un sito web che come scopo primario ha quello di
presentare, descrivere e fornire aggiornamenti sullo stato del progetto GeoSNaV e degli altri progetti ad
esso correlati. Realizzare un data base che consenta la memorizzazione di tutto il materiale scientifico e dei
dati che si richiede di gestire e progettare l’interfaccia grafica dell’applicativo per la gestione di tale sistema.
Obbiettivi che ci si prefigge con lo sviluppo del data base, nel caso di una sua reale implementazione, sono
quelli di riuscire a gestire e documentare particolari progetti di interesse scientifico, gestire ed ottimizzare il
flusso di informazioni relative al progetto su scala europea fra le varie università, permettere un costante
aggiornamento sullo stato di avanzamento e sviluppo e facilitare la creazione di network con altri centri di
ricerca e imprese europee per la partecipazione ad altri Progetti di Ricerca in ambito GNSS e EGNOS.
Dagli incontri e colloqui avuti con il committente del progetto, sono emerse più chiaramente le necessità ed
esigenze espresse sulle funzionalità e caratteristiche che il prodotto software dovrà possedere. Dalla
racconta di queste informazioni è stato possibile definire quelli che saranno gli obbiettivi e passaggi
strategici per la progettazione, sviluppo e realizzazione di tale progetto:
Microsoft SQL Server 2008 Express Edition per la costruzione del Data Base.
Microsoft SQL Server 2008 Management Studio per la progettazione fisica del Data Base e
creazione delle query.
Linguaggio HTML per la costruzione della parte statica della pagina web.
Linguaggio PHP per la creazione dell’interfaccia dinamica di gestione Data Base.
Java Script per la cura di alcuni dettagli grafici del sito web e per la visualizzazione della galleria
d’immagini.
CSS per la gestione e definizione degli stili delle pagine e del Java Script.
Web Page Maker per la realizzazione della parte statica del sito.
Adobe Dreamweaver CS3 per la realizzazione e progettazione di tutte le componenti dinamiche.
Microsoft Visio 2008 per la realizzazione dei diagrammi.
Microsoft Visual Studio 2008
VS.php 2008 per la costruzione e relativo test dei form in php
5
3. Stato dell’Arte e Vincoli di progetto
L’applicativo che ci si prefigge di realizzare non va a sostituire nessun software preesistente quindi non si
necessita di nessuna analisi del software già eventualmente in utilizzo all’interno del laboratorio.
Attualmente per la presentazione di progetti o dati scientifici ci si affida solamente a conferenze o alla
pubblicazione di articoli scientifici su riviste specializzate.
Ora, con la realizzazione di questo progetto, si cerca di concentrare tutte le informazioni comuni al progetto
GeoSNaV in un unico sito web ponendosi come obbiettivo quello di massimizzare il numero di lettori di
questi dati grazie ai vantaggi offerti dalla tecnologia web e dal network che si cerca di andare a creare.
Caratteristica fondamentale e vincolo per questo sviluppo sarà quello di rendere le informazioni
perfettamente reperibili e consultabili da qualsiasi centro di ricerca e impresa europea e quindi più in
generale, da qualsiasi postazione con accesso ad internet.
Ciò implica la realizzazione teorica anche di un’interfaccia che sia compatibile con tali requisiti e vincoli.
Per questo motivo inoltre, la lingua usata per la realizzazione del sito sarà necessariamente l’inglese in
modo permettere la chiara lettura delle informazioni in esso contenute a chiunque ne fosse interessato.
6
La presente tesi si suddivide in due capitoli principali che riguardano strettamente lo sviluppo del software:
Il capitolo di Analisi descrive quelle che sono state le metodologie usate per arrivare alla progettazione
concettuale del data base e le conclusioni alla quali esse hanno portato grazie all’utilizzo del modello entità-
relazioni con tutto ciò che esso comporta.
Il capitolo di Realizzazione riporta i passi realizzativi e di implementazione della Business Logic inerente
all’applicazione, la descrizione e lo sviluppo delle funzionalità, la definizione delle modalità di interazione
degli utenti con l’applicativo e quindi con il data base, la realizzazione teorica dell’interfaccia messa loro a
disposizione e la creazione ed analisi del sito web su cui essa si andrà ad appoggiare.
7
4. Analisi
Il questo capitolo si procederà con l’analisi concettuale e funzionale del problema. Quest’analisi viene
utilizzata per determinare le specifiche ed i vincoli per la successiva realizzazione logica dell’applicazione.
Nel dettaglio, la progettazione concettuale della base di dati si articola nei seguenti passi:
8
4.1. Requisiti espressi in forma ristrutturata
L’acquisizione dei requisiti del progetto dalle richieste espresse dal committente del software, permette di
determinare fin da subito quali proprietà e caratteristiche dovrà possedere il sistema di cui si richiede la
realizzazione fornendo così anche delle idee più chiare sulla quantità di lavoro che comporterà la
realizzazione del progetto e della conseguente miglior strategia di approccio per la sua realizzazione.
Risulta essere questa una delle fasi più importanti dell’analisi per lo sviluppo del sistema in quanto un
eventuale errore di valutazione verificatosi in questa fase, si propagherebbe al resto del progetto
attraversando tutti i passaggi successivi aumentandone così la sua importanza ed il conseguente impatto
sulla sua realizzazione finale.
Si riporta di seguito il passaggio subito successivo a quello della raccolta dei requisiti; la strutturazione
dettagliata di tali requisiti per classi omogenee:
9
Requisiti e vincoli per la parte di AUTENTICAZIONE
L’applicazione e le operazioni di autenticazione dovranno essere di immediata intuizione e
facilmente raggiungibili dal coordinatore e dai suoi collaboratori stretti.
L’accesso al sistema tramite autenticazione sarà fruibile solo al coordinatore del progetto e
ai suoi collaboratori stretti in possesso delle credenziali necessarie.
Il processo di autenticazione verrà eseguito dopo l’inserimento di un Username e di una
Password.
Per facilitare l’accesso e la procedura di identificazione, password e nome utente verranno
scelte direttamente dalla stessa persona e fornite al collaboratore o ai collaboratori stretti
per l’inserimento e la successiva attivazione.
10
Requisiti e vincoli sulle operazioni di RICERCA possibili sul Data Base:
La consultazione dei dati messi a disposizione dal data base sarà permessa a qualsiasi
visitatore della pagina web.
Dovrà essere resa disponibile all’utente la ricerca per nome o cognome personale che come
risultato deve visualizzazione il CV, le pubblicazioni personali e la lista dei progetti a cui
quella persona ha partecipato.
Dovrà essere resa disponibile la ricerca per titolo del progetto che come risultato deve
fornire i dati relativi al progetto ricercato, la lista del personale che vi ha partecipato e la
lista delle pubblicazioni che lo riguardano.
Dovrà essere resa disponibile la ricerca per titolo della pubblicazione che come risultato
deve fornire il link o URL del file della pubblicazione, la lista degli autori e del progetto a cui
essa fa riferimento.
Dovrà essere resa disponibile una ricerca di tutte le pubblicazioni e di tutti i progetti che
restituirà una lista di tutte le pubblicazioni o dei progetti che sono stati inseriti fino a quel
momento all’interno del data base.
Dovrà essere resa disponibile una ricerca che permetta di visualizzare la lista di tutti gli
utenti inseriti fino a quel momento all’interno del data base.
Non ci dovranno essere limiti al numero massimo di ricerche per persona o alcun limite
temporale fra una ricerca e quella successiva.
I risultati delle ricerche dovranno essere visualizzati possibilmente in una semplice tabella.
In caso di link o URL a file, sarà concesso lo scaricamento diretto o un reindirizzamento ad
una pagina esterna tramite link cliccabile.
11
4.2. Glossario dei termini
Passo successivo alla stesura dei requisiti in forma ristrutturata è quello di creare un glossario dei termini
che come scopo, non ha solo quello di accumunare le parole ed i sinonimi, ma anche quello di creare le
prime relazioni fra i concetti principali che in esso sono contenuti.
Username, Criterio di identificazione del personale con privilegi sul Data Amministratore,
Credenziali
Password Base, come l’amministratore e i suoi collaboratori stretti. Collaboratore Stretto
Operazione con cui qualsiasi utente può ricercare e consultare Consultazione, Utente, Articolo, Curriculum,
Ricerca Record
il contenuto del Data Base. Utilizzo Progetto
Amministratore,
Cancellazione E’ l’eliminazione di un record dal database concessa solo
Eliminazione Collaboratore Stretto,
Record all’amministratore e ai suoi collaboratori stretti.
Articolo, Progetto, Utente
12
4.3. Progettazione del Diagramma E-R
Il modello E-R ( Entità-Relazioni ) è impiegato nelle fasi iniziali della progettazione di un sistema data base e
serve per fornire uno schema concettuale che sia il più possibile congruo con la realtà dei dati e del sistema
che si sta cercando di realizzare.
Scopo pratico di questo modello è quello di semplificare il data base che si cerca di realizzare rendendo di
conseguenza leggibili a tutti le intenzioni e i passi necessari per raggiungere l’implementazione fisica e
quindi finale della struttura della base di dati.
Per questa fase della realizzazione del progetto e lo sviluppo del diagramma E-R, si è scelto di adottare la
classica strategia mista. Partendo da uno schema scheletro di base in cui si inseriscono le entità principali,
grazie a successive ristrutturazioni, raffinamenti, espansioni e generalizzazioni, esso permette di arrivare
alla stesura del diagramma concettuale E-R con attributi e cardinalità.
Dall’analisi del problema e dei requisiti espressi si sono identificate le seguenti entità: Utente, Utente
Interno, Utente Esterno, Utente Con Credenziali, Utente Senza Credenziali, Pubblicazione, Progetto,
Contatti E-Mail e Contatti Telefonici.
Con lo stesso procedimento attuato per la definizione delle entità, si sono individuate le relazioni che
legano fra loro le entità trovate poco prima. Le relazioni individuate sono: Autore, Collaboratore, Relazione,
Inserimento, Modifica e Possessore.
13
4.3.4. Descrizione dei concetti
Un Utente inserito e memorizzato all’interno del data base, può non far parte del personale interno al
progetto e quindi in questo caso essere considerato come un Utente Esterno. Ogni tipo di Utente può però
essere Autore di una o più Pubblicazioni contemporaneamente, o Collaboratore di uno o più Progetti
contemporaneamente.
Un Utente Interno fa parte del personale interno al progetto GeoSNaV e in quanto tale risulta in possesso di
un curriculum vitae. Un Utente Interno può essere poi anche un Utente Con Credenziali nel caso in cui sia
anche un collaboratore stretto del coordinatore, oppure un Utente Senza Credenziali nel caso opposto.
Ogni Utente Interno è Possessore di nessuno o più Contatti E-Mail (se disponibili e forniti in fase di
inserimento) e di nessuno o più Contatti Telefonici (sempre se disponibili e forniti in fase di inserimento).
Ai soli Utenti Con Credenziali è concesso l’Inserimento nel sistema di uno o più nuovi Progetti e di una o più
nuove Pubblicazioni. La stessa cosa è valevole anche per quanto concerne la Modifica di tali dati dove ai soli
Utenti Con Credenziali è concessa la Modifica dei dati di una Pubblicazione o di un Progetto.
In fine, un Progetto può essere collegato in Relazione a nessuna o più Pubblicazioni che lo possono
riguardare e viceversa, una Pubblicazione può essere Relazionata a nessuno o più Progetti
contemporaneamente.
Dopo un’attenta analisi delle entità e delle relazioni si è giunti alla stesura della seguente lista degli Attributi
individuati dalle Entità poco sopra descritte:
14
4.4. Diagramma E-R con Attributi e Cardinalità
In questa fase della progettazione sono ancora presenti delle generalizzazioni come ad esempio l’entità
generale Utente e l’entità generale Utente Interno che poi in fase di progettazione logica verranno
eliminate in modo da avvicinare questo sistema il più possibile ad un modello di tipo relazionale.
15
5. Realizzazione
Nella prima parte di questo capitolo si tratta l’analisi e la progettazione logica della base di dati.
E’ infatti la progettazione logica il passaggio successivo a quella concettuale.
Essa si compone principalmente di un’attività di ristrutturazione dello schema E-R precedentemente
ottenuto con una traduzione dello stesso verso il modello logico e quindi più vicino a quello che poi si andrà
a realizzare concretamente con MS SQL.
La progettazione logica della base di dati si articola secondo i seguenti passi che risultano essere nella
sequenza specificata, tutti collegati fra loro:
16
5.1. Tabella dei volumi
Nelle tabelle dei volumi vengono riportati i concetti principali dello schema E-R come le entità e relazioni
con i relativi volumi di utilizzo previsti a regime. Questa costituisce la base per l’effettiva realizzazione
dell’applicazione in quanto permette di attuare una ristrutturazione basata su dei criteri di ottimizzazione e
semplificazione, più una traduzione in riferimento ad un modello logico in quanto si tratta di una
valutazione dei costi delle operazioni sul data base.
ENTITÀ RELAZIONI
17
5.2. Stima frequenza operazioni sui dati
17 Visualizzare la lista di tutti gli autori di una pubblicazione Circa 20 volte a settimana
18 Visualizzare la lista di tutti gli articoli collegati ad un progetto Circa 20 volte a settimana
Come si può ben notare dalla stima circa la frequenza delle varie operazione che verranno svolte dal
sistema sul data base, non si ha come principale preoccupazione quella di dover gestire nel complesso
grossi carichi e quindi di dover ottimizzare i flussi di lavoro. La stessa cosa vale per la normalizzazione e il
controllo delle ridondanze, anche queste fasi fondamentali per lo sviluppo logico di una base di dati che
cerchi di avvicinarsi il più possibile al modello di tipo relazionale.
18
Questa considerazione sul basso carico di lavoro sorge naturale se si va a considerare che il sistema che si
sta cercando di realizzare, ha più uno scopo di immagazzinamento informazioni, piuttosto che quello di
gestione di grossi e continui flussi di dati e utenti sia in ingresso che in uscita dal sistema.
Anche per le operazioni di autenticazione mediante l’uso di Username e Password in questo caso non si
prevede di superare i 5 accessi al giorno nonostante questa sia usualmente una delle operazione che più
spesso si ripete su sistemi e applicazioni web di questo genere.
Quindi da queste analisi specifiche, il progetto conferma la sua iniziale idea di concezione, e cioè quella di
diventare una collezione di dati per la memorizzazione e divulgazione di informazioni a carattere scientifico.
Nel caso di sua implementazione sul sito web, si assume infatti per certo e scontato un iniziale intenso
utilizzo del data base e di tutte le operazioni prima elencate, soprattutto quelle di inserimento, per poi
procedere verso una fase di stabilizzazione dell’intensità di utilizzo secondo le stime appena fatte.
Va considerato inoltre che in questo caso, risulta molto difficile riuscire a fornire delle stime precise
riguardo alla reale intensità di utilizzo a regime e quindi al numero di operazioni nell’unità di tempo in
quanto il più delle operazioni, e nella maggior parte dei casi, verranno svolte da utenti non registrati e
probabilmente solo in visita al sito.
19
5.3. Workflow di alcune operazioni di esempio
Username
Password
UTENTE CON
CREDENZIALI
(0,N) (0,N)
INSERIMENTO INSERIMENTO
(1,1) (1,1)
RELAZIONE
(0,N) (0,N)
PUBBLICAZIONE PROGETTO
Per quanto riguarda l’operazione di inserimento nuovo Progetto ci sono due possibili strade da seguire in
base a dei fattori ben precisi. Nella prima ipotesi (quella in verde) si procede ad inserire un nuovo Progetto
di cui sono state anche già memorizzate le eventuali pubblicazioni ad esso collegate. Una volta inseriti tutti i
dati del progetto, per completare l’operazione passo infatti a collegare ad esso tutte le pubblicazioni che lo
riguardano.
Nella seconda ipotesi (quella in giallo) invece si procede ad inserire un nuovo Progetto di cui non sono
ancora state inserite le eventuali pubblicazioni correlate. Dopo aver inserito infatti tutti i dati relativi al
Progetto, passo all’inserimento anche di tutte le Pubblicazioni che lo riguardano e di cui sono in possesso al
momento. Una volta inserite queste pubblicazioni, le collego al progetto prima inserito.
Per l’analisi di questa operazione si è dato per scontato il fatto che ogni utente collaboratore del progetto o
autore della relativa pubblicazione correlata, sia già inserito e memorizzato all’interno del sistema. In caso
contrario si dovrà perciò procedere anche all’inserimento di tali utenti. Si può inoltre verificare il caso in cui
al nuovo progetto inserito, non sia correlata nessuna pubblicazione e che quindi quest’ultimo passaggio
non risulti più essere necessario.
20
5.3.2. Inserimento nuovo Utente Con Credenziali
ID_Telefono
ID_Utente
Tipo Numero
Numero ID_Utente
Nome
Cognome
UTENTE INTERNO
DETENTORE
Username
Password
UTENTE CON
CREDENZIALI
Si analizza in questa occasione l’inserimento di un nuovo Utente Con Credenziali e quindi il caso più
complesso e completo che si possa realizzare all’interno del sistema. Proprio perché esso rappresenta il
caso più complesso in assoluto, sarà anche quello usato meno di frequente. L’inserimento di un Utente Con
Credenziali può essere effettuato dal coordinatore o dai suoi collaboratori stretti.
Questa operazione comincia con la definizione del tipo di persona da inserire scegliendo fra un Utente Con
Credenziali, un Utente Senza Credenziali o un semplice Utente Esterno; valore che rappresenterà il
contenuto dell’attributo Tipo della tblUtenti. Una volta scelto il tipo (un Utente Con Credenziali in questo
caso) si procede con l’inserimento di Nome, Cognome, Titolo conseguito, Luogo, Anno, Città, Università,
Scopo e Link Curriculum. Successivamente si passa poi all’inserimento della lista dei contatti e quindi dei
numeri telefonici e delle mail che possono essere in numero diverso da utente a utente. Infatti un Utente
Interno può avere zero, una o più mail e numeri di telefono ad esso associati. Per pura scelta pratica, il
numero delle mail o dei numeri di telefono a disposizione di ogni singolo utente, non potrà superare la
quantità di 3 mail e 3 numeri telefonici.
Come ultima operazione viene richiesto l’inserimento di una Username e Password. Per semplicità, non si è
considerata la possibilità di legare questo nuovo utente a dei progetti o a delle pubblicazioni di cui
potrebbe essere collaboratore o autore poiché si cerca di analizzare il solo inserimento nuovo Utente.
21
5.4. Eliminazione delle generalizzazioni e partizionamento dei concetti
L’eliminazione delle generalizzazioni è uno dei passaggi fondamentali per il raggiungimento del diagramma
E-R finale in quanto apporta ad una notevole semplificazione della struttura interna e rappresenta un
processo obbligatorio per lo sviluppo di un data base relazionale.
Questa generalizzazione si può tranquillamente eliminare introducendo un campo di tipo che specifichi la
differenza fra un Utente Interno ed uno Esterno. Risulta inoltre evidente che l’entità Utente Esterno e
Utente, possiedono fisicamente gli stessi attributi. Quindi con l’introduzione di un campo attributo
chiamato Tipo passo ad eliminare l’entità Utente Esterno e a legare quella dell’Utente Interno all’Utente
con una relazione chiamata Utente Specializzato. In un’ottica di ottimizzazione del data base, questa
eliminazione sorge spontanea osservando la tabella dei volumi dove si può facilmente notare che la
maggior parte degli utenti, saranno Utenti Esterni (80 unità) rispetto a quelli Interni (20 unità)
ID_Utente
Nome
Cognome
Tipo
UTENTE
UTENTE
UTENTE
UTENTE INTERNO UTENTE ESTERNO SPECIALIZZATO
22
5.4.2. Generalizzazione Utente Interno
Del tutto similmente al caso della generalizzazione precedente, anche in questo caso essa può essere
tranquillamente eliminata introducendo un campo che identifichi la differenza fra un Utente Con
Credenziali e uno Senza Credenziali visto che l’utente senza credenziali possiede gli stessi attributi
dell’entità Utente Interno. Anche in questo caso, l’eliminazione sorge spontanea guardando nuovamente la
tabella dei volumi dove si può osservare che la maggior parte degli utenti, in questa categoria saranno
Utenti Senza Credenziali (16 unità) rispetto a quelli Con Credenziali (4 unità)
Link Curriculum
Città
Città Scopo
UTENTE CON
CREDENZIALI
Username
Password
23
5.4.3. Partizionamento dei concetti
Per quanto riguarda l’applicativo web e la visualizzazione dei dati ottenuti dalle interrogazione al data base
inerenti agli Utenti, si è scelto per questioni pratiche di dividere le informazioni ( info personali di base /
curriculum e informazioni di recapito ) appartenenti ad uno stesso Utente Interno in quanto esse vengono
poi visualizzate dall’applicativo solo su richiesta specifica e in modalità separata dai dati restanti.
Anche se i requisiti prestazionali del sistema risultano essere piuttosto bassi, si è comunque scelto di
frammentare tutte le informazioni relative ad un Utente Interno in quattro tabelle che conterranno
rispettivamente il Curriculum, i Contatti, i Contatti Mail e i Contatti Telefonici. Tutte e quattro queste
tabelle verranno relazionate all’utente tramite la chiave primaria identificativa ID_Utente andando così a
creare una struttura nidificata per l’entità Utente.
Si procede quindi con la creazione di quattro tabelle che descriveranno quattro entità singole e separate
seguendo anche l’indicazione imposte dalla 2 Forma Normale.
Questo partizionamento permette di garantire una riduzione del numero degli accessi e delle interrogazioni
inutili a particolari tabelle. Basti pensare che ad esempio, non sempre quando si effettua una ricerca per
nome o cognome utente sulla base di dati, si desidera poi anche visualizzare tutte le informazioni
disponibili su quel contatto. Risulta quindi evidente uno spreco di risorse come la visualizzazione dell’intero
profilo di un utente, compreso anche di tutte le sue partecipazioni in articoli e progetti quando magari di
questo, si aveva l’intenzione di trovare solo il suo contatto mail.
ID_Utente
Nome
Cognome
Tipo
UTENTE INTERNO
FORMAZIONE DETENTORE
DETENTORE DETENTORE
ID_Utente ID_Telefono
Titolo conseguito MAIL ID_Utente CONTATTI
Luogo Tipo Numero
Anno Numero
ID_Mail ID_Utente
Link Curriculum
ID_Utente Città
Mail Università
Scopo
24
5.5. Normalizzazione e scelta delle chiavi primarie
Per quanto riguarda la scelta di tutte le chiavi primarie, si è prestato attenzione ad alcuni criteri
fondamentali per lo sviluppo di un data base il quanto più possibile vicino al modello relazionale:
Ad una chiave primaria non può essere associato un valore NULL. Conseguenza di questa azione
sarebbe quella di rendere irraggiungibili e indistinguibili univocamente quei specifici record nella
tabella violando quindi i basilari vincoli di integrità referenziali.
E’ preferibile utilizzare chiavi primarie di tipo semplice, e quindi non composte da più attributi della
stessa tabella.
La chiave primaria è univoca ed in quanto tale, non si può ripetere per più di una volta all’intero
dello stesso concetto. Non possono esistere due record differenti ma con uguale chiave primaria
all’interno della stessa tabella.
CHIAVE
NOME DESCRIZIONE UTILIZZO ATTRIBUTI
PRIMARIA
Tabella di partenza che memorizza tutti gli
UTENTI ID_Utente Nome, Cognome, Ruolo
utenti, collaboratori e autori presenti nel DB
CONTATTI Tabella che memorizza i contatti dell’utente ID_Utente Città, Università, Scopo
CONTATTI MAIL Tabella che memorizza i recapiti Mail dell’utente ID_Mail ID_Utente, Mail
Titolo_Pro, Anno_Pro,
Tabella in cui vengono memorizzati i dati relativi Stato, Descrizione_Pro,
PROGETTO ID_Progetto
a tutti i progetti memorizzati nel DB Note, Pro_Inserito da,
Data inserimento Pro
Titolo_Pub, Anno_Pub,
Tabella in cui vengono memorizzati i dati relativi Descrizione,_Pub URL o
PUBBLICAZIONE ID_Pubblicazione
a tutte le pubblicazioni memorizzati nel DB Link, Pub_Inserito da,
Data inserimento Pub
ID_Pubblicazione,
MODIFICA Tabella che tiene conto di tutte le modifiche e
ID_ModPubblicazione ID_Utente, Data, (val.
PUBBLICAZIONE aggiornamenti fatti ad una pubblicazione
mod.)
25
Il data base è stato normalizzato secondo le prime 3 Forme Normali:
1FN: Colonne atomiche. Una colonna, un valore e quindi senza unità ripetitive.
2FN: Se è 1FN e se ogni colonna dipende solo dalla chiave primaria. Tabelle distinte per entità
distinte.
3FN: Se è 2FN e se ogni colonna è indipendente dalle altre. Eliminazione delle colonne calcolate.
Dalla normalizzazione in terza forma si deduce inoltre l’assenza di ridondanze all’interno del data base.
26
5.7. Realizzazione del data base
Dopo aver ristrutturato lo schema E-R si procede ora alla progettazione e creazione vera e proprio della
base di dati grazie al software MS SQL Server 2008 Express Edition. All’inizio si costruiscono le tabelle, poi si
definiscono gli attributi e su questi si fissano dei vincoli di integrità dei dati, successivamente si provvede a
dar vita alle relazioni fra le varie tabelle. Il risultato così ottenuto è il seguente:
Il Diagramma dello schema dei dati è la rappresentazione grafica creata automaticamente ma su richiesta
da MSSQL Server Management Studio una volta che è stata completata la creazione di tutte le tabelle, la
definizione delle chiavi primarie e la creazione delle relazioni secondo le indicazioni ottenute dallo schema
E-R ristrutturato. Dalla creazione del diagramma dell’intero data base si può notare la presenza di 3 tabelle
di sponda create appositamente per le relazioni molti a molti che si sono venute a creare in fase di
realizzazione. Le 3 tabelle di sponda sono la tblCollaboratore_Progetto, la tblAutore_Pubblicazione e la
tblCollegamenti le cui chiavi primarie sono date dai soli attributi di cui sono composte e quindi dalle chiavi
esterne delle rispettive tabelle a cui fanno da collegamento.
27
5.8. Descrizione delle tabelle della base di dati
Di seguito verrà riportata la descrizione di tutte le tabelle realizzate per il data base con l’analisi degli
attributi, il loro significato ed il tipo di variabile a cui essi sono stati associati. Verranno inoltre descritti i
motivi di alcune scelte a carattere tecnico che possono riguardare vari fattori all’interno di tutta la struttura
appena creata.
La tblUtenti è la tabella di partenza per l’analisi della base di dati in quanto in essa si memorizzano tutti gli
utenti che sono stati inseriti nel sistema. Chiave primaria di questa tabella è ID_Utente che identifica
univocamente ogni utente inserito. Essa è una variabile int di tipo contatore assegnata automaticamente
dal sistema in fase di inserimento di un nuovo record. Gli attributi della tabella sono il nome (Nome), il
cognome (Cognome) ed il ruolo (Ruolo). Gli attributi Nome e Cognome sono di tipo nchar(20), valore
ritenuto più che sufficiente per memorizzare un nome o un cognome. L’attributo ruolo è invece una
variabile di tipo smallint. Questo campo indica il tipo di ruolo che l’utente in questione ricopre all’interno
del progetto; esso che può variare fra Collaboratore Stretto, Collaboratore Interno o Collaboratore Esterno.
Per ogni tipo di ruolo viene assegnata una variabile numerica (ad esempio 0, 1, 2 o 3) la cui gestione è
molto più facile a livello applicativo piuttosto che andare ad utilizzare la stringa di testo con scritto
direttamente al suo interno il ruolo.
28
5.8.2. Tabella tblCredenziali
La tabella tblCredenziali serve per la memorizzazione delle credenziali associate ad un utente che ha come
ruolo quello di collaboratore stretto o ruolo di coordinatore. Chiave primaria di questa tabella è sempre
l’ID_Utente e come attributi si hanno solamente l’username (Username) e la password (Password),
entrambi variabili di tipo nchar(30).
All’interno della tabella tblCurriculum vengono memorizzate tutte le informazioni del curriculum vitae
relative ad un utente interno. Chiave primaria di questa tabella è sempre l’ID_Utente mentre gli attributi
sono il titolo di studio che l’utente ha conseguito (Titolo_Conseguito), il luogo in cui è stato conseguito il
titolo (Luogo), l’anno di conseguimento (Anno_Titolo) e un Link o URL, se presente, ad un file contenente
un curriculum più completo ed esauriente di quello memorizzato nel sistema (Link_A_Curriculum).
nvarchar(200) = Dati di tipo Unicode carattere a lunghezza variabile contenenti di massimo 200 caratteri.
29
5.8.4. Tabella tblContatti
All’interno di questa tabella vengono memorizzati informazioni quali la città in cui si trova adesso la
persona (Città), l’università nella quale studia o lavora adesso (Università) e lo scopo (Scopo) che motiva la
presenza dell’utente in questa particolare città o università. Chiave primaria di questa tabella resta sempre
l’ID_Utente.
Questa tabella serve per memorizzare i recapiti telefonici dell’utente. Chiave primaria è l’ID_Telefono che è
una variabile int di tipo contatore assegnata automaticamente dal sistema in fase di inserimento di un
nuovo record. Attributi della tabella sono l’ID_Utente, Tipo_Numero e Numero. In questo caso l’ID_Utente
è una chiave esterna che lega ogni record ad un utente ben preciso. L’attributo Tipo_Numero è una
variabile di tipo smallint che specifica di che tipo sia il numero inserito scegliendo possibilità fra cui
Cellulare, Numero Dell’Ufficio o Numero Di Casa. Per ogni tipo di numero viene assegnata una variabile
numerica la cui gestione è molto più facile a livello applicativo piuttosto che andare a considerare la stringa
di testo con scritto direttamente il tipo di numero appena inserito.
30
5.8.6. Tabella tblContatti_Mail
In questa tabella vengono memorizzati i contatti mail, se presenti, di ogni singolo utente. Chiave primaria è
l’ID_Mail, variabile di tipo int contatore assegnata automaticamente dal sistema in fase di inserimento del
nuovo record. Attributi della tabella sono l’ID_Utente che serve ad associare la mail all’utente che la
possiede e la mail stessa (Mail) memorizzata in una stringa di massimo 40 caratteri.
In questa tabella vengono memorizzate tutte le informazioni relative ad un progetto. Chiave primaria è
l’ID_Progetto, variabile contatore di tipo int assegnata automaticamente dal sistema in fase di inserimento
di un nuovo record e che identifica univocamente ogni singolo progetto. Attributi di questa tabella sono il
titolo del progetto (Titolo_Progetto), l’anno del progetto (Anno_Progetto), lo stato (Stato) che si differenzia
fra In Corso, Completato, Sospeso o Abbandonato, una sua breve descrizione (Descrizione_Progetto), un
campo per l’inserimento di alcune note di servizio (Note), un campo per la memorizzazione dell’utente che
ha inserito il progetto all’interno del sistema (Progetto_Inserito_Da) e la relativa data di inserimento
(Data_Inserimento_Progetto). Nell’attributo Progetto_Inserito_Da è concesso l’inserimento di un valore
NULL per rendere possibile e definitiva la totale cancellazione di un utente. Senza questa clausola infatti,
non sarebbe mai stato possibile eliminare definitivamente un utente dal sistema nel caso in cui avesse
inserito ad esempio un progetto visto che avrebbe comportato la rottura di alcuni vincoli di integrità
referenziale.
smalldatetime = Definisce una data combinata con un'ora del giorno nel formato a 24 ore.
31
5.8.8. Tabella tblMod_Progetto
In questa tabella si tiene conto di tutte le modifiche e aggiornamenti attuati ad un progetto da parte di un
utente con credenziali. Chiave primaria e l’ID_Mod_Progetto che è una variabile contatore di tipo int
assegnata automaticamente dal sistema e che garantisce l’univocità di ogni record nella tabella. Chiavi
esterne sono l’ID_Progetto che identifica il progetto sul quale sono state effettuate le modifiche e
l’ID_Utente che identifica l’utente che ha apportato queste modifiche. All’ID_Utente in questo caso è
permesso l’inserimento di un valore NULL visto che si è andati a considerare il particolare caso della
cancellazione di un utente che abbia apportato delle modifiche ad un progetto. Attributi della tabella sono
la data in cui viene effettuata questa modifica (Data_Modifica_Progetto) e l’elenco dei campi della tabella
tblProgetto che possono essere modificati dall’utente (Mod_Progetto_Titolo, Mod_Progetto_Anno,
Mod_Progetto_Stato, Mod_Progetto_Descrizione, Mod_Progetto_Note). Questi attributi sono di tipo
booleano e quindi a soli valori 1 (true) per indicare che quel campo sia stato modificato e 0 (false) per
indicare che quel campo non è stato modificato.
In questa tabella vengono memorizzate tutte le informazioni relative ad una pubblicazione. Chiave primaria
della tabella è l’ID_Pubblicazione, variabile contatore di tipo int assegnata automaticamente dal sistema in
32
fase di inserimento di un nuovo record e che identifica univocamente ogni pubblicazione. Attributi di
questa tabella sono il titolo assegnato alla pubblicazione (Titolo_Pubblicazione), l’anno della pubblicazione
(Anno_Pubblicazione), una sua breve descrizione (Descrizione_Pubblicazione), il link da cui poter accedere
al file pubblicazione vero e proprio (URL_o_Link), un campo per la memorizzazione dell’ID_Utente che ha
inserito la pubblicazione nel sistema (Pubblicazione_Inserita_Da) e la data in cui essa è stata inserita nel
sistema (Data_Inserimento_Pubblicazione). Anche in questo caso è consentito l’inserimento di un valore
NULL nell’attributo Pubblicazione_Inserita_Da per gli stessi motivi prima descritti.
In questa tabella si tiene conto di tutte le modifiche e aggiornamenti applicati da parte di un utente con
credenziali ad una pubblicazione. Chiave primaria e l’ID_Mod_Pubblicazione che è una variabile contatore
di tipo int assegnata automaticamente dal sistema e che garantisce l’univocità di ogni record della tabella in
questione. Chiavi esterne sono l’ID_Pubblicazione che identifica la pubblicazione sul quale sono state
effettuate le modifiche e l’ID_Utente che identifica l’utente che ha apportato queste modifiche. Attributi
della tabella sono la data in cui viene effettuata la modifica (Data_Modifica_Pubblicazione), e per ultimi
l’elenco dei campi della tabella tblPubblicazione che si possono modificare (Mod_Pubblicazione_Titolo,
Mod_Pubblicazione_Anno, Mod_Pubblicazione_Descrizione, Mod_Pubblicazione_URL). Questi attributi
sono di tipo booleano e quindi a soli valori 1 (true) per indicare che quel campo sia stato modificato e 0
(false) per indicare che quel campo non è stato modificato.
Questa è la tabella che collega un utente ad una pubblicazione secondo la relazione che esso sia l’autore di
quella pubblicazione. Chiavi primarie di questa tabella sono l’ID_Pubblicazione e l’ID_Utente che assieme
identificano univocamente ogni record e che da sole costituiscono la relazione voluta.
33
5.8.12. Tabella tblCollaboratore_Progetto
Questa è la tabella che collega un utente ad una progetto secondo la relazione che esso sia un
collaboratore di quel progetto. Chiavi primarie di questa tabella sono l’ID_Progetto e l’ID_Utente che
assieme identificano univocamente ogni record e che da sole costituiscono la relazione voluta.
Questa è la tabella che correla un progetto ad una pubblicazione secondo la relazione che essi siano
associato l’uno con l’altro. Chiavi primarie di questa tabella sono l’ID_Pubblicazione e l’ID_Progetto che
assieme identificano univocamente ogni record e che da sole costituiscono la relazione voluta.
34
5.9. Descrizione delle funzionalità
L’applicativo, come anche la stessa struttura del data base, prevede una serie di funzionalità derivate in
parte dall’analisi fatta del sistema ed in parte dalle specifiche richieste espresse dal committente.
Le funzionalità derivate dall’analisi sono principalmente quelle necessarie all’inserimento, modifica e
cancellazione dei dati mentre le funzionalità derivanti dalle richieste espresse in fase di acquisizione dei
requisiti, riguardano principalmente le modalità con cui si vanno a gestire le operazioni, il loro workflow
operativo e la semplicità con cui esse devono essere implementate nel sistema.
Segue un elenco delle principali funzionalità implementate:
Solamente dopo aver effettuato l’autenticazione, all’utente con credenziali sarà concesso di
visualizzare la zona riservata del sito mediante una pagina Home Profilo dove vi sarà implementata
l’interfaccia per la gestione di tutti i tipi di dati presenti sul data base partendo da una schermata
iniziale che permetterà di scegliere che operazione effettuare e su cosa effettuarla.
I tipi di ricerca disponibili saranno principalmente due: uno che permetta di visualizzare la lista di
tutti i progetti, pubblicazioni e utenti inseriti nel data base e l’altra che implementa una ricerca
specifica di un utente per nome o cognome, di un progetto per titolo del progetto e di una
pubblicazione per titolo della pubblicazione.
Sarà implementata la possibilità di effettuare le proprie ricerche sul motore di ricerca Google,
opzione molto utile nel caso in cui le ricerca effettuate all’interno del data base, non diano i risultati
sperati.
Una volta visualizzato il singolo profilo utente, o singolo progetto o singola pubblicazione, sarà nel
caso possibile selezionare che tipo di azione fare sul record scegliendo fra la sua modifica o la sua
cancellazione.
Viene data la possibilità all’utente autenticato di inserirei collegamenti fra le varie entità principali,
modificare i collegamenti esistenti o eliminarli del tutto grazie ad una apposita pagina dedita
solamente a queste genere operazioni.
Per ogni nuovo inserimento di dati all’interno del data base, ci sono dei campi in cui non sono
concessi valori di tipo NULL per garantire l’integrità della base di dati. Sono quindi stati
implementati dei vincoli per l’immissione di tali dati.
Nel caso in cui si effettui una ricerca per visualizzare la lista di tutti gli utenti, progetti o
pubblicazioni inseriti all’interno del data base, come risultato si otterrà una lista che contiene al suo
interno solo le informazioni necessarie ad identificare precisamente il soggetto interessato da parte
dell’utente. Da questa lista poi sarà possibile il reindirizzamento alla specifica risorsa voluta.
E’ concesso l’inserimento di più utenti con lo stesso nome e cognome a patto che il loro ruolo sia
diverso fra loro. Il controllo di sicurezza che non permette l’inserimento di utenti doppioni viene
infatti eseguito sui campi di Nome, Cognome e Ruolo contemporaneamente.
Seppur questo sia un fattore molto importante, non viene considerato e rispettato l’ordine degli
autori di una pubblicazione in quanto si ritiene che esso sia ben stabilito e dichiarato nel file della
pubblicazione stessa di cui si fornisce il link alla risorsa. La lista degli autori considerata nel data
base ha uno scopo puramente informativo. La stessa cosa vale per i collaboratori di un progetto.
35
5.10. Stored procedure
Per quanto riguarda la progettazione delle funzionalità, della gestione e della comunicazioni fra interfaccia
e data base, due erano le possibili strade percorribili: l’uso di stored procedure o l’uso di singole query.
In questo caso per le interrogazioni, l’inserimento, la cancellazione di dati e più in generale per tutte le
varie operazioni possibili sul data base, si è scelto l’utilizzo delle sole stored procedure.
Queste, si possono considerare come dei moduli o delle routine che incapsulano del codice che viene
eseguito quando la stessa stored procedure che lo contiene, viene richiamata o avviata dall’applicativo.
L’uso di questo particolare tipo di approccio ha permesso di ottenere i seguenti vantaggi:
Un notevole aumento della sicurezza all’interno dello stesso applicativo in quanto non risulta così
possibile scrivere manualmente e richiamare delle singole query direttamente dall’interfaccia web.
Questo permette infatti di prevenire attacchi che mirano all'esecuzione di istruzioni SQL dannose.
Le applicazioni risultano infatti vulnerabili a questo tipo di attacchi quando chiedono all'utente
informazioni che vengono poi concatenate in una stringa che costituisce l'istruzione SQL; cosa che
spesso avviene nell’applicativo. Un utente malintenzionato che dispone di qualche informazione sul
database potrebbe infatti immettere nella casella di testo un'istruzione SQL incorporata insieme al
contenuto originale della casella di testo, affinché venga composta ed eseguita un'istruzione che
potrebbe compromettere l’intero data base.
Usando delle stored procedure che contengono al loro interno già del codice e delle routine, si
diminuisce il numero di informazioni scambiate fra client e server a tutto vantaggio delle
prestazioni. In questo caso infatti si richiama la stored procedure desiderata passandogli solamente
i parametri richiesti ottenendo come risultato anche valori calcolati oltre a quelli direttamente
richiesti.
Questo tipo di approccio rende significativamente più facile la gestione da parte dell’applicazione
dei privilegi e delle relative azioni a disposizione per i vari tipi di utenti. Nel caso infatti di un utente
con credenziali, verranno richiamate delle particolari stored procedure, mentre nel caso in cui
l’utente sia solo un utente esterno, ne verranno richiamate delle altre in cui magari sono esclusi dei
dati o eliminare alcune possibili operazioni.
La scelta del nome dato alle varie stored procedure non è affatto casuale e spesso riuscire a comprendere
la struttura del loro nome, può aiutare a capire già al primo colpo d’occhio a che cosa essa serva. Questo è
un tipo di approccio pratico costruttivo molto importante nel caso in cui siano molte le stored procedure o
le query da creare proprio per evitare confusione quando il loro numero comincia ad essere importante.
Come prima parte del nome, compare il titolo del data base sul quale esse vanno ad agire che in questo
caso risulta essere per l’appunto GeoSNaV. Successivamente viene scritto il nome dell’entità principale su
cui essa va ad agire (ad esempio Progetto o Utente). In seguito viene scritto il tipo di azione che essa svolge
(ad esempio Select, Delete o Insert) e per ultimo l’attributo o il nome dell’entità stessa su cui viene
apportata quella modifica e opzionalmente la modalità con cui essa viene apportata (ad esempio se
attraverso l’ID o il Titolo).
36
5.10.1. Esempio: geosnav_Utente_SelectTuttiUtenti
Questa stored procedure permette all’applicativo di visualizzare la lista di tutti gli utenti presenti all’interno
del data base. Non si necessita di nessun parametro in ingresso infatti essa viene solo richiamata e come
risultato fornisce la lista di tutti gli utenti in ordine alfabetico, ordinata prima per cognome e
successivamente per nome. La lista restituita contiene attributi quali l’ID_Utente utile per la successiva
identificazione del singolo utente, il nome e il cognome dell’utente, il ruolo che esso ricopre e attraverso
una operazione di JOIN viene richiamato anche l’attributo Città della tabella tblContatti sempre attraverso
l’ID_Utente dell’interessato.
AS
SET NOCOUNT ON;
37
5.10.2. Esempio: geosnav_Utente_DeleteUtenteTotale
Questa stored procedure viene chiamata dall’applicativo quando ad esempio l’amministratore desideri
eliminare dalla base di dati un particolare utente con tutti i suoi collegamenti a progetti o pubblicazioni
fatte, operazione eseguita mediante il comando DELETE del linguaggio SQL. L’unico parametro che viene
fornito in input alla stored procedure è appunto l’ID_Utente della persona specifica che si vuole andare a
cancellare. Logicamente, l’applicativo risale dal Nome e Cognome all’ID_Utente e lo fornisce come dato alla
stored procedure. Una volta ottenuto questo dato comincia una routine che elimina dalle tabelle ogni
riferimento all’ID_Utente in questione, successivamente provvede a svuotare i campi attributo come
“Progetto_Inserito_Da”, “Pubblicazione_Inserita_Da” , “ID_Utente” delle tabelle tblPubblicazione,
tblProgetto, tblMod_Progetto e tblMod_Pubblicazione inserendovi all’interno un valore NULL ed in fine,
cancella l’ultimo riferimento ID_Utente nella tblUtenti. L’eliminazione dell’utente dalla tblUtenti è l’ultima
delle operazioni fatte in quanto se essa venisse effettuata prima di tutte le altre, alla successiva operazione
si solleverebbe un’eccezione di conflitto referenziale sulla chiave primaria ID_Utente in quanto il suo
riferimento non esisterebbe ormai più all’interno della base di dati ma tutto il resto dei dati del record si.
DELETE
FROM tblContatti
WHERE (ID_Utente = @ID_Utente);
DELETE
FROM tblContatti_Mail
WHERE (ID_Utente = @ID_Utente);
DELETE
FROM tblContatti_Telefonici
WHERE (ID_Utente = @ID_Utente);
DELETE
FROM tblCurriculum
WHERE (ID_Utente = @ID_Utente)
DELETE
FROM tblCredenziali
WHERE (ID_Utente = @ID_Utente)
DELETE
FROM tblAutore_Pubblicazione
WHERE (ID_Utente = @ID_Utente)
DELETE
FROM tblCollaboratore_Progetto
WHERE (ID_Utente = @ID_Utente)
UPDATE tblProgetto
SET Progetto_Inserito_Da = NULL
WHERE Progetto_Inserito_Da = @ID_Utente
UPDATE tblPubblicazione
SET Pubblicazione_Inserita_Da = NULL
WHERE Pubblicazione_Inserita_Da = @ID_Utente
UPDATE tblMod_Progetto
SET ID_Utente = NULL
WHERE ID_Utente = @ID_Utente
UPDATE tblMod_Pubblicazione
SET ID_Utente = NULL
WHERE ID_Utente = @ID_Utente
DELETE
FROM tblUtenti
WHERE (ID_Utente = @ID_Utente)
END
38
5.10.3. Esempio: geosnav_Progetto_InsertProgetto
Questa stored procedure viene chiamata dall’applicativo nel caso in cui un utente con credenziali desisderi
inserire un nuovo progetto all’interno della base di dati. In questo caso alla stored procedure vengono
passati in input numerosi parametri che altro non sono che delle variabili attributo identificate da una @
prima del nome della variabile stessa.
L’applicativo legge i dati scritti dall’utente in fase di creazione del nuovo progetto, li memorizza nelle
variabili secondo dei criteri di integrità del dato ben precisi e passa tutte queste informazioni alla sorted
procedure nel caso in cui tutti questi vincoli siano stati rispettati. Caso particolare da considerare è
l’inserimento del dato nell’attributo Data_Inserimento_Progetto dove l’informazione necessaria viene
automaticamente generata dal motore del data base ed inserita tramite la funzione GETDATE() definita fra
le funzioni standard di MS SQL.
39
5.10.4. Esempio: geosnav_Pubblicazione_UpdatePubblicazione
geosnav_Pubblicazione_InsertMod_Pubblicazione
L’operazione di modifica di un progetto già esistente coinvolge due stored procedure differenti ma che
vengono sempre richiamate in coppia a causa delle funzionalità richieste per il sistema:
geosnav_Pubblicazione_UpdatePubblicazione e geosnav_Pubblicazione_InsertMod_Pubblicazione.
UPDATE tblPubblicazione
SET Titolo_Pubblicazione = @Titolo_Pubblicazione, Anno_Pubblicazione =
@Anno_Pubblicazione, Descrizione_Pubblicazione = @Descrizione_Pubblicazione,
URL_o_Link = @URL_o_Link
WHERE ID_Pubblicazione = @ID_Pubblicazione
END
40
5.10.5. Esempio: geosnav_Pubblicazione_SelectLikePubblicazione
Questa stored procedure ha come solo scopo quello di effettuare il conteggio del numero dei record inseriti
all’interno della tabella tblProgetto. Questa operazione viene effettuata grazie alla presenza del comando
COUNT al quale viene passato come parametro l’attributo sul quale andare ad effettuare il proprio
conteggio e ovviamente la tabella in cui andarlo ad effettuare tramite il comando FROM. La scelta più logica
dell’attributo sul quale effettuare questo conteggio è stata quella di optare direttamente per l’ID_Progetto
in quanto rappresenta una delle variabili a cui sicuramente non potranno essere associati dei valori NULL e
che propriamente identificano univocamente ogni singolo progetto.
La stessa stored procedure è stata implementata anche per il conteggio delle pubblicazioni e degli utenti
inseriti all’interno del sistema con ovviamente le opportune modifiche sul tipo di attributo da conteggiare e
la tabella in cui effettuare questo conteggio.
41
5.10.7. Esempio: geosnav_Utente_SelectUtenteNomeCognome
Questa particolare stored procedure si occupa delle ricerche di un utente all’interno del data base nel caso
in cui questa ricerca venga effettuata mediante l’inserimento di un nome o cognome nell’apposita text box
messa a disposizione sul sito per l’utente. La scelta di non permettere la ricerca per nome e cognome
contemporaneamente deriva da una motivazione di tipo tecnico in quanto risulta molto difficile effettuare
una simile ricerca combinata su due attributi differenti. Gestire invece una ricerca di un solo attributo come
nome o cognome su entrambi i campi all’interno della tabella risulta essere di facile gestione grazie all’uso
di due comandi LIKE correlati fra loro dall’operatore logico OR. Questo particolare problema deriva dal fatto
che per la realizzazione di questo progetto si è cercato di osservare sempre le regole di normalizzazione
della base di dati che non permettono ad esempio la creazione di un campo unico per gli attributi di nome e
cognome. La creazione di un simile campo avrebbe permesso la ricerca combinata per nome e cognome
contemporaneamente.
42
5.11. Interfaccia
Lo sviluppo dell’interfaccia utente spesso risulta uno dei passaggi più complessi per lo sviluppo di tali
applicazioni in quanto non esiste una particolare strategia di approccio al problema e costringe il
programmatore a dover prestare particolare attenzione alla disposizione delle componenti, alla struttura
dei workflow delle operazioni e alla logica di interazione fra la varie componenti dell’interfaccia. Per
l’applicazione in questione si è cercato di ottenere la massima praticità e semplicità d’uso in modo da
rendere il passaggio a questo sistema il meno traumatico possibile per l’utente che spesso ne dovrà far uso.
Interfaccia Utente
Interfaccia Utente
Interfaccia Di Gestione
Base
Data Base
Un’altra particolarità importante che differenzia le due interfacce è il fatto che quella Di Gestione sia stata
progettata in lingua italiana, mentre quella di Utente Base è stata realizzata in lingua inglese visto che essa
sarà utilizzabile da qualsiasi tipo di utente che lo riterrà necessario e non solo da utenti interni di
nazionalità italiana come per l’altro caso.
43
5.11.1. Struttura logica dell’Interfaccia Utente Base
Come detto in precedenza, l’Interfaccia Utente Base è quella particolare parte dell’applicativo che verrà
messa a disposizione di ogni utente visitatore sul sito nella pagina chiamata “Find Information”. Questa
interfaccia permette all’utilizzatore di effettuare le sue ricerche all’interno della base di dati senza però
fornirgli la possibilità di modificare i dati in esso contenuti. Oltre alla possibilità di poter effettuare le sue
ricerca su utenti, progetti e pubblicazioni, verrà messa a disposizione dell’utente la possibilità di effettuare
la propria ricerca sul motore Google nel caso in cui i risultati della sua precedente ricerca all’interno del
data base, non abbiano fornito i risultati sperati.
Di seguito è riportata la struttura logica dell’Interfaccia Utente Base tradotta in italiano per praticità:
Interfaccia
Utente Base
44
5.11.2. Interfaccia Di Gestione
Interfaccia Di
Gestione
Profilo
Utenti Progetti Pubblicazioni Collegamenti Google
Personale
Visualizza
Seleziona Seleziona Seleziona Crea
Profilo
Utente Progetto Pubblicazione Collegamento
Personale
Elimina Elimina
Cancella Utente
Progetto Pubblicazione
45
5.11.3. Esempio di interfaccia: Interfaccia Utente Base
In questo esempio di interfaccia, all’utente o al semplice visitatore viene data la possibilità di cercare nel
data base tutti i tipi di informazioni messi a disposizioni per la ricerca. L’interfaccia frammenta e raggruppa
queste possibilità di ricerca per concetti (Project, Articles e Users) e mette inoltre a disposizione dell’utente
la possibilità di poter effettuare le proprie ricerche sul motore di ricerca Google. Per ogni concetto di
ricerca viene data la possibilità di scegliere se visualizzare la lista completa di tutti i record inseriti fino a
quel momento nella base di dati o di provare ad effettuare una ricerca mirata ad esempio per nome del
progetto nel caso in cui si sia già a conoscenza di tale informazione. Viene data infatti la possibilità
all’utente di inserire una stringa di testo che successivamente, in fase di invio richiesta, viene trasformata in
una variabile di tipo nvarchar ed analizzata dalla stored procedure geosnav_Progetto_selectLikeProgetto
che grazie al comando LIKE provvederà a restituire come risultato della query la lista di tutti i progetti che
contengono quel pezzo di stringa all’interno del loro attributo Titolo_Progetto.
46
5.11.4. Esempio di interfaccia: Visualizza profilo utente
L’interfaccia appena mostrata fornisce un’idea di come dovrebbe apparire la visualizzazione del profilo di
un utente inserito all’interno del sistema. Inizialmente vengono mostrare in una tabella solo le informazioni
base dell’utente come il nome, cognome, ruolo titolo conseguito, luogo di conseguimento e anno di
conseguimento. Successivamente, grazie all’ausilio dei tasti navigazionali messi a disposizione in basso, è
possibile espandere queste informazioni visualizzando, sempre in altre tabelle che compariranno una sotto
all’altra, prima i contatti, poi la lista delle pubblicazioni e per ultima quella dei progetti che si legano
all’utente in questione. Nel caso in cui l’utente di cui si cerca di visualizzare il profilo, sia un utente di tipo
esterno, allora verranno mostrati in tabella solo i suoi dati disponibili e quindi il solo nome e cognome.
Quest’interfaccia mostra il risultato di una possibile ricerca effettuata da un utente che voglia visualizzare la
lista di tutti i progetti inseriti all’interno del data base. I risultati ottenuti dalla stored procedure vengono
divisi dall’applicativo in base all’anno e visualizzati così separati in semplici tabelle. Le tabelle contengono il
nome del progetto e il suo relativo stato. Il nome del progetto risulta cliccabile, azione che porta ad un’altra
47
interfaccia per permette la lettura di tutti i dati del solo progetto specifico scelto. Questo particolare tipo di
reidirizzamento ai dati del progetto specifico è reso disponibile grazie al fatto che oltre al suo titolo, viene
richiamato dalla stored procedure anche il suo ID_Progetto; ed è infatti questo che poi viene inviato come
parametro alla stored procedure geosnav_Progetto_SelectProgetto_ID che provvede a caricare e inviare
all’applicativo tutte le informazioni relativa al progetto in questione che presenta quel particolare
ID_Progetto.
Questa interfaccia è dedita alla visualizzazione dei dati relativi ad un solo progetto. Anche in questo caso il
nome dei collaboratori e il titolo della pubblicazioni correlate è cliccabile, azione che porta ad una pagina
che visualizza tutti i dati relativi al soggetto interessato e di cui si è desiderato visualizzare le informazioni.
48
5.11.7. Esempio di interfaccia: Autenticazione
Come espresso inizialmente nei requisiti del sistema, per accedere alla parte riservata dell’applicativo, si
deve effettuare una procedura di autenticazione mediante l’utilizzo di un username e password. Il form che
permette l’accesso al sistema è presente nella pagina “Management” del sito e risulta di facile e immediata
comprensione. Della coppia username/password inserita dall’utente registrato per l’autenticazione, viene
verificata la corrispondenza nella tabella tblCredenziali andando a richiamare la stored procedure
geosnav_Utente_SelectUtente_DaCredenziali che nel caso di verifica confermata, restituisce
all’applicazione l’ID_Utente mediante il quale si andrà poi a generare la sessione autenticata. La sessione
rimane in vita fino a quando la pagina web non viene chiusa.
Questa è l’interfaccia che compare subito dopo la conferma di avvenuta autenticazione. Essa si differenza
dall’Interfaccia Utente Base solamente per il fatto che al suo interno sono rese disponibili le opzioni di
inserimento di un nuovo progetto, pubblicazione o utente e di modifica dei collegamenti fra queste entità.
Nel caso si desideri inserire un nuovo record del tipo scelto all’interno della base di dati, l’utente viene
reindirizzato ad una pagina in cui è contenuta la form per l’inserimento di tutti i dati necessari.
49
5.11.9. Esempio di interfaccia: Modifica/Inserimento profilo utente
Con questa interfaccia viene data la possibilità ad un utente autenticato di inserire il profilo di un nuovo
utente all’interno della base di dati o di modificarne uno già esistente. Una volta inseriti tutti i dati richiesti,
o almeno quelli strettamente necessari e contrassegnati dal simbolo “*”, si può procedere con il suo
inserimento nel data base richiamando tutte le stored procedure che riguardano l’inserimento di un nuovo
utente e riconoscibili grazie alla presenza del parametro INSERT all’interno del loro nome. Se l’utente che ci
si appresta ad inserire è ad esempio di tipo collaboratore interno e non collaboratore stretto, allora
qualsiasi stringa di caratteri inseriti nei campi di Username e Password non verrà considerata. La stessa
cosa vale anche nel caso in cui ci si appresti ad inserire un utente esterno; ogni dato inserito oltre al solo
nome, cognome e ruolo, non verranno considerati e quindi scartati automaticamente dal sistema. Nel caso
in cui invece si avesse in precedenza scelto di modificare un profilo già esistente, allora all’interno delle text
box verrebbero caricati automaticamente tutti i dati già presenti all’interno della base di dati riguardanti
quel particolare utente in modo da permetterne la corretta modifica. Nell’ulteriore caso in cui si cerchi di
inserire un utente che è stato già inserito in precedenza, al momento dell’invio delle informazioni
comparirà una finestra con un avviso di errore e che specificherà che quel utente risulta già presente
all’interno della base di dati.
50
5.11.10. Esempio di interfaccia: Gestione dei collegamenti
L’interfaccia gestione dei collegamenti permette all’utente autenticato di creare o eliminare i collegamenti
di relazione che esistono fra le diverse entità già inserite all’interno della base di dati. Per questo tipo di
operazioni si è scelto di far uso delle sole Drop Down List in modo da permettere all’utente di poter
effettuare delle scelte sicuramente corrette per quanto riguarda le combinazioni fra progetti, pubblicazioni
o utenti da collegare o scollegare fra loro. Tramite dei controlli di integrità dei dati non sarà possibile creare
due collegamenti di tipo uguale sulle stesse entità e nel caso in cui per sbaglio si desideri scollegare entità
non collegate fra loro, l’operazione non fornirà nessun avviso di errore ma darà all’utente l’impressione che
essa sia stata svolta normalmente.
51
5.11.11. Esempio di interfaccia: Visualizza singolo progetto lato gestione
Come preannunciato dal titolo, questa interfaccia si preoccupa di mostrare tutte le informazioni di un
progetto da parte di un utente autenticatosi come coordinatore del progetto o suo collaboratore stretto. Le
informazioni visualizzate in questo caso sono maggiori rispetto a quelle che può visualizzare un semplice
utente non autenticato in quanto le informazioni aggiuntive che qui si vanno visualizzare, sono solamente
utili alla gestione interna e alla manutenzione della base di dati da parte di chi ne ha ovviamente i privilegi.
52
5.12. Il Sito Web
Il sito web risulta essere di tipo informativo / data base e la lingua usata per la sua realizzazione è l’inglese
in quanto esso si propone di fornire informazioni scientifiche ad un panorama di utenze prevalentemente
europeo. La semplice struttura realizzata per il sito è la seguente:
Home Page
Interfaccia Interfaccia Di
Utente Base Gestione
Home Page: contiene le informazioni più importanti e la presentazione del progetto GeoSNaV.
People: contiene la lista key staff e quindi del personale principale del progetto.
Research & Activities: fornisce le informazioni relative alle attività di ricerca in corso.
Contact Us: visualizza le informazioni base ed i contatti del coordinatore del progetto.
How To Reach Us: fornisce informazioni utili su come raggiungere il dipartimento dell’università.
Find Information: è la pagina base dell’applicativo per la comunicazione libera con il data base.
Management: pagina dove gli utenti con credenziali potranno accedere alla zona riservata del sito.
53
( Home Page del sito )
54
5.12.1. Analisi e valutazione del sito web
Sono di vario tipo le valutazioni che si posso fare su un sito web. Di seguito verranno analizzate alcune
caratteristiche fondamentali e qualità che esso deve avere:
Valutazione architetturale: come richiesto dalle specifiche, la struttura del sito risulta essere molto
semplice e funzionale. Partendo dall’alto si può osservare l’immagine di intestazione contenente il
titolo del progetto ed il logo dell’Università di Trieste, il menù navigazionale orizzontale che
permette di raggiungere rapidamente tutte le pagine del sito, il contenuto vero e proprio della
pagina web e le classiche intestazioni in basso di chiusura pagina e relative al realizzatore del sito
web e dei copyright.
Valutazione della comunicazione: la grafica ed il layout delle pagine è concepito in modo tale da
facilitare al visitatore la comprensione immediata dei concetti raggruppando le informazioni
correlate ed evidenziando quelle più importanti. Per quanto riguarda il colore, se utilizzato bene,
può essere di grande aiuto alla comprensione di un sito mentre nel caso in cui sia utilizzato male
può anche creare serie difficoltà. La scelta fatta è stata quella di utilizzare pochi colori per evitare
pagine eccessivamente variopinte e fastidiose. Per quanto riguarda lo sfondo si è utilizzato il
classico sfondo bianco con l’inserimento però a scacchiera del logo dell’Università degli Studi di
Trieste semi trasparente che in questi casi risulta essere la soluzione meno aggressiva essendo a
valenza neutra e rende i testi perfettamente leggibili. Il tipo di carattere utilizzato è il Tahoma
cercando di evitare il stile corsivo o “tutto maiuscolo” che può dare l’impressione di un tono
“urlato” derivante dall’uso che se ne fa abitualmente nella posta elettronica.
Valutazione della funzionalità: il metodo di ricerca delle informazioni all’interno del sito è fornito
dalla pagina Find Information dov’è situato l’applicativo per la comunicazione con il data base.
Nella pagina è anche data la possibilità di effettuare le proprie ricerche direttamente dal sito sul
classico motore di ricerca Google.
Valutazione del contenuto: L’obiettivo in questa fase di analisi è quello di valutare la qualità dei
contenuti informativi veri e propri del sito, e soprattutto la loro adeguatezza agli obiettivi che esso
si propone di conseguire. I titoli sono abbastanza visibili ed evidenziati in grassetto in modo
sufficiente da attirare da subito l’attenzione dell’utente. Il contenuto delle pagine è inoltre
stringato ed essenziale; si presta quindi bene a una sua facile lettura e comprensione.
55
Valutazione di usabilità: In sostanza un sito è usabile quando l’utente riesce a fare ciò che vuole
senza dover pensare consapevolmente a come farlo infatti esso interagisce con il sito attraverso la
tastiera, il mouse e il monitor del proprio computer, ma soprattutto con la sua mente che analizza
le indicazioni esplicite che gli arrivano dal sito. E’ quindi stata prestata particolare attenzione al
fatto che gli indizi siano sufficienti e ben disposti all’interno di ogni pagina in modo da farlo risultare
il più usabile possibile.
5.12.2. JavaScript
Il JavaScript è uno fra i linguaggi di programmazione orientato ad oggetti più comunemente sfruttato negli
odierni siti web data la sua facilità di implementazione su pagine già preesistenti e le vastissime possibilità
applicative che esso offre.
L’utilizzo in alcune pagine del sito di questa tecnologia è stata adottata per delle questioni sia pratiche che
estetiche. Si è infatti fatto uso di un JavaScript freeware trovato su internet e chiamato “Lightbox v 2.04”.
Esso si preoccupa della gestione e visualizzazione delle gallerie di immagini in modo da alleggerirne
dapprima il caricamento iniziale della pagina stessa e successivamente rendere però anche più gradevole la
visualizzazione di tali immagini.
Il JavaScript Lightbox ingrandisce e permette di sfogliare le immagini di una galleria della pagina web,
ponendole al centro dello schermo, oscurandone lo sfondo e applicando sotto ad ogni immagine una
spiegazione testuale opzionale andando così a creare una galleria grafica dinamica che si lascia visitare con i
tasti freccia (destra o sinistra) della tastiera o direttamente con il mouse cliccando su apposite voci a
scomparsa e inserite all’interno del contesto di visualizzazione. Il tasto Esc o il semplice click del mouse al di
fuori del campo dell’immagine visualizzata chiude il JavaScript riportando il visitatore alla pagina
precedentemente visualizzata.
Questo JavaScript si compone di vari tipi di file da inserire all’interno della cartella in cui il sito viene creato:
Per prima cosa all’interno della cartella “images” vengono inserite le immagini che andranno a
comporre la gallery e assieme a queste, anche tutte le varie immagini che verranno utilizzate dal
JavaScript per andare a creare il contesto di visualizzazione della gallery; quindi frecce, tasto di
chiusura e immagini di caricamento.
Si deve poi provvedere a copiare un file di tipo stile CSS chiamato “lightbox” al cui interno sono
contenute tutte le informazioni di stile grafico e colore che verranno adottate dal JavaScript
utilizzato. Modificando manualmente e sapientemente questi parametri all’interno del file CSS si
può andare a variare l’aspetto grafico e quindi il risultato finale della galleria dinamica.
Il passo successivo sarà quello di copiare i veri e propri file del JavaScript all’interno della cartella in
cui il sito è stato creato e caricato. Il file builder.js è quello che va a costruire la struttura della
gallery gestendo parametri quali la risoluzione del monitor utilizzata, il tipo di carattere impostato
ed i parametri sui colori da utilizzare passati tramite il file CSS. Il file effects.js è quello più
macchinoso e complesso a livello di codice e va a dar vita alle animazioni presenti all’interno della
gallery dinamica. Il file lightbox.js contiene il codice che si preoccupa di gestire la lista degli eventi e
di collegare fra loro tutti gli altri file rappresentando quindi una sorta di struttura scheletro dello
script. Il file prototype.js si preoccupa della gestione e manipolazione del JavaScript in base al tipo
di browser con cui lo si va a visualizzare. Il file scriptaculos.js si preoccupa invece di fornire
informazioni sulla versione del JavaScript anche in base al tipo di browser visualizzato.
56
Ultimo passo risulta essere quello di inserire e posizionare all’interno della pagina interessata il
codice di caricamento dello script. Fra i tags <head> e </head> si provvederà ad inserire il seguente
codice:
Per rendere poi effettivo questo script alle immagini desiderate, esse dovranno essere inserite
all’interno del codice mediante la seguente modalità che non fa altro che applicare lo script
lightbox all’immagine voluta:
57
6. Conclusioni
Al termine di tutto il lavoro svolto fino a questo punto, si può affermare che l’obbiettivo inizialmente
prefissato, sia stato raggiunto. Lo sviluppo fisico del sito web, quello del data base e la progettazione
teorica della relativa applicazione per la sua gestione attraverso interfaccia web, è stato portato a termine
con successo. Ora il Dipartimento di Ingegneria Civile ed Ambientale dell’Università degli Studi di Trieste ha
a sua disposizione un sito web per la presentazione di uno dei suoi progetti con la possibilità di
implementare in futuro un data base e la relativa interfaccia web per la gestione dinamica di informazioni e
articoli a carattere scientifico.
Tutti gli obbiettivi intermedi a parte l’ultimo sono stati raggiunti e quindi si è:
• Realizzato il data base attraverso lo studio della lista dei requisiti raccolti
• Verificato il rispetto di tali requisiti in base alle funzionalità di gestione implementate sul data base
• Sviluppato l'interfaccia utente in base alle funzionalità richieste
• Sviluppato il sito web di presentazione del progetto
• Testing del sito web
Unico obbiettivo intermedio non ancora raggiunto è quello relativo all’installazione del sito sul server del
DICA e della sua pubblicazione sul web. L’obbiettivo non è stato ancora raggiunto però solo per una
questione relativa alle tempistiche visto lo scarso tempo a mia disposizione per lo sviluppo e il
completamento di tutti gli obbiettivi in concomitanza del periodo estivo con tutto ciò che esso ne
comporta.
Per questo progetto sono state realizzate 13 tabelle per un totale di 7 chiavi primarie e 49 attributi in essi
contenuti. Si sono realizzate e testate 50 stored procedure che da sole permettono la totale e completa
gestione della base di dati per un totale di oltre 100 operazioni svolte al loro interno e diverse centinaia di
righe di codice che esse sviluppano.
Per quello che riguarda l’interfaccia, si sono realizzate 9 esempi di possibili viste che da sole vanno a coprire
e a gestire tutte le situazioni possibili che l’applicativo si può dover trovare a gestire.
Il sito web è composto da 7 pagine al cui interno sono stati implementati i java script e la form per
permettere l’eventuale autenticazione di un utente con credenziali.
7. Sviluppi futuri
Eventuali sviluppi futuri potrebbero essere quelli di implementare effettivamente l’interfaccia ed il relativo
data base al sito web in modo da incrementare notevolmente la quantità offerta di informazioni che esso si
propone di mettere a disposizione dei semplici visitatori ma anche di chi ne fosse interessato per scopi
scientifici o collaborativi. Un altro scenario possibile sarebbe quello di espandere l’implementazione
dell’intero sistema anche per altri progetti al di fuori di GeoSNaV e quindi di andare a modificare la
piattaforma in tal senso.
Risulta inoltre già in programma lo sviluppo e l’ampliamento del sito web appena progettato per
l’inserimento di diverse pagine di presentazione di un progetto derivante da GeoSNaV e relativo a delle
rilevazioni GPS condotte su degli scavi archeologici ad Aquileia e condotti dal Dipartimento di Ingegneria
Civile dell’Università di Trieste. Le pagine prevedono la descrizione del progetto e delle rilevazioni condotte
con la pubblicazioni anche di mappe, dati ed immagini vettoriali derivanti da tali rilevazioni.
Non si esclude inoltre la probabile aggiunta di altri progetti simili a questo e legati in qualche modo al
progetto più generale GeoSNaV.
58
8. Bibliografia e fonti web
59