Research Topics

Active: since 2017

Code RecipesThe co-existence of various kinds of devices, protocols, architectures, and programming languages make Internet of Things (IoT) systems complex to develop, even for experienced programmers. When novice programmers are learning to implement these systems, they are required to deal with areas in which they do not have deep knowledge. Furthermore, besides becoming proficient in these areas separately, they should integrate them and build a system whose components are heterogeneous from both software and hardware perspectives.

Our research focused, at a first stage, on identifying the most challenging issues that novice programmers experience when developing IoT systems. Results suggested that the integration of heterogeneous software components is one of the most painful issues. It commonly implies dealing with several protocols, formats, and authentication mechanisms, that are usually unknown to the novices. Moreover, the lack of clear and complete documentation, or merely, the absence of documentation that can be understood by a novice developer, make this integration issue even more difficult to overcome.

Two proposals emerged from the outcomes of this research; Code Recipes and IoT Notebooks.

Code Recipes

Inspired by the question “How do the lessons learned by IoT novice programmers can be captured, so they become an asset for other novice developers?”, we proposed Code Recipes. They are summarized and well-defined documentation modules, non-dependent from programming languages or run-time environments, and structured around the code fragments that are required to implement some portions of an IoT system.

Code Recipes expose four features:

  • Include comments and documentation sources that account for the learning process.
  • They are not constrained to a specific architecture, programming language or run-time environment.
  • They are cross-linked on the basis of three criteria: alternative versions, other language versions, and related recipes.
  • Their structured representation (e.g., in JSON or XML) may enable the implementation of various kind of tools to handle them.

Current work on Code Recipes concern: the development of a Code Recipes catalog; a web-based tool through which students can use them; and the subsequent validation in the context of the course.

Further details can be found in this paper:

IoT Notebooks

Computational notebooks have been gaining prominence due to their capability to consolidate text, executable code, and visualizations in a single document. Although they are mainly used in the field of data science, the characteristics of such notebooks could make them suitable to support the development of IoT systems as well. Taking into account the IoT software development scenario and the literate computing tools landscape, we aim at proposing an IoT-tailored literate computing approach to support students and novices in the development process of several, interconnected components of an IoT system. This goal includes the implementation of an IoT notebook in line with the requirements of IoT systems and the evaluation of the usefulness of such an approach.

To assess the feasibility of this proposal with the current computational notebooks, we developed a use case with an IoT system that consisted of four architectural elements: devices, gateways, cloud, and applications. Through this use case, we identified the opportunities that current computational notebooks provide, as well as the limitations that should be addressed by an IoT-tailored computational notebook. Moreover, we presented a prototypical IoT notebook that implements such a use case, and we depicted opportunities and limitations.

Currently, we are working on the development of the IoT-tailored notebook in line with such opportunities and limitations.

Further details can be found in this paper: