Continuous Integration (CI) Needs and Wishes for Developers of Proprietary Code

Continuous integration (CI) systems automate the compilation, building, and testing of software. Despite CI being one of the most widely used processes in software engineering, we do not know what motivates developers to use CI, and what barriers and unmet needs they face. Without such knowledge developers make easily avoidable errors, managers reduce the productivity of developers by making misinformed decisions, tool builders invest in the wrong direction, and researchers miss many opportunities for improving the software engineering practice. Given the large fraction of proprietary code development, understanding how proprietary developers are using CI is vital to improving it. We present the first study of how CI is used in the proprietary development of software. We conduct 16 semi-structured interviews with developers from different industries and development scale. We generalize these findings by surveying 523 developers from all over the world. We find that 78% of developers feel more productive when using CI, and 85% think that using CI causes developers to give more value to automated testing. However, unlike open-source developers, many proprietary developers want to use CI but are not allowed to do so. 50% of developers have problems troubleshooting CI builds, and more than half of developers want easier configurations for CI tools and services.

[1]  Giancarlo Succi,et al.  An empirical study of open-source and closed-source software products , 2004, IEEE Transactions on Software Engineering.

[2]  Yves Le Traon,et al.  Comparing White-Box and Black-Box Test Prioritization , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering (ICSE).

[3]  Dongmei Zhang,et al.  How do software engineers understand code changes?: an exploratory study in industry , 2012, SIGSOFT FSE.

[4]  Frank Tip,et al.  A framework for automated testing of javascript web applications , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[5]  Liming Zhu,et al.  Continuous Validation for Data Analytics Systems , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering Companion (ICSE-C).

[6]  Pierre Naubourg,et al.  A Case Study of Open Source Software Development in Proteomic Area: The LIMS ePims , 2008, 2008 IEEE International Conference on Signal Image Technology and Internet Based Systems.

[7]  Premkumar T. Devanbu,et al.  Quality and productivity outcomes relating to continuous integration in GitHub , 2015, ESEC/SIGSOFT FSE.

[8]  Arie van Deursen,et al.  Continuous deployment and schema evolution in SQL databases , 2015 .

[9]  Oscar Nierstrasz,et al.  Ordering broken unit tests for focused debugging , 2004, 20th IEEE International Conference on Software Maintenance, 2004. Proceedings..

[10]  Matthew B. Dwyer,et al.  Increasing Test Granularity by Aggregating Unit Tests , 2008, 2008 23rd IEEE/ACM International Conference on Automated Software Engineering.

[11]  Christian Bird,et al.  Understanding and improving software build teams , 2014, ICSE.

[12]  SrikanthHema,et al.  Test case prioritization of build acceptance tests for an enterprise cloud application , 2016 .

[13]  Harald C. Gall,et al.  Towards quality gates in continuous delivery and deployment , 2016, 2016 IEEE 24th International Conference on Program Comprehension (ICPC).

[14]  Audris Mockus,et al.  A case study of open source software development: the Apache server , 2000, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.

[15]  K. Wells,et al.  Interviewing in Qualitative Research , 2018 .

[16]  Janice Singer,et al.  Guide to Advanced Empirical Software Engineering , 2007 .

[17]  Antonia Bertolino,et al.  Social coverage for customized test adequacy and selection criteria , 2014, AST 2014.

[18]  Eric S. Raymond,et al.  The Cathedral & the Bazaar , 1999 .

[19]  John L. Campbell,et al.  Coding In-depth Semistructured Interviews , 2013 .

[20]  Abram Hindle,et al.  Judging a Commit by Its Cover: Correlating Commit Message Entropy with Build Status on Travis-CI , 2016, 2016 IEEE/ACM 13th Working Conference on Mining Software Repositories (MSR).

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

[22]  Laurie A. Williams,et al.  Continuous Deployment at Facebook and OANDA , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering Companion (ICSE-C).

[23]  Laurie A. Williams,et al.  Security practices in DevOps , 2016, HotSoS.

[24]  Eirini Kalliamvakou,et al.  Open Source-Style Collaborative Development Practices in Commercial Projects Using GitHub , 2015, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering.

[25]  Mark Harman,et al.  Regression testing minimization, selection and prioritization: a survey , 2012, Softw. Test. Verification Reliab..

[26]  Emerson R. Murphy-Hill,et al.  Improving developer participation rates in surveys , 2013, 2013 6th International Workshop on Cooperative and Human Aspects of Software Engineering (CHASE).

[27]  Christian Bird,et al.  Transition from centralized to decentralized version control systems: a case study on reasons, barriers, and outcomes , 2014, ICSE.

[28]  Darko Marinov,et al.  Usage, costs, and benefits of continuous integration in open-source projects , 2016, 2016 31st IEEE/ACM International Conference on Automated Software Engineering (ASE).

[29]  Johnny Saldaña,et al.  The Coding Manual for Qualitative Researchers , 2009 .

[30]  Christoph Treude,et al.  Overcoming Open Source Project Entry Barriers with a Portal for Newcomers , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering (ICSE).

[31]  LabicheYvan,et al.  Coverage-based regression test case selection, minimization and prioritization , 2015 .

[32]  Yuriy Brun,et al.  Preventing data errors with continuous testing , 2015, ISSTA.

[33]  Alberto Bacchelli,et al.  Expectations, outcomes, and challenges of modern code review , 2013, 2013 35th International Conference on Software Engineering (ICSE).