The world of embedded, communication-oriented devices has never been richer than in these last few years. While on one hand Wireless Sensor Networks are known and have been used for several years to monitor the environment, buildings or historical sites, the proliferation of devices such as smartphones, tablets, smart watches or music players, filled with sensors measuring and aggregating data about the user behavior or the environment in which she moves are quite new and have opened the possibility of developing applications in novel scenarios, such as air quality monitoring, energy distribution measurements, NFC payments, Machine-2-Machine interactions and so on. The spectrum of devices that enable this behavior goes from the tiniest microcontrollers, such as WSN motes with 8/10 KBytes of memory, to smartphones and tablets with multicore processors and GBytes of disk and RAM. Application development methodologies for these devices have some common characteristics: from the use of particular languages and programming paradigms to the difficulties of testing and debugging applications before deployment. There are also profound differences: Wireless Sensor Network research focuses on the development of algorithms, applications and power-saving protocols, where only localized interactions between the devices (sensors/actuators) are conceived, with small or no communication with the external world (e.g., Internet, cloud systems, remote computers); frameworks for more powerful devices focus on the ease of development and deployment of applications, with rich interactions with the Internet and with remote systems in charge of elaborating the collected data, often neglecting possible local interactions between devices located within communication range with each other. Aim of this thesis is to show that a different route is possibile, which allows the development of applications covering a significant part of the spectrum described above, allowing localized and remote interactions, using high-level languages apt to manipulate data and protocols, offering powerful tools to debug, test and verify applications before their deployment. This thesis will present a new framework called ELIoT (ErLang for the Internet of Things), that follows this new route by adapting the Erlang programming language to the requirements described above, providing a Virtual Machine and language constructs apt to the development of distributed mobile applications on embedded devices. ELIoT also provides tools to the developers, in particular a simulator and a model checker, to debug and verify the applications before deployment, a necessary step in these scenarios, where a live monitoring/debugging of the functionality in the environment can be difficult and expensive. This thesis will show the impact of using ELIoT in terms of productivity for developers and performance of applications developed in typical "Internet of Things" scenarios.

Il mondo dei dispositivi integrati in grado di comunicare tramite reti wireless non è mai stato così ricco come in questi ultimi anni. Mentre da un lato le Reti di Sensori Wireless (Wireless Sensor Networks) sono ormai note e sono state usate per diversi anni per monitorare l'ambiente, gli edifici ed i loro impianti o siti di rilevanza storica, dall'altro è piuttosto recente la proliferazione di dispositivi come smartphone, tablet, orologi "intelligenti" o riproduttori musicali, ciascuno contenente numerosi sensori che continuamente misurano ed aggregano dati riguardo il comportamento dell'utente o dell'ambiente in cui si muove; questo ha aperto nuove possibilità ed introdotto nuovi scenari in cui sviluppare applicazioni, come ad esempio la misurazione della qualità dell'aria a basso costo nelle città, il monitoraggio della distribuzione di energia, il pagamento elettronico con qualunque dispositivo (e.g., NFC), interazioni automatizzate tra macchine (Machine-2-Machine) e molto altro. Lo spettro di dispositivi che permettono questo è molto ampio e va dai più piccoli microcontrollori, come i nodi wireless da 8/10 KByte di memoria, agli smartphone e tablet con processori multicore e diversi GByte di memoria. Lo sviluppo di applicazioni per questi dispositivi ha alcune caratteristiche comuni: dall'uso di linguaggi e paradigmi di programmazione specifici alle difficoltà nel provare e risolvere eventuali errori prima di installare l'applicazione nel suo contesto reale. Allo stesso tempo ci sono anche profonde differenze: la ricerca nell'ambito delle reti di sensori si concentra sullo sviluppo di protocolli che permettano un risparmio energetico significativo, su algoritmi ed applicazioni dove le comunicazioni rilevanti sono essenzialmente locali (verso sensori ed attuatori), e la comunicazione verso il mondo esterno (e.g., Internet, sistemi cloud, computer remoti) è pressochè inesistente; i framework per dispositivi più potenti si concentrano invece sulla facilità nello sviluppo e nell'installazione di applicazioni aventi ricche e frequenti interazioni con Internet e sistemi remoti, i quali si occupano di elaborare i dati raccolti, spesso ignorando le interazioni locali tra dispositivi. Scopo di questa tesi è mostrare come sia possibile perseguire un modello differente, che permetta lo sviluppo di applicazioni per un'ampia parte dello spettro descritto in precedenza, e che faciliti la realizzazione di comunicazioni sia locali che remote, che utilizzi linguaggi di programmazione ad alto livello in grado di manipolare facilmente dati e protocolli, che offra utili strumenti di debug, test e verifica di applicazioni prima del loro rilascio. Questa tesi introduce un nuovo framework chiamato ELIoT(ErLang for the Internet of Things), che implementa questo modello adattando il linguaggio di programmazione Erlang ai requisiti descritti in precedenza, fornendo una macchina virtuale e costrutti del linguaggio atti allo sviluppo di applicazioni distribuite per dispositivi mobili. ELIoT inoltre fornisce strumenti agli sviluppatori, in particolare un simulatore ed un model checker, per verificare l'applicazione prima del suo rilascio, una funzionalità essenziale in questi scenari, dove il monitoraggio o il debugging dell'applicazione una volta operativa può essere difficile e costoso. Questa tesi mostrerà l'impatto dell'usare ELIoT in termini di produttività per gli sviluppatori e di prestazioni dei programmi sviluppati in scenari tipici della cosiddetta "Internet delle Cose" ("Internet of Things").

