Lay summary
This project targets complex software systems, which exhibit emergent behaviors that affect system quality and reliability. Subtle failures can stem from unexpected interactions. These faults are difficult to reproduce in testing environments, and are seldom addressed by traditional engineering approaches.Researchers have for some time now recognized the benefits of self-managed systems that react to unexpected problems by exploiting their built-in capabilities and by restoring acceptable execution conditions without requiring human intervention at runtime. Different self-management abilities deal with different problems, from performance (self-optimization), security (self-protection), architectural mismatches (self-adaptation), configuration (self-configuration) and functional failures (self-healing).This project focuses on self-healing, that is techniques for automatically recovering from functional faults. In this project, we investigate a general approach to failure recovery based on automatic workarounds. We observe that software systems of significant complexity are often redundant, in the sense that the same functionality can be obtained through multiple sequences of operations. Exploiting this redundancy, we can built effective workarounds capable of recovering from some functional failures.