ABSTRACT
In self-adaptive systems, an adaptation strategy can apply to several implementations of a target system. Reusing this strategy requires models of the target system that are independent of its implementation. In particular, configuration files must be transformed into abstract configurations, but correctly synchronizing these two representations is not trivial. We propose an approach that uses putback-based bidirectional programming to guarantee that this synchronization is correct by construction. We demonstrate the correctness of our approach and how it handles typical features of configuration files, such as implicit default values and context overriding. We also show that our approach can be used to migrate configuration files from one implementation to another.
We illustrate our approach with a case study, where we use the same abstract model to adapt two web server implementations. For each implementation, we provide a bidirectional program that correctly synchronizes the configuration file with an abstract model of the configuration. A first scenario demonstrates that the same changes on the abstract model produce, for each implementation, a new configuration that correctly reflects the changes made to the abstract model, without side effects. A second scenario validates the migration of a configuration file from the format used by one web server implementation to another.
- Nadeem Abbas. Towards Autonomic Software Product Lines. In Proceedings of the 15th International Software Product Line Conference (SPLC'11), Volume 2, pages 44:1--44:8. ACM, 2011. Google ScholarDigital Library
- Nadeem Abbas and Jesper Andersson. Harnessing variability in product-lines of self-adaptive software systems. In Proceedings of the 19th International Conference on Software Product Line (SPLC'15), pages 191--200. ACM, 2015. Google ScholarDigital Library
- Jesper Andersson, Rogerio de Lemos, Sam Malek, and Danny Weyns. Reflecting on self-adaptive software systems. International Workshop on Software Engineering for Adaptive and Self-Managing Systems (SEAMS'09), 0:38--47, 2009. Google ScholarDigital Library
- Konstantinos Angelopoulos, Vitor E. Silva Souza, and Joao Pimentel. Requirements and architectural approaches to adaptive software systems: A comparative study. In Proceedings of the 8th International Symposium on Software Engineering for Adaptive and Self-Managing Systems (SEAMS'13), pages 23--32. IEEE Press, 2013. Google ScholarCross Ref
- Christopher Bailey, Lionel Montrieux, Rogério de Lemos, Yijun Yu, and Michel Wermelinger. Run-time generation, transformation, and verification of access control models for self-protection. In Proceedings of the 9th International Symposium on Software Engineering for Adaptive and Self-Managing Systems (SEAMS'14), pages 135--144. ACM, 2014. Google ScholarDigital Library
- Cornel Barna, Hamoun Ghanbari, Marin Litoiu, and Mark Shtern. Hogna: A Platform for Self-Adaptive Applications in Cloud Environments. In IEEE/ACM 10th International Symposium on Software Engineering for Adaptive and Self-Managing Systems (SEAMS'15), pages 83--87. IEEE, May 2015. Google ScholarDigital Library
- Aaron Bohannon, J. Nathan Foster, Benjamin C. Pierce, Alexandre Pilkiewicz, and Alan Schmitt. Boomerang: Resourceful Lenses for String Data. In Proceedings of the 35th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL'15), POPL '08, pages 407--419. ACM, 2008. Google ScholarDigital Library
- Betty H. C. Cheng, Rogério de Lemos, Holger Giese, Paola Inverardi, Jeff Magee, Jesper Andersson, Basil Becker, Nelly Bencomo, Yuriy Brun, Bojan Cukic, Giovanna Di Marzo Serugendo, Schahram Dustdar, Anthony Finkelstein, Cristina Gacek, Kurt Geihs, Vincenzo Grassi, Gabor Karsai, Holger M. Kienle, Jeff Kramer, Marin Litoiu, Sam Malek, Raffaela Mirandola, Hausi A. Müller, Sooyong Park, Mary Shaw, Matthias Tichy, Massimo Tivoli, Danny Weyns, and Jon Whittle. Software Engineering for Self-Adaptive Systems: A Research Roadmap. In Software Engineering for Self-Adaptive Systems, number 5525 in Lecture Notes in Computer Science, pages 1--26. Springer Berlin Heidelberg, January 2009. Google ScholarDigital Library
- Krzysztof Czarnecki, Nathan Foster, Zhenjiang Hu, Ralf Lämmel, Andy Schürr, and James Terwilliger. Bidirectional Transformations: A Cross-Discipline Perspective. In Theory and Practice of Model Transformations, volume 5563 of Lecture Notes in Computer Science, pages 260--283. Springer Berlin Heidelberg, 2009. Google ScholarDigital Library
- Sebastian Fischer, ZhenJiang Hu, and Hugo Pacheco. The essence of bidirectional programming. Science China Information Sciences, 58(5):1--21, May 2015.Google ScholarCross Ref
- Nathan Foster. Bidirectional programming languages. PhD thesis, University of Pennsylvania, Department of Computer and Information Science, 2010.Google Scholar
- Nathan Foster, Benjamin Pierce, and Steve Zdancewic. Updatable Security Views. In Proceedings of the Computer Security Foundations Symposium (CSF'09), pages 60--74. IEEE, July 2009. Google ScholarDigital Library
- Nathan Foster, Alexandre Pilkiewicz, and Benjamin Pierce. Quotient lenses. In ACM Sigplan Notices, volume 43, pages 383--396. ACM, 2008. Google ScholarDigital Library
- David Garlan, Shang-Wen Cheng, An-Cheng Huang, Bradley Schmerl, and Peter Steenkiste. Rainbow: Architecture-based self-adaptation with reusable infrastructure. Computer, 37(10):46--54, 2004. Google ScholarDigital Library
- John Georgas, André van der Hoek, and Richard Taylor. Architectural runtime configuration management in support of dependable self-adaptive software. In ACM SIGSOFT Software Engineering Notes, volume 30, pages 1--6. ACM, 2005. Google ScholarDigital Library
- I. B. M. Group. An architectural blueprint for autonomic computing. Technical report, IBM White paper, 2005.Google Scholar
- S. Hidaka, Zhenjiang Hu, K. Inaba, H. Kato, and K. Nakano. GRoundTram: An integrated framework for developing well-behaved bidirectional model transformations. In 2011 26th IEEE/ACM International Conference on Automated Software Engineering (ASE'11), pages 480--483, November 2011. Google ScholarDigital Library
- Zhenjiang Hu, Shin-Cheng Mu, and Masato Takeichi. A programmable editor for developing structured documents based on bidirectional transformations (pepm'04). In Proceedings of the 2004 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation, pages 178--189. ACM, 2004. Google ScholarDigital Library
- Cristian Klein, Martina Maggio, Karl-Erik Arzén, and Francisco Hernández-Rodriguez. Brownout: building more robust cloud applications. In Proceedings of the 36th International Conference on Software Engineering (ICSE'14), pages 700--711. ACM, 2014. Google ScholarDigital Library
- Hsiang-Shang Ko, Tao Zan, and Zhenjiang Hu. BiGUL: A Formally Verified Core Language for Putback-based Bidirectional Programming. In Proceedings of the 2016 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation (PEPM'16), pages 61--72. ACM, 2016. Google ScholarDigital Library
- Andres Ramirez and Betty Cheng. Design patterns for developing dynamically adaptive systems. In Proceedings of the 2010 ICSE Workshop on Software Engineering for Adaptive and Self-Managing Systems (SEAMS'10), pages 49--58. ACM Press, 2010. Google ScholarDigital Library
- Hui Song, Gang Huang, Franck Chauvel, Yingfei Xiong, Zhenjiang Hu, Yanchun Sun, and Hong Mei. Supporting runtime software architecture: A bidirectional-transformation-based approach. Journal of Systems and Software, 84(5):711--723, 2011. Google ScholarDigital Library
- Jacob Swanson, Myra Cohen, Matthew Dwyer, Brady Garvin, and Justin Firestone. Beyond the rainbow: self-adaptive failure avoidance in configurable systems. In Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering (FSE'14), pages 377--388, 2014. Google ScholarDigital Library
- Thomas Vogel and Holger Giese. Adaptation and abstract runtime models. In Proceedings of the 2010 ICSE Workshop on Software Engineering for Adaptive and Self-Managing Systems (SEAMS'10), pages 39--48. ACM, 2010. Google ScholarDigital Library
- Thomas Vogel and Holger Giese. Model-Driven Engineering of Self-Adaptive Software with EUREMA. ACM Transactions on Autonomous and Adaptive Systems, 8(4):1--33, January 2014. Google ScholarDigital Library
- Thomas Vogel, Stefan Neumann, Stephan Hildebrandt, Holger Giese, and Basil Becker. Incremental model synchronization for efficient run-time monitoring. In Models in Software Engineering, pages 124--139. Springer, 2010. Google ScholarDigital Library
- Yingfei Xiong, Dongxi Liu, Zhenjiang Hu, Haiyan Zhao, Masato Takeichi, and Hong Mei. Towards automatic model synchronization from model transformations. In Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering (ASE'07), pages 164--173. ACM, 2007. Google ScholarDigital Library
- Yingfei Xiong, Hui Song, Zhenjiang Hu, and Masato Takeichi. Supporting parallel updates with bidirectional model transformations. In Theory and Practice of Model Transformations, pages 213--228. Springer, 2009. Google ScholarDigital Library
- Yijun Yu, Yu Lin, Zhenjiang Hu, Soichiro Hidaka, Hiroyuki Kato, and Lionel Montrieux. Maintaining invariant traceability through bidirectional transformations. In Proceedings of the 34th International Conference on Software Engineering (ICSE'12), pages 540--550. IEEE Press, 2012. Google ScholarDigital Library
Index Terms
- Reusable self-adaptation through bidirectional programming
Recommendations
Dealing with Drift of Adaptation Spaces in Learning-based Self-Adaptive Systems Using Lifelong Self-Adaptation
Recently, machine learning (ML) has become a popular approach to support self-adaptation. ML has been used to deal with several problems in self-adaptation, such as maintaining an up-to-date runtime model under uncertainty and scalable decision-making. ...
Applicative bidirectional programming with lenses
ICFP '15A bidirectional transformation is a pair of mappings between source and view data objects, one in each direction. When the view is modified, the source is updated accordingly with respect to some laws. One way to reduce the development and maintenance ...
Improving architecture-based self-adaptation using preemption
SOAR'09: Proceedings of the First international conference on Self-organizing architecturesOne common approach to self-adaptive systems is to incorporate a control layer that monitors a system, supervisorily detects problems, and applies adaptation strategies to fix problems or improve system behavior. While such approaches have been found to ...
Comments