Using variability modelling and design patterns for self-adaptive system engineering: application to smart-home

Adaptability is an increasingly important requirement for many systems, in particular for those that are deployed in dynamically changing environments. The purpose is to let the systems react and adapt autonomously to changing executing conditions without human intervention. Due to the large number of variability decisions e.g., user needs, environment characteristics and the current lack of reusable adaptation expertise, it becomes increasingly difficult to build a system that satisfies all the requirements and constraints that might arise during its lifetime. In this paper, we propose an approach for developing policies for self-adaptive systems at multiple levels of abstraction. This approach is the first that allows the combination of variability with feature model and reusability with design pattern into a single solution for product derivation that gives strong support to develop self-adaptive systems in a modular way. We demonstrate the feasibility of the proposed approach with a use case based on a smart home scenario.

[1]  Gordon S. Blair,et al.  Using Architecture Models to Support the Generation and Operation of Component-Based Adaptive Systems , 2009, Software Engineering for Self-Adaptive Systems.

[2]  Hassan Gomaa,et al.  Software reconfiguration patterns for dynamic evolution of software architectures , 2004, Proceedings. Fourth Working IEEE/IFIP Conference on Software Architecture (WICSA 2004).

[3]  Frank Eliassen,et al.  MUSIC: Middleware Support for Self-Adaptation in Ubiquitous and Service-Oriented Environments , 2009, Software Engineering for Self-Adaptive Systems.

[4]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[5]  Carlos José Pereira de Lucena,et al.  Composing design patterns: a scalability study of aspect-oriented programming , 2006, AOSD '06.

[6]  Gregor Engels,et al.  High-quality specification of self-adaptive software systems , 2013, 2013 8th International Symposium on Software Engineering for Adaptive and Self-Managing Systems (SEAMS).

[7]  Ladan Tahvildari,et al.  StarMX: A framework for developing self-managing Java-based systems , 2009, 2009 ICSE Workshop on Software Engineering for Adaptive and Self-Managing Systems.

[8]  Krzysztof Zielinski,et al.  Rule Engine Based Lightweight Framework for Adaptive and Autonomic Computing , 2008, ICCS.

[9]  Krzysztof Czarnecki,et al.  Generative programming - methods, tools and applications , 2000 .

[10]  Linda M. Northrop,et al.  A Framework for Software Product Line Practice , 1999, ECOOP Workshops.

[11]  Romain Rouvoy,et al.  Integrating Adaptation Mechanisms Using Control Theory Centric Architecture Models: A Case Study , 2014, ICAC.

[12]  Gordon S. Blair,et al.  Genie , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[13]  Andres J. Ramirez,et al.  Design patterns for developing dynamically adaptive systems , 2010, SEAMS '10.

[14]  Frank Eliassen,et al.  Using architecture models for runtime adaptability , 2006, IEEE Software.

[15]  Yixin Diao,et al.  Feedback Control of Computing Systems , 2004 .

[16]  Carlos José Pereira de Lucena,et al.  Modularizing design patterns with aspects: a quantitative study , 2005, AOSD '05.

[17]  Sam Malek,et al.  On the Role of Features in Analyzing the Architecture of Self-Adaptive Software Systems , 2009 .

[18]  Jean-Claude Royer,et al.  Aspect-Oriented, Model-Driven Software Product Lines: The AMPLE Way , 2011 .

[19]  Jan Bosch,et al.  A taxonomy of variability realization techniques , 2005, Softw. Pract. Exp..

[20]  Jack Greenfield,et al.  Software factories: assembling applications with patterns, models, frameworks and tools , 2004, OOPSLA '03.

[21]  Vishnuvardhan Mannava,et al.  Multimodal pattern-oriented software architecture for self-optimization and self-configuration in autonomic computing system using multi objective evolutionary algorithms , 2012, ICACCI '12.

[22]  Michael Katchabaw,et al.  Software design patterns for enabling auto dynamic difficulty in video games , 2012, 2012 17th International Conference on Computer Games (CGAMES).

[23]  Krzysztof Czarnecki,et al.  Formalizing cardinality-based feature models and their specialization , 2005, Softw. Process. Improv. Pract..

[24]  Bradley R. Schmerl,et al.  Rainbow: Architecture-Based Self-Adaptation with Reusable Infrastructure , 2004, Computer.

[25]  Sam Malek,et al.  Ieee Transactions on Software Engineering 1 a Learning-based Framework for Engineering Feature-oriented Self-adaptive Software Systems , 2022 .