DiVA Challenges
The unpredictability of adaptive systems makes existing software engineering techniques difficult to apply. In a traditional software development cycle all the behaviours of the system must be captured at design time while for an adaptive system the behaviour of the system has to be dynamically adapted to an evolving environment. There is a need of being able to handle the variability all along the life-cycle of an adaptive system: from the requirements elicitation and analysis to design, test and maintenance. The variability especially needs to be carefully modelled and validated. As pointed out, trustworthiness is a major concern for these kinds of systems. Three important issues in the modelling of an adaptive system are:
-
Specifying and modelling variations in adaptive systems: Modelling software variations is a challenge that has already been studied in the context of software product lines. During requirements analysis and design a set of variation points is identified to capture the required variations. Then, sets of variants are defined to implement the strategies associated with each variation point. A similar process could be applied to adaptive system modelling. However, the way variation is used in the context of product lines and for an adaptive system is different. For product lines a particular set of variants is chosen at compile-time (or at deployment-time) whereas for an adaptive system variations have to be available and managed also at runtime.
-
Managing the variant explosion in adaptive systems: Another challenging issue is the explosion of the number of potential variants with each new variability dimension. One approach is to pre-calculate the properties of each potential variant and thereby be ready to select the most appropriate one when the context changes occur. Another approach is to determine only the variability dimensions and their properties and dependencies, and do the calculation of properties at deployment-time. Obviously such calculations take some time, so trade-offs have to be made between performance and the possibility to select from all possible variants.
- Dealing with the co-existing, co-dependent configurations: An adaptive system in a heterogeneous environment involves explicit or implicit co-existing, co-dependent configurations that often include pre-existing or even third party software components. The running system is nevertheless supposed to be able to expose its ability to be dynamically adapted to changing conditions in the real world. Techniques for addressing dynamic variability not only need to incorporate support for modelling such evolving co-existing, co-dependent configurations but also the ability to choose optimal adaptation paths in the presence of such configurations. Furthermore, reasoning about emergent behaviour resulting from the physical and social context in which multiple, co-dependent configurations must be deployed needs to be supported.