Progetto e sviluppo di un'applicazione web basata su mappe cartografiche per ...
Bachelor Thesis presentation
1. Quaestio: un'applicazione web per il monitoraggio della soddisfazione dei clienti Laureando: Stefano Tranquillini Università degli studi di Trento Facoltà di scienze matematiche fisiche e naturali Relatore: Prof. Maurizio Marchese Correlatore: Dott. Luigi Perna
Buongiorno, Sono Stefano Tranquillini e ora vi introdurrò la mia tesi dal titolo: quaestio: un’applicazione web per il monitoraggio della soddisfazione dei clienti. Realtore prof maurizio marchese Correlatore: dott. Luigi perna.
Questa tesi nasce da un mio interesse verso lo studio delle tecnologie web più recenti e dal loro utilizzo all’interno di applicazioni web. In particolare è stato affrontato il caso di studio dello sviluppo di un’applicazione web per la gestione dei questionari.
L'applicazione in questione è stata creata per Enginsoft SpA: società italiana che si occupa principalmente della sperimentazione virtuale ingegneristica. Tra le tipologie di servizi offerti dall'azienda ci sono corsi formativi a livello specialistico sulle tecnologie che l'azienda stessa distribuisce; al termine di ciascun corso viene proposto un questionario di valutazione secondo quanto prescritto dal sistema di qualità iso 9000 interno, per la rilevazione della qualità dei servizi offerti (similmente a quelli proposti dall'università di Trento per la valutazione dei docenti e delle preferenze del corso). Dall’utilizzo di questa applicazioni ci si aspetta di avere: un risparmio di tempo sia in fase di creazione e ovviamente in fase di raccolta dei dati. Diminuire i costi di produzione, esempio risparmiando quantità di carta. Una più facile gestione sia dei questionari sia degli utenti La possibilità di riutilizzare parti di questionario gestire questionari permettendo di inserire testi in più lingue e quindi essere utilizzabili da più utenti di diversa lingua. Controllare il corretto utilizzo del completamento, controllando che le risposte obbligatorie siano effettivamente risposte ed altro. Avere un controllo sull’anagrafica dell’utente diretta e senza possibilità di errore in quanto i dati sono presi direttamente dal database.
Per lo sviluppo dell’applicazione sono stati utilizzati diversi strumenti, in particolare Struts. E’ un framework, cioè una struttura di supporto su cui il software può essere organizzato e progettato, che implementa il pattern MVC. L’MVC, per chi non lo conoscesse è una soluzione progettuale che permette di dividrer l’applicazione in 3 parti: Model: i dati e i metodi per accedervi. View: le viste, cioè la rappresentazionde del modello. In genere è l’interfaccia con l’utente Controller: è il cuore dell’applicazione, cioè le iterazioni. In genere riceve gli input dall’utente e elabora il model secondo le richeiste presentandolo attravero il view., VANTAGGI: I princiapli sono quelli che offre il model view controller cioè: Modularità e riusabilita: i diversi ruoli dell’applicazione sono gestiti da diversi componenti. Mantenibilità: si possono modificare singoli livelli, ad esempio modificare solo la grafica di presentazione dei dati. Rapidità di sviluppo: si può dividere il lavoro in più gruppi che lavorano in parallelo sui vari livelli (grafici per il view programmatori per il controller ecc) Conf centrallizzata: Che contiene tutti i riferimenti dell’applicazione come forward ed altro, così da avere un punto unico di gestione che smista le richieste, FromBean che popola in automatico un oggetto con i dati inserirti dall’utente nel form. Tag che permettono di gestire e utilizzare nelle jsp bean html e oggetti in modo semplice. Validazione dati, cioè controllo dell’input dell’utente in modo semplice e può avvenire attraverso l’implementazione del metodo o inserendo le regole in un file XML. Tiles: che permette di creare un layout standard per tutta l’applicazione.
Ajax Ascincronous javascirpt and xml è una tecnica per l’implementazione di applicazioni web interattive e dinamiche. Il suo recente successo è dovuto principalmente a Google che ha iniziato a farne un uso massiccio all’interno delle sue applicazioni come Google, Gmail, GoogleMaps. A differenza dell’applicazione normale, ajax, fa delle richieste asincrone al server e quindi NON è necessario attendere la risposta del server per proseguire. Questo comporta una vantaggio nel fatto che si possono effettuare più richieste contemporaneamente e indipendenti continuando ad utilizzare l’applicazione. L’iterazione con il database e il javascript permette di avere un interfaccia ricca e dinamica. Altri vantaggi sono l’indipendenza dal sistema operativo browser e linguaggio dello sviluppo lato server. In oltre genera un carico minore di dati sul server in quanto si richiedono piccole quantità di dati. I principali svantaggi sono dovuti al non funzionamento del tasto back del browser e alla gestione dei link in quanto la pagina carica solamente delle porzioni di pagina in modo asincrono e quindi non si riesce a tenerne traccia, da qui il non funzionamento e l’impossibilità di gestire link intermedi delle azioni. Difficoltà anche nel gestire il debugging dell’applicazione. i principali utilizzi sono quelli della creazione di interfacce ricche e dinamiche che superino i limiti dell’html statico e permettono un utilizzo e funzionalità molto ampio.
Gli altri struemnti utilizzati sono: la Java enterprise edition e in particolare Servelet, jsp e javabean attraverso Struts. Come sever e database sono stati utilizzati Tomcat e postgres, il primo perché è quasi uno standard de facto per i application server, il secondo perché già utilizzato dall’azienda. E’ stato usato Ibatis per la gestione del database all’interno dell’applicazione. Questo framework di apache permette di ricavare i risultati delle query come liste di oggetti o oggetti (in genere bean) e quindi crea un modo semplice di interfacciarsi con il database. Tra le sue caratteristiche c’è quella di avere la definizione delle query in un file esterno, cosa che permette modifiche senza influenzare l’applicazione. E’ stato usato jasperreport per la creazione dei report. Questa serie di librerie assieme ad iReport per creare la struttura permette di avere dei report flessibili in diversi formati. Anche in questo caso la struttra del report viene presa da un file xml esterno e poi integrata con i dati del database. In fine l’autenticazione e autorizzazione avviene attraverso il realm di tomcat che permette in modo quasi automatico di gestire i permessi e accessi al sistema definendo solamente alcune regole e i dati all’interno di un file xml e un database. Per il logging è stato usto log4j che permette grande personalizzazione dei vari output di logging divisi in varie classi di tipologia: debug info error ecc.
L’azienda richiedeva delle funzionalità per l’applicazione, in particolare: Gestione modulare del questionario: Il questionario deve essere diviso per moduli in modo da poter riutilizzare un singolo modulo in più questionari. Deve anche permettere l’utilizzo di un set di risposte standard così da minimizzare i tempi di costruzione. Multilingua: L’applicazione deve permettere la creazione di questionari in più lingue. Questo comporta di mantenere la stessa forma del questionario modificandone il contenuto . Utilizzo del sistema esistente: l’applicazione deve sfruttare il database esistente nell’azienda ed integrarsi con esso. Gestione questionari anonimi e non: Il sistema deve dare la possibilità di creare questionari anonimi e non anonimi, questo per anonimizare le richieste di informazioni all’utente in modo da togliere l’imbarazzo di valutazioni per corsi con pochi utenti.
Gli utenti del sistema sono due: Il corsista che come funzione all’interno del sistema ha solo quella di rispondere al questionario E l’amministratore. Le funzioni di quest’ultimo sono molto più vaste, infatti comprendono la creazione e gestione del questionario con la possibilità di modificare i dati del questionario, aggiungere rimuovere modificare sia domande che moduli e anche creare le risposte standard (cioè degli insiemi delle più comuni risposte ai questionari che possono essere usate in fase di creazione del questionario per velocizarene la creazione). Gestire gli utenti aggiungendo ed eliminando le associazioni utente-questionario e la generazione dei report finali dei risultati del questionario.
Le problematiche principali riscontrate durante la creazione del progetto sono state più che altro rivolte alle gestione del questionario. In particolare: MULTILNGUA che permette di creare e utilizzare questionari in più lingue. Qui c’è il problema di come gestire i controlli in modo tale che alla fine si abbia un questionario utilizzabile in tutte le lingue per cui è stato pensato Ci sono due fasi da affrontare: la creazione di nuovi oggetti da inserire che possono essere modulo o domanda, qui si rende obbligatorio l’inserimento delle lingue del questionario in modo da avere una corrispondenza tra tutte le lingue; il controllo viene fatto attraverso struts. E inserimento di oggetti di altri questionari, in questo caso vengono mostrati all’amministratore solo quegli oggetti che hanno le lingue compatibili con quelle del questionario questo controllo viene fatto attraverso le query che estraggono solo oggetti compatibili. MODULARE che permette di riutilizzare parti di altri questionari. In questa fase c’è il problema di mantenere intatta la struttura dei questionari dai quali si prendono gli oggetti, in particolare se si tratta di questionari che hanno già avuto risposta in modo da non avere incongruenze di dati. La soluzione si affronta in due modi e si è deciso per lasciare sempre la possibilità di aggiungere componenti ma di non lasciarli modificare in caso siano presi da questionari già risposti e in caso appartengano a questionari che non sono mai stati utilizzati di permettere la modifica ma di mostrare l’avviso che tale modifica influenza più di un questionario.
Qui si può vedere l’interfaccia dell’amministratore, in questo caso la creazione di un questionario. A sinistra c’è il menù con le varie funzionalità. In alto le bandierine per il cambio di lingua del sistema. Più in basso le bandierine che indicano le lingue in cui è stato scritto il qeustionario (in questo caso italiano e inglese) e permettono di vedere il questionario nelle due lingue. Subito sotto si vede il questionario con i vari pulsanti per modificare il questionario (Q-matita), il pulsante per aggiungere / modificare / elminare il modulo e le domande. In fondo c’è il menù dei vari moduli che permette di navigare tra i vari moduli e gestirli.
Si decide di inserire una domanda già esistente quindi si ricerca tramite la casella di testo. Come si può vedere l’autocomplete aiuta nella ricerca
Il risultato della ricerca che quindi da la possibilià di inserire la domanda scelta.
All’interno del cerchi si può vedere la domanda inserita all’interno del modulo.
Qui viene mostrata l’interfaccia che ha l’utente, in particolare il primo modulo del questionario. A sinistra il menù si trasforma in una barra che indica la percentuale di completamento (ci si trova al primo modulo di due). E in centro si vedono le relative domande alle quali l’utente rispondere.
Qui si vede come l’utente non abbia risposto ad una domanda e quindi il sistema avvisa che è necessario rispondere alla domanda per proseguire.
In fine i report a disposizione dell’amministratore che sono di 3 tipi: Il primo che mostra tutte le risposte divise per utenti (è disponibile solo per questionari NON anonimi) Il secondo che mostra tutte le domande a risposta chiusa e per ogni risposta mostra un grafico a torta con le percentuali. Il terzo che raggruppa tutte le risposte alle domande a perte, in questo caso due utenti non hanno risposto a questa domanda e quindi il sistema inserisce l’avviso per chi legge i report.