Presentazione standard di PowerPoint - e-Learning

Progetto Architetture Del Software e Dei Dati
Appello del 29/06/2016
Trasporto Merci
Gruppo BSV
Beretta Matteo, 763953
Scoca Luigi, 762115
Virgolino Dalila, 764097
Testo del Problema(1)
• Si deve realizzare un sistema per la pianificazione e la gestione del trasporto di merci da un
magazzino centrale (MC) a un insieme di destinazioni periferiche (DP). La struttura operativa
comprende:
1. Un Ufficio Logistico (UL)
2. Un Centro di Coordinamento (CC)
3. Un insieme di Mezzi di Trasporto (MT)
4. Un servizio esterno (MV) che fornisce la descrizione della mappa viaria e le stime dei tempi di
percorrenza sui singoli archi viari
• Le sedi di UL, di CC e dei parcheggi notturni dei mezzi sono in località fisicamente lontane fra loro.
UL ha il compito di definire giornalmente, per ciascun mezzo, le merci da caricare in MC e le destinazioni
finali DP. UL possiede già un sistema informativo che ne supporta le attività e produce giornalmente le
Bolle di Carico (BC), cioè i documenti che descrivono, per ciascun mezzo, le merci da caricare e le
destinazioni. Si assuma che ciascun mezzo effettui un solo viaggio per giorno. Le attività interne di UL e
la struttura interna del suo sistema informativo non devono essere progettate.
Testo del Problema(2)
• CC ha il compito di:
1. Pianificare per ciascun mezzo, in base alla BC ad esso relativa e utilizzando informazioni
fornite da MV, il percorso (PP) da seguire per raggiungere le destinazioni
2. Comunicare a inizio giornata le bolle di carico BC e i percorsi PP agli autisti dei mezzi MT
3. Verificare e segnalare tempestivamente a un operatore, gli eventuali scostamenti (spaziali e
temporali) dei percorsi effettivi dei mezzi MT rispetto ai percorsi pianificati
4. Effettuare analisi statistiche sugli scostamenti dei percorsi effettivi rispetto a quelli
pianificati.
• Ciascun MT è attrezzato in modo da:
1. Presentare all’autista le informazioni BC e PP
2. Rilevare, con temporizzazioni opportune la posizione effettiva
3. Comunicare le informazioni utili a CC per lo svolgimento dei suoi compiti.
Assunzioni
•
•
•
•
•
•
•
•
•
•
•
Assumiamo che la Bolla di Carico creata da UL sia in formato elettronico e contenga già le informazioni relative
al mezzo e all’autista che dovrà compiere la consegna. In questo modo il CC non deve preoccuparsi di
selezionare un mezzo idoneo e di controllare gli autisti disponibili. Il CC dovrà solamente notificare all’autista la
futura spedizione e inviare al mezzo le informazioni sulla bolla e sul percorso.
I percorsi di ogni MT vengono effettuati in giornata, dato che supponiamo che UL crei le BC in modo da
distribuire in modo appropriato e ottimizzato le consegne da effettuare.
Assumiamo che gli autisti possano sempre accedere alle Bolle di Carico e ai percorsi, fornitegli tramite e-mail.
I parcheggi notturni possono essere più di uno, assumiamo che un MT sia posizionato sempre nello stesso
parcheggio e che questa informazione sia trascritta nella bolla.
Assumiamo che il servizio MV sia aggiornato almeno una volta al giorno e che il nostro sistema prelevi i dati
necessari per pianificare i percorsi quotidianamente.
Il CC fa partire una spedizione solo se riceve la Bolla di Carico entro le 10 di mattina.
Se il CC riceve una bolla dopo le 10 di mattina, il percorso verrà calcolato il giorno successivo in modo da
utilizzare i dati aggiornati sulla viabilità.
Supponiamo che il collegamento tra i mezzi di trasporto e il CC sia sempre disponibile e che sia sempre possibile
ricavare la posizione tramite il ricevitore GPS.
Assumiamo che il sistema da noi progettato sia adatto a gestire un servizio logistico erogato a livello regionale.
Ogni spedizione può avvenire tra le 7:00 le 18:00, dal lunedì al venerdì. In questo modo, la gestione degli
scostamenti e della ricezione di informazioni utili da parte del CC, si limita a questo intervallo di tempo.
CC non gestisce le priorità delle spedizioni in quanto assumiamo che vengano già gestite da UL.
Dimensionamento del Problema
• Abbiamo assunto che il servizio operi a livello regionale. Considerando che
un’azienda di logistica di grandi dimensioni, che opera a livello nazionale, possiede
circa 3000 mezzi, possiamo dire che in media ne impiega 150 per ogni regione.
• Considerando di dimensionare il problema per essere utilizzato nella regione
Lombardia, una delle più estese, abbiamo stimato di avere a disposizione circa 200
mezzi.
• Considerando che in Lombardia avvengono circa 60 incidenti al giorno, possiamo
sovrastimare che almeno 3 mezzi ogni ora potrebbero incontrare o essere coinvolti
in questi incidenti e cambiare percorso, generando così una segnalazione di
scostamento.
• Abbiamo quindi calcolato che per gestire gli scostamenti e le info utili inviate dagli
MT siano necessari almeno 3 operatori. Poiché nelle nostre stime non sono coinvolti
gli scostamenti causati da traffico e lavori stradali non segnalati da MV, possiamo
considerare accettabile la presenza di 5 operatori.
Requisiti Funzionali e
Non Funzionali
Requisiti Funzionali
CC:
• Pianifica il percorso di MT in base alle informazioni ricevute da UL tramite la bolla
(BC).
• Comunica ai mezzi MT ed agli autisti le bolle e i percorsi.
• Comunica ad un operatore gli scostamenti (spaziali e temporali) effettuati da MT.
• Effettua analisi statistiche sugli scostamenti effettuati rispetto a quelli previsti.
MT:
• Presenta all’autista la bolla (BC) e il percorso previsto.
• Rileva la posizione effettiva.
• Comunica informazioni e le rilevazioni sulla posizione a CC.
Requisiti Non Funzionali
CC:
• Pianifica il percorso di MT giornalmente, con un ritardo massimo di 1 giorno
lavorativo, nel caso in cui la bolla arrivi al CC dopo le 10 di mattina.
• Comunica ai mezzi MT ed agli autisti le bolle e i percorsi all’inizio di ogni giornata.
• Comunica ad un operatore gli scostamenti (spaziali e temporali) effettuati da MT,
con un ritardo accettabile di 1 minuto.
• Effettua analisi statistiche ogni due settimane sugli scostamenti effettuati rispetto
a quelli previsti.
MT:
• Rileva la posizione effettiva ogni 10 secondi .
• Ogni minuto comunica le rilevazioni al CC.
• Effettua un solo viaggio al giorno.
Analisi
Who, Where, What
Who-Where: Diagramma dei Casi d’Uso
What: Diagramma delle Classi
Architettura del
Software
Diagrammi di Attività
How, Why, When
Acquisizione Raw Data
• Analizzando i casi limite (veicolo fermo – veicolo in autostrada 100km/h) la distanza massima
percorsa tra due rilevazioni consecutive del GPS, utilizzando una frequenza di campionamento di 10
secondi, è di circa 300 m, considerati trascurabili ai fini della rilevazione degli scostamenti.
Comunica Posizione
•
Considerando che i dati GPS vengono raccolti 6 volte al minuto, in un minuto il veicolo potrebbe percorrere una
distanza massima di 2 km (100km/h in autostrada). Abbiamo deciso di inviare i dati rilevati a CC ogni minuto per
le seguenti ragioni:
- non meno di 1 minuto per ridurre il numero di pacchetti inviati e poichè è considerato accettabile
conoscere in ritardo (di 1 minuto) la posizione e il percorso effettuato dal veicolo;
- non più di un minuto per ridurre le dimensioni dei pacchetti inviati dal veicolo.
Crea BC
Pianifica Percorso
• Poiché come da specifica, ogni MT può compiere un viaggio al giorno e avendo stimato di dover
gestire circa 200 mezzi, ogni giorno il CC elabora circa 200 percorsi.
• Il ritardo massimo di un giorno si riferisce ad un giorno lavorativo.
Segnala Scostamenti
Invio Informazioni a CC
Analisi Statistiche
Architettura Logica
Soluzione 1(1)
• La prima soluzione proposta è stata ottenuta suddividendo i componenti con un partizionamento
verticale per livelli di astrazione e secondo il criterio di omogeneità, non rispettando però i criteri di
isolamento e localizzazione.
• I diagrammi di attività son stati quindi divisi in modo tale che ogni componente si occupi di attività
omogenee tra loro.
Le componenti individuate sono:
• Gestore Dati: si occupa di acquisire i dati grezzi dal sensore GPS, salvarli in un datastore locale e inviarli
al CC periodicamente. Si occupa anche di monitorare gli scostamenti e notificare quest’ultimi
all’operatore. Infine, ogni due settimane si occupa anche di generare delle statistiche sugli scostamenti.
Ha molteplicità pari a 1, gestisce tutte le attività su ogni MT e nel CC.
• Gestore Informazioni: si occupa di notificare un evento al CC e di processarlo. Ha molteplicità pari 1.
• Gestore Spedizioni: prepara le Bolle di Carico della giornata e le manda al Centro di Coordinamento
che le utilizza per progettare i percorsi e per portare le merci a destinazione. Molteplicità pari a 1.
Soluzione 1(1)
Pro:
• Intraflow basso, le componenti
comunicano poco fra di loro.
• Non ci sono controlflow che passano
attraverso le diverse componenti.
Contro:
• Complessità ancora molto alta poiché
ogni componente si occupa di tutti i
mezzi di trasporto.
• Nello stesso componente coesistono
frequenze e ritardi differenti.
• Non si tiene conto del criterio di
localizzazione.
• Extraflow alto poiché ogni
componente comunica con molti
elementi esterni.
Soluzione 1(2)
Condivisione
IntraFlow
Astrazione
100
90
80
70
60
50
40
30
20
10
0
ExtraFlow
Complessità
60
Complessità
80
Frequenza
100
Ritardo
100
Localizzazione
100
ExtraFlow
80
IntraFlow
20
Condivisione
60
Frequenza
Ritardo
Localizzazione
Astrazione
Soluzione 2(1)
• La seconda soluzione proposta è stata ottenuta suddividendo i componenti secondo i criteri di
omogeneità, isolamento e localizzazione.
• Per rispettare il criterio di omogeneità abbiamo fatto in modo che ogni componente si occupi di un
compito specifico o includa attività tra loro omogenee.
• I componenti son stati suddivisi in modo da minimizzare il flusso di informazioni tra le componenti,
rispettando così il criterio di isolamento.
• Infine, per il criterio di localizzazione, ogni componente si occupa di gestire attività che avvengono
nello medesimo luogo o, per meglio dire, sullo stesso device dell’architettura di deployment.
Pro:
• Bassa complessità dei componenti.
• Minor grado di astrazione e localizzazione.
• Nello stesso componente coesistono frequenze e ritardi simili tra loro.
• Extraflow si abbassa perché ogni componente comunica con un numero più basso di attori esterni.
Contro:
• Intraflow più alto perché con più componenti c’è uno scambio di informazioni maggiore.
• Ci sono controlflow che passano attraverso le diverse componenti.
Soluzione 2(2)
Le componenti individuate sono:
• Gestore Dati Veicolo: si occupa di acquisire i dati grezzi dal sensore GPS, salvarli in un datastore
locale e inviarli al CC periodicamente. Ha molteplicità pari al numero di MT utilizzati per il trasporto
merci.
• Gestore Invio Info: si occupa di notificare un evento al CC. Ha molteplicità pari al numero di MT
utilizzati per il trasporto mezzi.
• Gestore Ricezione Info: gestisce le notifiche ricevute dai veicoli. Molteplicità pari a 1.
• Gestore BC: azioni svolte dall’Ufficio Logistico. Prepara le Bolle di Carico della giornata e le manda al
Centro di Coordinamento. Molteplicità pari a 1.
• Gestore CC: azioni svolte dal Centro di Coordinamento per quanto riguarda la spedizione delle merci.
Riceve le Bolle di Carico ed elabora i percorsi dei vari mezzi. Molteplicità pari a 1.
• Gestore Statistiche: si occupa di analizzare i dati degli scostamenti per generare dati statistici.
Molteplicità pari a 1.
• Gestore Scostamenti: analizza la posizione ed il percorso di ogni MT, rispetto al percorso atteso PP,
generando, nel caso di scostamenti, una segnalazione. Molteplicità pari a 1.
Soluzione 2(3)
Condivisione
IntraFlow
Astrazione
100
90
80
70
60
50
40
30
20
10
0
ExtraFlow
Complessità
Frequenza
Ritardo
Localizzazione
Astrazione
30
Complessità
30
Frequenza
45
Ritardo
60
Localizzazione
10
ExtraFlow
10
IntraFlow
40
Condivisione
20
Soluzione Scelta
• Osservando il grafo, risulta ovvio che la
scelta migliore comprende la soluzione 2
che, con un maggior grado di
partizionamento, ha permesso di ridurre la
complessità del sistema. Infatti, poiché la
maggior parte dei componenti si occupa di
un solo MT e di attività localmente
omogenee, è diminuita di molto la
complessità dei componenti.
• Consente di ottenere un compromesso fra
tutti i parametri mostrati nel grafico.
Condivisione
IntraFlow
Astrazione
100
90
80
70
60
50
40
30
20
10
0
ExtraFlow
Complessità
Frequenza
Ritardo
Localizzazione
Architettura Concreta
Gestore Dati Veicolo
Gestore
Scostamenti
Gestore Invio e Ricezione Info
Gestore Percorso
Gestore Statistiche
Architettura di
Deployment
Soluzione 1
Soluzione 2
Soluzione Scelta
Tra le opzioni mostrate in precedenza abbiamo optato per la soluzione 2, in quanto presenta i seguenti
vantaggi sulle altre soluzioni proposte:
• Permette outsourcing dei dati.
• I server del CC avranno una mole di lavoro inferiore in quanto non dovranno occuparsi della gestione
del DB.
• Inoltre i compiti del CC di generare i percorsi e quello di gestire le informazioni ricevute dai vari MT
sono partizionati su due nodi differenti, ognuno dei quali si occupa di uno solo di questi aspetti.
Architettura Hardware
e di Rete
Hardware: MT(1)
Tablet Huawei MediaPad T2 10.0 pro + Sim
Il seguente tablet è fornito di connessione internet 4G e del modulo GPS. Il modulo gps
riceve i segnali: GPS, A-GPS e GLONASS.
Ad ogni tablet è assegnata una sim Vodafone con piano dati aziendale, il costo viene
recepito mensilmente. Ad eventuali superamenti della soglia dati viene applicata una
mora ma il piano dati non viene bloccato.
Hardware: MT(2)
Ogni tablet dispone di un’apposita applicazione in grado di comunicare con il CC.
Ogni tablet è associato univocamente al suo mezzo con il codice identificativo di
quest’ultimo. In questo modo il CC può inviare direttamente al tablet le informazioni
sul percorso e sulla bolla di carico. L’app progettata permette anche all’autista di
consultare le informazioni riguardanti la spedizione e nel caso di necessità, segnalare
info utili al CC.
Hardware: CC(1)
Per la gestione dell’hardware di CC avevamo più soluzioni:
1. Creare in locale il server e la base di dati.
2. Creare in locale l’applicativo server e utilizzare un servizio remoto per la base di
dati.
3. Utilizzare un servizio remoto sia per l’applicativo server che per al base di dati.
Considerando che il nostro sistema dovrà gestire una notevole quantità di dati ma
non richiede un carico di lavoro eccessivamente alto abbiamo optato per la seconda
opzione. Inoltre nel nostro sistema non sono previsti picchi di carico in cui è
necessario aumentare esponenzialmente le caratteristiche hardware della macchina
con sistemi virtualizzati.
Come servizio di Database esterno abbiamo pensato ad una soluzione Amazon,
mentre per il server abbiamo pensato ad due server IBM di medio alte prestazioni,
uno che esegue delle operazioni sul percorso e uno per le informazioni e scostamenti.
Hardware: CC(2)
Amazon Relational Database (Amazon RDS)
Il seguente servizio offre una serie di database relazionali . Il costo varia in base
al numero delle query effettuate e alle caratteristiche dell’hardware richiesto.
Impostando una configurazione medio alta il costo è di 1,160 dollari all’ora.
Con questa configurazione il costo mensile è di circa 850€.
Hardware: CC(3)
Server IBM System x3500 M4
Il seguente server è fornito con assistenza da IBM ad un costo di
circa 3000€
Caratteristiche tecniche:
Processore (max): Fino a 2 processori Intel Xeon della famiglia
E5-2600 v2 a 3,5 GHz
Cache (max): Fino a 30 MB per processore
Memoria (max): Fino a 384 GB di RDIMM DDR-3 o 768 GB di
LRDIMM DDR-3
Slot di espansione: Fino a otto slot di espansione PCIe
Interfaccia di rete: Intel I350AM4 Quad Port GbE
Hardware: UL
Non dovendo progettare la struttura interna di UL, supponiamo, in maniera
semplificata, che il sistema hardware di UL sia composto da una base di dati e da un
server che svolge una serie di operazioni. Visto che il server non deve eseguire
operazioni particolarmente esose e il database non deve essere eccessivamente
popolato abbiamo pensato che si potesse realizzare in locale sia il server sia la base di
dati.
Infrastruttura di rete
Il CC (Centro di Coordinamento) è collegato alla rete internet tramite fibra ottica.
Sfrutta la rete internet per collegarsi con l’UL (Ufficio Logistico) attraverso una VPN.
Presenta un indirizzo IP statico per interfacciarsi con la rete.
MT è connesso alla rete internet tramite la SIM dati con un abbonamento ad internet,
comunica solamente con il CC.
Stime dei Costi
Costi Infrastrutture
Prodotto
Quantità
Costo unitario
Costo totale
Tablet 3G/4G
200
300€
60000€
Supporto tablet su
autoveicolo
200
15€
3000€
Cablaggio rete con fibra
ottica fino a CC
1
800€
800€
Server
2
3000€
6000€
UPS
2
500€
1000€
Router
1
160€
160€
Struttura comunicazione 1
1000€
1000€
Pc operatore
500€
2500€
5
Costo totale infrastrutture: €74460
Costi Software
Prodotto
Quantità
Costo unitario
Costo totale
Licenza sistema
operativo server
2
500€
1000€
Programmazione app
MT
1
30000€ (5 persone * 4
mesi * 1500€/mese)
30000€
Test app MT
1
1000€
1000€
Programmazione
applicativo server
2
60000€ (6 persone * 6
mesi * 1600€/mese)
120000€
Test applicativo server
2
2000€
4000€
Sviluppo base di dati
server
1
3000€ (2 persone * 1
mese * 1500€/mese)
3000€
Costo totale software: 159000€
Costi di Gestione e di Aggiornamento
Prodotto
Quantità
Costo unitario
Costo totale
Sim card + abbonamento 200
15€ /al mese
3000€
Costo mensile fibra
ottica
1
50€/mese
50€
Energia elettrica
1
300€/mese
300€
Assistenza software e
hardware
1
500€/mese
500€
Amazon RDS database
1
850€/mese
850€
Stipendio sistemista
1
1500€/mese
1500€
Stipendio
1
programmatore/databas
e manager
1500€/mese
1500€
Stipendio operatore
1500€/mese
7500€
5
Costo totale gestione e aggiornamento: 15200€
Costo Totale Previsto
Il costo totale è dato da una spesa iniziale per l’implementazione dell’architettura
hardware/software e da un costo di mantenimento calcolato su base mensile.
Costo infrastrutture:
74460 €
Costo software: 159000€
TOTALE COSTO REALIZZAZIONE: 233460€
Costo gestione e aggiornamento: 15200 €/mese
N.B: I costi si riferiscono a stime previste
Architettura dei Dati
DBCC – Schema Concettuale
DBCC – Schema Logico
Merce(idMerce, tipologia, peso, descrizione, destinazione, bolla)
Destinazione(idDestinazione, città, via, #civico)
BollaDiCarico(idBolla, data, MT, parcheggio, tipoDiSpedizione)
Percorso(idPP, data, orarioPartenza, orarioAttesoArrivo, bolla, kmTot)
Composto(idPP, idTratto)
TrattoViario(idTratto, città, via, coordinateInizio, coordinateFine, civicoIniziale, civicoFinale, tempoAtteso,
timestamp, kmTot)
InfoUtili(idInfo, descrizione, tipologia, timestamp, percorso)
Scostamento(idScostamento, percorso , tipologia, descrizione, ritardo, mScostamento, coordinateEff,
coordinateAtt, timestamp)
Statistiche(idStatistica, tipologia, dati)
Utilizza(idStatistica, idScostamento)
DBUL – Schema Logico
Destinazione(idDestinazione, città, via, #civico)
Carico(idCarico, tipologia, peso, descrizione, destinazione, volume)
BC(idBolla, data, causale, MT, parcheggio, priorità, tipoDiSpedizione, categoria)
Accompagna(idBolla, idCarico)
MT(idMT, parcheggio, targa, marca, modello, tipologia, caricoMassimo, volumeMassimo)
Autista(idAutista, nome, cognome, dataNascita, cittàNascita, cittàResidenza, indirizzo, tel)
Guida(idMT, idAutista, data)
N.B. Esiste la relazione Accompagna perché UL può non aver creato ancora la
bolla e Carico avrebbe un campo vuoto relativo a bolla.
DBUL – Reverse Engineering(1)
Fasi del Reverse Engineering:
1. Si associano le tabelle con chiavi semplici a delle entità. La chiave di ogni entità è
l’identificatore della tabella.
Considerando solo le tabelle con chiavi semplici che non possono corrispondere a relazioni N a N,
identifichiamo 5 entità: Carico, BC, MT, Autista e Destinazione, ognuna delle quali ha come chiave
l’identificatore della tabella.
DBUL – Reverse Engineering(2)
2. Si individuano le chiavi esterne e i vincoli di integrità referenziali e si stabiliscono le relazioni.
Le chiavi esterne e i vincoli di integrità referenziale vengono individuati grazie al fatto che i nomi degli
attributi sono stati scelti in modo chiaro e quasi univoco. Infatti possiamo notare subito che:
• BollaDiCarico.MT, BollaDiCarico.parcheggio -> MT.idMT, MT.parcheggio -> Relazione Legato;
• Carico.destinazione -> Destinazione.idDestinazione -> Relazione Destinato.
Le cardinalità di queste relazioni sono sicuramente 1 a N o 1 a 1, dato che una delle due entità è legata
ad una sola istanza dell’altra entità. L’altra cardinalità viene impostata in base alla conoscenza del
dominio delle entità. Dato che abbiamo assunto che una bolla può essere associata a più di un carico, la
relazione sarà 1 a N.
Lo stesso ragionamento viene fatto anche per la relazione Destinato.
DBUL – Reverse Engineering(3)
Inoltre abbiamo due tabelle identificate come relazioni e non come entità, poiché possiedono chiavi
esterne appartenenti a due entità diverse.
Accompagna(idBolla, idCarico)
Guida(idMT, idAutista, data)
La relazione Accompagna ha cardinalità 1(0) a N, perché sappiamo per certo che un carico può essere
associato al massimo ad una sola bolla. Mentre la relazione Guida ha cardinalità N a N poiché tutti i
mezzi possono essere guidati da tutti gli autisti.
3. Si indentificano eventuali relazioni IS-A o generalizzazioni.
Non ci sono relazioni IS-A o generalizzazioni.
DBUL – Schema Concettuale
Eterogeneità e Corrispondenze Interschema
Eterogeneità/
corrispondenza
DBUL
DBCC
Tipologia
Risoluzione
E1
BC
BollaDiCarico
Livello di schema – Eterogeneità di nome
(Sinonimi – stesso concetto , differenti nomi)
Abbiamo deciso di nominare l’entità in
modo univoco come BollaDiCarico
E2
MT
Bolla DiCarico.idMT
Livello di schema – Tipi di Concetti – Coppie di
Concetti (tipi differenti, attributi vs identità)
Abbiamo deciso di mantenere l’entità MT,
mantenendo la relazione Legato 1 a N
E3
BC.data
BollaDiCarico.data
Livello di schema – Eterogeneità di nome
(Omonimia – stesso nome, differenti concetti)
Abbiamo deciso di rinominare BC.data in
dataEmissione e BollaDiCarico.data in
dataConsegna
E4
-Carico
-Carico.idCarico
-Merce
-Merce.idMerce
Livello di schema – Eterogeneità di nome
(Sinonimi – stesso concetto , differenti nomi)
Abbiamo deciso di nominare l’entità Merce
e l’attributo in modo univoco come idMerce
E5
Relazione
Accompagna 0
aN
Relazione
Accompagna 1 a N
Livello di schema – Tipi di concetti – Coppie di
Concetti (diversa cardinalità tra relazioni)
Abbiamo deciso di mantenere la cardinalità
0 a N, avendo assunto che una Merce può
non essere stata ancora assegnata ad una
BollaDiCarico
C1
BC
BollaDiCarico
Diverso set di attributi
Abbiamo deciso di mantenere tutti gli
attrbuti delle due entità
C2
Carico
Merce
Diverso set di attributi
Abbiamo deciso di mantenere tutti gli
attrbuti delle due entità
Schema Concettuale Globale
Schema Logico Globale
Destinazione(idDestinazione, città, via, #civico)
Merce(idMerce, tipologia, peso, descrizione, destinazione, volume)
BollaDiCarico(idBolla, dataEmissione, dataConsegna, causale, MT, parcheggio, priorità, tipoDiSpedizione, categoria)
Accompagna(idBolla, idMerce)
MT(idMT, parcheggio, targa, marca, modello, tipologia, caricoMassimo, volumeMassimo, parcheggio)
Autista(idAutista, nome, cognome, dataNascita, cittàNascita, cittàResidenza, indirizzo, tel)
Guida(idMT, idAutista, data)
Percorso(idPP, data, orarioPartenza, orarioAttesoArrivo, bolla, kmTot)
Composto(idPP, idTratto)
InfoUtili(idInfo, descrizione, tipologia, timestamp, percorso)
TrattoViario(idTratto, città, via, coordinateInizio, coordinateFine, civicoIniziale, civicoFinale, tempoAtteso, timestamp, kmTot)
Scostamento(idScostamento, percorso , tipologia, descrizione, ritardo, mScostamento, coordinateEff, coordinateAtt, timestamp)
Statistiche(idStatistica, tipologia, dati)
Utilizza(idStatistica, idScostamento)
Mapping GAV(1)
CREATE VIEW Destinazione(idDestinazione, città, via, #civico) AS
SELECT *
FROM DBUL.Destinazione AS ULD LEFT JOIN DBCC.Destinazione AS CCD ON
ULD.idDestinazione = CCD.idDestinazione
CREATE VIEW Merce(idMerce, tipologia, peso, descrizione, destinazione, volume) AS
SELECT ULC.idCarico, ULC.tipologia, ULC.peso, ULC.descrizione, ULC.destinazione,
ULC.volume
FROM DBUL.Carico AS ULC LEFT JOIN DBCC.Merce AS CCM ON ULC.idCarico =
CCM.idMerce
• Considerato il fatto che nella base dati DBUL le tabelle Destinazione e Merce contengono i dati
relativi a tutte le spedizioni effettuate e da effettuare, mentre in DBCC sono presenti i dati relativi
alle spedizioni già associate ad una bolla, abbiamo deciso di mantenere, tramite un LEFT JOIN, tutti
i dati relativi alla DBUL. Lo stesso ragionamento viene applicato per BollaDiCarico.
Mapping GAV(2)
CREATE VIEW BollaDiCarico(idBolla, dataEmissione, dataConsegna, causale, MT, parcheggio, priorità,
tipoDiSpedizione, categoria) AS
SELECT ULBC.idBolla, ULBC.data AS dataEmissione, CCBC.data AS dataConsegna, ULBC.causale,
ULBC.MT, ULBC.parcheggio, ULBC.priorità, ULBC.tipoDiSpedizione, ULBC.categoria
FROM DBUL.BC AS ULBC LEFT JOIN DBCC.BollaDiCarico AS CCBC ON ULBC.idBolla =
CCBC.idBolla
CREATE VIEW Accompagna(idBolla, idMerce) AS
SELECT ULA.idBolla, ULA.idCarico AS idMerce
FROM DBUL.Accompagna AS ULA
UNION
SELECT CCM.bolla AS idBolla, CCM.idMerce
FROM DBCC.Merce AS CCM
CREATE VIEW MT(idMT, parcheggio, targa, marca, modello, tipologia, caricoMassimo, volumeMassimo,
parcheggio) AS
SELECT *
FROM DBUL.MT
Mapping GAV(3)
CREATE VIEW Autista(idAutista, nome, cognome, dataNascita, cittàNascita, cittàResidenza,
indirizzo, tel) AS
SELECT *
FROM DBUL.Autista
CREATE VIEW Guida(idMT, idAutista, data) AS
SELECT *
FROM DBUL.Guida
CREATE VIEW Percorso(idPP, data, orarioPartenza , orarioAttesoArrivo, bolla, kmTot) AS
SELECT *
FROM DBCC.Percorso
CREATE VIEW Composto(idPP, idTratto) AS
SELECT *
FROM DBCC.Composto
Mapping GAV(4)
CREATE VIEW Scostamento(idScostamento, percorso , tipologia, descrizione, ritardo, mScostamento,
coordinateEff, coordinateAtt, timestamp) AS
SELECT *
FROM DBCC.Scostamento
CREATEVIEW Statistiche (idStatistica, tipologia, dati) AS
SELECT *
FROM DBCC.Statistiche
CREATE VIEW TrattoViario(idTratto, città, via, coordinateInizio, coordinateFine, civicoIniziale,
civicoFinale, tempoAtteso, timestamp, kmTot) AS
SELECT *
FROM DBCC.TrattoViario
Mapping GAV(5)
CREATEVIEW Utilizza (idStatistica, idScostamento) AS
SELECT *
FROM DBCC.Utilizza
CREATEVIEW InfoUtili (idInfo, descrizione, tipologia, timestamp, percorso) AS
SELECT *
FROM DBCC.Utilizza
Query Su Schema Globale(1)
1.
Classifica degli autisti in base al numero di percorsi effettuati di almeno 30km
SELECT idAutista, nome, cognome, COUNT(*) AS ConsegneEffettuate
FROM Autista JOIN Guida ON Autista.idAutista = Guida.idAutista
JOIN MT ON MT.idMT = Guida.idMT
JOIN BollaDiCarico ON BollaDiCarico.MT = MT.idMT
JOIN Percorso ON Percorso.bolla = BollaDiCarico.idBolla
WHERE Percorso.kmTot > 30
GROUP BY idAutista
ORDER BY ConsegneEffettuate DESC
2.
Numero bolle di carico trasportate dall’autista Mario Rossi con almeno una consegna a Bergamo
SELECT COUNT(*) AS NumeroBolle
FROM Destinazione JOIN Merce ON Destinazione.idDestinazione = Merce.destinazione
JOIN Accompagna ON Merce.idMerce = Accompagna.idMerce
JOIN BollaDiCarico ON Accompagna.idBolla = BollaDiCarico.idBolla
JOIN MT ON BollaDiCarico.MT = MT.idMT
JOIN Guida ON MT.idMT = Guida.idMT
JOIN Autista ON Autista.idAutista = Guida.idAutista
WHERE Autista.nome = ‘Mario’ AND Autista.cognome = ‘Rossi’ AND Destinazione.città = ‘Bergamo’
Query su Schema Globale(2)
3.
Il percorso con la media più alta in km degli scostamenti spaziali tra tutti i percorsi effettuati
nel mese di Maggio 2016 dal mezzo con targa ‘DD216ZE’
SELECT idPP, AVG(mScostamento) AS MediaScostamenti
FROM MT JOIN BollaDiCarico ON BollaDiCarico.MT = MT.idMT
JOIN Percorso ON Percorso.bolla = BollaDiCarico.idBolla
JOIN Scostamento ON Scostamento.percorso = Percorso.idPP
WHERE (Percorso.data BETWEEN ‘01/05/2016' AND ’31/05/2016’) AND MT.targa = ‘DD216ZE’
GROUP BY idPP
HAVING AVG(mScostamento) = (SELECT MAX(AVG(mScostamento))
FROM MT JOIN BollaDiCarico ON BollaDiCarico.MT = MT.idMT
JOIN Percorso ON Percorso.bolla = BollaDiCarico.idBolla
JOIN Scostamento ON Scostamento.percorso = Percorso.idPP
WHERE (Percorso.data BETWEEN ‘01/05/2016' AND ’31/05/2016’) AND
MT.targa = ‘DD216ZE’
GROUP BY idPP)
Unfolding Query 1
1.
Classifica degli autisti in base al numero di consegne effettuate avendo percorso più di 30km
SELECT idAutista, nome, cognome, COUNT(*) AS ConsegneEffettuate
FROM
(SELECT *
FROM DBUL.Autista) AS Autista
JOIN (SELECT *
FROM DBUL.Guida) AS Guida ON Autista.idAutista = Guida.idAutista
JOIN (SELECT *
FROM DBUL.MT) AS MT ON MT.idMT = Guida.idMT
JOIN (SELECT ULBC.idBolla, ULBC.data AS dataEmissione, CCBC.data AS dataConsegna, ULBC.causale,
ULBC.MT, ULBC.parcheggio, ULBC.priorità, ULBC.tipoDiSpedizione, ULBC.categoria
FROM DBUL.BC AS ULBC LEFT JOIN DBCC.BollaDiCarico AS CCBC ON ULBC.idBolla = CCBC.idBolla) AS
BollaDiCarico ON BollaDiCarico.MT = MT.idMT
JOIN (SELECT *
FROM DBCC.Percorso) AS Percorso ON Percorso.bolla = BollaDiCarico.idBolla
WHERE Percorso.kmTot > 30
GROUP BY idAutista
ORDER BY ConsegneEffettuate DESC
Unfolding Query 2(1)
2.
Numero bolle di carico trasportate dall’autista Mario Rossi
SELECT COUNT(*) AS NumeroBolle
FROM
(SELECT *
FROM DBUL.Destinazione AS ULD LEFT JOIN DBCC.Destinazione AS CCD ON
ULD.idDestinazione = CCD.idDestinazione) AS Destinazione
JOIN
(SELECT ULC.idCarico, ULC.tipologia, ULC.peso, ULC.descrizione, ULC.destinazione, ULC.volume
FROM DBUL.Carico AS ULC LEFT JOIN DBCC.Merce AS CCM ON ULC.idCarico = CCM.idMerce) AS
Merce ON Destinazione.idDestinazione = Merce.destinazione
JOIN
(SELECT ULA.idBolla, ULA.idCarico AS idMerce
FROM DBUL.Accompagna AS ULA
UNION
SELECT CCM.bolla AS idBolla, CCM.idMerce
FROM DBCC.Merce AS CCM) AS Accompagna ON Merce.idMerce = Accompagna.idMerce
Unfolding Query 2(2)
JOIN
(SELECT ULBC.idBolla, ULBC.data AS dataEmissione, CCBC.data AS dataConsegna,
ULBC.causale, ULBC.MT, ULBC.parcheggio, ULBC.priorità,ULBC.tipoDiSpedizione, ULBC.categoria
FROM DBUL.BC AS ULBC LEFT JOIN DBCC.BollaDiCarico AS CCBC ON ULBC.idBolla =
CCBC.idBolla) AS BollaDiCarico ON Accompagna.idBolla = BollaDiCarico.idBolla
JOIN
(SELECT *
FROM DBUL.MT) AS MT ON BollaDiCarico.MT = MT.idMT
JOIN
(SELECT *
FROM DBUL.Guida) AS Guida ON MT.idMT = Guida.idMT
JOIN
(SELECT *
FROM DBUL.Autista) AS Autista ON Autista.idAutista = Guida.idAutista
WHERE Autista.nome = ‘Mario’ AND Autista.cognome = ‘Rossi’ AND Destinazione.città = ‘Bergamo’
Unfolding Query 3(1)
3.
Il percorso con la media più alta in km degli scostamenti spaziali tra tutti i percorsi effettuati
nel mese di Maggio 2016 dal mezzo con targa ‘DD216ZE’
SELECT idPP, AVG(mScostamento) AS MediaScostamenti
FROM
(SELECT *
FROM DBUL.MT) AS MT
JOIN
(SELECT ULBC.idBolla, ULBC.data AS dataEmissione, CCBC.data AS dataConsegna, ULBC.causale,
ULBC.MT, ULBC.parcheggio, ULBC.priorità, ULBC.tipoDiSpedizione, ULBC.categoria
FROM DBUL.BC AS ULBC LEFT JOIN DBCC.BollaDiCarico AS CCBC ON ULBC.idBolla =
CCBC.idBolla ) AS BollaDiCarico ON BollaDiCarico.MT = MT.idMT
JOIN
(SELECT *
FROM DBCC.Percorso) AS Percorso ON Percorso.bolla = BollaDiCarico.idBolla
JOIN
(SELECT *
FROM DBCC.Scostamento) AS Scostamento ON Scostamento.percorso = Percorso.idPP
Unfolding Query 3(2)
WHERE (Percorso.data BETWEEN ‘01/05/2016' AND ’31/05/2016’) AND MT.targa = ‘DD216ZE’
GROUP BY idPP
HAVING AVG(mScostamento) = (SELECT MAX(AVG(mScostamento))
FROM (SELECT *
FROM DBUL.MT) AS MT
JOIN (SELECT ULBC.idBolla, ULBC.data AS dataEmissione, CCBC.data AS
dataConsegna, ULBC.causale, ULBC.MT, ULBC.parcheggio, ULBC.priorità,
ULBC.tipoDiSpedizione, ULBC.categoria
FROM DBUL.BC AS ULBC LEFT JOIN DBCC.BollaDiCarico AS CCBC ON
ULBC.idBolla = CCBC.idBolla ) AS BollaDiCarico ON BollaDiCarico.MT =
MT.idMT
JOIN (SELECT *
FROM DBCC.Percorso) AS Percorso ON Percorso.bolla = BollaDiCarico.idBolla
JOIN (SELECT *
FROM DBCC.Scostamento) AS Scostamento ON
Scostamento.percorso = Percorso.idPP
WHERE (Percorso.data BETWEEN ‘01/05/2016' AND ’31/05/2016’) AND
MT.targa = ‘DD216ZE’
GROUP BY idPP)
Interazione fra CC e il servizio MV(1)
• Per la comunicazione tra il database DBCC e il servizio MV si può adottare la tecnologia di
replicazione, supportata dai principali DBMS. Questa tecnologia consente di condividere i dati
contenuti in un database con altri database.
• L’uso della tecnologia di replicazione nel nostro caso porta i seguenti vantaggi:
1. Disponibilità del servizio: la replicazione rende il sistema meno sensibile ai guasti. Nel caso di
malfunzionamento sul nodo principale, gli altri nodi possono accedere alla loro copia locale;
2. Riduzione del carico della rete: è possibile ridurre la quantità di dati trasmessi poiché i DB
locali acquisiscono e aggiornano solamente le informazioni che vengono aggiornate nella DB
principale;
3. Backup e recovery: la presenza di dati replicati in più DB permette di non dover effettuare il
backup dei dati.
Interazione fra CC e il servizio MV(2)
Interazione fra CC e il servizio MV(3)
• Tra le varie architetture per la replicazione troviamo:
1. Modello Master-Slave – (Replicazione Asimmetrica)
- server principale (master) che contiene la copia principale del DB. Operazioni di lettura e
scrittura;
- server secondari (slave) che possiedono una copia secondaria del DB. Operazioni di lettura.
2. Dual Master – (Replicazione Simmetrica)
Coppia di server di tipo master – Entrambi hanno al possibilità di accedere in scrittura/lettura al
database condiviso.
3. Multi-Master
Estende il modello Dual Master ad un numero più ampio di nodi.
• La nostra architettura prevede l’acquisizione di informazioni da parte del servizio MV. Poiché le
informazioni derivano da questo servizio esterno, la nostra base dati non deve modificare i dati relativi
ai tratti viari, perciò possiamo scegliere il modello Master-Slave, modello in cui vi è un nodo master (MV)
che aggiorna con una determinata frequenza le informazioni sul nostro DBCC, server secondario.
Interazione fra CC e il servizio MV(4)
Per quanto riguarda la modalità di aggiornamento dei dati contenuti nelle basi dati:
• Sincrona : tutte le copie devono essere mantenute consistenti e devono essere sincronizzate. Se una
copia subisce un aggiornamento, questo verrà propagato immediatamente a tutti i DB secondari;
• Asincrona: la transazione di allineamento verso i DB secondari può avvenire in un diverso momento
rispetto alla transazione che aggiorna la DB principale. L’aggiornamento può essere periodico, a
comando o ad accumulo di variazioni.
Nell’architettura da noi progettata abbiamo assunto che le informazioni di MV vengano aggiornate
almeno una volta al giorno, poiché il CC programma i percorsi in mattinata. Per le nostre esigenze, si
può adottare una sincronizzazione asincrona con aggiornamento periodico (una volta al giorno prima
dell’elaborazione dei percorsi).
Inoltre l’aggiornamento viene mediante un protocollo di tipo pull (client-based). In questo scenario, è il
lato client (CC) che richiede l’aggiornamento del database a MV.
I dati prelevati da MV vengono salvati nella tabella TrattoViario.