An increasing number of everyday objects and appliances are interconnected to each other and to servers in the Cloud, in order to provide a variety of useful services. Some analysts estimate that up to 50 billion such devices should be interconnected at the horizon of 2020. These devices are typically grouped in order to form integrated systems: the set of captors and actuators in a smart building form such a system, and similarly for a smart car or a IoT-cloud application grouping resources in the Internet of Things with resources in the Cloud. The devices, and the system they form, are typically very heterogeneous. They differ in capabilities, function, goal and nature. Some systems might be static and provide high capacities, other systems might be very dynamic and be formed of components of varying capabilities, and so on.
Often, systems are also grouped together to form Systems-of-Systems. An example of a System-of-System is that of environmental surveillance: different sets of captors are deployed onto different observation fields, where they aggregate measurements; the results are exchanged and further aggregated in the Cloud, between the sensing systems themselves, or a combination of the two. Programmable networks are another example of systems that can be combined with other distributed systems in order to form a whole that is greater than the sum of its parts: by allowing fine-grain control on the network operation, combined systems can benefit from stronger guarantees in terms of quality-of-service.
One of the major challenge of System-of-systems is their programmability, in particular in terms of interoperability of different systems, or when existing systems must be combined with newer systems while already deployed. Indeed, combining multiple systems requires knowing about their internal constituents and operation, and to implement the interoperation between these constituents themselves. For instance, a protocol must be established directly between the nodes forming a system A and the nodes forming a system B, in order to establish a system of system containing A and B. Later, adding a programmable network system C to support strong guarantees for the inter-system communication again requires implementing the interaction at the level of the internal components of A, B and C. It might be that these components are not well defined, or that the programmer knows little about their operation. Realizing this composition in an opportunistic manner is also a complex task, as the systems internal components do not necessarily have support for this automatic adaptation.
The DIONASYS project is a joint initiative of four research institutions (Universities of Neuchâtel, Bordeaux, Lancaster and Technical University of Cluj-Napoca) in four countries, funded by the CHIST-ERA ERA-NET. The goal of DIONASYS is to make the programming of complex and heterogeneous Systems-of-Systems simpler, more straightforward by allowing a higher level of abstraction and allowing advanced features such as automatic adaptation, automatic interoperation, and support of programmable networks for these tasks. The project started in January 2015.