ELIoT: A Programming Framework for the Internet of Things

SIVIERI, ALESSANDRO

Abstract

The world of embedded, communication-oriented devices has never been richer than in these last few years. While on one hand Wireless Sensor Networks are known and have been used for several years to monitor the environment, buildings or historical sites, the proliferation of devices such as smartphones, tablets, smart watches or music players, filled with sensors measuring and aggregating data about the user behavior or the environment in which she moves are quite new and have opened the possibility of developing applications in novel scenarios, such as air quality monitoring, energy distribution measurements, NFC payments, Machine-2-Machine interactions and so on. The spectrum of devices that enable this behavior goes from the tiniest microcontrollers, such as WSN motes with 8/10 KBytes of memory, to smartphones and tablets with multicore processors and GBytes of disk and RAM. Application development methodologies for these devices have some common characteristics: from the use of particular languages and programming paradigms to the difficulties of testing and debugging applications before deployment. There are also profound differences: Wireless Sensor Network research focuses on the development of algorithms, applications and power-saving protocols, where only localized interactions between the devices (sensors/actuators) are conceived, with small or no communication with the external world (e.g., Internet, cloud systems, remote computers); frameworks for more powerful devices focus on the ease of development and deployment of applications, with rich interactions with the Internet and with remote systems in charge of elaborating the collected data, often neglecting possible local interactions between devices located within communication range with each other. Aim of this thesis is to show that a different route is possibile, which allows the development of applications covering a significant part of the spectrum described above, allowing localized and remote interactions, using high-level languages apt to manipulate data and protocols, offering powerful tools to debug, test and verify applications before their deployment. This thesis will present a new framework called ELIoT (ErLang for the Internet of Things), that follows this new route by adapting the Erlang programming language to the requirements described above, providing a Virtual Machine and language constructs apt to the development of distributed mobile applications on embedded devices. ELIoT also provides tools to the developers, in particular a simulator and a model checker, to debug and verify the applications before deployment, a necessary step in these scenarios, where a live monitoring/debugging of the functionality in the environment can be difficult and expensive. This thesis will show the impact of using ELIoT in terms of productivity for developers and performance of applications developed in typical "Internet of Things" scenarios.
FIORINI, CARLO ETTORE
PRANDINI, MARIA
10-feb-2014
Il mondo dei dispositivi integrati in grado di comunicare tramite reti wireless non è mai stato così ricco come in questi ultimi anni. Mentre da un lato le Reti di Sensori Wireless (Wireless Sensor Networks) sono ormai note e sono state usate per diversi anni per monitorare l'ambiente, gli edifici ed i loro impianti o siti di rilevanza storica, dall'altro è piuttosto recente la proliferazione di dispositivi come smartphone, tablet, orologi "intelligenti" o riproduttori musicali, ciascuno contenente numerosi sensori che continuamente misurano ed aggregano dati riguardo il comportamento dell'utente o dell'ambiente in cui si muove; questo ha aperto nuove possibilità ed introdotto nuovi scenari in cui sviluppare applicazioni, come ad esempio la misurazione della qualità dell'aria a basso costo nelle città, il monitoraggio della distribuzione di energia, il pagamento elettronico con qualunque dispositivo (e.g., NFC), interazioni automatizzate tra macchine (Machine-2-Machine) e molto altro. Lo spettro di dispositivi che permettono questo è molto ampio e va dai più piccoli microcontrollori, come i nodi wireless da 8/10 KByte di memoria, agli smartphone e tablet con processori multicore e diversi GByte di memoria. Lo sviluppo di applicazioni per questi dispositivi ha alcune caratteristiche comuni: dall'uso di linguaggi e paradigmi di programmazione specifici alle difficoltà nel provare e risolvere eventuali errori prima di installare l'applicazione nel suo contesto reale. Allo stesso tempo ci sono anche profonde differenze: la ricerca nell'ambito delle reti di sensori si concentra sullo sviluppo di protocolli che permettano un risparmio energetico significativo, su algoritmi ed applicazioni dove le comunicazioni rilevanti sono essenzialmente locali (verso sensori ed attuatori), e la comunicazione verso il mondo esterno (e.g., Internet, sistemi cloud, computer remoti) è pressochè inesistente; i framework per dispositivi più potenti si concentrano invece sulla facilità nello sviluppo e nell'installazione di applicazioni aventi ricche e frequenti interazioni con Internet e sistemi remoti, i quali si occupano di elaborare i dati raccolti, spesso ignorando le interazioni locali tra dispositivi. Scopo di questa tesi è mostrare come sia possibile perseguire un modello differente, che permetta lo sviluppo di applicazioni per un'ampia parte dello spettro descritto in precedenza, e che faciliti la realizzazione di comunicazioni sia locali che remote, che utilizzi linguaggi di programmazione ad alto livello in grado di manipolare facilmente dati e protocolli, che offra utili strumenti di debug, test e verifica di applicazioni prima del loro rilascio. Questa tesi introduce un nuovo framework chiamato ELIoT(ErLang for the Internet of Things), che implementa questo modello adattando il linguaggio di programmazione Erlang ai requisiti descritti in precedenza, fornendo una macchina virtuale e costrutti del linguaggio atti allo sviluppo di applicazioni distribuite per dispositivi mobili. ELIoT inoltre fornisce strumenti agli sviluppatori, in particolare un simulatore ed un model checker, per verificare l'applicazione prima del suo rilascio, una funzionalità essenziale in questi scenari, dove il monitoraggio o il debugging dell'applicazione una volta operativa può essere difficile e costoso. Questa tesi mostrerà l'impatto dell'usare ELIoT in termini di produttività per gli sviluppatori e di prestazioni dei programmi sviluppati in scenari tipici della cosiddetta "Internet delle Cose" ("Internet of Things").
Tesi di dottorato
File allegati
File Dimensione Formato  
2014_02_PhD_Sivieri.pdf

accessibile in internet per tutti

Descrizione: Testo della tesi
Dimensione 2.16 MB
Formato Adobe PDF
2.16 MB Adobe PDF Visualizza/Apri

I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10589/88672