Reflecting on self-adaptive software systems