Introduction to Self-healing Software

by Martin Monperrus

My group is inventing concepts and systems for achieving self-healing software. Here is a curated list of pointers to understand the field. –Martin

Self-healing software in a nutshell

A software system is said to be self-healing if it is capable to handle unexpected error conditions. The conditions refers to the inputs, the user interactions, the execution environments, etc. By unexpected, we mean that the error was never specified, tested or even imagined by the software engineers. "Self-healing" is also known as "runtime repair", "automatic recovery" or "automatic remediation".

How to learn about self-healing software?

For a winter school, I've written this introduction to automatic software repair, where Section 4 is about self-healing.

See also: Koopman's paper [3] and Keromytis' paper [2] for an excellent overview of the field, as well as Section 4 of [4].

Language and frameworks for self-healing software

Here we list notable programming languages and frameworks for achieving self-healing software:

See also


[1] Richard P Gabriel, Ron Goldman. Conscientious Software. In « Acm Sigplan Notices », 10, 41, 433–450, 2006,

[2] Angelos D Keromytis. Characterizing self-healing software systems. In « Fourth International Conference on Mathematical Methods, Models, and Architectures for Computer Network Security », 22–33, 2007,

[3] Philip Koopman. Elements of the self-healing system problem space. 2003,

[4] Martin Monperrus. Automatic Software Repair: a Bibliography. In « ACM Computing Surveys », 51, 2017, 1-24,

[5] David Patterson, Aaron Brown, Pete Broadwell, George Candea, Mike Chen, James Cutler, Patricia Enriquez, Armando Fox, Emre Kiciman, Matthew Merzbacher. Recovery-oriented computing (ROC): Motivation, definition, techniques, and case studies. Technical report, UCB//CSD-02-1175, UC Berkeley, 2002.

[6] Mary Shaw. Sufficient Correctness and Homeostasis in Open Resource Coalitions. In « Proc. Int'l Software Architecture Workshop », 2000.

Tagged as: