Self-adaptive systems are computer programs that can react and reconfigure themselves, minimising human intervention and ideally ensuring lifelong fulfilment of users' requirements. However, in current software engineering paradigms, systems do not anticipate events, but only react accordingly to them. Lacking the capability to anticipate changes may lead to software downtime. The RUNMORE (Run-time model projections for software failure prediction) project contributed to the systematic development of dynamically adaptive systems that can automatically predict events and avoid potential failures. Researchers used a novel concept involving run-time models that endow the software systems with powerful reasoning capabilities about potential changes and the ability to manage them. Stemming from model-driven development software technologies, run-time models are embedded within the system during its execution and express adaptation rules. The focus was on investigating how these models can be used to monitor and analyse the behaviour of complex software systems, their deployment environment and their users. The team also offered a solution that resolves conflicts amongst multiple requirements during the adaptation process. A typical example of adaptive systems is web applications that improve the browsing experience by adapting their content and behaviour to a user's preferences. Based on this example, researchers demonstrated how to adapt server broadcast rules according to client demands. In environments where large flows of events are being processed, complex event processing (CEP) can identify meaningful data and respond to them as quickly as possible. Researchers found a novel framework that can learn CEP rules by mining patterns from historical traces of events. This finding may enable the development of a novel class of software systems that can learn complex rules, assisting them in reconfiguring themselves and adapting to changes. Researchers' work contributed to improving software behaviour over time by collecting information about changes in its environment and users' requirements. These self-adaptive systems do not only automatically deal with changes, they can also anticipate them.
Software, self-adaptive systems, run-time model, failure prediction, complex event processing