The document discusses the challenges of self-adaptive software, specifically around reconciling change and flexibility with dependability. It presents a vision of a world populated by computationally rich devices that offer services dynamically based on situations. This requires software to evolve while running to adapt to changes in goals, requirements, and assumptions about the domain and environment. Traditionally, changes were managed offline through software maintenance, but increasingly software must respond to changes while running. The document proposes approaches to model software quantitatively at runtime and use techniques like feedback control loops and dynamic updating to enable self-adaptive behavior that maintains dependability in the face of changes.