Internet of Things Davide Ancona Luca Franceschini Giorgio Delzanno Maurizio Leotta Marina Ribaudo Filippo Ricca 1st workshop on Architectures, Languages and Paradigms for IoT September 18th, 2017, Turin, Italy University of Genoa, Italy
• Large volume of data generated, a lot of requests • Devices are now able to run JavaScript and Node.js → Raspberry Pi, Intel Edison, Beaglebone, Arduino… 2/16
• Large volume of data generated, a lot of requests • Devices are now able to run JavaScript and Node.js • Growing number of modules and projects for IoT → Cylon.js, Node-RED, Johnny-Five, Azure IoT… 2/16
• Large volume of data generated, a lot of requests • Devices are now able to run JavaScript and Node.js • Growing number of modules and projects for IoT • No more C/C++ low-level programming → V8 runtime is written in C++ itself 2/16
well: • “Node.js does not check whether Content-Length and the length of the body which has been transmitted are equal or not” • “the 204 and 304 responses must not include a message body” • “The method, response.end(), MUST be called on each response” • “if a 'response' event handler is added, then the data from the response object must be consumed” • and more… 15/16
step towards runtime verification of Node.js and Node-RED systems using trace expressions • The specification can also be used without any knowledge about trace expressions to verify correct use of libraries 16/16
step towards runtime verification of Node.js and Node-RED systems using trace expressions • The specification can also be used without any knowledge about trace expressions to verify correct use of libraries • Decentralized: a single monitor server can verify a distributed system 16/16
step towards runtime verification of Node.js and Node-RED systems using trace expressions • The specification can also be used without any knowledge about trace expressions to verify correct use of libraries • Decentralized: a single monitor server can verify a distributed system • Trace expressions are very expressive 16/16
step towards runtime verification of Node.js and Node-RED systems using trace expressions • The specification can also be used without any knowledge about trace expressions to verify correct use of libraries • Decentralized: a single monitor server can verify a distributed system • Trace expressions are very expressive • Still a lot to do! Real-world programs to test, more modules and libraries, performances and scalability… 16/16