Continuous Integration, Delivery and Deployment: A Systematic Review on Approaches, Tools, Challenges and Practices

Continuous practices, i.e., continuous integration, delivery, and deployment, are the software development industry practices that enable organizations to frequently and reliably release new features and products. With the increasing interest in the literature on continuous practices, it is important to systematically review and synthesize the approaches, tools, challenges, and practices reported for adopting and implementing continuous practices. This paper aimed at systematically reviewing the state of the art of continuous practices to classify approaches and tools, identify challenges and practices in this regard, and identify the gaps for future research. We used the systematic literature review method for reviewing the peer-reviewed papers on continuous practices published between 2004 and June 1, 2016. We applied the thematic analysis method for analyzing the data extracted from reviewing 69 papers selected using predefined criteria. We have identified 30 approaches and associated tools, which facilitate the implementation of continuous practices in the following ways: 1) reducing build and test time in continuous integration (CI); 2) increasing visibility and awareness on build and test results in CI; 3) supporting (semi-) automated continuous testing; 4) detecting violations, flaws, and faults in CI; 5) addressing security and scalability issues in deployment pipeline; and 6) improving dependability and reliability of deployment process. We have also determined a list of critical factors, such as testing (effort and time), team awareness and transparency, good design principles, customer, highly skilled and motivated team, application domain, and appropriate infrastructure that should be carefully considered when introducing continuous practices in a given organization. The majority of the reviewed papers were validation (34.7%) and evaluation (36.2%) research types. This paper also reveals that continuous practices have been successfully applied to both greenfield and maintenance projects. Continuous practices have become an important area of software engineering research and practice. While the reported approaches, tools, and practices are addressing a wide range of challenges, there are several challenges and gaps, which require future research work for improving the capturing and reporting of contextual information in the studies reporting different aspects of continuous practices; gaining a deep understanding of how software-intensive systems should be (re-) architected to support continuous practices; and addressing the lack of knowledge and tools for engineering processes of designing and running secure deployment pipelines.

[1]  Lianping Chen,et al.  Towards an Evidence-Based Understanding of Electronic Data Sources , 2010, EASE.

[2]  Jan Bosch,et al.  Climbing the "Stairway to Heaven" -- A Mulitiple-Case Study Exploring Barriers in the Transition from Agile Development towards Continuous Deployment of Software , 2012, 2012 38th Euromicro Conference on Software Engineering and Advanced Applications.

[3]  James D. Herbsleb,et al.  Team Knowledge and Coordination in Geographically Distributed Software Development , 2007, J. Manag. Inf. Syst..

[4]  Walter Brenner,et al.  Fit for Continuous Integration: How Organizations Assimilate an Agile Practice , 2014, AMCIS.

[5]  V. Braun,et al.  Using thematic analysis in psychology , 2006 .

[6]  Linda Northrop Trends and New Directions in Software Architecture , 2014 .

[7]  Lianping Chen Towards Architecting for Continuous Delivery , 2015, 2015 12th Working IEEE/IFIP Conference on Software Architecture.

[8]  Foutse Khomh,et al.  On rapid releases and software testing: a case study and a semi-systematic literature review , 2015, Empirical Software Engineering.

[9]  John C. Grundy,et al.  Performance Analysis for Object-Oriented Software: A Systematic Mapping , 2015, IEEE Transactions on Software Engineering.

[10]  Mika Mäntylä,et al.  The highways and country roads to continuous deployment , 2015, IEEE Software.

[11]  Forrest Shull,et al.  Identification and management of technical debt: A systematic mapping study , 2016, Inf. Softw. Technol..

[12]  Jan Bosch,et al.  Continuous Software Engineering: An Introduction , 2014, Continuous Software Engineering.

[13]  Claes Wohlin,et al.  Context in industrial software engineering research , 2009, 2009 3rd International Symposium on Empirical Software Engineering and Measurement.

[14]  Kjeld Schmidt,et al.  The Concept of 'Practice': What's the Point? , 2014, COOP.

