Abstract
Modern software systems are expected to operate under uncertain conditions, without interruption. Possible causes of uncertainties include changes in the operational environment, dynamics in the availability of resources, and variations of user goals. The aim of self-adaptation is to let the system collect additional data about the uncertainties during operation. The system uses the additional data to resolve uncertainties, to reason about itself, and based on its goals to reconfigure or adjust itself to satisfy the changing conditions, or if necessary to degrade gracefully. In this chapter, we provide a particular perspective on the evolution of the field of self-adaptation in six waves. These waves put complementary aspects of engineering self-adaptive systems in focus that synergistically have contributed to the current knowledge in the field. From the presented perspective on the field, we outline a number of challenges for future research in self-adaptation, both in a short and long term.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsPreview
Unable to display preview. Download preview PDF.
References
Andersson, J., De Lemos, R., Malek, S., Weyns, D.: Modelling dimensions of self-adaptive software systems. In: Software Engineering for Self-adaptive Systems. Lecture Notes in Computer Science, vol. 5525. Springer, Berlin (2009)
Andersson, J., de Lemos, R., Malek, S., Weyns, D.: Reflecting on self-adaptive software systems. In: Software Engineering for Adaptive and Self-Managing Systems, SEAMS ’09. IEEE Computer Society, Washington (2009)
Baldauf, M., Dustdar, S., Rosenberg, F.: A survey on context-aware systems. Int. J. Ad Hoc Ubiquit. Comput. 2(4), 263–277 (2007)
Baresi, L., Ghezzi, C.: The disappearing boundary between development-time and run-time. In: Workshop on Future of Software Engineering Research, FoSER ’10. ACM, New York (2010)
Baresi, L., Pasquale, L., Spoletini, P.: Fuzzy goals for requirements-driven adaptation. In: International Requirements Engineering Conference, RE ’10. IEEE Computer Society, Washington (2010)
Bencomo, N., Belaggoun, A.: Supporting decision-making for self-adaptive systems: from goal models to dynamic decision networks. In: International Working Conference on Requirements Engineering: Foundation for Software Quality, REFSQ ’13. Springer, Berlin (2013)
Blair, G., Bencomo, N., France, R.B.: Models@run.time. Computer 42(10), 22–27 (2009)
Bojke, L., Claxton, K., Sculpher, M., Palmer, S.: Characterizing structural uncertainty in decision analytic models: a review and application of methods. Value Health 12(5), 739–749 (2009)
Brun, Y.: Improving impact of self-adaptation and self-management research through evaluation methodology. In: Software Engineering for Adaptive and Self-managing Systems, SEAMS ’10. ACM, New York (2010)
Brun, Y., Marzo Serugendo, G., Gacek, C., Giese, H., Kienle, H., Litoiu, M., Müller, H., Pezzè, M., Shaw, M.: Engineering self-adaptive systems through feedback loops. In: Software Engineering for Self-adaptive Systems, pp. 48–70. Springer, Berlin (2009)
Bures, T., Weyns, D., Berger, C., Biffl, S., Daun, M., Gabor, T., Garlan, D., Gerostathopoulos, I., Julien, C., Krikava, F., Mordinyi, R., Pronios, N.: Software engineering for smart cyber-physical systems – towards a research agenda. SIGSOFT Softw. Eng. Notes 40(6), 28–32 (2015)
Cachin, C.: Architecture of the Hyperledger Blockchain Fabric. IBM Research, Zurich (2016)
Calinescu, R., Grunske, L., Kwiatkowska, M., Mirandola, R., Tamburrelli, G.: Dynamic QoS management and optimization in service-based systems. IEEE Trans. Softw. Eng. 37(3), 387–409 (2011)
Calinescu, R., Gerasimou, S., Banks, A.: Self-adaptive software with decentralised control loops. In: International Conference on Fundamental Approaches to Software Engineering, FASE ’15. Springer, Berlin (2015)
Cámara, J., Correia, P., De Lemos, R., Garlan, D., Gomes, P., Schmerl, B., Ventura, R.: Evolving an adaptive industrial software system to use architecture-based self-adaptation. In: Proceedings of the 8th International Symposium on Software Engineering for Adaptive and Self-Managing Systems, SEAMS ’13, pp. 13–22. IEEE Press, Piscataway (2013)
Cheng, S., Garlan, D.: Stitch: a language for architecture-based self-adaptation. J. Syst. Softw. 85(12), 2860–2875 (2012)
Cheng, B., de Lemos, R., Giese, H., Inverardi, P., Magee, J., Andersson, J., Becker, B., Bencomo, N., Brun, Y., Cukic, B., Di Marzo Serugendo, G., Dustdar, S., Finkelstein, A., Gacek, C., Geihs, K., Grassi, V., Karsai, G., Kienle, H., Kramer, J., Litoiu, M., Malek, S., Mirandola, R., Müller, H., Park, S., Shaw, M., Tichy, M., Tivoli, M., Weyns, D., Whittle, J.: Software Engineering for Self-adaptive Systems: A Research Roadmap. Lecture Notes in Computer Science, vol. 5525. Springer, Berlin (2009)
Cheng, B., Sawyer, P., Bencomo, N., Whittle, J.: A goal-based modelling approach to develop requirements of an adaptive system with environmental uncertainty. In: International Conference on Model Driven Engineering Languages and Systems, MODELS ’09. Springer, Berlin (2009)
Croman, K., Decker, C., Eyal, I., Gencer, A.E., Juels, A., Kosba, A., Miller, A., Saxena, P., Shi, E., Gün Sirer, E., Song, D., Wattenhofer, R.: On scaling decentralized blockchains. In: Clark, J., Meiklejohn, S., Ryan, P.Y.A., Wallach, D., Brenner, M., Rohloff, K. (eds.) Financial Cryptography and Data Security. Springer, Berlin (2016)
da Silva, C.E., da Silva, J.D.S., Paterson, C., Calinescu, R.: Self-adaptive role-based access control for business processes. In: Proceedings of the 12th International Symposium on Software Engineering for Adaptive and Self-managing Systems, SEAMS ’17, pp. 193–203. IEEE Press, Piscataway (2017)
de Lemos, R., Giese, H., Müller, H., Shaw, M., Andersson, J., Litoiu, M., Schmerl, B., Tamura, G., Villegas, N., Vogel, T., Weyns, D., Baresi, L., Becker, B., Bencomo, N., Brun, Y., Cukic, B., Desmarais, R., Dustdar, S., Engels, G., Geihs, K., Göschka, K., Gorla, A., Grassi, V., Inverardi, P., Karsai, G., Kramer, J., Lopes, A., Magee, J., Malek, S., Mankovskii, S., Mirandola, R., Mylopoulos, J., Nierstrasz, O., Pezzè, M., Prehofer, C., Schäfer, W., Schlichting, R., Smith, D., Sousa, J., Tahvildari, L., Wong, K., Wuttke, J.: Software Engineering for Self-adaptive Systems: A Second Research Roadmap. Lecture Notes in Computer Science, vol. 7475. Springer, Heidelberg (2013)
de Lemos, R., Garlan, D., Ghezzi, C., Giese, H., Andersson, J., Litoiu, M., Schmerl, B., Weyns, D., Baresi, L., Bencomo, N., Brun, Y., Camara, J., Calinescu, R., Chohen, M., Gorla, A., Grassi, V., Grunske, L., Inverardi, P., Jezequel, J.M., Malek, S., Mirandola, R., Mori, M., Müller, H., Rouvoy, R., Rubira, C., Rutten, E., Shaw, M., Tamburrelli, R., Tamura, G., Villegas, N., Vogel, T., Zambonelli, F.: Software Engineering for Self-adaptive Systems: Research Challenges in the Provision of Assurances. Lecture Notes in Computer Science, vol. 9640. Springer, Berlin (2017)
De Wolf, T., Holvoet, T.: Emergence versus Self-organisation: different concepts but promising when combined. In: Engineering Self-organising Systems: Methodologies and Applications, pp. 1–15. Springer, Berlin (2005)
Diniz, P.C., Rinard, M.C.: Dynamic feedback: an effective technique for adaptive computing. In: Conference on Programming Language Design and Implementation, PLDI ’97. ACM, New York (1997)
Dustdar, S., Nastic, S., Scekic, O.: A novel vision of cyber-human smart city. In: 2016 Fourth IEEE Workshop on Hot Topics in Web Systems and Technologies (HotWeb), pp. 42–47 (2016)
Edwards, G., Garcia, J., Tajalli, H., Popescu, D., Medvidovic, N., Sukhatme, G., Petrus, B.: Architecture-driven self-adaptation and self-management in robotics systems. In: Software Engineering for Adaptive and Self-managing Systems, SEAMS ’09. IEEE, Piscataway (2009)
Esfahani, N., Malek, S.: Uncertainty in self-adaptive software systems. In: Software Engineering for Self-adaptive Systems II, pp. 214–238. Springer, Berlin (2013)
Filieri, A., Hoffmann, H., Maggio, M.: Automated design of self-adaptive software with control-theoretical formal guarantees. In: International Conference on Software Engineering, ICSE ’14. ACM, New York (2014)
Filieri, A., Hoffmann, H., Maggio, M.: Automated multi-objective control for self-adaptive software design. In: Joint Meeting on Foundations of Software Engineering, ESEC/FSE ’15. ACM, New York (2015)
Garlan, D., Cheng, S., Huang, A., Schmerl, B., Steenkiste, P.: Rainbow: architecture-based self-adaptation with reusable infrastructure. Computer 37(10), 46–54 (2004)
Gil, D., Weyns, D.: MAPE-K formal templates to rigorously design behaviors for self-adaptive systems. ACM Trans. Auton. Adapt. Syst. 10(3), 15:1–15:31 (2015)
Hakansson, A.: Artificial intelligence in smart sustainable societies. In: Software Technology Exchange Workshop, STEW. Swedsoft, Sweden (2017)
Harman, M.: The role of artificial intelligence in software engineering. In: Realizing AI Synergies in Software Engineering, RAISE ’12. IEEE Press, Piscataway (2012)
Hellerstein, J., Diao, Y., Parekh, S., Tilbury, D.: Feedback Control of Computing Systems. Wiley, Hoboken (2004)
Herlihy, M.: Blockchains from a Distributed Computing Perspective. Brown University (2018)
IBM Corporation: An Architectural Blueprint for Autonomic Computing. IBM White Paper (2003). http://www-03.ibm.com/autonomic/pdfs/, AC Blueprint White Paper V7.pdf (Last Accessed Jan 2017)
Iftikhar, U., Weyns, D.: ActivFORMS: active formal models for self-adaptation. In: Software Engineering for Adaptive and Self-managing Systems, SEAMS ’14. ACM, New York (2014)
Jackson, M.: The meaning of requirements. Ann. Softw. Eng. 3, 5–21 (1997)
Kephart, J., Chess, D.: The vision of autonomic computing. Computer 36(1), 41–50 (2003)
Kramer, J., Magee, J.: The evolving philosophers problem: dynamic change management. IEEE Trans. Softw. Eng. 16(11), 1293–1306 (1990)
Kramer, J., Magee, J.: Self-managed systems: an architectural challenge. In: Future of Software Engineering, FOSE ’07. IEEE Computer Society, Washington (2007)
Kwiatkowska, M., Norman, G., Parker, D.: Probabilistic symbolic model checking with prism: a hybrid approach. In: Tools and Algorithms for the Construction and Analysis of Systems, TACAS ’02. Springer, Berlin (2002)
Mahdavi-Hezavehi, S., Avgeriou, P., Weyns, D.: A classification of current architecture-based approaches tackling uncertainty in self-adaptive systems with multiple requirements. In: Managing Trade-offs in Adaptable Software Architectures. Elsevier, New York (2016)
Morin, B., Barais, O., Jezequel, J.M., Fleurey, F., Solberg, A.: Models at runtime to support dynamic adaptation. IEEE Comput. 42(10), 44–51 (2009)
Naur, P., Randell, B.: Software Engineering: Report of a Conference Sponsored by the NATO Science Committee. Brussels, Scientific Affairs Division, NATO, Brussels (1968)
Norvig, P.: Artificial Intelligence in the Software Engineering Workflow. Google, Mountain View (2017). See: https://www.youtube.com/watch?v=mJHvE2JLN3Q and https://www.youtube.com/watch?v=FmHLpraT-XY
Oreizy, P., Medvidovic, N., Taylor, R.: Architecture-based runtime software evolution. In: International Conference on Software Engineering, ICSE ’98. IEEE Computer Society, Washington (1998)
Ortiz, Ó., García, A.B., Capilla, R., Bosch, J., Hinchey, M.: Runtime variability for dynamic reconfiguration in wireless sensor network product lines. In: 16th International Software Product Line Conference - Volume 2. ACM, New York (2012)
Patikirikorala, T., Colman, A., Han, J., Liuping, W.: A systematic survey on the design of self-adaptive software systems using control engineering approaches. In: Software Engineering for Adaptive and Self-managing Systems, SEAMS ’12 (2012)
Perez-Palacin, D., Mirandola, R.: Uncertainties in the modelling of self-adaptive systems: a taxonomy and an example of availability evaluation. In: International Conference on Performance Engineering, ICPE ’14 (2014)
Redwine, S., Riddle, W.: Software technology maturation. In: International Conference on Software Engineering, ICSE ’85. IEEE Computer Society Press, Washington (1985)
Salehie, M., Tahvildari, L.: Self-adaptive software: landscape and research challenges. Trans. Auton. Adaptive Syst. 4, 14:1–14:42 (2009)
Shevtsov, S., Weyns, D.: Keep it SIMPLEX: satisfying multiple goals with guarantees in control-based self-adaptive systems. In: International Symposium on the Foundations of Software Engineering, FSE ’16 (2016)
Shevtsov, S., Berekmeri, M., Weyns, D., Maggio, M.: Control-theoretical software adaptation: a systematic literature review. IEEE Trans. Softw. Eng. 44(8), 784–810 (2017)
Silva Souza, V., Lapouchnian, A., Robinson, W., Mylopoulos, J.: Awareness requirements for adaptive systems. In: Software Engineering for Adaptive and Self-managing Systems, SEAMS ’11. ACM, New York (2011)
Silva Souza, V., Lapouchnian, A., Angelopoulos, K., Mylopoulos, J.: Requirements-driven software evolution. Comput. Sci. Res. Dev. 28(4), 311–329 (2013)
van Lamsweerde, A., Darimont, R., Letier, E.: Managing conflicts in goal-driven requirements engineering. IEEE Trans. Softw. Eng. 24(11), 908–926 (1998)
Vogel, T., Giese, H.: Model-driven engineering of self-adaptive software with EUREMA. ACM Trans. Auton. Adaptive Syst. 8(4), 18:1–18:33 (2014)
Weyns, D., Ahmad, T.: Claims and Evidence for Architecture-Based Self-adaptation: A Systematic Literature Review, pp. 249–265. Springer, Berlin (2013)
Weyns, D., Calinescu, R.: Tele assistance: a self-adaptive service-based system examplar. In: Proceedings of the 10th International Symposium on Software Engineering for Adaptive and Self-managing Systems, SEAMS ’15, pp. 88–92. IEEE Press, Piscataway (2015)
Weyns, D., Malek, S., Andersson, J.: FORMS: unifying reference model for formal specification of distributed self-adaptive systems. ACM Trans. Auton. Adaptive Syst. 7(1), 8:1–8:61 (2012)
Weyns, D., Iftikhar, U., Söderlund, J.: Do external feedback loops improve the design of self-adaptive systems? A controlled experiment. In: International Symposium on Software Engineering of Self-managing and Adaptive Systems, SEAMS ’13 (2013)
Weyns, D., Schmerl, B., Grassi, V., Malek, S., Mirandola, R., Prehofer, C., Wuttke, J., Andersson, J., Giese, H., Göschka, K.: On patterns for decentralized control in self-adaptive systems. In: Software Engineering for Self-adaptive Systems II, pp. 76–107. Springer, Berlin (2013)
Weyns, D., Bencomo, N., Calinescu, R., Cámara, J., Ghezzi, C., Grassi, V., Grunske, L., Inverardi, P., Jezequel, J.M., Malek, S., Mirandola, R., Mori, M., Tamburrelli, G.: Perpetual assurances in self-adaptive systems. In: Software Engineering for Self-adaptive Systems. Lecture Notes in Computer Science, vol. 9640. Springer, Berlin (2016)
Weyns, D., Usman Iftikhar, M., Hughes, D., Matthys, N.: Applying architecture-based adaptation to automate the management of internet-of-things. In: European Conference on Software Architecture. Lecture Notes in Computer Science. Springer, Berlin (2018)
Whittle, J., Sawyer, P., Bencomo, N., Cheng, B., Bruel, J.M.: RELAX: incorporating uncertainty into the specification of self-adaptive systems. In: IEEE International Requirements Engineering Conference, RE’09. IEEE Computer Society, Washington (2009)
Acknowledgements
I am grateful to Sungdeok Cha, Kenji Tei, Nelly Bencomo, Vitor Souza, Usman Iftikhar, Stepan Shevtsov, and Dimitri Van Landuyt for the invaluable feedback they provided on earlier versions of this chapter. I thank the editors of the book to which this chapter belongs for their support. Finally, I thank Springer.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2019 Springer Nature Switzerland AG
About this chapter
Cite this chapter
Weyns, D. (2019). Software Engineering of Self-adaptive Systems. In: Cha, S., Taylor, R., Kang, K. (eds) Handbook of Software Engineering. Springer, Cham. https://doi.org/10.1007/978-3-030-00262-6_11
Download citation
DOI: https://doi.org/10.1007/978-3-030-00262-6_11
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-00261-9
Online ISBN: 978-3-030-00262-6
eBook Packages: Computer ScienceComputer Science (R0)