Continuous Integration for Decentralised Development of Service-Based Software Systems
Total Page:16
File Type:pdf, Size:1020Kb
Continuous Integration for Decentralised Development of Service-Based Software Systems by Jameel Almalki Thesis Submitted to Flinders University for the degree of Doctor of Philosophy College of Science and Engineering 9th August 2018 Declaration I certify that this thesis does not include any prior material submitted for a degree or diploma in any university without acknowledgment; and to the best of my knowledge and belief it does not include any prior material published or written by another individual with the exception of where due reference is used in the text. Jameel Almalki July 30th, 2018 2 Acknowledgements Firstly and most importantly, I want to thank Allah Almighty for giving me blessings, opportunities, strength and guidance to endure this challenging task to the end. My unreserved appreciation and gratitude go to my parents and my brothers and sisters for their continuous support, prayers and encouragement, which gave me the strength to succeed in my PhD research journey. May Allah bless you all. My greatest indebtedness is to my wife, Hamdah, for her endless love, support, patience and sacrifice while I have been consumed with this research in recent years. My thanks and love are also extended to my two precious daughters, Diala and Ladan, and my son, Elias, for all the joy and love in my life. Thank you very much, you are indeed my treasures. I also would like to express my deepest gratitude and appreciation to my supervisor, Dr. Haifeng Shen, for his enthusiastic support, insightful suggestions and valuable guidance throughout this research. Certainly, without his encouragement, invaluable knowledge and support this work would never have been completed. Last but not least, I would like to thank my friends and PhD colleagues who supported me during the development of my research and who gave me assistance whenever I needed it during the completion of this work. 3 Abstract With the rapid adoption of Service-Oriented Architectures (SOA) for the creation of distributed software applications, it is important for software development processes to be supported with relevant methodologies and tools. Traditional approaches to designing and implementing ‘monolithic’ software architectures fail to address these needs for developing distributed, service- oriented applications. In this light, the discipline of Service-Oriented Software Engineering has emerged to address the development and operation of distributed and loosely-coupled software systems, composed of reusable services often provided by third parties. A key component the development and operation of SOA systems is Continuous Integration whereby pieces of a software application are integrated and tested as they change. Continuous Integration in SOA-based software systems introduces a whole new level of complexity. For Continuous Integration to work in this context, network-accessible services need to be dynamically and continuously discoverable to be invoked through their APIs to ensure that the individual elements always work together. Enabling Continuous Integration in a centralised software development environment is relatively easy – that is, a dedicated Continuous Integration server can monitor the central software repository and execute integration tests whenever changes are detected. Continuous Integration in SOAs is not so straight-forward, since different parts of a distributed service-based application might be owned and managed by different software development teams and organisations, thereby restricting centralised storage, testing, deployment and execution. In these circumstances, a decentralised approach to Continuous Integration is required to fulfil this practice in the context of API-driven SOA environments. To this end, this thesis puts forward the following research question: How can Continuous Integration be enabled in service-based distributed software systems in the absence of a 4 central server? We present Service-Oriented Revision Control (SORC) as an answer to this question. SORC relies on peer-to-peer communication between service providers and consumers to enable discovery and consumption of versions of services, ensuring that the overall service- based software system operates in a stable and reliable manner, even in the presence of frequent service updates and multiple versions. By using three basic commands – i.e., commit, checkout, and update – the SORC approach demonstrates how service consumers can always be informed of compatible and incompatible service versions. To achieve this functionality, the approach uses a distributed reference architecture and implements a framework based on this reference architecture, thereby enabling support for Continuous Integration in SOAs through a novel combination of software versioning and compatibility checking techniques. The SORC approach presented in this thesis contributes to the domain of Service-Oriented Software Engineering and, more specifically, to Continuous Integration for SOA, as well as to the areas of software versioning and compatibility checking. The main contributions of this thesis include the novel SORC approach itself, which supports Continuous Integration for SOA, the prototype implementation of the SORC system, called as SORCER, demonstrating the viability of the proposed approach, novel versioning and compatibility checking techniques, and a literature survey on relevant state-of-the-art research. 5 Table of Contents Declaration.................................................................................................................................2 Acknowledgements ...................................................................................................................3 Abstract ......................................................................................................................................4 Table of Contents ......................................................................................................................6 List of Figures ............................................................................................................................9 List of Tables ...........................................................................................................................11 Author’s Publications .............................................................................................................13 Chapter 1: Introduction .........................................................................................................14 1.1. Traditional Continuous Integration ............................................................................... 16 1.2. Service-Oriented Architectures and Service-Based Software Systems ........................ 19 1.3. Problem Statement ........................................................................................................ 24 1.4. Overview of the Solution .............................................................................................. 26 1.5. Research Question, Hypothesis and Objectives............................................................ 27 1.5.1. Theoretical objectives ........................................................................................... 28 1.5.2. Technical objectives.............................................................................................. 29 1.5.3. Experimental objectives ........................................................................................ 29 1.6. Contributions of the Thesis ........................................................................................... 29 1.7. Outline of the Thesis ..................................................................................................... 31 2. Chapter 2: Background Theory and Related Technologies ........................................34 2.1. Software Configuration Management ........................................................................... 34 2.2. Version Control ............................................................................................................. 37 2.2.1. Version Control Commands ................................................................................. 39 2.3. Classification of Version Control Systems ................................................................... 42 2.3.1. Type of Revision Storage ...................................................................................... 42 2.3.2. Version Control System Architecture ................................................................... 44 2.4. Service-Oriented Architecture ...................................................................................... 60 2.4.1. WSDL/SOAP-based services ................................................................................ 63 2.4.2. RESTful services .................................................................................................. 64 6 2.5. Summary ....................................................................................................................... 65 3. Chapter 3. Software Compatibility in SOAs: State of the Art and Existing Gaps ....66 3.1. Software Compatibility ................................................................................................. 66 3.1.1. Software Changes in SOA .................................................................................... 68 3.1.2. Service Changes and Versioning .......................................................................... 70 3.2. Survey