Miniature computing devices are being embedded in an increasing range of objects around us including home appliances, cars, buildings, and people. However, research into such networked embedded environments has focused almost exclusively on the development of miniaturised devices with increasingly powerful and general capabilities. As a result, the software fabric that ultimately makes innovative applications possible has tended to be overlooked. Instead, software is developed in an ad-hoc fashion, with little or no provision for reusable services and abstractions. There is therefore a need for a programming platform with abstractions that are able to span the full range of heterogeneous embedded systems, and which also offers consistent mechanisms with which to configure, deploy, and dynamically reconfigure networked embedded systems software.
The work discussed in this paper is addressing the need for such a programming platform. Our programming platform, which is at the heart of the RUNES architecture, takes the form of a component-based middleware that decouples and encapsulates the functionality provided by its various constituents behind well-defined interfaces. This decoupling not only enables one to deploy different variants of the same component (e.g., tailored to a specific device type), but also enables dynamic reconfiguration of component instances and their interconnections.