posted on 2024-07-09, 13:57authored byMahmoud Hussein, Jun HanJun Han, Jian Yu, Alan Colman
There is an increasing demand for context-aware adaptive services that can evolve at runtime in response to unanticipated changes in their environments or functionalities. Enabling the runtime evolution of such context-aware adaptive services is still a major challenge. In this paper, we introduce a novel approach to tackle this challenge. At the development time, our approach explicitly models a context-aware adaptive service from three aspects: functionality, context, and adaptive behaviour. As such, these aspects and their relationships can be clearly captured and easily manipulated. The approach also generates the executable artifacts of the composite service from their models. These artifacts are engineered with the ability to be changed at runtime (i.e. evolvable artifacts). To cope with unanticipated changes, we adopt the models@runtime concept for keeping the service model alive at runtime. This model is then manipulated by the software engineer to take into account such changes. To apply the model changes to the running service's composition, differences between the running service model and its evolved model are computed. Then, adaptation actions corresponding to the differences are generated and applied to the service's evolvable artifacts. To demonstrate the approach applicability, we have used it to develop and evolve two case studies: travel guide and electronic exam services.