Managing Non-Functional Uncertainty via Model-Driven Adaptivity
Modern software systems are often characterized by uncertainty and changes in
the environment in which they are embedded.
Hence, they must be designed as adaptive systems. In this talk we discuss a
framework that supports adaptation to non-functional manifestations of uncertainty.
The proposed framework allows engineers to derive, from an initial model of the
system, a finite state automaton augmented with probabilities.
The system is then executed by an interpreter that navigates the automaton and
invokes the component implementations associated to the states it traverses.
The interpreter adapts the execution by choosing among alternative possible
paths of the automaton in order to maximize the system's ability to meet
its non-functional requirements. We also discuss the implementation of the
proposed solution and its application to an adaptive application inspired by an
existing worldwide distributed mobile application.