TesiMarcoMoauro (PDF)




File information


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
















File preview


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






Download TesiMarcoMoauro



TesiMarcoMoauro.pdf (PDF, 2.55 MB)


Download PDF







Share this file on social networks



     





Link to this page



Permanent link

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..




Short link

Use the short link to share your document on Twitter or by text message (SMS)




HTML Code

Copy the following HTML code to share your document on a Website or Blog




QR Code to this page


QR Code link to PDF file TesiMarcoMoauro.pdf






This file has been shared publicly by a user of PDF Archive.
Document ID: 0000761989.
Report illicit content