Skip to content The Open University

Engineering Adaptive Software Systems: A Requirements Engineering Perspective

Our work on software adaptation is founded on the premise that software adapts when it fails to meet its requirements or when its requirements say so. Our framework assumes that requirements are (stakeholder) goals and generally have many solutions, each consisting of a specification (of system behaviour). A system can't be adaptive unless it operationalizes several of these behaviours. Adaptation takes place when one or more requirements fail. Adaptation amounts to having the system switch from one behaviour to another, with an expectation that the new behaviour will work better. Adaptation is driven by an {em adaptation mechanism} that takes into account the failures-at-hand (divergence from requirements), and picks an alternative behaviour among those available by exploiting qualitative relations between alternative behaviours and requirements. There are two classes of special requirements that determine what monitoring, analysis, planning and execution (the MAPE loop of autonomic architectures) will be realized in the adaptation mechanism. The first class consists of {em awareness requirements} that define limits on the amount of runtime failure that can be tolerated. For example, if $R =$ ``Schedule meeting", then $R' =$ ``$R$ will not fail more than $4%$ of the time during any one month period" is an awareness requirement. The second class consists of evolution requirements that define changes over time to other requirements. For instance, ``If $R$ fails, try $R^-$ instead", where $R^- = $``Schedule conference callā" is an example of an evolution requirement. Notice that evolution requirements specify what has to change, awareness requirements do not. It is important to distinguish between adaptation and evolution of software systems, just as biology has done for biological systems. In biology, individuals adapt and species evolve,both to survive. Adaptation involves switching to an alternative behaviour, evolution involves changing the genetic makeup/blueprint and physical structure of a species. By analogy, we say that a particular software system (e.g., the MacOS running on my machine) adapts if it switches at run-time to an alternative behaviour. A software system (the MacOS sold by Apple in September 2013) constitutes a species and evolves if its requirements change and the system architecture, implementation, etc. change in accordance. Software individuals adapt, software species evolve. Evolution entails requirements changes, adaptation entails no changes to requirements. Evolution mechanisms are very different from adaptation ones, and are much harder to come by. The results of our work on adaptive software systems can be found in three PhD theses: Vitor Souza's work [Souza12] focused on the design of feedback loops and proposed many of the concepts mentioned above. Yiqiao Wang's thesis [Wang09] concentrated on monitoring and analysis (diagnosis), while Fabiano Dalpiaz's work [Dalpiaz11] looked at adaptive systems as multi-agent systems. Two other theses have explored the notion of variability in goal-oriented requirements models and served as useful starting points for our work on adaptation mechanisms: Sotirios Liaskos [Liaskos08] and Alexei Lapouchnian [Lapouchnian10]. Finally, the notion of requirements evolution is explored in the thesis of Neil Ernst [Ernst11]. For each of these theses there have been several publications.

References

[Liaskos08] Sotirios Liaskos, "Acquiring and Reasoning about Variability in Goal Models", PhD dissertation, Department of Computer Science, University of Toronto, June 2008.
[Wang09] Yiqiao Wang, "Monitoring and Diagnosis for Autonomic Systems: A Requirements Engineering Approach", PhD dissertation, Department of Computer Science, University of Toronto, November 2009.
[Jiang09] Lei Jiang, "Data Quality By Design: A Goal-Oriented Approach", PhD dissertation, Department of Computer Science, University of Toronto, December 2009.
[Lapouchnian10] Alexei Lapouchnian, "Exploiting Requirements Variability for Software Customization and Adaptation", PhD dissertation, Department of Computer Science, University of Toronto, November 2010.
[Dalpiaz11] Fabiano Dalpiaz, "Exploiting Contextual and Social Variability for Software Adaptation", PhD dissertation, Department of Information Engineering and Computer Science (DISI), University of Trento, January 2011.
[Ernst11] Neil Alexander Ernst, "Software Evolution: A Requirements Engineering Approach", PhD dissertation, Department of Computer Science, University of Toronto, December 2011.
[Souza12] Vitor E. Silva Souza, "Requirements-based Software System Adaptation", PhD dissertation, Department of Information Engineering and Computer Science (DISI), University of Trento, June 2012.