Software engineering for self-adaptive systems: A research roadmap