ARCHITECTURAL STABILITY of SELF-ADAPTIVE SOFTWARE SYSTEMS By
Total Page:16
File Type:pdf, Size:1020Kb
ARCHITECTURAL STABILITY OF SELF-ADAPTIVE SOFTWARE SYSTEMS by MARIA MOURAD EBEID MELEKA SALAMA A thesis submitted to The University of Birmingham for the degree of DOCTOR OF PHILOSOPHY School of Computer Science College of Engineering and Physical Sciences The University of Birmingham July 2018 University of Birmingham Research Archive e-theses repository This unpublished thesis/dissertation is copyright of the author and/or third parties. The intellectual property rights of the author or third parties in respect of this work are as defined by The Copyright Designs and Patents Act 1988 or as modified by any successor legislation. Any use made of information contained in this thesis/dissertation must be in accordance with that legislation and must be properly acknowledged. Further distribution or reproduction in any format is prohibited without the permission of the copyright holder. Abstract Stakeholders and organisations are increasingly interested in software longevity, given the increasing dependence on software systems. Stability is a long-term property of utmost strategic importance for any software system throughout its whole lifecycle, from design and implementation to actual operation, management, maintenance and evolution. A system, if engineered and developed with stability in mind, can provide a good basis for supporting runtime operation, technical changes and cost-effective maintenance and evolution. As architectures have a profound effect on the operational lifetime of the software and the quality of service provision, architectural stability could be considered a primary criterion towards achieving the longevity of the software. This thesis studies the notion of stability in software engineering with the aim of understanding its dimensions, facets and aspects, as well as characterising it. The thesis further investigates the aspect of behavioural stability at the architectural level, as a property concerned with the architecture's capability in maintaining the achievement of expected quality of service and accommodating runtime changes, in order to delay the architecture drifting and phasing-out as a consequence of the continuous unsuccessful provision of quality requirements. The research aims to provide a systematic and methodological support for analysing, modelling, designing and evaluating architectural stability. The novelty of this research is the consideration of stability during runtime operation, by focusing on the stable pro- vision of quality of service without violations. As the runtime dimension is associated with adaptations, the research investigates stability in the context of self-adaptive soft- ware architectures, where runtime stability is challenged by the quality of adaptation, which in turn affects the quality of service. The research evaluation focuses on the effec- tiveness, scale and accuracy in handling runtime dynamics, using the self-adaptive cloud architectures. To all those from whom I have learnt... D´edi´e`ala m´emoire de mon p`ere et ma grand-m`ere... Acknowledgements First and foremost, my enormous gratitude and thanks go to the Almighty God for his ever blessings. I am perpetually indebted in thanks to my supervisor Dr. Rami Bahsoon for his dedicated supervision, helpful and endless support, patience and motivation. His guidance has provided me with great help throughout my PhD and in every aspect of my research work. His kindness and care have encouraged me to stay on track. His outlook and comments have inspired me. My sincere thanks to my external supervisor Prof. Rajkumar Buyya for his support, insights and encouragements on my research. This work would never have been com- pleted without his support, warm welcome and dedication during the research visit and afterwards. His kindness, prudence and work of ethics have made me enjoy the research work with him. Special thanks to the members of my Thesis Group who took time to provide guidance. I would like to thank Prof. Xin Yao for his timely comments, and Dr. Dave Parker for his insightful and encouraging comments. Their critical eye, words of insight and perspective have greatly guided my research and helped in paving the way. I am also deeply indebted and grateful to Prof. Patricia Lago for lending me time with her great knowledge. Her enthusiasm for doing research, helpful cooperation and genuinely constructive comments were valuable and informed my research, in more ways than one. Acknowledges are given to all the administrative staff of the School of Computer Sci- ence for their great support, kindness and welcome throughout the PhD course, especially Patrycja Adams, Sarah Brookes and Helen Whitby. Thanks also to Peter Hancox, Dave Parker and Steve Vickers for their role as Research Students Tutor, as well as Jon Rowe and Andrew Howes for their role as Head of School. Thanks to the Research Committee for their support and listening, especially Achim Jung. Thanks to the people I have been fortunate to have throughout this fascinating journey. I would like to thank Dr. Tao Chen and Dr. Abdessalam Elhabbash for the stimulating and useful discussions. I would like also to thank Khulood, Bram, Mohab, Sara, Wad, Carlos and Satich, who made this period of my life so enjoyable. Special thanks to the people I met during my research visits. Thanks to the CLOUDS Lab at the University of Melbourne, especially Dr. Maria Rodriguez and Dr. Rodrigo Calheiros for the useful discussions. Thanks also to Dr. Giuseppe Procaccianti and Dr. Nelly Condori-Fernandez from the Software and Services research group at Vrije Universiteit Amsterdam for their support. The experience that I gained during those visits was very worthwhile and everyone there was very welcoming and always willing to help. Many thanks also to Dr. Amir Zeid for his continuous mentorship regardless of distance and busyness. I would like to express my sincere appreciation to Father John Yanny, who was always standing by my side, for his kindness, unconditional love and sincere support. Warm thanks to my friends who were always there, understanding and supportive during these years. Gratitude and sincere appreciation to my family for their continuous support. Im- mense thanks beyond measure to my mother for her dedicated and moral support. My gratefulness goes to my sister for her continuous encouragements. Never to forget my father, whom I owe where I am today. I acknowledge the School of Computer Science for providing me with the scholar- ship to pursue my doctoral studies. The research visit to the University of Melbourne was supported by the U21 PhD Scholarship and the CLOUDS Lab. The visits to Vrije Universiteit Amsterdam were supported by Stevie Jivani Student Development and the Software Architecture Summer School scholarships. Contents List of Figures ix List of Tables xii 1 Introduction 1 1.1 Motivation . .1 1.2 Research Problem and Questions . .2 1.3 Research Methodology . .4 1.4 Thesis Contributions . .5 1.4.1 Thesis Roadmap . .5 1.4.2 Summary of Contributions . .7 1.4.3 Publications . .9 1.5 Organisation of the Thesis . 10 2 Stability in Software Engineering: Taxonomy and Survey of the State- of-the-Art 12 2.1 Introduction . 12 2.2 Background . 13 2.2.1 Preliminaries and Basic Concepts . 13 2.2.2 Self-Adaptive Software Architectures . 15 2.3 The Notion of Stability . 16 2.4 The Survey Method . 18 2.5 Taxonomy for Characterising Stability as a Software Property . 19 2.6 Defining and Characterising Stability . 22 2.6.1 Definitions of Stability . 22 2.6.2 Related Quality Attributes . 26 2.6.3 Related Software Engineering Practices . 30 2.7 Stability in Software Engineering . 32 2.7.1 Analysis Results of Primary Studies . 32 2.7.2 Levels, Aspects and Purposes of Stability . 35 2.7.3 Main Observations and Findings . 46 2.8 Engineering Practices Supporting Architectural Stability . 49 2.8.1 Architecture Analysis and Design . 49 2.8.2 Architecture Evaluation for Stability . 50 2.9 Gap Analysis . 55 2.10 Related surveys . 57 2.11 Summary and Conclusion . 57 iv 3 Characterising the Notion of Stability in Software Engineering 59 3.1 Introduction . 59 3.2 A Working Definition for Stability . 60 3.3 A Multi-Dimensional Perspective for Characterising Stability . 60 3.3.1 Dimensions of Stability . 61 3.3.2 Engineering Stability as a Software Property . 61 3.4 Requirements for Realising Stability at the Architecture Level . 64 3.4.1 Design-time Requirements . 65 3.4.2 Runtime Requirements . 67 3.4.3 Support-related Requirements . 70 3.5 Conceptual Design for Capturing Behavioural Stability . 71 3.6 Summary . 72 4 Analysing Architectural Stability 73 4.1 Introduction . 73 4.2 Stability Analysis . 74 4.3 Methodological Support for Analysing Behavioural Stability . 76 4.4 An Evaluation of Applicability . 77 4.4.1 Architecture Domain . 77 4.4.2 Application of the Analysis Model . 78 4.4.3 Discussion . 80 4.5 Related Work . 81 4.6 Summary . 81 5 Modelling Behavioural Stability of Architectures 82 5.1 Introduction . 82 5.2 Stability Modelling . 83 5.2.1 Stability Probabilistic Model . 84 5.2.2 Stability Runtime Inference . 86 5.2.3 Complexity Analysis of the Model . 87 5.3 Methodological Support for Modelling Behavioural Stability . 88 5.4 An Evaluation of Applicability . 90 5.4.1 Building the Stability Model . 90 5.4.2 Pre-experiments Setup . 90 5.4.3 Results of the Stability Model . 94 5.5 Experimental Evaluation . 99 5.5.1 Experiments Setup . 99 5.5.2 Results of Stability Goals . 100 5.5.3 Results of Adaptation Properties and Overhead . 101 5.5.4 Complexity and Runtime Overhead . 103 5.5.5 Discussion . 104 5.6 Related Work . 105 5.7 Summary . 105 v 6 Reference Architecture and Goals Modelling for Stability 107 6.1 Introduction . 107 6.2 Background . 109 6.2.1 Self-Awareness and Self-Expression . 109 6.2.2 Runtime Goal Models . 110 6.3 Self-aware Reference Architecture for Stability .