La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Architetture del Software e dei Dati A.A. 2015/16 Sistema di Osservazione del Comportamento degli Automobilisti Lorenzo Fenili 763082 Silvio Messi 763076.

Presentazioni simili


Presentazione sul tema: "Architetture del Software e dei Dati A.A. 2015/16 Sistema di Osservazione del Comportamento degli Automobilisti Lorenzo Fenili 763082 Silvio Messi 763076."— Transcript della presentazione:

1 Architetture del Software e dei Dati A.A. 2015/16 Sistema di Osservazione del Comportamento degli Automobilisti Lorenzo Fenili 763082 Silvio Messi 763076

2 Assunzioni La compagnia di assicurazioni che utilizza il sistema opera a livello regionale (<=500 mila assicurati), e può avere più sedi distribuite sul territorio. Per la rilevazione della collisone si utilizzano esclusivamente i dati forniti dall’accelerometro (ACC). In particolare abbiamo assunto che il sensore fornisca un unico valore di accelerazioni e che se esso supera una determinata soglia allora siamo certi che il veicolo ha subito una collisone. Sul veicolo dell’assicurato viene montato un dispositivo (che contiene GPS, TAC e ACC) che ha un identificatore univoco.

3 Stime temporali Veicolo (in media 2 ore di viaggio al giorno) Campionamento ACC ogni 0,1 sec Campionamento GPS e TAC ogni 10 sec = 720 campioni al giorno In media 50 collisioni di veicoli al giorno Assicurato (sono circa 500mila) Visualizzazione informazioni assicurato almeno una volta al mese Polizza (sono circa 250mila) Scadenze polizze = 250000/365 = 685 al giorno Visualizzazione informazione polizza almeno una volta al mese

4 ARCHITETTURA DEL SOFTWARE

5 ARCHITETTURA DEL PROBLEMA

6 Use Case Diagram

7 Class Diagram

8 Activity Diagram - Acquisizione dati veicolo

9 Activity Diagram - Salvataggio K-V-P giornaliero

10 Activity Diagram - Rilevamento Collisione

11 Activity Diagram - Organizzazione assistenza

12 Activity Diagram - Calcolo livello di rischio

13 Activity Diagram - Ridefinizione premio assicurazione

14 Activity Diagram - Visualizzazione informazioni assicurato/polizze

15 ARCHITETTURA LOGICA

16 Partizionamento - 1

17 Partizionamento - 2

18 Gestore acquisizione dati Multiplicity: # veicoli

19 Gestore rilevazione collisioni Multiplicity : # veicoli

20 Gestore collisioni Multiplicity : # 1

21 Gestore K-V-P Multiplicity : # 1

22 Gestore calcolo livello di rischio Multiplicity : # 1

23 Gestore ridefinizione polizze Multiplicity : # sedi locali

24 Gestore visualizzazione informazioni Multiplicity : # sedi locali

25 Footprint del partizionamento

26 Abstraction (50): alcuni componenti hanno a che fare con diversi livelli di astrazione dell’informazione (l’esempio più lampante è il componente che si occupa del calcolo del livello di rischio). Complexity e Frequency (10): i componenti sono stati partizionati in modo da essere ben omogenei per quanto riguarda queste due dimensioni. Delay (30): abbiamo un vicolo temporale abbastanza stringente tra due componenti (rilevazione collisioni e gestore collisioni). Location (20): la location degli attori con cui i componenti hanno ha che fare è omogenea. Intra Flows(20): il flusso di informazioni tra istanze dello stesso componente è assente (si pensi al componete gestore rilevazione collisioni). Extra Flows (30): il flusso di informazioni tra i componenti e l’ambiente esterno è discreto. Sharing(20): la condivisione delle informazioni tra componenti è limitata solo ad alcune informazioni (K-V-P). Control Flows(10): il flusso di controllo tra i vari componenti è quasi del tutto assente.

27 ARCHITETTURA CONCRETA

28 Sequence Diagram - Acqusizione dati veicolo

29 Sequence Diagram- Rilevazione collisioni / Organizzazione assistenza

30 Sequence Diagram - Ricezione dati veicolo / Calcolo K-V-P giornaliero

31 Sequence Diagram - Calcolo livello di rischio

32 Sequence Diagram - Visualizzazione informazioni assicurato / polizze

33 Sequence Diagram - Ridefinizione polizza

34 DEPLOYMENT DIAGRAM

35

36 SCELTE TECNOLOGICHE

37 Comunicazioni

38 Black box sul veicolo Il dispositivo che viene installato sugli autoveicoli degli assicurati non necessita di una grande potenza di calcolo. Deve essere in grado di gestire i 3 sensori e immagazzinare un numero ridotto di informazioni. Proprio quest’ultima necessita ci ha spinto a scartare il noto microcontrollore Arduino e a scegliere invece il Raspberry Pi. Questo modulo, infatti, monta uno slot per le SD card e dunque è possibile espandere senza problemi la memoria del device. Sono di facile reperibilità ed hanno un prezzo contenuto i sensori (GPS, ACC, TAC) per tale device ed inoltre è possibile trovare una vasta documentazione per il loro utilizzo. Per la comunicazione con la sede centrale basta equipaggiare il con un modulo 3G.

39 Sede centrale Gran parte del carico computazionale viene gestito nelle sede centrale. Bisogna dunque prevedere un apparato HW/SW che sia in grado di rispondere alle esigenze del sistema. Ci sono due possibili soluzioni: utilizzo di tecnologie in Cloud: tale soluzione ha a suo favore tutti vantaggi tipici dell’utilizzo del Cloud ossia: costi di gestione HW ridotti se non addirittura inesistenti, possibilità di scalare senza spese eccessive. utilizzo di server proprietari: questa soluzioni comporta costi maggiori in termini di risorse umane e gestione apparati HW, ma garantisce la privatezza dei dati e permette di non essere vincolati in scelte di soluzioni SW. La scelta di una o dell’altra soluzione è legata principalmente ai vincoli di budget.

40 Stima dei costi – Risorse HW/SW ProdottoCostoQuantitàTot. Raspberry Pi50€500.00025.000.000€ Sensoristica (GPS + TAC + ACC)100€500.00050.000.000€ Modulo 3G30€ 500.00015.000.000€ Costo piano tariffario5€/mese500.0002.500.000€/mese Costo installazione server30.000130.000€ Costo server(soluzione Cloud)200€/mese1 Le ultime due voci della tabella sono mutualmente esclusive, in base alla tipologia di soluzione che viene utilizzata per l’acquisto dei server nella sede centrale. Per quanto riguarda il SW, in particolare il DBMS per OCB, si è deciso di utilizzare una soluzione open, cosi da abbattere I costi per le licenze.

41 Stima dei costi – Risorse umane DescrizioneQuantitàCosto Unitario/MeseTotale Project Manager12.500€ Database Administrator12.000€ Sistemista12.000€ Sviluppatori51.500€7.500€

42 Stima dei costi - totale In definitiva la stima di massima dei costi per il sistema risulta essere: Blackbox: 90.000.000€ + 2.500€ mensili Server ufficio centrale: Soluzione proprietaria : 30.000€ Soluzione Cloud : 200€/mese Risorse umane: 14.000€ mensili Sedi locali: si assume che nelle sedi locali siano già presenti postazioni PC

43 ARCHITETTURA DEI DATI

44 Schema logico BDA Assicurato(CF, nome, cognome, indirizzo, comuneResidenza, dataDiNascita, numeroDiTelefono, iban) Comune(comune, provincia) Provincia(provincia, regione) Polizza(idPolizza, assicurato, targaVeicolo) StoricoPolizza(idPolizza, dataStipula, dataScadenza, premio) Sinistro(idPolizza, assicurato, data, comuneSinistro) I vincoli referenziali sono stati rappresentanti tramite l’ausilio dei colori.

45 Reverse engineering - 1 Associare alle tabelle con chiavi semplici delle entità, e associare la chiave a identificatori. EnititàIdentificatore AssicuratoCF PolizzaidPolizza Comunecomune Provinciaprovincia Le entità Comune e Provincia possono essere considerate, nello schema concettuale, come un unica entità. Nello schema logico sono divise per questioni di normalizzazione. Inoltre, anche se essa non ha un chiave “semplice”, nello schema globale ci sarà anche l’entità StoricoPolizze che non si presta ad essere una relazione.

