"The future of Internet lies with embedded systems". This quote, from some years ago now, characterises a lot of what we now read about the Internet of Things (IoT), and if anything, the vision was surpassed by reality. However, even more specialised cyber-physical systems such as energy grids or telecom networks, or more secluded realms, like train, plane or car automation systems, usually programmed and deployed according to classical hard real-time systems practice, became dramatically convergent with the infrastructures relying on the (distributed) Internet-Cloud complex.
This progressive convergence creates a challenging scenario: such looser yet critical cyber-physical infrastructures carry a natural uncertainty, which however has to be tamed, to achieve the predictability which, if lacking, will make the former do more damage than good, physical damage included. The key to these challenges lies in learning how to correctly design safe, secure and dependable, autonomous and cooperating systems-of-embedded-systems, because this is how the future is starting to look like.
This tutorial reviews several years of research addressing the above-mentioned challenges with what we consider the right mental tools: Distributed Real-Time Systems theory and practice. The tutorial provides a comprehensive perspective of the evolution of fundamental concepts in the design of distributed real-time systems, from simple embedded systems with well-defined behaviour executing in restricted environments, to complex autonomous networked systems, able to cooperate and adapt in highly unpredictable settings. The problems motivated by that evolution are then put in perspective with artefacts and paradigms that provide solutions, in a complete approach, system models and architectures, to the correct design of such systems. The tutorial also presents several systems and proof-of-concept prototypes in some critical areas, which serve to illustrate the application of these fundamental concepts. Finally, extensive literature pointers are given, namely to works featuring a concern to achieve predictability in face of uncertainty.
But the journey is not over. With an ever increasing complex and interconnected world, new challenges for achieving a combination of real-time, secure and dependable behaviour are continuously emerging. Therefore, the tutorial concludes by pointing to some of these challenges and open research avenues.