2010 · 149 citations · 35 references
ComputingDesignSystems EngineeringAdaptive ReuseSystems ArchitectureSystems ProgrammingSoftware DesignSoftware EvolutionAdaptive ComputingAdaptive SystemsDesign ExpertiseDesign Pattern ReuseDesign PatternsReusable Design Patterns
Increasingly, software systems should self-adapt to satisfy new requirements and environmental conditions that may arise after deployment. Due to their high complexity, adaptive programs are difficult to specify, design, verify, and validate. Moreover, the current lack of reusable design expertise that can be leveraged from one adaptive system to another further exacerbates the problem. We studied over thirty adaptation-related research and project implementations available from the literature and open sources to harvest adaptation-oriented design patterns that support the development of adaptive systems. These adaptation-oriented patterns facilitate the separate development of the functional and adaptive logic. In order to support the assurance of adaptive systems, each design pattern includes templates that formally specify invariant properties of adaptive systems. To demonstrate their usefulness, we have applied a subset of our adaptation-oriented patterns to the design and implementation of ZAP.com, an adaptive news web server.
35
The vision of autonomic computing
Jeffrey O. Kephart, David M. Chess · Computer · 2003 · 6.4K citations
Gerard J. Holzmann · IEEE Transactions on Software Engineering · 1997 · 3.8K citations
Rainbow: architecture-based self-adaptation with reusable infrastructure
David Garlan, Shang-Wen Cheng, Aixin Huang et al. · Computer · 2004 · 992 citations
Rainbow: architecture-based self-adaptation with reusable infrastructure
Shang-Wen Cheng, Ancheng C. Huang, David Garlan et al. · 2004 · 913 citations