Modern, complex software systems (e-commerce, IT, critical infrastructures, etc.) are increasingly required to continue operation in the face of change, to self-adapt to accommodate shifting user priorities, resource variability, changing environments, and component failures. While manual oversight benefits from global problem contexts and flexible policies, human operators are costly and prone to error. Low-level, embedded mechanisms (exceptions, time-outs, etc.) are effective and timely for error recovery, but are local in scope to the point-of-failure, application-specific, and costly to modify when adaptation objectives change. An ideal solution leverages domain expertise, provides an end-to-end system perspective, adapts the system in a timely manner, and can be engineered cost-effectively.
Architecture-based self-adaptation closes the “loop of control,” using external mechanisms and the architecture model of the target system to adapt the system. An architecture model exposes important system properties and constraints, provides end-to-end problem contexts, and allows principled and automated adaptations. Existing architecture-based approaches specialize support for particular classes of systems and fixed sets of quality-of-service concerns; they are costly to develop for new systems and to evolve for new qualities. To overcome these limitations, we posit this thesis:
We can provide software engineers the ability to add and evolve self-adaptation capabilities cost-effectively, for a wide range of software systems, and for multiple objectives, by defining a self-adaptation framework that factors out common adaptation mechanisms and provides explicit customization points to tailor self-adaptation capabilities for particular classes of systems, for multiple quality-of-service objectives.
Our approach, embodied in a system called Rainbow, provides an engineering approach and a framework of mechanisms to monitor a target system and its environment, reflect observations into the system's architecture model, detect opportunities for improvements, select a course of action, and effect changes. The framework provides general and reusable infrastructures with well-defined customization points, a set of abstractions, and an adaptation engineering process, focusing engineers on adaptation concerns to systematically customize Rainbow to particular systems. To automate system self-adaptation, Rainbow provides a language, called Stitch, to represent routine human adaptation knowledge using a core set of adaptation concepts.
Cited By
- Pfannemüller M, Breitbach M, Weckesser M, Becker C, Schmerl B, Schürr A and Krupitzer C (2021). REACT-ION: A Model-based Runtime Environment for Situation-aware Adaptations, ACM Transactions on Autonomous and Adaptive Systems, 15:4, (1-29), Online publication date: 31-Dec-2021.
- Eberhardinger B, Habermaier A and Reif W Toward adaptive, self-aware test automation Proceedings of the 12th International Workshop on Automation of Software Testing, (34-37)
- Han D, Yang Q, Xing J, Li J and Wang H (2016). FAME, Information and Software Technology, 76:C, (118-134), Online publication date: 1-Aug-2016.
- Cámara J, Correia P, de Lemos R, Garlan D, Gomes P, Schmerl B and Ventura R (2016). Incorporating architecture-based self-adaptation into an adaptive industrial software system, Journal of Systems and Software, 122:C, (507-523), Online publication date: 1-Dec-2016.
- Su G, Chen T, Feng Y, Rosenblum D and Thiagarajan P An Iterative Decision-Making Scheme for Markov Decision Processes and Its Application to Self-adaptive Systems Proceedings of the 19th International Conference on Fundamental Approaches to Software Engineering - Volume 9633, (269-286)
- Schmerl B, Gennari J, Cámara J and Garlan D Raindroid Proceedings of the Symposium and Bootcamp on the Science of Security, (115-117)
- Schmerl B, Cámara J, Gennari J, Garlan D, Casanova P, Moreno G, Glazier T and Barnes J Architecture-based self-protection Proceedings of the 2014 Symposium and Bootcamp on the Science of Security, (1-12)
- Swanson J, Cohen M, Dwyer M, Garvin B and Firestone J Beyond the rainbow: self-adaptive failure avoidance in configurable systems Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering, (377-388)
- Yang Q, Tao X, Xie H, Xing J and Song W FuAET: a tool for developing fuzzy self-adaptive software systems Proceedings of the 6th Asia-Pacific Symposium on Internetware, (54-63)
- Gao Y, Lin M and Wang R (2018). Adaptive support framework for wisdom web of things, World Wide Web, 16:4, (379-398), Online publication date: 1-Jul-2013.
- Sykes D, Corapi D, Magee J, Kramer J, Russo A and Inoue K Learning revised models for planning in adaptive systems Proceedings of the 2013 International Conference on Software Engineering, (63-71)
- Cámara J, Correia P, de Lemos R, Garlan D, Gomes P, Schmerl B and Ventura R Evolving an adaptive industrial software system to use architecture-based self-adaptation Proceedings of the 8th International Symposium on Software Engineering for Adaptive and Self-Managing Systems, (13-22)
- Angelopoulos K, Souza V and Pimentel J Requirements and architectural approaches to adaptive software systems Proceedings of the 8th International Symposium on Software Engineering for Adaptive and Self-Managing Systems, (23-32)
- Cámara J and de Lemos R Evaluation of resilience in self-adaptive systems using probabilistic model-checking Proceedings of the 7th International Symposium on Software Engineering for Adaptive and Self-Managing Systems, (53-62)
- Tajalli H and Medvidović N A reference architecture for integrated development and run-time environments Proceedings of the Second International Workshop on Developing Tools as Plug-Ins, (19-24)
- Luckey M, Nagel B, Gerth C and Engels G Adapt cases Proceedings of the 6th International Symposium on Software Engineering for Adaptive and Self-Managing Systems, (30-39)
- Sykes D, Magee J and Kramer J FlashMob Proceedings of the 6th International Symposium on Software Engineering for Adaptive and Self-Managing Systems, (100-109)
- Vogel T and Giese H Requirements and assessment of languages and frameworks for adaptation models Proceedings of the 2011th international conference on Models in Software Engineering, (167-182)
- Krishnamurthy V and Babu C Effective self adaptation by integrating adaptive framework with architectural patterns Proceedings of the 1st Amrita ACM-W Celebration on Women in Computing in India, (1-4)
- Garlan D Software engineering in an uncertain world Proceedings of the FSE/SDP workshop on Future of software engineering research, (125-128)
- Yang Q, Lü J, Li J, Ma X, Song W and Zou Y Toward a fuzzy control-based approach to design of self-adaptive software Proceedings of the Second Asia-Pacific Symposium on Internetware, (1-4)
- Petrucci V, Loques O and Mossé D A framework for dynamic adaptation of power-aware server clusters Proceedings of the 2009 ACM symposium on Applied Computing, (1034-1039)
- Raheja R, Cheng S, Garlan D and Schmerl B Improving architecture-based self-adaptation using preemption Proceedings of the First international conference on Self-organizing architectures, (21-37)
- Haesevoets, R, Truyen E, Holvoet T and Joosen W Weaving the fabric of the control loop through aspects Proceedings of the First international conference on Self-organizing architectures, (38-65)
Recommendations
Rainbow: Architecture-Based Self-Adaptation with Reusable Infrastructure
ICAC '04: Proceedings of the First International Conference on Autonomic ComputingSoftware-based systems today are increasingly expected to dynamically self-adapt to accommodate resource variability, changing user needs, and system faults. Recent work uses closed-loop control based on external models to monitor and adapt system ...
Rainbow: Architecture-Based Self-Adaptation with Reusable Infrastructure
Software-based systems today operate in changing environments and are subject to increasing administrative overhead. To reduce these costs, systems must dynamically self-adapt to accommodate resource variability, user needs, and system faults. The ...
Evaluating the effectiveness of the Rainbow self-adaptive system
SEAMS '09: Proceedings of the 2009 ICSE Workshop on Software Engineering for Adaptive and Self-Managing SystemsRainbow is a framework for engineering a system with run-time, self-adaptive capabilities to monitor, detect, decide, and act on opportunities for system improvement. We applied Rainbow to a system, Znn.com, and evaluated its effectiveness to self-adapt ...