Rationalism with a Dose of Empiricism: Case-Based Reasoning for Requirements-Driven Self-Adaptation