To best characterize self-adaptive systems, we cite the recent roadmap in Software Engineering for Self-Adaptive Systems (SAS)[1]:
"SAS are systems that are able to adjust their behaviour in response to their perception of the environment and the system itself – has become an important research topic. It is important to emphasize that in all the many initiatives to explore self-adaptive behaviour, the common element that enables the provision of self-adaptability is usually software.(...) It also holds for many research fields, which have already investigated some aspects of self-adaptation from their own perspective, such as fault-tolerant computing, distributed systems, biologically inspired computing, distributed artificial intelligence, integrated management, robotics, knowledge-based systems, machine learning, control theory, etc. In all these case software’s flexibility allows such heterogeneous applications; however, the proper realization of the self-adaptation functionality still remains a significant intellectual challenge and only recently have the first attempts in building self-adaptive systems emerged within specific application domains."

[1] Cheng, B.H.C., Lemos, R. L., Giese, H., - Software Engineering for Self-Adaptive Systems: A Research Roadmap, In Software Engineering for Self-Adaptive Systems (2009), Springer, p, 1-26.