tesi di laurea Realizzazione di un sistema di logging prototipale per la piattaforma Android Anno Accademico 2011 / 2012 relatore Ch.mo prof. Marcello Cinque candidato Dario De Meis Matr. 528 / 741
Smartphone Evoluzione e Problematiche aumento delle prestazioni aumento della complessità delle applicazioni crescente numero di potenziali malfunzionamenti difficile adozione in scenari critici
Thin Clients: Utilizzati come ruolo di entry-point per le reti aziendali, permettono l accesso ai server presenti in rete a mezzo di browser web o sessioni di desktop remoto RDP. Dispositivi Embedded: Sono tutte le applicazioni che si hanno quando viene sfruttato l hardware di un pc o nel nostro caso di uno smartphone per realizzare prodotti di natura diversa. (es. bancomat, sistemi di collision detect o gps tracking per automobili, telefoni voip, supporto alla sensoristica, etc..)
Obiettivo Tesi Raccolta dati sui Malfunzionamenti freeze: il device non risponde a qualsiasi input esterno. L'unica possibilità è quella di estrarre e reinserire la batteria. self-reboot: il device si riavvia da solo in seguito ad un errore critico. hang: un'applicazione non risponde agli input utente e presenta una schermata fissa. crash: un'applicazione va incontro ad un errore non gestito che provoca la chiusura forzata della stessa. Non interessa la totalità del sistema. Non interessa la totalità del sistema. Sviluppare un servizio Logger Service in grado di raccogliere al runtime dati su questi malfunzionamenti e registrarli localmente per poi trasmetterli ad un server remoto.
Logging Framework per Android Componenti e Funzionamento Heartbeat: implementa la logica di rilevamento per i malfunzionamenti freeze e self-reboot Status Monitor: si occupa del monitoraggio delle applicazioni in esecuzione sul terminale System Data Collector: raccoglie i dati relativi al sistema, compresi quelli hardware, per effettuare un analisi completa in caso di malfunzionamento Tracker: implementa la logica di rilevamento per i malfunzionamenti crash e hang Logger: componente centrale del logging framework, fornisce agli altri componenti un interfaccia standard dove immagazzinare i dati e si occupa delle fasi inerenti il trasferimento di essi quando la rete è disponibile
Il Componente Logger Requisiti - Indipendenza da una struttura predeterminata per i dati - Persistenza - Efficienza Computazionale - Efficienza Energetica - Efficienza della Comunicazione
Il Componente Logger Architettura
Classe TrasmitData Implementa il requisito di Efficienza della Comunicazione: - Gestione trasparente delle disconnessioni di rete - Non satura la banda del dispositivo trasmettendo i dati a blocchi Funzionamento: 1) Controlla la presenza di stati salvati nella cache locale 2) In caso di presenza di dati verifica la presenza di connessione di rete 3) Se c e connessione, preleva massimo 5 stati salvati e li invia al server 4) Una volta ricevuta la risposta, se positiva, cancella gli stati trasmessi dalla cache locale
Scelte Implementative Formato Dati ed Encoding: - JSON (JavaScript Object Notation) - base64 Base64 Protocollo di Comunicazione: - HTTP Scripting e Piattaforma Lato Server: - Linux - Apache - PHP Database: - SQLITE (per il client) - MYSQL (per il server)
Screenshots
Screenshots
Conclusioni Il componente sviluppato è in grado di fornire una piattaforma comune dove gli elementi del framework sono in grado di registrare i dati relativi ai malfunzionamenti dei devices, si occupa inoltre di tutta la parte relativa all invio di essi sui servers adibiti all analisi. Sviluppi futuri Integrare tutti i componenti del logging framework creando un app dedicata e installarla su diversi dispositivi, in modo da riuscire ad eseguire un analisi sull affidabilità delle applicazioni di interesse.