Architettura del Software e dei Dati Sistema di Osservazione del Comportamento degli Automobilisti (OCA) Gruppo BPS Michele Bellini Daniele Prevedello Alessandro Sighinolfi Febbraio 2016
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 Sistema di Osservazione del Comportamento degli Automobilisti (OCA) Architettura del Software e dei Dati
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
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 DimensioneValore Astrazione 10 Intraflow 10 Extraflow 70 Delay 10 Complessità 30 Timings 20 Sharings 40 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 datiCONTRO -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 DaACanale Scelto SensoreSistema Di ArchiviazioneGPRS + HTTP Operatore AssicuratoreSistema Di ElaborazioneHTTP Sistema di ElaborazioneDatabase GeograficoHTTP
Infrastruttura Hardware – Componenti Fisse per soluzione scelta NomeDescrizionePrezzo UnitarioPrezzo Totale Accelerometrosparkfun ADX g 27,00(x ) € € Modulo Gpsgp-20u7 56 canali14,50(x ) € € Modulo Gpsr/GsmSmartsim 340Z Board 22,00(x ) € € Sim DatiAbbonamento per Gprs/Gsm 6,00(x ) €/mensile € TOTALE63,50(x ) € € €/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 CaseCarbide Series 300R Midi Tower ATX CPUIntel Core i7 4790K PC1150 8MB Cache SSD240GB 2,5" SATA3 V300 RAMDDR3 16GB PC 1600 CLS HDD2TB SATA3 7200rpm PSUCorsair CS Series 80 Plus Bronze 600CX 800W MainboardASUS H97M-E Intel H97 mATX TOTALE1000,00 € (x2) Sistema di Archiviazione CaseCarbide Series 300R Midi Tower ATX CPUIntel Core i GHz 6MB 1150 Haswell Refresh con GPU HD W SSD120GB 2,5" SATA3 V300 RAMDDR3 8GB PC 1600 CL)(2x4GB) HDD1TB SATA3 7200rpm PSUCorsair CS Series 80 Plus Bronze 600CX 800W MainboardASUS H97M-E Intel H97 mATX TOTALE629,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 ≈ ,00 €
Architettura dei Dati Sistema di Osservazione del Comportamento degli Automobilisti (OCA) Architettura del Software e 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 / CIBDAOCBTipoScelta CIAssicurato.CF ClienteAssicurato. CodiceFiscale Sinonimia Vengono cercati i match fra valori CIPolizza.IdPolizza.N_PolizzaSinonimia Vengono cercati i match fra valori CIPolizza.Targa Sinonimia Vengono cercati i match fra valori EAssicuratoClienteAssicurato Eterogeneità Strutturale Viene mantenuta l’anagrafica da ClienteAssicurato integrando i dati mancanti da Assicurato EPolizza Eterogeneità Strutturale Vengono mantenute le informazioni della tabella Polizza del database BDA
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. BDAOCB BDA/OCB SLL BDA SLL OCB SLL 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.