Any software engineer of Internet of Things (IoT) systems deals with three macro issues: how to perceive the properties of interest through sensors (sensing facet), how to process such information to decide what to do to achieve the system goals (processing facet), and how to enact such decisions by affecting the IoT system itself and its deployment environment accordingly (actuation facet). For each, one can either develop ad-hoc solutions from scratch, with mainstream programming languages, or build on top of existing IoT-specific software libraries, frameworks, and platforms. Here, we survey the broad state of the art of “IoT programming”, with a focus on clarifying which and how programming paradigms and platforms deal with four key features demanded by modern IoT systems: scale-independence, situatedness, adaptiveness, and opportunistic deployment, along the aforementioned three facets. We motivate such needs by describing compelling contemporary and near future scenarios. Then, we propose a reference conceptual framework of programming IoT systems with the goal of (i) uncovering which research areas are mostly active in IoT programming, and (ii) placing the state of the art at the intersection between the appropriate features and facets, to both (iii) clarify which approaches are most suited for different kinds of tasks, and (iv) emphasising open challenges. This conceptual framework is a novel contribution in the landscape of IoT programming surveys, and is intended to be a practical aid for researchers and practitioners that are deciding which computational tools (e.g. languages and platforms) to adopt while building their own IoT systems.
Casadei, R., Fornari, F., Mariani, S., Savaglio, C. (2025). Programming IoT systems: A focused conceptual framework and survey of approaches. INTERNET OF THINGS, 31, 101548-101574 [10.1016/j.iot.2025.101548].
Programming IoT systems: A focused conceptual framework and survey of approaches
Roberto Casadei;
2025
Abstract
Any software engineer of Internet of Things (IoT) systems deals with three macro issues: how to perceive the properties of interest through sensors (sensing facet), how to process such information to decide what to do to achieve the system goals (processing facet), and how to enact such decisions by affecting the IoT system itself and its deployment environment accordingly (actuation facet). For each, one can either develop ad-hoc solutions from scratch, with mainstream programming languages, or build on top of existing IoT-specific software libraries, frameworks, and platforms. Here, we survey the broad state of the art of “IoT programming”, with a focus on clarifying which and how programming paradigms and platforms deal with four key features demanded by modern IoT systems: scale-independence, situatedness, adaptiveness, and opportunistic deployment, along the aforementioned three facets. We motivate such needs by describing compelling contemporary and near future scenarios. Then, we propose a reference conceptual framework of programming IoT systems with the goal of (i) uncovering which research areas are mostly active in IoT programming, and (ii) placing the state of the art at the intersection between the appropriate features and facets, to both (iii) clarify which approaches are most suited for different kinds of tasks, and (iv) emphasising open challenges. This conceptual framework is a novel contribution in the landscape of IoT programming surveys, and is intended to be a practical aid for researchers and practitioners that are deciding which computational tools (e.g. languages and platforms) to adopt while building their own IoT systems.I documenti in IRIS sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.