Funded by
Nowadays the vast majority of computer-based systems are software-intensive, i.e., they extensively rely on software to deliver their services. Though the range of software-intensive systems is broad, they share common features of being complex, heterogeneous and continuously changing due to evolving platforms, novel network technologies and business needs. However, despite such continuous changes, we expect the software-intensive systems to persistently provide trustworthy services, which are often critical for society, i.e., we require software-intensive systems to be resilient. Resilience is a multi-facet system characteristic that encompasses among others such properties as safety, reliability, availability and performability. A broad range of modelling, verification and analysis techniques should be employed in the development of software-intensive systems to address different resilience requirements. Yet the design-time efforts alone do not suffice for resilience assurance. They should be complemented with the run-time resilience monitoring and adaptation mechanisms that would allow the system to handle faults and changes and cope with unpredictable operating conditions in a reliable way. The aim of our project is to demonstrate how to achieve such a complementarity and define a framework for Continuous Resilience Assurance (CoRA). In the project, we aim at enhancing resilience of software-intensive systems by establishing foundations for designing a resilience-assuring infrastructure that includes the facilities for resilience monitoring, diagnostics and adaptation. We will create the advanced mechanisms for continuous resilience monitoring and diagnostics, as well as define the core principles of system adaptation and dynamic reconfiguration. The project will advance the state-of-the-art in modelling and verification by proposing an integrated multi-objective framework facilitating design of resilient systems and enabling holistic analysis of various resilience attributes. Modelling will be used to derive specifications of complex event processors that implement the system monitoring and diagnostics capabilities. System-level models will be used as the reference models for accumulating the knowledge about the system behaviour and its learning trends. They will also enable generation of adaptation heuristics and on-demand adaptation provisioning. We believe that the resulting CoRA framework, which aims at bridging the design-time efforts with run-time continuous monitoring, diagnostics and adaptation, will significantly facilitate engineering of resilient software-intensive systems.