Adaptive Immunity for Software: Towards Autonomous Self-healing Systems