46 Reverse engineering - 2 Utilizzare i vincoli di integrità referenziale per individuare le relationships. ChiaveTabella referenziata Assicurato.comuneResidenzaComune Comune.provinciaProvincia Polizza.assicuratoAssicurato StoricoPolizza.idPolizzaPolizza Sinistro.idPolizzaPolizza Sinistro.assicuratoAssicurato Sinistro.comuneSinistroComune

47 Reverse engineering – 2.1 EntitàRelationshipEntità AssicuratocomuneResidenzaComune AssicuratostipulaPolizza StoricoPolizzahaStoricoPolizza Tra le entità Assicurato, Comune e Polizza, in base ai vincoli referenziali, abbiamo pensato di introdurre la relationship “Sinistro”.

48 Reverse engineering - 3 Utilizza gli attributi che descrivono diversi oggetti per individuare IS_A e generalizzazioni. Nello schema logico non sono presenti attributi che inducono ad introdurre relazioni IS_A o generalizzazioni nello schema concettuale.

49 Schema concettuale DBA

50 Schema concettuale OCB

51 Schema logico OCB Assicurato(idAssicurato, livelloDiRischio, dataCalcoloLivelloDiRischio) Polizza(idAssicurato, veicolo, dataDiScadenza, premioPolizza) Veicolo(targa, modello, cilindrata idDevice) K-V-PGiornaliero(idKVP, veicolo, timestamp, K, P) VPerTGiornaliero(idKVP, T, V) Collisione(idCollisione, veicolo, timestamp, accelerazione, latitudine, longitudine) Segnalazione(idCollisione, timestamp, idAssicurato)

52 Eterogeneità e corrispondenze BDAOCBTipologia C1Assicurato Corrispondenza interschema C2Polizza Corrispondenza interschema E1DBA.Polizza.targaVeicolo OBC.Polizza.veicolo Eterogeneità Livello di Schema – stesso concetto diverso tipo (in DBAattributo, in OCB entità) E2DBA.Assicurato.CFOBC.Assicurato.idAssicuratoSinonimia: Diverso nome ma stesso concetto

53 Integrazione schemi Le corrispondenze interschema C1 e C2 vengono risolte mantenendo le entità BDA.Assicurato e BDA.Polizza, che vengono “arrichite” con gli attributi delle corrispondenti entità in OCB L’eterogeneità E1 viene risolta mantenendo l’entità OCB.Veicolo Per quanto riguarda l’eterogeneità E2, si è deciso di mantenere l’identificatore CF

54 Schema concettuale BDG (globale)

55 Schema logico BDG Assicurato(CF, nome, cognome, indirizzo, comuneResidenza, dataDiNascita, numeroDiTelefono, iban, livelloDiRischio, dataCalcoloLivelloDiRischio) Comune(comune, provincia) Provincia(provincia, regione) Polizza(idPolizza, assicurato, veicolo, dataDiScadenza, premioPolizza) StoricoPolizza(idPolizza, dataStipula, dataScadenza, premio) Sinistro(idPolizza, assicurato, data, comuneSinistro) Veicolo(targa, modello, cilindrata idDevice) K-V-PGiornaliero(idKVP, veicolo, timestamp, K, P) VPerTGiornaliero(idKVP, T, V) Collisione(idCollisione, veicolo, timestamp, accelerazione, latitudine, longitudine) Segnalazione(idCollisione, timestamp, idAssicurato)

