Architetture del Software e dei Dati Appello 12/02/2014 726298 Meroni Luca 703311 Racchetti Luca 726492 Sacilotto Gianluca
Analisi del problema
Scatt i Studio della descrizione del problema Campo Tennis Basket Palestra calcio Scatt i da Lancio del peso Salto in lungo
Il problema Il centro sportivo è composto da una palestra e da spazi all aperto dove è possibile svolgere varie attività. La clientela della struttura è composta per la maggior parte da giovani tra i 20 e i 35 anni. Il centro sportivo vuole attrarre nuovi clienti proponendo un servizio per l'acquisizione di dati fisiologici delle attività di allenamento svolte presso il centro sportivo. Le figure all interno del centro sportivo si dividono in atleti e allenatori. Gli allenatori scelgono insieme agli atleti le attività che essi svolgeranno successivamente e ne pianificano le scadenze. L atleta deve essere in grado di visualizzare in tempo reale i dati del suo allenamento e renderli fruibili in tempo reale all allenatore, rendendo il sistema più resiliente possibile all assenza di rete di comunicazione.
Assunzioni L'Atleta effettua l'allenamento anche se non è in possesso di alcun sensore atto a registrare i suoi dati biometrici dato che per l atleta è più importante allenarsi, rispetto alla rilevazione dei dati. Il livello di agonismo degli atleti è medio-basso, sono interessati a delle statistiche sui loro allenamenti, senza però richiedere un dettaglio elevato come invece potrebbe essere necessario per preparazioni atletiche professionali. Ci troviamo in Italia, e quindi le unità di misura utilizzate sono: Secondi, Metri, BattitiPerMinuto, ecc. Inoltre il sistema che verrò realizzato deve rispettare le leggi dello stato italiano (es: privacy). L atleta non è seguito fisicamente dall allenatore durante il proprio allenamento.
Architettura del problema
Casi d uso
Schema dei dati
Diagramma delle attività - (parte 1/2) parte2
Diagramma delle attività - (parte 2/2) parte1
Diagramma delle attività - Rilevazione Intermedio
Diagramma delle attività - Rileva Dati Biometrici Cardio
Diagramma delle attività - Rileva Dati Biometrici Temp.
Diagramma delle attività - Allenamento Senza Sensori
Diagramma delle attività - Genera Statistiche
Diagramma delle attività - Confronta Dati
Diagramma delle attività - Visualizza Rapporti
Architettura logica
Component - DispositivoMobile & GestoreSensori
Component - GestoreStatistiche & GestoreRapporti(1/3)
Component - GestoreRapporti(2/3 e 3/3)
Architettura concreta
Sequence Allena - Parte 1 (1/2)
Sequence Allena - Parte 1 (2/2)
Sequence Visualizza Rapporti
Sequence Compara Dati
Sequence Genera Statistiche
Architettura di deployment
Diagramma di deployment - proposta centralizzata
Diagramma di deployment - proposta distribuita
Strumenti utilizzati Esistono in commercio alcuni dispositivi sensoristici avanzati che implementano una buona parte di elaborazione dati oltre alle funzionalità standard ricercare. Riportiamo questi dispositivi per un confronto e per poter ipotizzare una futura integrazione: Immagine Nome TomTom Multi-Sport HRM+CSS+AM Misurazione Tempi Distanza Andatura Ritmo Velocità Altimetro Cardiofrequenza Prezzo 299.00
Strumenti utilizzati Immagine Nome Misurazione Prezzo Maglia Zephyr Cardiofrequenza Accelerometria Intensità e carico GPS (seratatamente) Garmin Vivofit Passo Calorie Cardiofrequenza 119.00 Polar H1 Cardiofrequenza 59.90 80.00
Stime sulla dimensione del problema Gli Atleti iscritti alla struttura sono circa 250. All interno della struttura si allenano contemporaneamente un numero variabile di atleti, con un massimo rilevato dell ordine di 100. Gli Allenatori sono dell ordine di 20-30. Il centro sportivo si estende per 60.000 metri quadrati.
Algoritmi utilizzati Il messaggi tra atleta ed allenatore funzionano con uno stile architettuale publish/subscribe: l atleta (publisher) invia attraverso il proprio dispositivo i dati al server (dispatcher). A sua volta l allenatore (subscriber) si affida al server per ricevere le informazioni riguardanti i dai degli atleti da lui seguiti. La sottoscrizione alle informazioni che riceverà l allenatore avviene nel moneto in cui viene compilato il piano.
Comunicazione tra i componenti Da A Canale Sensori Dispositivo Mobile bluetooth Dispositivo Mobile Gestore Centrale GPRS/HSDPA/LTE/Wi-Fi Gestore Centrale BDF Http + Rest Allenatore Gestore Centrale Http(s)
Tecnologie utilizzate Costi da sostenere Si sono analizzate due possibili soluzioni per quanto riguarda l infrastruttura HardWare da acquistare: Server da tenere presso gli edifici della palestra Server 900 Gruppo di continuità 120 Energia elettrica 300 A questi costi vanno aggiunti quelli degli spazi e di manutenzione del HW. Acquistare il Windows Amazon Web Services servizio presso terzi: Azure
Tecnologie utilizzate Costi da sostenere Tipo CPU RAM Prezzo Servizio Cloud Condivisa 768 MB 12 /mese Servizio Cloud 1 core 1,75 GB 45 /mese Servizio Cloud 2 core 3,5 GB 89 /mese VM Linux Condivisa 768 MB 12 /mese VM Linux 1 core 1,75 GB 34 /mese VM Linux 2 core 3,5 GB 67 /mese Tipo CPU RAM Prezzo m1.small 1 core 1,7 GB 36 /mese m1.medium 1 core 3,75 GB 72 /mese m3.medium 1 core 3,75 GB 68 /mese
Tecnologie utilizzate Costi da sostenere E stati inoltre svolto uno studio statistico sull affluenza media degli atleti nelle palestre per poter ipotizzare il carico di lavoro del server: Si è scelto di optare per una Macchina Virtuale, in quanto permette una maggior scalabilità del servizio in base alle esigenze mensili e di orario individuate.
Tecnologie utilizzate Costi da sostenere Costo di sviluppo: 3 mesi di lavoro 3 persone 8 ore al giorno 5 giorni alla settimana 28 lordi l ora Totale circa 40.000 Eventuale ulteriore costo di copertura wifi dell infrastruttura sportiva: 50 cablatura ethernet 12 access point a 60 cadauno Totale (inclusa manodopera) 1.000
Sviluppi futuri Il sistema risulta abbastanza scalabile offrendo buoni spunti per l integrazione futura di nuovi tipi di sensori senza dover riconsiderare l intera fase di analisi ma procedendo solo all introduzione di nuove funzioni e tipi di dati sensori. Ad esempio risulta possibile inserire un sensore GPS che per ogni intermedio salvi separatamente la posizione e l altitudine con un sistema analogo a quello che avviene per la misurazione della temperatura. Successivamente sarà possibile calcolare la distanza sulle 3 dimensioni tra i punti degli intermedi per calcolare la distanza totale percorsa con buona approssimazione*. *eccezione per la corsa 100/200 metri dove si avrebbero troppi pochi dati per calcolare la distanza con un errore relativamente basso. Ma è anche vero che per questo tipo di attività la distanza percorsa è intrinsecamente definita nell attività stessa.
Architettura dell informazione
Schema concettuale locale BDA
Schema logico locale BDA Atleta(NumAtleta, Cognome, Nome, DataNascita, Sesso) Allenatore(NumAllenatore, Cognome, Nome, DataNascita) Piano(NumPiano, Descrizione, NumAtleta, NumAllenatore) Allenamento(NumAllenamento, Descrizione, Tipo) Rapporto(NumRapporto, Data, OraInizio, OraFine, NumPiano, NumAllenamento) Intermedio(NumIntermedio, Temperatura, BattitiPerMinuto, NumRapporto)
Schema concettuale locale BDF
Schema logico locale BDF AnagraficaFasce(NumAnagrafica, Sesso, EtaMin, EtaMax, AltezzaMin, AltezzaMax, PesoMin, PesoMax) Attività(NumAttività, Descrizione, Tipo) Report(NumAnagrafica, NumAttività, Tempo, Temperatura, FrequenzaCardiaca, FrequenzaRespiro, Pressione)
Creazione Rapporto_Mediato CREATE VIEW Rapporto_Mediato AS SELECT R.NumRapporto, (R.OraFine R.OraInizio) AS Tempo, AVG(I.Temperatura), AVG(I.BattitiPerMinuto) AS FrequenzaCardiaca FROM Rapporto AS R, Intermedio AS I WHERE R.NumRapporto = I.NumRapporto GROUP BY R.NumRapporto;
Eterogeneità/1 ETA
Eterogeneità/2 #1 - BDF.Report.Tempo = (BDA.Rapporto.Fine - BDA.Rapporto.Inizio) Eterogeneità di legame funzionale: il valore Rapporto.Tempo della BDF è un valore che si può ricavare da un calcolo matematico su Rapporto.Fine e Rapporto.Inizio della BDA. (BDA.Rapporto.Fine - BDA.Rapporto.Inizio) verrà di seguito rappresentato con BDA. Rapporto_Mediato.Tempo. #2 - ETA(BDA.Atleta.DataNascita) "WITHIN" BDF.AnagraficaFasce.EtaMin && BDF. AnagraficaFasce.EtaMax Eterogeneità di tipo sugli attributi, in quanto hanno due granularità differenti: il dato Età calcolato sulla data di nascita in BDA è più "preciso" rispetto al range dato da EtaMinEtaMax in BDF.
Proprietà interschema/1
Proprietà interschema/2 #1 - PROJ([DatiBiometrici])BDA.Rapporto!= PROJ([DatiBiometrici])BDF. Report PROJ([DatiBiometrici])BDA.Rapporto presenta un differente set di attributi rispetto a PROJ([DatiBiometrici])BDF.Report. Infatti la seconda proiezione offre una gamma più ampia di dati biometrici rispetto alla prima. #2 - BDA.Allenamento IS-A BDF.Attività Le due entità sono unite da un legame di tipo IS-A: nello schema logico globale verranno poi rappresentate con un unica entità.
Creazione delle viste/1 CREATE VIEW Atleta AS SELECT * From BDA.Atleta; CREATE VIEW Allenatore AS SELECT * FROM BDA.Allenatore; CREATE VIEW Piano AS SELECT * FROM BDA.Piano; CREATE VIEW AnagraficaFasce AS SELECT * FROM BDF.AnagraficaFasce;
Creazione delle viste/2 CREATE VIEW AllenamentoAttivita AS SELECT * FROM BDA.Allenamento UNION SELECT * FROM BDF.Attività; CREATE VIEW RapportoReport AS SELECT * FROM Rapporto_Mediato UNION SELECT * FROM BDF.Report;
Schema concettuale globale
Schema logico globale Atleta(NumAtleta, Cognome, Nome, DataNascita, Sesso) Allenatore(NumAllenatore, Cognome, Nome, DataNascita) Piano(NumPiano, Descrizione, NumAtleta, NumAllenatore) AllenamentoAttivita(NumAllenamento, Descrizione, Tipo) RapportoReport(NumRapporto, Tempo, Temperatura, FrequenzaCardiaca, FrequenzaRespiro, Pressione) AnagraficaFasce(NumAnagrafica, Sesso, EtaMin, EtaMax, AltezzaMin, AltezzaMax, PesoMin, PesoMax)
Esempio di query Eseguire sullo Schema Logico Globale la seguente query: Visualizzare tutti gli atleti che nelle loro attività hanno ottenuto un tempo migliore rispetto a quello medio, tenendo conto del sesso e della fascia d età dell atleta.
Query parziale su BDA CREATE VIEW Q_BDA AS SELECT Atleta.Nome, Rapporto_Mediato.Tempo, Allenamento.Descrizione, Sesso, ETA(Atleta.DataNascita) AS Eta FROM Atleta, Allenamento, Piano, Rapporto_Mediato WHERE Atleta.NumAtleta = Piano.NumAtleta AND Allenamento.NumAllenamento = Rapporto_Mediato.NumAllenamento AND Piano.NumAllenamento = Allenamento.NumAllenamento;
Assunzioni per query parziale su BDA ETA(Atleta.DataNascita) AS Eta Nella query effettuata su BDA viene utilizzata per semplicità la funzione ETA (Data_Nascita) che permette di calcolare l età di un atleta a partire dalla sua data di nascita.
ETA(Data_Nascita) La funzione ETA(Data_Nascita) è così scritta: DECLARE @DOB DATETIME ='12/29/1980' SELECT @DOB 'Date of Birth', GETDATE() 'Current Date', DATEDIFF(YEAR,@DOB,GETDATE()) (CASE WHEN DATEADD(YY,DATEDIFF(YEAR,@DOB,GETDATE()),@DOB) > GETDATE() THEN 1 ELSE 0 END) 'Age in Years'
Query parziale su BDF CREATE VIEW Q_BDF AS SELECT Attivita.NomeAttivita, Report.Tempo, AnagraficaFasce.EtaMin, AnagraficaFasce.EtaMax, AnagraficaFasce.Sesso FROM AnagraficaFasce, Report, Attivita WHERE AnagraficaFasce.NumAnagrafica = Report.NumAnagrafica AND Report.NumAttivita = Attivita.NumAttivita;
Query su schema logico globale SELECT Q_BDA.Nome, Q_BDA.Tempo, Q_BDA.Descrizione FROM Q_BDA, Q_BDF WHERE Q_BDA.Descrizione = Q_BDF.Descrizione AND Q_BDA.Sesso = Q_BDA.Sesso AND Q_BDA.Eta <= Q_BDF.EtaMax AND Q_BDA.Eta => Q_BDF.EtaMin AND Q_BDA.Tempo <= Q_DBF.Tempo ORDER BY Descrizione, Tempo;
Unfolding della query su schema logico globale/1 SELECT Q_BDA.Nome, Q_BDA.Tempo, Q_BDA.Descrizione FROM (SELECT Atleta.Nome, Rapporto_Mediato.Tempo, Allenamento.Descrizione, Sesso, ETA(Atleta.DataNascita) AS Eta FROM Atleta, Allenamento, Piano, Rapporto_Mediato WHERE Atleta.NumAtleta = Piano.NumAtleta AND Allenamento.NumAllenamento = Rapporto_Mediato.NumAllenamento AND Piano.NumAllenamento = Allenamento.NumAllenamento) AS Q_BDA, (SELECT Attivita.NomeAttivita, Report.Tempo, AnagraficaFasce.EtaMin, AnagraficaFasce.EtaMax, AnagraficaFasce.Sesso FROM AnagraficaFasce, Report, Attivita WHERE AnagraficaFasce.NumAnagrafica = Report.NumAnagrafica AND Report.NumAttivita = Attivita.NumAttivita) AS Q_BDF Continua...
Unfolding della query su schema logico globale/2 WHERE Q_BDA.Descrizione = Q_BDF.Descrizione AND Q_BDA.Sesso = Q_BDA.Sesso AND Q_BDA.Eta <= Q_BDF.EtaMax AND Q_BDA.Eta => Q_BDF.EtaMin AND Q_BDA.Tempo <= Q_DBF.Tempo ORDER BY Descrizione, Tempo;
Architettura di Integrazione (Open Data) - 1/4 Pubblicazione di OpenData in modo da rispettare le seguenti caratteristiche: Completi: non sono soggetti a limitazioni di privacy, in quanto inquadrano l atleta, ma non ne permettono il riconoscimento. Primari: alta granularità, tutti i dati disponibili nei rapporti delle singole attività Accessibili e Non discriminatori: Saranno disponibili su portale web che ne visualizza i dati e ne permette il download. Processabili e Non proprietari: I file scaricabili saranno in formato CSV. Liberi da Licenza: Si è pensato di proporre al committente una licenze che ne consente il riutilizzo anche a scopi commerciali con il vincolo di citarne la fonte.
Architettura di Integrazione (Open Data) - 2/4 Si sono analizzate quindi diverse licenze: Licenza Diritti Vincoli Note CC-Zero $, CM - Per il pubblico dominio CC-By $, CM By Nata per opere d ingegno IODL 1.0 $, CM By, SA IODL 2.0 $, CM By ODbL $, CM By, SA $ = Uso commerciale By = Citare la fonte CM = Copia e Modifica per opere derivate SA = Condividere allo stesso modo Si è quindi scelto IODL 2.0 Utilizzata da OSM
Architettura di Integrazione (Open Data) - 3/4 Al fine di rendere una più facile fruibilità dei dati si è pensato di raggrupparli per attività e di conseguenza risulta impensabile che la loro esportazione venga fatta manualmente, visto il loro grande numero (maggiore di 100). Si è scelto quindi di affidarsi a servizi SLAs esterni quali CKAN o SOCRATA i cui prezzi ora non sono più online, ma variano tra i 400 e i 550 mensili per la versione che esclude le API sui dataset e tra i 1100 e i 1500 mensili per la versione che supporta anche le API e include 1 giorno di supporto tecnico.
Architettura di Integrazione (Open Data) - 4/4 I Metadati disponibili sono vincolati alla scelta della piattaforma: Metadato CKAN Socrata Data Creazione Yes Yes Data Aggiornamento Yes Yes Formato Yes (non necessario) Licenza Yes Yes Dimensione Yes No Visite No Yes Download No Yes Dizionario No No Questi dati potrebbero essere utilizzati in svariati modi: Ambito medico: fisiologia clinica e dello sport Ricerca nuovi talenti (atleti con prestazioni sopra la media) Studi statistici di settore Campagne pubblicitarie di confronto