Context-aware and autonomous smart architectures have become an important topic in architecting novel smart systems. No matter whether this is in the context of Internet of Things or Smart Cyber-physical Systems, they all are becoming software intensive systems, where the software carries the systems' smartness, their capability to address various (sometimes unanticipated) situations and the ability to scale, adapt and evolve.
As proven in the past, especially the issues of scalability, evolvability, adaptability, etc. are primarily the properties of the architecture. It is the architecture that makes it possible to manage the complexity of the software and ensure that the software can evolve and change at runtime and also gradually in iteration cycles involving development.
Traditional approaches to software architectures however fail to address needs of context-aware and autonomous systems. This is mostly because they largely do not provide first class concepts to deal with the dynamicity and evolution of the system at the level of the architecture.
Thus, they lose the documentation value of an architecture and the ability to exploit the architecture description to drive, control and provide guarantees in architecture evolution. In this keynote we focus on how to capture architectures of dynamically evolving systems where a system is modeled as autonomic components that dynamically form collaboration groups (so called ensembles [1, 3]) to complete their tasks.
We give examples of rich component-based architectural description that captures the potential dynamicity of a system and ties it to the context and the internal state of the components. We show how to balance the autonomy of the components and the group-wise collaborative aspect while respecting the often present real-time constraints and non-idealized communication [2] (i.e. communication with latency and dropouts).
We show how the communication ability itself establishes part of the context of the system and how the system can adapt to it. Generally, this opens the broad question of what constitutes the context and how to capture the context-awareness and the knowledge to act based on the context at the level of the software architecture.