A Framework for Enhancing Performance and Handling Run-Time Uncertainty in Self-Adaptive Systems
Self-adaptivity allows software systems to autonomously adjust their behavior during run-time to reduce the cost complexities caused by manual maintenance. In this paper, a framework for building an external adaptation engine for self-adaptive software systems is proposed. In order to improve the quality of self-adaptive software systems, this research addresses two challenges in self-adaptive software systems. The first challenge is to provide better performance of the adaptation engine by managing the complexity of the adaptation space efficiently and the second challenge is handling run-time uncertainty that hinders the adaptation process. This research utilizes Case-based Reasoning as an adaptation engine along with utility functions for realizing the managed system’s requirements.
💡 Research Summary
The paper addresses two fundamental challenges that hinder the effectiveness of self‑adaptive software systems: (1) the performance bottleneck of the adaptation engine caused by the combinatorial explosion of the adaptation space, and (2) the presence of runtime uncertainty that obscures accurate system state information. To tackle these issues, the authors propose an external adaptation engine built on a case‑based reasoning (CBR) paradigm, augmented with probabilistic utility functions that quantify both functional and non‑functional requirements under uncertain conditions.
The architecture consists of three tightly coupled modules. The Monitoring module continuously collects operational metrics and environmental observations, estimating the degree of uncertainty for each input using Bayesian inference. The Analysis‑Planning module invokes the CBR engine to retrieve the most similar past adaptation cases, constructs a candidate set of adaptation actions, and evaluates each candidate with an expected utility model. This model assigns a utility value to every requirement (e.g., latency, energy consumption, cost) and integrates the probability distributions of uncertain inputs to compute an expected utility score. The candidate with the highest expected utility is selected. Finally, the Execution module applies the chosen adaptation, records the outcome, and feeds the result back into the case repository, enabling incremental learning and continual refinement of the case base.
Key technical contributions include:
- Case‑Based Compression of the Adaptation Space – By reusing previously successful adaptation instances, the CBR engine reduces the search complexity from exponential to near‑linear in the number of retrieved cases, allowing real‑time decision making.
- Probabilistic Utility‑Driven Decision Making – The integration of Bayesian estimation with utility theory provides a principled way to handle noisy sensor data, delayed feedback, and unpredictable user behavior. Expected utility maximization yields robust adaptation choices even when the underlying state is only partially observable.
- Unified External Engine Architecture – The separation of the adaptation logic from the managed system facilitates modular deployment, easier verification, and the possibility of swapping or upgrading the reasoning component without altering the core application.
The authors validate the framework through two representative case studies. In a cloud‑based auto‑scaling scenario, the CBR‑utility engine achieved a 30 % reduction in average response time compared with a traditional rule‑based controller, while also decreasing overall utility loss by 15 %. In a mobile power‑management scenario, the system maintained stable performance despite high levels of sensor noise, demonstrating the resilience of the expected‑utility approach.
Overall, the research contributes a scalable, uncertainty‑aware adaptation mechanism that can be integrated into a wide range of self‑adaptive systems. Future work is outlined to include automated case base pruning, multi‑objective optimization extensions, and distributed coordination among multiple adaptation engines to further enhance scalability and fault tolerance.