INTRODUZIONE
1
INTRODUZIONE
L’elaborato si propone di presentare un progetto aziendale relativo al porting di
un applicativo J2EE su di un'altra piattaforma tecnologica.
Quando si parla di Java 2 Enterprise Edition, si fa riferimento ad applicazioni
aziendali che mirano a elevati standard di robustezza, sicurezza ed efficienza.
Il software risultante da questo processo di sviluppo, denominato TellMe, è stato
realizzato nel periodo che intercorre tra Febbraio 2015 e Giugno 2015 sotto la guida
del team Dromedian SRL.
Dromedian è un’interessante realtà abruzzese con ben dieci anni alle spalle e un
collaudato team di oltre venti dipendenti che lavorano presso la sede di Ricerca &
Sviluppo sita in San Giovanni Teatino. Dromedian è partner tecnologico di Telecom
Italia, oltre a sviluppare soluzioni che vanno dai totem multimediali (nel campo
dell’info-entertainment, della sanità e delle banche) alle applicazioni mobile tra cui la
famosa iMeetingRoom (www.imeetingroom.eu) usata da centinaia di banche italiane
per la gestione dei Consigli di Amministrazione.
L’incontro con l’azienda è avvenuto il 18 dicembre 2014, giorno in cui si è svolto
il Carrer Day organizzato dall’Università degli Studi de L’Aquila. In quest’occasione
ho avuto modo di conoscere il Project Manager di Dromedian il Dott. Savoretti
Daniele, mio relatore esterno e tutor aziendale.
Grazie al suo forte interessamento verso il mio profilo, ho avuto l’opportunità di
entrar a far parte del team di Dromedian. In azienda ho conosciuto molti ragazzi
motivati e professionalmente preparati, tra cui il Dott. Rabottini Francesco, team
leader dei progetti di sviluppo, che mi ha guidato costantemente nella fase
realizzativa del software.
INTRODUZIONE
2
Lo sviluppo dell’applicazione si è articolato in varie fasi. Il lavoro è iniziato con
l’analisi del precedente software con il supporto del Dott. Savoretti Daniele.
In seguito è stato realizzato il nuovo dominio e si è iniziato lo sviluppo del
software con la guida e l’aiuto del Dott. Rabottini Francesco.
Ai fini della realizzazione del progetto e dell’elaborato è stata preziosa la guida del
Ph.D. Della Penna Giuseppe, relatore della tesi nonché mio docente durante il
Master Universitario in Web Technology.
Con riferimento alle tecnologie utilizzate per la realizzazione del progetto, si cita,
in primo luogo l’ambiente Java per il web.
La piattaforma J2EE è concretizzata da molti framework, quello visto da vicino
nello sviluppo dell’applicativo è Spring MVC.
Di questo vasto e ricco framework è stato utilizzato il progetto Spring Boot; di
entrambi si discuterà a lungo nell’elaborato.
Assieme a Spring, framework basato sul pattern Model View Controller, sono
stati usati in concomitanza JPA (Java Persistence API) per lo strato di persistenza e
Thymeleaf per il layer di presentazione.
Quest’elaborato non si prefigge esclusivamente l’utilizzo di questi strumenti, ma
prevede come scopo primario la riprogettazione di un software affinché esso risulti
vincente sul mercato senza ripetere gli errori del precedente applicativo.
Nel primo capitolo dell’elaborato è illustrata la precedente web-application:
discutendo le tecnologie adottate e mettendo in particolare risalto i suoi punti
deboli.
La seconda parte si raffronta con la prima mostrando il processo d’uso di
“TellMe”, le nuove tecnologie utilizzate, i pattern (ossia le soluzioni adottate ai
problemi ricorrenti) e il nuovo dominio dei dati.
Qui per ognuna delle caratteristiche sopra elencate s’illustra al lettore le
motivazioni che hanno suggerito il suo uso, la complessità che ne deriva e il
miglioramento che ha apportato.
INTRODUZIONE
3
Il terzo capitolo è la naturale prosecuzione del secondo essendo mirato a
specializzarne le logiche astratte precedentemente esposte.
Quest’ultima parte dell’elaborato applica concretamente le tecnologie illustrate nel
secondo capitolo al caso di studio realizzato, mettendo in luce alcune delle
problematiche di un’applicazione Spring MVC ed enunciando l’approccio al
problema e il raggiungimento di una “soluzione accettabile” in termini di
performance (temporali e implementative) e di progettazione.
L’APPLICAZIONE DI PARTENZA
4
1 L’APPLICAZIONE DI
PARTENZA
L’applicazione di partenza, oggetto della fase dell’aggiornamento, nella trattazione
sarà identificata con l’acronimo WL.
WL è un progetto con interfaccia web per la realizzazione di un sistema integrato
di rilevazione e diagnosi dei fattori di rischio organizzativo su scala aziendale.
Questo strumento di analisi è stato impostato secondo una logica di valutazione a
centottanta gradi, mediante due questionari paralleli, uno per il responsabile di
struttura e/o di risorse, e uno per la qualità del lavoro dipendente.
Questo applicativo adempie il proprio compito di rilevazione dei dati aziendali
somministrando ai dipendenti di un’azienda dei questionari erogabili sulla propria
intranet. Dopo una prima fase di raccolta dei dati si procederà a cura
dall’amministratore di sistema all’analisi di questi mediante la generazione di grafici
per la valutazione di parametri aziendali.
L’applicazione di partenza è stata ideata e sviluppata nel periodo che intercorre
tra Luglio e Ottobre 2014 da un’azienda di consulenza informatica esterna a
Dromedian.
Anche Dromedian SRL ha pensato di re-ingegnerizzare tale software
migliorandone la portabilità, la scalabilità, l’efficienza e l’interfaccia utente. La web
application di nuova realizzazione è chiamata TellMe.
L’idea alla base della precedente web-app si fonda sulla compilazione di
questionari anonimi abilitati per specifiche tipologie di utenze previste
dall’amministratore in fase di creazione dei questionari. I sondaggi vengono abilitati
L’APPLICAZIONE DI PARTENZA
5
su delle campagne e prevedono un arco temporale nel quale l’utente su
autorizzazione dell’amministratore potrà compilare le domande.
Le risposte degli utenti sono valutate su una scala di valori fissa da uno a sette
con il quale l’utente esprime, quanto concorda con la domanda, dove il valore sette a
una risposta indica “molto d’accordo” e uno “per niente d’accordo”, e via
discorrendo i restanti valori.
WL raggruppa le domande in aree e dimensioni, dove per quest’ultimo criterio di
raggruppamento s’intende il livello d’impatto su una specifica area.
1.1 REQUISITI DI WL
Il progetto di nuova costituzione, per ottenere riscontri positivi sul mercato, mira
ad analizzare i requisiti funzionali e non funzionali (o extra-functional requirement)
del precedente applicativo software.
Un requisito è definito “funzionale” se specifica qualcosa che il sistema deve fare
affinché raggiunga il suo scopo. Si parla invece di extra-functional requirements
quando si aggiungono caratteristiche non strettamente necessarie ai fini del progetto,
i requisiti non funzionali vengono, in alcuni casi, visti come delle “qualità”
dell’applicativo.
Per comprendere pienamente il software di nuova realizzazione è opportuno
passare in rassegna le tipologie di utenze cui il prodotto era destinato.
La web-app iniziale compie una distinzione dei ruoli prevedendo un
amministratore di sistema e degli utenti anonimi finalizzati alla compilazione dei
questionari aziendali, che chiameremo utenti basici.
Questa distinzione dei ruoli e però divisa in maniera errata, ad esempio la
memorizzazione dell’amministratore è prevista in una specifica tabella separata dai
restanti utenti di WL, ciò discrimina chi può compilare o no i questionari.
L’APPLICAZIONE DI PARTENZA
6
Questo concetto in applicazioni di livello enterprise raffigura un errore di
modellazione. Di seguito si presentano i requisiti della vecchia applicazione oggetto
di aggiornamento, indicando la tipologia di utenza cui è destinata, specificando
utente amministratore o basico.
Tabella 1.1 - Requisiti Funzionali ed Extra-Funzionali in WL
1
REQUISITO GESTIONE AZIENDA (Functional Requirement) RUOLO
DESCRIZIONE Possibilità di modificare i dati della propria azienda. Amministratore
2
REQUISITO
GESTIONE UNITA’ OPERATIVE (Functional
Requirement)
RUOLO
DESCRIZIONE
La gestione dei dipartimenti aziendali è consentita
all’amministratore del sistema (Creazione e Modifica), non è
consentita la rimozione delle unità operative.
Amministratore
3
REQUISITO
GESTIONE TIPOLOGIE UTENTI (Functional
Requirement)
RUOLO
DESCRIZIONE
Gestione delle tipologie di utenze aziendali (Creazione e
Modifica). Le tipologie di utenti non possono essere cancellate
nel front-end poiché s’incorrerebbe in un’incongruenza del
modello. Cancellando una tipologia di utente non sono
eliminati i dipendenti afferenti al quel dipartimento e le
statistiche inerenti alle utenze dell’applicazione.
Amministratore
4
REQUISITO
GESTIONE AREE, DIMENSIONI, DOMANDE,
QUESTONARI E CAMPAGNE (Functional Requirement)
RUOLO
DESCRIZIONE
Funzione obiettivo dell’applicativo. Ciò consente agli utenti la
compilazione di questionari aziendali. Preventivamente a
questa fase avviene la popolazione delle componenti sopra
citate.
Amministratore
5
REQUISITO IMPORTAZIONE UTENTI (Functional Requirement) RUOLO
DESCRIZIONE
L’importazione degli utenti in WL è consentita mediante una
form d’importazione manuale oppure mediante l’importazione
di file CSV/TXT opportunamente formattati.
Amministratore
L’APPLICAZIONE DI PARTENZA
7
6
REQUISITO
ESECUZIONE DEI QUESTIONARI UTENTE (Functional
Requirement)
RUOLO
DESCRIZIONE
Gli utenti importati in WL, contestualmente all’importazione
vengono abilitati su delle campagne di una specifica durata
temporale entro la quale loro possono compilare il questionario
associato a quella specifica campagna. Queste utenze affinché
possano conoscere l’applicativo dovranno ricevere un invito.
Funzionalità descritta nel punto seguente.
Basico
7
REQUISITO
INVITO COMPILAZIONE QUESTIONARIO (Extra-
Functional Requirement)
RUOLO
DESCRIZIONE
L’amministratore dopo la fase d’importazione può scegliere tra
due modalità d’invito. Invio delle credenziali di accesso per e-
mail oppure generando un PDF da spedire per lettera. Questa
funzionalità soffre di pesanti lacune. Essa non è atomica, infatti,
può essere rieseguita in più momenti, le password inoltre non
essendo criptate viaggiano in chiaro sia per e-mail, sia se scritte
sul PDF. Infatti, in caso di recapito errato delle lettere può
accedere che uno sconosciuto acceda all’applicazione.
Amministra
tore
8
REQUISITO ANALISI DEI RISULTATI (Functional Requirement) RUOLO
DESCRIZIONE
Il sistema prevede una form molto complessa per generare un
grafico di analisi dei sondaggi.
Amministra
tore
1.2 TECNOLOGIE UTILIZZATE
L’evoluzione delle tecnologie nella produzione di software negli ultimi anni è
cresciuta smisuratamente spingendo gli sviluppatori a tenersi aggiornati con i tempi.
Non a caso il know-how di un framework già superato spesso grava sulla buona
riuscita di un progetto, cosa accaduta proprio con WL realizzato solo pochi mesi
con ambienti di sviluppo Java già superati per affermarsi con le moderne
piattaforme. TellMe mira proprio a non ripetere lo stesso errore utilizzando un
ambiente di sviluppo in attuale miglioramento e con forte crescita negli ultimi anni.
L’applicazione di partenza è stata sviluppata con Java 7 (JDK 7.0.51), utilizzando
L’APPLICAZIONE DI PARTENZA
8
come piattaforma di sviluppo NetBeans 7.4. Il deploying avviene sull’Application
Server Tomcat versione 7.0.5, utilizzando MySQL come base di dati.
Quest’ambiente così descritto non presenta un grande superamento tecnologico,
infatti, il problema del software oggetto della fase di porting non risiede nel cosa
richiede come ambiente di sviluppo, bensì sul come è realizzato.
WL si approccia allo sviluppo web seguendo le linee guida del famoso pattern del
MVC, Model View Controller.
Tuttavia, sia per l’archiviazione delle informazioni nel database che per il
framework di sviluppo utilizzato, WL evidenzia pesanti superamenti tecnologici.
1.2.1 STRUTS FRAMEWORK
Un framework è un insieme di elementi software che fornisce una cosiddetta
intelaiatura o struttura
1
per lo sviluppo di applicazioni software oltre a dettarne le
regole di funzionamento e d’interazione delle componenti. Nello sviluppo di un
software adottare un framework facilita la strutturazione dell’architettura,
agevolandone i compiti più comuni e il riutilizzo del codice.
Struts Framework, per anni è stato uno dei framework più skillati nelle web-
application J2EE, seppur in quest’ultimo periodo sia stato largamente scalzato da
Spring Framework.
Struts Framework implementa la logica del pattern Model View Controller, che
può essere, rapidamente, schematizza nella seguente immagine.
1
La definzione di Framework su Wikipedia è: “Un framework, può essere definito come intelaiatura o
struttura, in informatica e specificatamente nello sviluppo software, è un'architettura logica di supporto su cui
un software può essere progettato e realizzato, spesso facilitandone lo sviluppo da parte del programmatore”.
Nel testo si evidenziano i termini intelaiatura e struttura per marcare l’aproccio metodologico
nell’apprendimento nella fase realizzativa/progettuale ed implementativa di un software.