Rainbow: Cost-effective, Software Architecture-based Self-adaptation
Thesis Oral: Friday, April 18, 2008 @ 10 am in Wean Hall 4623
Thesis Committee Members
David Garlan, Professor (Chair)
School of Computer Science, CMU
Peter Steenkiste, Professor
Departments of Computer Science and Electrical and Computer Engineering, CMU
Jonathan Aldrich, Assistant Professor
Institute for Software Research, School of Computer Science, CMU
Jeff Magee, Professor in Computing
Head of Department of Computing
Imperial College London
rev. 2008.05.10: Final thesis
rev. 2008.04.11: Updated full draft
rev. 2008.04.03: Full draft submitted to committee
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.
<<Hits: execution failed [Argument "all" must be a boolean value, not "views"] (see also the log)>>