This PDF 1.5 document has been generated by LaTeX with hyperref package / pdfTeX-1.40.16, and has been sent on pdf-archive.com on 28/04/2018 at 12:26, from IP address 151.28.x.x.
The current document download page has been viewed 814 times.
File size: 2.55 MB (51 pages).
Privacy: public file
ROMA
TRE
UNIVERSITÀ DEGLI STUDI
UNIVERSITÀ DEGLI STUDI ROMA TRE
Facoltà di Ingegneria
Corso di Laurea in Ingegneria Informatica
Tesi Di Laurea
Integrazione di una soluzione di
Carpooling in un’applicazione Ruby on
Rails
Laureando
Marco Moauro
Matricola 488240
Relatore
Prof. Paolo Merialdo
Anno Accademico 2016/2017
Alla mia famiglia
Ringraziamenti
Ringrazio il mio relatore, il professor Paolo Merialdo, per la disponibilità e per la
possibilità che mi è stata data per svolgere questo tirocinio.
Ringrazio i miei tutor in Wanderio, gli ingegneri Giorgio Pagliaro, Constantin Lipcaneanu e Diego Luca Candido per avermi insegnato molto durante questo progetto.
Ringrazio i miei genitori, poiché sono stati il mio punto di riferimento, per tutti i valori
che mi hanno trasmesso e perché con grande sostegno mi hanno permesso di raggiungere
questo importante obiettivo. Ringrazio mio papà per aver sempre creduto in me e mia
mamma per la sua fiducia cieca e priva di incertezze.
Ringrazio mio fratello Lorenzo perché sopporta le mie escandescenze aiutandomi nelle
difficoltà.
Un ringraziamento speciale va ad una persona che da quando la conosco mi ha cambiato
la vita, senza la quale non sarei quello che sono, Valentina.
Ringrazio Silvia, Roberto, Simona, Claudio, Sara, Gianluca, Simone e Federica, che mi
hanno sostenuto e con cui ho trascorso fin da quando ero piccolo dei bellissimi momenti.
Ringrazio i miei ex compagni di scuola, ora colleghi, Federico C. Federico R. e Teo, con
i quali ho condiviso la scuola media e superiore, ed ora l’università.
Ringrazio coloro che ho conosciuto all’università, Francesco, Daniele e Angelica, senza
i quali non ce l’avrei fatta a superare questo percorso.
Ringrazio i miei amici, Daniele, Leonardo e ancora mio fratello, con i quali spero di
continuare a trascorrere del tempo per tutta la vita.
Infine un ringraziamento va alle mie nonne e a tutte le persone care che non ci sono più,
spero che siate fieri di me.
iii
Indice
Indice
iv
Elenco delle figure
vii
Introduzione
ix
1 Problema
1
1.1
Contesto generale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.2
Perché l’integrazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.2.1
Cos’è il Carpooling . . . . . . . . . . . . . . . . . . . . . . . . . .
2
BlaBlaCar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
1.3
2 Tecnologie e strumenti di sviluppo
2.1
2.2
5
Panoramica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.1.1
Ruby
5
2.1.2
Ruby on Rails
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
2.1.3
MongoDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
2.1.4
Redis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2.1.5
Sidekiq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
Strumenti di sviluppo . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
2.2.1
IDE:RubyMine . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
2.2.2
RuboCop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
2.2.3
Sistema di versionamento . . . . . . . . . . . . . . . . . . . . . .
10
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 Analisi
14
iv
v
3.1
Architettura di Wanderio . . . . . . . . . . . . . . . . . . . . . . . . . .
14
3.2
Il flusso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
3.3
Implementazione diretta vs implementazione a scatola chiusa . . . . . .
16
3.4
Modello dell’Hub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
4 Progettazione e sviluppo
4.1
4.2
4.3
Gem blablacar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
4.1.1
Operazioni svolte dalla gem . . . . . . . . . . . . . . . . . . . . .
19
Gem carpooling-hub . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
4.2.1
Modello del carpooling-hub . . . . . . . . . . . . . . . . . . . . .
22
Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
4.3.1
RSpec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
4.3.2
SimpleCov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
5 Integrazione nel repository principale
5.1
18
26
Integrazione a livello BackEnd . . . . . . . . . . . . . . . . . . . . . . . .
26
5.1.1
Modello di Wanderio . . . . . . . . . . . . . . . . . . . . . . . . .
27
5.2
Il Planner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
5.3
Il componente Live . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
5.3.1
Gestione della concorrenza . . . . . . . . . . . . . . . . . . . . . .
30
5.4
Il Worker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
5.5
Il Decorator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
5.6
Flusso logico dei componenti integrati per il carpooling . . . . . . . . . .
32
6 Risultati
6.1
Caso d’uso principale . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Conclusioni e sviluppi futuri
35
35
38
Considerazioni conclusive . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
Sviluppi futuri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
Facilità di introduzione di nuovi provider . . . . . . . . . . . . . . . . . .
39
Miglioramento del Planner . . . . . . . . . . . . . . . . . . . . . . . . . .
39
Estensione del modello di Wanderio . . . . . . . . . . . . . . . . . . . . .
39
vi
Passaggio dal metamotore alla prenotazione diretta . . . . . . . . . . . .
Bibliografia
39
41
Elenco delle figure
1.1
Ricerca per la tratta Roma-Milano fatta in Wanderio. . . . . . . . . . . . .
2
1.2
Portale web di BlaBlaCar. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
2.1
Differenza delle query fatte (a) in un Database relazionale e (b) in uno NoSQL.
8
2.2
Utilizzo di Redis nel progetto. . . . . . . . . . . . . . . . . . . . . . . . . . .
9
2.3
Esecuzione del codice con la modalità debugger di RubyMine durante lo
svolgimento del progetto. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
3.1
Schema del flusso delle informazioni. . . . . . . . . . . . . . . . . . . . . . .
16
4.1
Struttura della gem blablacar creata attraverso il bundler e mostrata tramite
il comando tree.
4.2
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
Risposta parziale, da parte di BlaBlaCar, in formato JSON, per la tratta
Roma Venezia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
4.3
Struttura della libreria carpoolinghub. . . . . . . . . . . . . . . . . . . . . .
21
4.4
Modello della gem carpoolinghub. . . . . . . . . . . . . . . . . . . . . . . . .
22
4.5
Esecuzione di un test con successo tramite RSpec. . . . . . . . . . . . . . .
24
4.6
Pagina html generata da SimpleCov dopo l’esecuzione di tutti i test per la
gem carpooling-hub. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
5.1
Modello utilizzato in Wanderio. . . . . . . . . . . . . . . . . . . . . . . . . .
27
5.2
Itinerari salvati in cache. (a) Chiave col quale i dati sono stati salvati. (b)
5.3
Dimensione della risposta che contiene gli itinerari salvati. . . . . . . . . . .
30
Prova di scrittura di un lock nella cache Redis tramite un test in locale. . .
31
vii
Elenco delle figure
5.4
viii
Schema di come collaborano i vari componenti utilizzati per l’integrazione
del carpooling in Wanderio. . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
6.1
Homepage di Wanderio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
6.2
Popolamento delle tab in base alle informazioni del planner. . . . . . . . . .
36
6.3
Risultati per la ricerca fatta dall’utente per il carpooling. . . . . . . . . . .
37
6.4
Viaggio selezionato su Wanderio e visualizzato su www.blablacar.it. . . . . .
37
Introduzione
Questa tesi è stata scritta nell’ambito di un progetto, svolto durante il tirocinio
formativo, presso l’azienda Wanderio.
Wanderio é un’azienda che dispone di un’applicazione web che permette di confrontare
varie soluzioni di viaggio quali aereo, treno e bus per andare da un punto di partenza
ad uno di arrivo.
L’obiettivo del lavoro è stato quello di integrare un nuovo modo di viaggiare, il carpooling, più il primo provider, BlaBlaCar, una piattaforma web la quale rappresenta
una modalità di trasporto che consiste nella condivisione di automobili private tra un
gruppo di persone, con il fine principale di ridurre i costi. Questa modalità di trasporto
è diffusa soprattutto in ambienti lavorativi o universitari, dove diversi soggetti, che percorrono la medesima tratta nella stessa fascia oraria, si accordano per viaggiare insieme.
I vantaggi che porta sono svariati come per esempio un risparmio economico in termini
di costo pro-capite di carburante, olio, pneumatici, pedaggi e costi di parcheggio. Altro
vantaggio è una riduzione dell’inquinamento, a causa del minor numero di mezzi in circolazione e inoltre essendo le autovetture progettate per un minimo di 4 o 5 occupanti
e solitamente utilizzate dal solo guidatore, il carpooling potenzialmente potrebbe migliorare la congestione del traffico riducendo il numero di veicoli in circolazione senza il
bisogno di investimenti in nuove infrastrutture.
In questa tesi andremo ad analizzare le varie fasi del progetto quali analisi, progettazione
e sviluppo, con il fine di mostrare le possibili alternative di viaggio tramite carpooling
nell’applicazione web.
La tesi si suddivide in 6 capitoli.
Il primo capitolo tratta il problema affrontato, una panoramica sul carpooling e su
ix
TesiMarcoMoauro.pdf (PDF, 2.55 MB)
Use the permanent link to the download page to share your document on Facebook, Twitter, LinkedIn, or directly with a contact by e-Mail, Messenger, Whatsapp, Line..
Use the short link to share your document on Twitter or by text message (SMS)
Copy the following HTML code to share your document on a Website or Blog