[15]  Shane McIntosh,et al.  Modern Release Engineering in a Nutshell -- Why Researchers Should Care , 2016, 2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER).

[16]  Jez Humble,et al.  Continuous Delivery: Reliable Software Releases Through Build, Test, and Deployment Automation , 2010 .

[17]  Eric Helms,et al.  Synthesizing Continuous Deployment Practices Used in Software Development , 2015, 2015 Agile Conference.

[18]  Oscar Pastor,et al.  Empirical research methodologies and studies in Requirements Engineering: How far did we come? , 2014, J. Syst. Softw..

[19]  Philip Kraft,et al.  Software Practice Is Social Practice , 2002, Social Thinking - Software Practice.

[20]  Yvonne Dittrich,et al.  What does it mean to use a method? Towards a practice theory for software engineering , 2016, Inf. Softw. Technol..

[21]  Pearl Brereton,et al.  Systematic literature reviews in software engineering - A tertiary study , 2010, Inf. Softw. Technol..

[22]  Daniela Cruzes,et al.  What works for whom, where, when, and why? On the role of context in empirical software engineering , 2012, Proceedings of the 2012 ACM-IEEE International Symposium on Empirical Software Engineering and Measurement.

[23]  Liming Zhu,et al.  DevOps - A Software Architect's Perspective , 2015, SEI series in software engineering.

[24]  Roel Wieringa,et al.  Requirements engineering paper classification and evaluation criteria: a proposal and a discussion , 2005, Requirements Engineering.

[25]  Stephen G. MacDonell,et al.  Investigating a conceptual construct for software context , 2014, EASE '14.

[26]  Klaas-Jan Stol,et al.  Continuous software engineering: A roadmap and agenda , 2017, J. Syst. Softw..

[27]  Mathias Meyer,et al.  Continuous Integration and Its Tools , 2014, IEEE Software.

[28]  DittrichYvonne What does it mean to use a method? Towards a practice theory for software engineering , 2016 .

[29]  Muhammad Ali Babar,et al.  Identifying relevant studies in software engineering , 2011, Inf. Softw. Technol..

[30]  Pearl Brereton,et al.  Performing systematic literature reviews in software engineering , 2006, ICSE.

[31]  Jan Bosch,et al.  Modeling continuous integration practice differences in industry software development , 2014, J. Syst. Softw..

[32]  Tore Dybå,et al.  Evidence-based software engineering , 2004, Proceedings. 26th International Conference on Software Engineering.

[33]  Liming Zhu,et al.  Securing a Deployment Pipeline , 2015, 2015 IEEE/ACM 3rd International Workshop on Release Engineering.

[34]  Pasi Kuvaja,et al.  Continuous deployment of software intensive products and services: A systematic mapping study , 2017, J. Syst. Softw..

[35]  Casper Lassenius,et al.  Challenges and success factors for large-scale agile transformations: A systematic literature review , 2016, J. Syst. Softw..

[36]  Päivi Parviainen,et al.  Integrating Early V&V Support to a GSE Tool Integration Platform , 2011, 2011 IEEE Sixth International Conference on Global Software Engineering Workshop.

[37]  Muhammad Ali Babar,et al.  A systematic review of knowledge sharing challenges and practices in global software development , 2016, Int. J. Inf. Manag..

[38]  Liming Zhu,et al.  Developing Dependable and Secure Cloud Applications , 2016, IEEE Internet Computing.

[39]  Valentina Armenise,et al.  Continuous Delivery with Jenkins: Jenkins Solutions to Implement Continuous Delivery , 2015, 2015 IEEE/ACM 3rd International Workshop on Release Engineering.

[40]  J. Greenberg,et al.  Behavior in Organizations , 1983 .

[41]  Pearl Brereton,et al.  Using Mapping Studies in Software Engineering , 2008, PPIG.

[42]  Casper Lassenius,et al.  Problems, causes and solutions when adopting continuous delivery - A systematic literature review , 2017, Inf. Softw. Technol..

[43]  Lianping Chen,et al.  Continuous Delivery: Huge Benefits, but Challenges Too , 2015, IEEE Software.