This document discusses the challenges of developing self-adaptive software that can evolve dynamically. It notes that software is uniquely able to change, but achieving desired changes safely is difficult. Software must change to adapt to external changes that could impact quality and dependability, such as requirements or environment changes. Looking ahead, software will be everywhere in devices and systems, requiring new behaviors and continuous evolution while remaining operational. The challenges are enabling continuous change while maintaining dependability, and creating systems that can self-adapt. Traditional software development may no longer be valid, requiring new approaches where development and runtime are less separated. The goals discussed are understanding evolution, revisiting modeling and verification with evolution in mind, making applications evolution-aware at runtime, and