Self-adaptive software can assess and modify its behavior when the assessment indicates that the program is not performing as intended or when improved functionality or performance is available. Since the mid-1960s, system adaptivity has been extensively researched, and during the last decade, many application areas and technologies involving self-adaptation have gained prominence. All of these efforts have in common the introduction of self-adaptability through software. Thus, it is essential to investigate systematic software engineering methods to create self-adaptive systems that may be used across different domains. The primary objective of this research is to summarize current advances in awareness requirements for adaptive strategies and their performance management based on an examination of state-of-the-art methods described in the literature. This paper reviews self-adaptive systems in the context of requirement awareness and summarizes the most common methodologies applied. At first glance, it examines the previous surveys and works about self-adaptive systems. Afterward, it classifies the current self-adaptive systems based on six criteria. Then, it presents performance management in the current adaptive systems and then evaluates the most common self-adaptive approaches. Lastly, the self-adaptive models are evaluated based on four concepts (requirements description, monitoring, relationship, dependency/impact, and tools).