Gruppo BPS
Michele Bellini - 708879
Daniele Prevedello - 799211
Alessandro Sighinolfi - 799198
24 Febbraio 2016
Architettura del Software e dei Dati
Sistema di Osservazione del Comportamento degli Automobilisti (OCA)
Testo del Problema
Si deve realizzare un sistema di Osservazione del Comportamento degli
Automobilisti (OCA) che consenta a una Compagnia di assicurazione di
monitorare il comportamento degli automobilisti assicurati per ridefinire le
polizze in base al livello di rischio di ciascun assicurato e per fornire
assistenza in caso di sinistro.
Sui veicoli degli assicurati sono presenti:
• Un sensore di accelerazione ACC (accelerometro).
• Un sensore di velocità TAC (tachimetro).
• Un sensore GPS.
E’ possibile accedere a due Basi Dati esterne preesistenti:
• Una Base Dati Geografica (BDG) che contiene la descrizione della
rete viaria e in particolare, per ciascuna strada, la tipologia T (urbano,
extraurbano, autostrada) e l’eventuale limite di velocità. Per
semplicità, si può (ma non è obbligatorio!) assumere che i limiti di
velocità siano fissati per ciascun tipo di strada (esempio: 50, 90, 130).
Testo del Problema
•
Una Base Dati Assicurati (BDA) che contiene l’anagrafica degli
assicurati, le relative polizze e le denunce di sinistro. Si consideri che
un assicurato può avere più polizze corrispondenti a veicoli diversi.
Gli operatori della Compagnia svolgono due funzioni:
• Organizzazione dell’assistenza in caso d’incidente.
• Ridefinizione, ala scadenza di ogni polizza, del premio di
assicurazione in base al livello di rischio dell’assicurato calcolato
sull’ultimo anno. Questa attività deve poter essere svolta in remoto.
Il sistema OCA deve essere in grado di:
1. Supportare l’assistenza immediata in caso di sinistri, svolgendo le
seguenti funzioni:
a. Riconoscimento di eventuali sinistri (collisioni);
b. Notifica all’operatore competente delle informazioni necessarie
per organizzare l’assistenza;
c. Attivazione di una connessione telefonica tra operatore e
assicurato coinvolto.
Testo del Problema
2.
Determinare per ciascuna polizza su base annuale:
a. Il chilometraggio totale K;
b. La velocità media V per ciascuna tipologia T di tronco viario;
c. Il livello di prudenza P, definito come la percentuale di
chilometri percorsi rispettando i limiti di velocità con una
tolleranza di 10 km/h.
3.
Calcolare il livello di rischio R di ciascun assicurato come R = f(K, V,
P, E, D, C), dove K, V, P sono cumulativi per tutte le polizze
dell’assicurato, E è l’età dell’assicurato, D il numero di denunce
sinistro nell’ultimo anno e C il Comune di residenza. Il livello di
rischio R può assumere valori discreti da 1 a 10. Non si chiede di
definire il dettaglio algoritmico della funzione f.
4.
Consentire all’operatore competente di visualizzare, per ciascun
assicurato e per ciascuna polizza, le attuali condizioni di polizza e il
livello di rischio dell’assicurato.
Architettura
del Software
Ambiguità
• Non è definito quale è il meccanismo per cui si possa verificare la
situazione di sinistro
• Funzione di Rischio non esplicitata, di conseguenza non possiamo
stimare analiticamente la complessità computazionale del rischio
• Non è possibile stabilire se nel momento di sinistro il guidatore è la
stessa persona del titolare dell’assicurazione.
Assunzioni - Generali
VALUTAZIONE SINISTRO
Per valutare il caso di sinistro sull’automobile si è valutato il sistema come
segue :
• Il caso di incidente si ottiene quando la forza sviluppata dal sistema
automobile-ambiente è maggiore di una certa soglia
• L’automobile è dotata di un accelerometro e, applicando la legge della
dinamica di Newton, si valuta l’accelerazione in un certo istante di
tempo
• L’accelerazione istantanea, valutata dal trigger, è di segno negativo
(decelerazione)
• Quando il modulo dell’accelerazione negativa supera una certa soglia, il
trigger si attiva e invia la segnalazione
• Il campionamento dell’accelerazione avviene ogni 10 ms per non
perdere nessun valore di picco
Assunzioni - Generali
ALTRE ASSUNZIONI
•
Gli incidenti sono considerati non gravi, quindi l’intervento dell’operatore
consiste nel contattare il titolare dell’assicurazione e se necessario
organizzare un intervento di assistenza al veicolo
Assunzioni - Veicolo
• Sul veicolo vengono effettuati i campionamenti fisici e
un’aggregazione delle misure effettuate dalla scatola nera
• Il sistema scatola nera si occupa dell’elaborazione della notifica
incidente
Assunzioni - Operatore
•
La notifica dell’incidente viene sempre inviata all’OCA. Il dato, contiene il
valore GPS dell’ultima posizione da cui si può approssimativamente
ricostruire la posizione del veicolo incidentato e la velocità prima dell’urto
da cui si può approssimativamente valutare l’entità dell’incidente
•
A seconda dei tempi di attesa ragionevoli l’operatore può contattare, in
caso di necessità, sia il centro d’assistenza convenzionato con la
compagnia d’assicurazione (come canale preferenziale) più vicino al
luogo di sinistro sia il centro d’assistenza più vicino al luogo di sinistro.
Assunzioni - BDG
•
Ogni strada è suddivisa in tratti, per ricostruire i percorsi con i limiti
stradali in modo più preciso
Assunzioni - BDA
•
Il database è un aggregato dei database di diverse compagnie di
assicurazione
Assunzioni – Titolare Polizza
•
Il titolare dell’assicurazione non è sempre il guidatore dell’automobile.
Anche in questo caso viene contattato quando si verifica un sinistro
•
Il titolare può avere più polizze assicurative e con più società di
assicurazione
Stime
•
Il sistema OCA ha un livello di copertura nazionale
•
La distanza tra il centro e il luogo di incidente non è approssimabile a
priori. Infatti in prossimità di grandi centri e autostrade il soccorso sarà
più tempestivo rispetto al caso in cui il sinistro avviene in un luogo
difficilmente raggiungibile. La stima massima per l’arrivo di un
carroattrezzi nel luogo di incidente è valutata entro un’ora
•
I centri di assistenza sono distribuiti in media su tutto il territorio
nazionale. L’agenzia assicurativa si incarica di contattare il centro più
vicino. Mediamente almeno un centro di assistenza è presente a livello
provinciale
Architettura del Problema:
Casi d’uso
Architettura del Problema:
Modello dei Dati
Diagramma delle Attività
(Invio Rilevazioni)
Diagramma delle Attività
(Aggregazione Dati)
Diagramma delle Attività
(Notifica Incidente)
Diagramma delle Attività
(Organizza Assistenza)
Diagramma delle Attività
(Calcolo Rischio)
Diagramma delle Attività
(Calcolo Prudenza)
Diagramma delle Attività
(Condizione Assicurato)
Diagramma delle Attività
(Ridefinizione Polizza)
Partizionamento: Invio
Rilevazioni e Notifica Incidente
Partizionamento: Invio
Rilevazioni e Notifica Incidente
Si è deciso di partizionare i componenti Invio Rilevazioni e Notifica
Incidente, al fine di ottenere una separazione coerente a livello di timing tra
le operazioni di rilevazione, infatti la rilevazione delle grandezze e
valutazione dell’accelerazione e l’ invio dati sono effettuate a tempi diversi
Il modello scelto permette l’esecuzione coerente a livelli di tempistica di
tutte le operazioni possibili della scatola nera sul veicolo
Le altre componenti sono già partizionate svolgendo funzioni individuali.
Queste funzioni individuali sono già state espresse e partizionate nella
fase di definizione dei casi d’uso del sistema
Architettura Logica:
Footprint Overlap
Dimensione
Astrazione
100
Valore
Astrazione
10
Intraflow
10
Extraflow
70
Delay
10
Complessità
30
Timings
20
Sharings
40
80
Sharing
Intraflow
60
40
20
0
Timings
Complessit
à
Extraflow
Delay
Per una visione complessiva dei componenti si rimana al file .vpp allegato
Architettura Concreta: Invio
Rilevazioni e Notifica Incidente
Architettura Concreta:
Aggregazione Dati
Architettura Concreta:
Organizza Assistenza
Architettura Concreta:
Calcolo Rischio
Architettura Concreta:
Calcolo Prudenza
Architettura Concreta:
Condizione Assicurato
Architettura Concreta:
Ridefinizione Polizza
Architettura di Deployment
Pro & Contro
PRO
-
Ogni componente ha la sua singola funzione ben definita in modo da
non avere chiamate ridondanti sul database
Quando arrivano i dati vengono aggregati direttamente a partire da un
set ridotto di dati
CONTRO
-
Accesso ai database esterni per identificazione geografica che rallenta
il sistema
I dati vengono aggregati e non si ha più traccia della granulosità delle
informazioni
Infrastruttura Hardware –
Protocolli di Comunicazione
Da
A
Canale Scelto
Sensore
Sistema Di Archiviazione
GPRS + HTTP
Operatore Assicuratore
Sistema Di Elaborazione
HTTP
Sistema di Elaborazione
Database Geografico
HTTP
Infrastruttura Hardware – Componenti
Fisse per soluzione scelta
Nome
Descrizione
Prezzo Unitario
Accelerometro
sparkfun ADX192
250g
27,00(x1850000) € 49950000 €
Modulo Gps
gp-20u7 56 canali
14,50(x1850000) € 26825000 €
Modulo Gpsr/Gsm
Smartsim 340Z
Board
22,00(x1850000) € 40700000 €
Sim Dati
Abbonamento per
Gprs/Gsm
6,00(x1850000)
€/mensile
TOTALE
Prezzo Totale
11100000 €
63,50(x1850000) € 117475000 € +
11100000 €/mese
La stima è effettuata su un numero di automobili pari al 5% del totale presenti in
Italia.
Infrastruttura Hardware – Componenti Fisse
per soluzione scelta
Server Dedicato
Sistema di
Elaborazione
Sistema di
Archiviazione
Case
Carbide Series 300R Midi Tower ATX
CPU
Intel Core i7 4790K PC1150 8MB Cache
SSD
240GB 2,5" SATA3 V300
RAM
DDR3 16GB PC 1600 CLS
HDD
2TB SATA3 7200rpm
PSU
Corsair CS Series 80 Plus Bronze 600CX 800W
Mainboard
ASUS H97M-E Intel H97 mATX
TOTALE
1000,00 € (x2)
Case
Carbide Series 300R Midi Tower ATX
CPU
Intel Core i5-4590 3.3GHz 6MB 1150 Haswell Refresh
con GPU HD4600 84W
SSD
120GB 2,5" SATA3 V300
RAM
DDR3 8GB PC 1600 CL)(2x4GB)
HDD
1TB SATA3 7200rpm
PSU
Corsair CS Series 80 Plus Bronze 600CX 800W
Mainboard
ASUS H97M-E Intel H97 mATX
TOTALE
629,00€ (x2)
Infrastruttura Hardware – Componenti Fisse
per soluzione scelta
•
In questa infrastruttura bisogna aggiungere i costi per un servizio di
assistenza 24 ore su 24, 365 gg all’anno. E’ possibile prevedere
l’acquisto di un gruppo di continuità nel caso di blackout
Costi e Tempi di Realizzazione
Costo di Sviluppo
• 4 persone
• 8 ore al giorno
• 5 giorni alla settimana
• 25€ lordi all’ora
• 5 mesi di lavoro
Totale ≈ 100000,00 €
Architettura
dei Dati
Schema Logico Relazionale - BDA
Tabelle:
Assicurato(Id, Nome, Cognome, CF, Telefono, Cellulare, Indirizzo, idCittà)
Città(Id, Nome, Cap)
Polizza(Id, Caratteristiche, DataInizio, DataFine, Premio, Targa, Telaio, idAssicurato)
Denuncia(Id, Descrizione, Luogo, Colpevolezza, ImportoDanno, ImportoErogato,
DataSinistro, idPolizza1, idPolizza2)
Vincoli Referenziali:
Assicurato.idCittà  Città.Id
Polizza.IdAssicurato  Assicurato.Id
Denuncia.idPolizza1  Polizza.Id
Denuncia.idPolizza2  Polizza.Id
Reverse Engineering - BDA
Schema Logico Relazionale - OCB
Tabelle:
ClienteAssicurato(Id, Nome, Cognome, CodiceFiscale, ContattoTelefonico,
DataNascita)
Polizza(Id, N_Polizza, Targa, AgenziaAssicurativa, IdCliente)
ScatolaNera(Matricola, Descrizione, DataAttivazione, idPolizza)
AggregatoAnnuale(Id, Anno, VUrbanoAggregata, TotKmUrbano,
VExtraurbanoAggregata, TotKmExtraurbano, VAutostradaAggregata,
TotKmAutostrada, TotKmRispettandoLimiti, Prudenza, Rischio, IdSN)
Vincoli Referenziali:
Polizza.IdCliente  ClienteAssicurato.Id
AggregatoAnnuale.idSN  ScatolaNera.Id
ScatolaNera.IdPolizza  Polizza.Id
Reverse Engineering - OCB
Eterogeneità e
Corrispondenze Interschema
E / CI
BDA
CI
Assicurato.CF
ClienteAssicurato.
Sinonimia
CodiceFiscale
Vengono cercati i match
fra valori
CI
Polizza.Id
Polizza.N_Polizza Sinonimia
Vengono cercati i match
fra valori
CI
Polizza.Targa
Polizza.Targa
Sinonimia
Vengono cercati i match
fra valori
ClienteAssicurato
Viene mantenuta
l’anagrafica da
Eterogeneità
ClienteAssicurato
Strutturale
integrando i dati
mancanti da Assicurato
Polizza
Vengono mantenute le
Eterogeneità informazioni della tabella
Strutturale
Polizza del database
BDA
E
E
Assicurato
Polizza
OCB
Tipo
Scelta
Modalità per L’Integrazione
Si vogliono integrare le basi di dati BDA e OCB, per poter permettere agli utenti
una visione unificata di questi dati.
Tecnologia di integrazione dati
EII(Enterprise Information Integration): Permette di supportare una vista
unificata dei dati utilizzando paradigmi di astrazione dei dati, per fornire una
singola interfaccia che contenga tutti i dati di un’organizzazione come un unico
insieme di strutture (schema globale).
Architettura di EII adottata
Virtual data integration: Viene creato un nuovo schema logico globale, come
integrazione degli schemi delle BD locali. Non si crea nessuna nuova BD fisica,
ed in caso di query si interrogano fisicamente le BD locali. Tramite questa
architettura l’utente ha la visione di uno schema globale che in realtà non
esiste.
Modalità per L’Integrazione
Viene creato un nuovo schema logico (globale) come integrazione degli schemi
delle basi di dati BDA e OCB.
SLL BDA
SLL OCB
SLL BDA/OCB
BDA
OCB
BDA/OCB
Schema Concettuale Globale
Schema Logico Globale
Assicurato(Id, Nome, Cognome, CodiceFiscale, Telefono, Cellulare,
Indirizzo, DataNascita, Città, Cap)
Polizza(Id, Caratteristiche, DataInizio, DataFine, Premio, Targa, Telaio,
AgenziaAssicurativa, idAssicurato)
Denuncia(Id, Descrizione, Luogo, Colpevolezza, ImportoDanno,
ImportoErogato, DataSinistro, idPolizza1, idPolizza2)
ScatolaNera(Matricola, Descrizione, DataAttivazione, idPolizza)
AggregatoAnnuale(Id, Anno, VUrbanoAggregata, TotKmUrbano,
VExtraurbanoAggregata, TotKmExtraurbano, VAutostradaAggregata,
TotKmAutostrada, TotKmRispettandoLimiti, Prudenza, Rischio, IdSN)
Mapping GAV
Assicurato
CREATE VIEW Assicurato AS
SELECT CA.Id, OCB.Nome, CA.Cognome, CA.CodiceFiscale,
A.Telefono, CA.ContattoTelefonico AS Cellulare, A.Indirizzo,
CA.DataNascita, Città.Nome AS Città, Città.Cap
FROM OCB.ClienteAssicurato AS CA LEFT JOIN BDA.Assicurato AS A
JOIN BDA.Città
ON (Città.Id=A.idCittà AND CA.CodiceFiscale=A.CF)
Mapping GAV
Polizza
CREATE VIEW Polizza AS
SELECT AP.*, OP.AgenziaAssicurativa
FROM BDA.Polizza AS AP RIGHTJOIN OCB.Polizza AS OP
ON (AP.Id=OP.N_Polizza AND AP.Targa=OP.Targa)
Denuncia
CREATE VIEW Denuncia AS
SELECT Denuncia.*
FROM BDA.Denuncia
Mapping GAV
ScatolaNera
CREATE VIEW ScatolaNera AS
SELECT SN.*
FROM OCB. ScatolaNera AS SN JOIN OCB.Polizza AS OP
ON (SN.IdPolizza=OP.Id)
AggregatoAnnuale
CREATE VIEW AggregatoAnnuale AS
SELECT AggregatoAnnuale.*
FROM OCB.AggregatoAnnuale
Interrogazione con
Unfolding (1)
1. Selezionare per città il livello di prudenza medio del 2013, togliendo
dal calcolo i valori limite:
CREATE VIEW prudenzaMedia AS
SELECT AVG(AA.Prudenza) AS media, A.Città AS citta
FROM Assicurato AS A, Polizza AS P, ScatolaNera AS SN,
AggregatoaAnnule AS AA
WHERE AA.idSN=SN.Matricola AND SN.idPolizza=P.Id AND
P.idAssicurato=A.id AND AA.Anno=”2013” AND AA.Prudenza!=NULL
AND AA.Prudenza>1 AND AA.Prudenza<10
GROUP BY A.Città
Interrogazione con
Unfolding (1)
CREATE VIEW prudenzaMedia AS
SELECT AVG(AA.Prudenza) AS media, Città.Nome AS citta
FROM OCB.ClienteAssicurato AS CA LEFT JOIN BDA.Assicurato AS A
JOIN BDA.Città JOIN BDA.Polizza AS AP RIGHTJOIN OCB.Polizza AS
OP JOIN OCB.ScatolaNera AS SN JOIN OCB.AggregatoAnnuale AS AA
ON (Città.Id=A.idCittà AND CA.CodiceFiscale=A.CF AND
AP.idAssicurato=A.Id AND AP.Id=OP.N_Polizza AND AP.Targa=OP.Targa
AND SN.IdPolizza=OP.Id AND AA.idSN=SN.Matricola)
WHERE AA.Anno=”2013” AND AA.Prudenza!=NULL AND
AA.Prudenza>1 AND AA.Prudenza<10
GROUP BY Città.Nome
Interrogazione con
Unfolding (2)
2. Calcola la varianza per citta nel 2013
SELECT AVG(POWER(AA.Prudenza - PrudenzaMedia.media, 2)) AS
Varianza, PrudenzaMedia.citta
FROM Assicurato AS A, Polizza AS P, ScatolaNera AS SN,
AggregatoaAnnule AS AA, PrudenzaMedia
WHERE AA.idSN=SN.Matricola AND SN.idPolizza=P.Id AND
P.idAssicurato=A.id AND AA.Anno=”2013” AND AA.Prudenza!=NULL
AND PrudenzaMedia.citta=A.Città
GROUP BY A.Città
Interrogazione con
Unfolding (2)
SELECT AVG(POWER(AA.Prudenza - PrudenzaMedia.media, 2)) AS
Varianza, PrudenzaMedia.citta
FROM OCB.ClienteAssicurato AS CA LEFT JOIN BDA.Assicurato AS A
JOIN BDA.Città JOIN BDA.Polizza AS AP RIGHTJOIN OCB.Polizza AS
OP JOIN OCB.ScatolaNera AS SN JOIN OCB.AggregatoAnnuale AS AA
JOIN PrudenzaMedia
ON (Città.Id=A.idCittà AND CA.CodiceFiscale=A.CF AND
AP.idAssicurato=A.Id AND AP.Id=OP.N_Polizza AND AP.Targa=OP.Targa
AND SN.IdPolizza=OP.Id AND AA.idSN=SN.Matricola AND
PrudenzaMedia.citta=Città.Nome)
WHERE AA.Anno=”2013” AND AA.prudenza!=NULL
GROUP BY Città.Nome
Modello di Rappresentazione
non Relazionele
Come modello alternativo al relazionale, abbiamo scelto il modello
Column based. Questo modello per ogni riga ha bisogno di una chiave
primaria, che per noi corrisponde al numero della polizza. Le prime n
colonne corrispondono agli attributi statici sempre presenti relativi alla
scatola nera, alla polizza e all’utente assicurazione.
Una caratteristica del modello a colonne risiede nella possibilità di
avere n colonne a piacere. Questa caratteristica si mappa bene
all’utilizzo nella classe StatisticaAnnuale, poiché per ogni anno si avrà
un numero k di valori corrispondenti al numero degli attributi in
StatisticaAnnuale. Quindi per ogni anno passato si aggiungeranno k
colonne.
Questo permette di avere ottime performance poiché evita le
operazioni di join sostituendole, di fatto, con una ricerca sequenziale
all’interno della stessa riga.