The advancement and interlinking of cyber-physical systems offer vast new opportunities for industry. The fundamental threat to this progress is the inherent increase of complexity through heterogeneous systems, software, and hardware that leads to fragility and unreliability. Systems cannot only become more unreliable, modern industrial control systems also have to face hostile security attacks that take advantage of unintended vulnerabilities overseen during development and deployment. Self-adaptive software systems offer means of dealing with complexity by observing systems externally. In this chapter the authors present their ongoing research on an approach that applies a self-adaptive software system in order to increase the reliability and security of control devices for hydro-power plant units. The applicability of the approach is demonstrated by two use cases. Further, the chapter gives an introduction to the field of self-adaptive software systems and raises research challenges in the context of cyber-physical systems.