Abstract Adaptive systems are composed of different heterogeneous parts or entities that interact and perform actions favouring the emer- gence of global desired behavior. In this type of systems entities might join or leave without disturbing the collective, and the system should self-organize and continue performing their goals. Furthermore, entities must self-evolve and self-improve by learn- ing from their interactions with the environment. The main challenge for engineering these systems is to design and develop distributed and adaptive algorithms that allow system entities to select the best suitable strategy/action and drive the system to the best suitable behavior according to the current state of the system and environment changes. This paper describes existing work related to the development of adaptive systems and approaches and shed light on how features from natural and biological systems could be exploited for engineering adaptive approaches.