56 Mapping GAV - 1 CREATE VIEW Assicurato (CF, nome, cognome, indirizzo, comuneResidenza, dataDiNascita, numeroDiTelefono, iban, livelloDiRischio, dataCalcoloLivelloDiRischio ) AS SELECT T1.CF, T1.nome, T1.cognome, T1.indirizzo, T1.comuneResidenza, T1.dataDiNascita, T1.numeroDiTelefono, T1.iban, T2.livelloDiRischio, T2.dataCalcoloLivelloDiRischio FROM BDA.Assicurato AS T1 LEFT JOIN OCB.Assicurato AS T2 ON T1.CF = T2.idAssicurato CREATE VIEW Polizza (idPolizza, assicurato,veicolo, dataScadenza, premioPolizza) AS SELECT T1.idPolizza, T1.assicurato, T1.targaVeicolo, T2.dataScadenza, T2.premioPolizza FROM BDA.Polizza AS T1 LEFT JOIN OCB.Polizza AS T2 ON T1.idPolizza = T2.idPolizza CREATE VIEW Veicolo (targa, modello, cilindata, idDevice) AS SELECT T1.targaVeicolo, T2.modello, T2.cilindarata, T2.idDevice FROM BDA.Polizza AS T1 LEFT JOIN OCB.Veicolo AS T2 ON T1.targaVeicolo = T2.targa

57 Mapping GAV - 2 CREATE VIEW Comune (comune, provincia) AS SELECT comune, provincia FROM DBA.Comune CREATE VIEW Provincia (provincia, regione) AS SELECT provincia, regione FROM DBA.Provincia CREATE VIEW StoricoPolizza (idPolizza, dataStipula, dataScadenza, premio) AS SELECT idPolizza, dataStipula, dataScadenza, premio FROM DBA.StoricoPolizza CREATE VIEW Sinistro (idPolizza, assicurato, data, comuneSinistro) AS SELECT idPolizza, assicurato, data, comuneSinistro FROM DBA.Sinistro

58 Mapping GAV - 3 CREATE VIEW K-V-PGiornaliero (idKVP, veicolo, timestamp, K, P) AS SELECT idKVP, veicolo, timestamp, K, P FROM OCB.K-V-PGiornaliero CREATE VIEW VPerTGiornaliero(idKVP,T, V) AS SELECT idKVP, T, V FROM OCB.VPerTGiornaliero CREATE VIEW Collisione (idCollisione, veicolo, timestamp, accelerazione, latitudine, longitudine) AS SELECT idCollisione, veicolo, timestamp, accelerazione, latitudine, longitudine FROM OCB.Collisione CREATE VIEW Segnalazione (idCollisione, timestamp, idAssicurato) AS SELECT idCollisione, timestamp, idAssicurato FROM OCB.Segnalazione

59 Query “Trovare il veicolo che ha percorso più km nell’ultimo anno; mostrare quanti kilometri ha percorso, la sua targa e il nome e cognome della persona che lo ha assicurato. ”

60 Query SELECT A.Nome, A.Cognome, sommaKmPerVeicolo2.veicolo, massimoDelleSomme.max FROM ( SELECT MAX (somma) AS max FROM ( SELECT veicolo, SUM (K) AS somma FROM BDG.K-V-PGiornaliero WHERE timestamp>= DATE_SUB(NOW(), INTERVAL 1 YEAR) GROUP BY(veicolo) ) AS sommaKmPerVeicolo1 ) AS massimoDelleSomme JOIN ( SELECT veicolo, SUM (K) AS somma FROM BDG.K-V-PGiornaliero WHERE timestamp>= DATE_SUB(NOW(), INTERVAL 1 YEAR) GROUP BY(veicolo) ) AS sommaKmPerVeicolo2 ON sommaKmPerVeicolo2.somma = massimoDelleSomme.max JOIN BDG.Polizza AS P ON P.veicolo = sommaKmPerVeicolo2.veicolo JOIN BDG.Assicurato AS A ON P. CF = A.CF

61 Unfolding - 1 SELECT A.Nome, A.Cognome, sommaKmPerVeicolo2.veicolo, massimoDelleSomme.max FROM ( SELECT MAX (somma) AS max FROM ( SELECT veicolo, SUM (K) AS somma FROM OCB.K-V-PGiornaliero WHERE timestamp>= DATE_SUB(NOW(), INTERVAL 1 YEAR) GROUP BY(veicolo) ) AS sommaKmPerVeicolo1 ) AS massimoDelleSomme JOIN ( SELECT veicolo, SUM (K) AS somma FROM OCB.K-V-PGiornaliero WHERE timestamp>= DATE_SUB(NOW(), INTERVAL 1 YEAR) GROUP BY(veicolo) ) AS sommaKmPerVeicolo2 ON sommaKmPerVeicolo2.somma = massimoDelleSomme.max (continua)

