A context-driven adaptation process for service-based applications