Wireless Sensor Networks (WSNs) are increasingly being proposed in scenarios whose requirements cannot be fully predicted, or where the system functionality must adapt to changing conditions. In these scenarios, the ability to reconfigure portions of the software running on WSN nodes becomes imperative. At the same time, recent WSN proposals often employ heterogeneous nodes (e.g., sensors and actuators), which require the deployment of different code on differ- ent devices, based on their characteristics. Unfortunately, existing work in the field largely focuses on simpler scenarios where the same, monolithic program is distributed to all the nodes in the WSN.

To address this issue, we propose FiGaRo, a component-based programming model supported by an efficient run-time system and distributed protocols, collectively enabling an unprecedented fine-grained control over what is being reconfigured, and where. Using FiGaRo, the programmer can deal explicitly with component dependencies and version constraints, as well as select precisely the subset of nodes targeted by reconfiguration, leaving the others unaltered. We show that our run-time support imposes a very limited processing and memory overhead, while the communication overhead lies within 9% of the theoretical optimum.

The life cycle of a FiGaRo component.

The following publications provide further details on the programming abstraction and supporting run-time: