|Thesis 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 possible, 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.