Abstract:
Currently, systems are required to dynamically adapt themselves to new situations in order to maximize performance and availability. Pervasive systems run in complex and heterogeneous environments using resource constrained devices where arising events may compromise the quality of the system. As a result, it is desirable to count on mechanisms to adapt the system according to problematic events occurring in the running context. Recent literatures surveys have shown that dynamic adaptation is typically performed in a reactive way and therefore software systems are not able to anticipate recurrent problematic situations. In some situations, this could lead to resource waste and transient unavailability of the system. In contrast, a proactive approach does not simply act in response to the environment, but exhibit goal-directed behavior by taking the initiative in an attempt to improve the system performance or quality of service.
In this thesis we advocate for a proactive approach to dynamic adaptation. The benefits of combining predictive analysis with self-adaptive approach can be summarized as follows: 1) avoiding unnecessary adaptation and oscillatory behavior 2) managing allocation of exhaustible resources, and 3) proactivity in front of seasonal behavior. Focusing on the MAPE-K architecture, in this thesis we propose to enhance dynamic adaptation by integrating a Predict activity between the Analyze and Plan activities of the MAPE-K loop. We leverage ideas and techniques from the area of predictive analysis to operationalize the Predict activity.
We advocate for achieving proactive self-adaptation by integrating predictive analysis into two phases of the software process. At design time, we propose a predictive modeling process, which includes the following activities: define goals, collect data, select model structure, prepare data, build candidate predictive models, training, testing and cross-validation of the candidate models and selection of the “best” models based on a measure of model goodness. At runtime, we consume the predictions from the selected predictive models using the running system actual data. Depending on the input data and the time allowed for learning algorithms, we argue that the software system can foresee future possible input variables of the system and adapt proactively in order to accomplish middle and long term goals and requirements.