Studying the Impact of Continuous Delivery Adoption on Atoms of Confusion Rate in Open-Source Projects
Resumo
Atoms of Confusion (AoC) are indivisible code patterns that may cause confusion for developers when trying to understand them, and that have less confusing equivalent patterns. Previous works suggest it is a good practice to avoid them. While there are studies on AoC relating them to bugs, there is not much about their relationship with the practices of Continuous Integration and Continuous Delivery (CI/CD). Since CI/CD is generally praised as a group of good practices, related to better code being released reliably and faster to clients, there’s a possibility that the presence of CI/CD would also impact the presence of AoC, possibly making them less prevalent since they can be problematic to development processes. To clarify this relationship, we analyzed 10 open-source long-lived Java libraries and 10 open-source Java projects for Android, to see if there was any difference in the AoC rate before and after the implementation of CI/CD. Our results show the AoC rate changed for all projects, but we could not find a statistically relevant relationship between these changes and CI/CD.
Referências
Victoria Bogachenkova, Linh Nguyen, Felipe Ebert, Alexander Serebrenik, and Fernando Castor. 2022. Evaluating Atoms of Confusion in the Context of Code Reviews. In 2022 IEEE International Conference on Software Maintenance and Evolution (ICSME). 404–408. https://doi.org/10.1109/ICSME55016.2022.00048
Fernando Castor. 2018. Identifying Confusing Code in Swift Programs. (2018).
Lianping Chen. 2015. Continuous Delivery: Huge Benefits, but Challenges Too. IEEE Software 32, 2 (2015), 50–54. https://doi.org/10.1109/MS.2015.27
José Aldo Silva da Costa, Rohit Gheyi, Fernando Castor, Pablo Roberto Fernandes de Oliveira, Márcio Ribeiro, and Baldoino Fonseca. 2023. Seeing confusion through a new lens: on the impact of atoms of confusion on novices’ code comprehension. Empirical Software Engineering 28 (05 2023). https://doi.org/10.1007/s10664-023-10311-0
Jeffrey Fairbanks, Akshharaa Tharigonda, and Nasir U. Eisty. 2023. Analyzing the Effects of CI/CD on Open Source Repositories in GitHub and GitLab. arXiv:2303.16393 [cs.SE]
Martin Fowler and Matthew Foemmel. 2006. Continuous integration.
Dan Gopstein, Jake Iannacone, Yu Yan, Lois DeLong, Yanyan Zhuang, Martin K.-C. Yeh, and Justin Cappos. 2017. Understanding Misunderstandings in Source Code. In Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering (Paderborn, Germany) (ESEC/FSE 2017). Association for Computing Machinery, New York, NY, USA, 129–139. https://doi.org/10.1145/3106237.3106264
Dan Gopstein, Henry Hongwei Zhou, Phyllis Frankl, and Justin Cappos. 2018. Prevalence of Confusing Code in Software Projects: Atoms of Confusion in the Wild. In 2018 IEEE/ACM 15th International Conference on Mining Software Repositories (MSR). 281–291.
Jez Humble and David Farley. 2010. Continuous delivery: reliable software releases through build, test, and deployment automation. Pearson Education.
Chris Langhout and Maurício Aniche. 2021. Atoms of Confusion in Java. arXiv:2103.05424 [cs.SE]
Valentina Lenarduzzi, Davide Taibi, Davide Tosi, Luigi Lavazza, and Sandro Morasca. 2020. Open Source Software Evaluation, Selection, and Adoption: a Systematic Literature Review. In 2020 46th Euromicro Conference on Software Engineering and Advanced Applications (SEAA). 437–444. https://doi.org/10.1109/SEAA51224.2020.00076
Pei Liu, Xiaoyu Sun, Yanjie Zhao, Yonghui Liu, John Grundy, and Li Li. 2023. A First Look at CI/CD Adoptions in Open-Source Android Apps. In Proceedings of the 37th IEEE/ACM International Conference on Automated Software Engineering (Rochester, MI, USA) (ASE ’22). Association for Computing Machinery, New York, NY, USA, Article 201, 6 pages. https://doi.org/10.1145/3551349.3561341
Wendell Mendes, Oton Pinheiro, Emanuele Santos, Lincoln Rocha, and Windson Viana. 2022. Dazed and Confused: Studying the Prevalence of Atoms of Confusion in Long-Lived Java Libraries. In 2022 IEEE International Conference on Software Maintenance and Evolution (ICSME). 106–116. https://doi.org/10.1109/ICSME55016.2022.00018
Roberto Minelli, Andrea Mocci, and Michele Lanza. 2015. I Know What You Did Last Summer - An Investigation of How Developers Spend Their Time. In 2015 IEEE 23rd International Conference on Program Comprehension. 25–35. https://doi.org/10.1109/ICPC.2015.12
Renaud Pawlak, Martin Monperrus, Nicolas Petitprez, Carlos Noguera, and Lionel Seinturier. 2015. Spoon: A Library for Implementing Analyses and Transformations of Java Source Code. Software: Practice and Experience 46 (08 2015). https://doi.org/10.1002/spe.2346
Daniel Ståhl, Torvald Mårtensson, and Jan Bosch. 2017. Continuous practices and devops: beyond the buzz, what does it all mean? 440–448. https://doi.org/10.1109/SEAA.2017.8114695.
Adriano Torres, Caio Oliveira, Márcio Okimoto, Diego Marcilio, Pedro Queiroga, Fernando Castor, Rodrigo Bonifacio, E.D. Canedo, Márcio Ribeiro, and Eduardo Monteiro. 2023. An Investigation of confusing code patterns in JavaScript. Journal of Systems and Software 203 (05 2023), 111731. https://doi.org/10.1016/j.jss.2023.111731.
Claes Wohlin, Per Runeson, Martin Hst, Magnus C. Ohlsson, Bjrn Regnell, and Anders Wessln. 2012. Experimentation in Software Engineering. Springer Publishing Company, Incorporated.
Xin Xia, Lingfeng Bao, David Lo, Zhenchang Xing, Ahmed E. Hassan, and Shanping Li. 2018. Measuring Program Comprehension: A Large-Scale Field Study with Professionals. IEEE Transactions on Software Engineering 44, 10 (2018), 951–976. https://doi.org/10.1109/TSE.2017.2734091
Øyvind Hauge, Claudia Ayala, and Reidar Conradi. 2010. Adoption of open source software in software-intensive organizations – A systematic literature review. Information and Software Technology 52, 11 (2010), 1133–1154. https://doi.org/10.1016/j.infsof.2010.05.008 Special Section on Best Papers PROMISE 2009.