Download PDF

Engineering Software Systems with Self-Adaptation and Machine Learning

Publication date: 2023-10-06

Author:

Quin, Federico

Abstract:

Modern software systems are often deployed in dynamic and uncertain environments, where the operating conditions of the system are difficult to predict before the system is in operation. Not attending to these uncertainties may jeopardize the system's goals. To mitigate such uncertainties, self-adaptation presents a consolidated approach that adapts software systems to changing operating conditions. With the increasing complexity of modern software systems and their environments, it becomes essential to engineer self-adaptive systems that can deal with this complexity in an efficient manner. A promising technique that has gained a significant amount of attention in supporting self-adaptation that can address complexity and scalability concerns is machine learning. It has seen widespread use, from supporting analysis of adaptation options in self-adaptive systems to fully encompassing adaptation logic. In this thesis, we investigate how self-adaptation supported by machine learning can be used to engineer systems from two complementary perspectives. In the first perspective, we contribute a systematic literature review on the use of machine learning in self-adaptive systems. From this literature review we identified a gap in the literature on systematically dealing with large adaptation spaces that complements model checking techniques. To address this gap, we contribute an architecture-based solution that leverages machine learning in conjunction with statistical model checking to efficiently reduce large adaptation spaces. In the second perspective, we contribute a systematic literature review on A/B testing with a focus on engineering aspects. From this literature review we identified a need for the automation of A/B testing, alongside the need for efficient execution of A/B tests. To address these needs, we contribute an approach that leverages machine learning and self-adaptation to automate the efficient execution of pipelines of A/B tests.