62 Unfolding - 2 JOIN ( SELECT T1.idPolizza, T1.assicurato, T1.targaVeicolo AS veicolo, T2.dataScadenza, T2.premioPolizza FROM BDA.Polizza AS T1 LEFT JOIN OCB.Polizza AS T2 ON T1.idPolizza = T2.idPolizza ) AS P ON P.veicolo = sommaKmPerVeicolo2.veicolo JOIN ( SELECT T1.CF, T1.nome, T1.cognome, T1.indirizzo, T1.comuneResidenza, T1.dataDiNascita, T1.numeroDiTelefono, T1.iban, T2.livelloDiRischio, T2.dataCalcoloLivelloDiRischio FROM BDA.Assicurato AS T1 LEFT JOIN OCB.Assicurato AS T2 ON T1.CF = T2.idAssicurato )AS A ON P. CF = A.CF

63 NoSQL Il modello di rappresentazione dati NoSQL che più si adatta al sistema OCA è quello document based. Per come è stata progettata la base di dati, infatti, l’esecuzione di alcune query porta all’utilizzo di un gran numero di join. Di conseguenza, l’utilizzo della rappresentazione document based, ci farebbe risparmiare in termini di tempo e guadagnare in termini di prestazioni dato che le tecnologie basta su questa rappresentazione non fanno uso dell’operatore join. Un altro motivo che ci ha spinto a preferire questo paradigma rispetto ad altri, è legato al fatto che la rappresentazione delle informazioni del domino dell’applicazione, ossia documenti cartacei che rappresentano assicurati e polizze, si avvicina di più al modello document based che al modello relazionale. La tecnologia più diffusa che implementa il modello NoSQL da noi scelto è MongoDB che dispone di molti vantaggi: File Storage: MongoDB può essere utilizzato anche come file system, ai file possono essere associati i metadati su cui è possibile associare degli indici full-tex Bilanciamento, replicazione dei dati e affidabilità: MongoDB scala orizzontalmente utilizzando lo sharding e questo trae vantaggio sul bilanciamento e di conseguenza sull’affidabilità Query ad hoc: è possibile effettuare query per campi, intervalli e regular expression Inidicizzazione: gli indici di MongoDB sono similari a quelli dei tradizionali RDBMS, quindi ogni campo può essere indicizzato Di seguito un esempio di informazioni della basi di dati OCB, modellate utilizzando MongoDB, in cui viene rappresentata una polizza con l’assicurato e il veicolo.

64 “Assicurato”:{ “idAssicurato”:”3”, “livelloDiRIschio”:”5”, “dataCalcoloLivelloDiRIschio”:”22/01/2016”, Polizze:[ { “dataDiScadenza”:”27/02/2016”, “premioPolizza”:”600”, “veicolo”:{ “targa”:”BC475PU”, “modello”:”Clio Renault”, “cilindrata”:”1500” } }, { “dataDiScadenza”:”11/12/2016”, “premioPolizza”:”450”, “veicolo”:{ “targa”:”BK413GM”, “modello”:”FIAT Punto”, “cilindrata”:”1200” } ] }

65 Adottando il modello di rappresentazione dati document based si potrebbe rivedere l’architettura dati mostrata precedentemente nel diagramma deployement. Invece di avere un architettura con un database centralizzato si potrebbe introdurre un architettura distribuita, con un database per ogni sede, nel quale vengono memorizzate solo le informazioni degli assicurati, e relative polizze, prese in carico dalla sede, questo sfruttando il fatto che le informazione legate ad un assicurato sono modellate come un unico documento.


Scaricare ppt "Architetture del Software e dei Dati A.A. 2015/16 Sistema di Osservazione del Comportamento degli Automobilisti Lorenzo Fenili 763082 Silvio Messi 763076."

Presentazioni simili


Annunci Google