Investigating Developer Experience in Software Reuse
Resumo
Software reuse has been recognized as a key strategy for improving productivity, reducing development costs, and enhancing software quality. However, successfully implementing software reuse practices largely depends on the developer experience (DX). This study investigates the factors, barriers, and strategies influencing DX in software reuse. Through a Rapid Review (RR), we analyzed 328 studies, selecting 10 for detailed data extraction based on defined filters and the backward snowballing technique. Our findings identify 15 factors affecting DX in software reuse, categorized into technical, organizational, and human/social factors. We also uncover 7 barriers that impede developers from improving DX and identify 13 strategies to enhance it. The results highlight the critical role of comprehensive documentation, a clear understanding of software functionality, and robust reuse-compatible infrastructure as key technical factors. Organizational support, effective resource allocation, and fostering a communication, collaboration, and self-efficacy culture are essential for successful software reuse. This study’s insights have significant implications for researchers and practitioners, offering practical guidance to develop more effective reuse practices and improve DX.
Referências
Luiz Amorim and Manoel Mendonça. 2016. A method to support the adoption of reuse technology in large software organizations. In Software Reuse: Bridging with Social-Awareness: 15th International Conference, ICSR. 73–88. DOI: 10.1007/978-3-319-35122-3_6
José L Barros-Justo, David N Olivieri, and Fernando Pinciroli. 2019. An exploratory study of the standard reuse practice in a medium sized software development firm. Computer Standards & Interfaces 61 (2019), 137–146. DOI: 10.1016/j.csi.2018.06.005
José L. Barros-Justo, Fernando Pinciroli, Santiago Matalonga, and Nelson Martínez-Araujo. 2018. What software reuse benefits have been transferred to the industry? A systematic mapping study. Information and Software Technology 103 (2018), 1–21. DOI: 10.1016/j.infsof.2018.06.003
Rafael Capilla, Barbara Gallina, Carlos Cetina, and John Favaro. 2019. Opportunities for software reuse in an uncertain world: From past to emerging trends. Journal of software: Evolution and process 31, 8 (2019), e2217. DOI: 10.1002/smr.2217
Bruno Cartaxo, Gustavo Pinto, and Sergio Soares. 2018. The role of rapid reviews in supporting decision-making in software engineering practice. In International Conference on Evaluation and Assessment in Software Engineering 2018. 24–34. DOI: 10.1145/3210459.3210462
Bruno Cartaxo, Gustavo Pinto, and Sergio Soares. 2020. Rapid reviews in software engineering. Contemporary Empirical Methods in Software Engineering (2020), 357–384. DOI: 10.1007/978-3-030-32489-6_13
Kathy Charmaz. 2006. Constructing grounded theory: A practical guide through qualitative analysis. Sage Publications, Thousand Oaks.
Mengwen Chen, Tao Wang, Cheng Yang, Qiang Fan, Gang Yin, and Huaimin Wang. 2016. Social Computing in Open Source Community: A Study of Software Reuse. In Social Computing: International Conference of Young Computer Scientists, Engineers and Educators, ICYCSEE. Springer, 621–631. DOI: 10.1007/978-981-10-2053-7_55
Xingru Chen, Deepika Badampudi, and Muhammad Usman. 2022. Reuse in Contemporary Software Engineering Practices–An Exploratory Case Study in A Medium-sized Company. e-Informatica Software Engineering Journal 16, 1 (2022). DOI: 10.37190/e-Inf220110
Daniela S Cruzes and Tore Dyba. 2011. Recommended steps for thematic synthesis in software engineering. In 2011 international symposium on empirical software engineering and measurement. 275–284.
Fabian Fagerholm and Jürgen Münch. 2012. Developer experience: Concept and definition. In International conference on software and system process (ICSSP). 73–77. DOI: 10.1109/ICSSP.2012.6225984
Awdren Fontão, Arilo Dias-Neto, and Davi Viana. 2017. Investigating Factors That Influence Developers’ Experience in Mobile Software Ecosystems. In International Workshop on Software Engineering for Systems-of-Systems. 55–58. DOI: 10.1109/JSOS.2017.10
Michaela Greiler, Margaret-Anne Storey, and Abi Noda. 2022. An actionable framework for understanding and improving developer experience. IEEE Transactions on Software Engineering 49, 4 (2022), 1411–1425. DOI: 10.1109/TSE.2022.3175660
Martin Griss, Ivar Jacobson, Chris Jette, Bob Kessler, and Doug Lea. 1995. Systematic software reuse (panel) objects and frameworks are not enough. In Proceedings of the 1995 Symposium on Software reusability. 17–20. DOI: 10.1145/223427.213969
Jenny Guber and Iris Reinhartz-Berger. 2023. Privacy-Compliant Software Reuse in Early Development Phases: A Systematic Literature Review. Information and Software Technology (2023), 107351. DOI: 10.1016/j.infsof.2023.107351
Michelle M Haby, Evelina Chapman, Rachel Clark, Jorge Barreto, Ludovic Reveiz, and John N Lavis. 2016. What are the best methodologies for rapid reviews of the research evidence for evidence-informed decision making in health policy and practice: a rapid review. Health research policy and systems 14 (2016), 1–12. DOI: 10.1186/s12961-016-0155-7
Candyce Hamel, Alan Michaud, Micere Thuku, Becky Skidmore, Adrienne Stevens, Barbara Nussbaumer-Streit, and Chantelle Garritty. 2021. Defining rapid reviews: a systematic scoping review and thematic analysis of definitions and defining characteristics of rapid reviews. Journal of Clinical Epidemiology 129 (2021), 74–85. DOI: 10.1016/j.jclinepi.2020.09.041
Catherine M Hicks, Carol S Lee, and Morgan Ramsey. 2024. Developer Thriving: four sociocognitive factors that create resilient productivity on software teams. IEEE Software (2024). DOI: 10.1109/MS.2024.3382957
Stanislaw Jarzabek and Daniel Dan. 2017. Documentation reuse: Managing similar documents. In International Conference on Information Reuse and Integration (IRI). 372–375. DOI: 10.1109/IRI.2017.52
Xiaoyu Jin, Charu Khatwani, Nan Niu, MichaelWagner, and Juha Savolainen. 2016. Pragmatic software reuse in bioinformatics: How can social network information help?. In Software Reuse: Bridging with Social-Awareness: International Conference. Springer, 247–264. DOI: 10.1007/978-3-319-35122-3_17
Monica Johar, Vijay Mookerjee, and Suresh Sethi. 2015. Optimal software design reuse policies: A control theoretic approach. Information Systems Frontiers 17 (2015), 439–453. DOI: 10.1007/s10796-013-9421-1
Huma Hayat Khan and Muhammad Noman Malik. 2017. Software standards and software failures: a review with the perspective of varying situational contexts. IEEE access 5 (2017), 17501–17513. DOI: 10.1109/ACCESS.2017.2738622
Valerie J King, Adrienne Stevens, Barbara Nussbaumer-Streit, Chris Kamel, and Chantelle Garritty. 2022. Paper 2: Performing rapid reviews. Systematic Reviews 11, 1 (2022), 151. DOI: 10.1186/s13643-022-02011-5
D. Kirk, M. Roper, and M.Wood. 2002. Defining the problems of framework reuse. In Proceedings 26th Annual International Computer Software and Applications. 623–626. DOI: 10.1109/CMPSAC.2002.1045073
Barbara Kitchenham and Stuart Charters. 2007. Guidelines for performing systematic literature reviews in software engineering. Technical Report. Evidence-Based Software Engineering (EBSE) Project.
Barbara Kitchenham and Stuart Charters. 2007. Guidelines for performing Systematic Literature Reviews in Software Engineering. Technical Report EBSE 2007-001. Keele University and Durham University Joint Report.
Nam-Yong Lee and C.R. Litecky. 1997. An empirical study of software reuse with special attention to Ada. IEEE Transactions on Software Engineering 23, 9 (1997), 537–549. DOI: 10.1109/32.629492
Jingyue Li, Reidar Conradi, Parastoo Mohagheghi, Odd Are Sæhle, Øivind Wang, Erlend Naalsund, and Ole Anders Walseth. 2004. A study of developer attitude to component reuse in three IT companies. In Product Focused Software Process Improvement: 5th International Conference, PROFES. 538–552. DOI: 10.1007/978-3-540-24659-6_39
Niko Mäkitalo, Antero Taivalsaari, Arto Kiviluoto, Tommi Mikkonen, and Rafael Capilla. 2020. On opportunistic software reuse. Computing 102 (2020), 2385–2408. DOI: 10.1007/s00607-020-00833-6
Vidhya Mellarkod, Radha Appan, Donald R Jones, and Karma Sherif. 2007. A multi-level analysis of factors affecting software developers’ intention to reuse software assets: An empirical investigation. Information & Management 44, 7 (2007), 613–625. DOI: 10.1016/j.im.2007.03.006
H. Mili, F. Mili, and A. Mili. 1995. Reusing software: issues and research directions. IEEE Transactions on Software Engineering 21, 6 (1995), 528–562. DOI: 10.1109/32.391379
Sonia Montagud, Silvia Abrahão, and Emilio Insfran. 2012. A systematic review of quality attributes and measures for software product lines. Software Quality Journal 20 (2012), 425–486. DOI: 10.1007/s11219-011-9146-7
Jenny Morales, Cristian Rusu, Federico Botella, and Daniela Quiñones. 2019. Programmer eXperience: A Systematic Literature Review. IEEE Access 7 (2019), 71079–71094. DOI: 10.1109/ACCESS.2019.2920124
Rebeca C. Motta, Káthia M. de Oliveira, and Guilherme H. Travassos. 2019. A conceptual perspective on interoperability in context-aware software systems. Information and Software Technology 114 (2019), 231–257. DOI: 10.1016/j.infsof.2019.07.001
Abi Noda, Margaret-Anne Storey, Nicole Forsgren, and Michaela Greiler. 2023. DevEx: What Actually Drives Productivity: The developer-centric approach to measuring and improving productivity. Queue 21, 2 (2023), 35–53. DOI: 10.1145/3595878
Mohd Akmal Faiz Osman, Mohamad Noorman Masrek, and Khalid Abdul Wahid. 2022. Software Reuse Practices among Malaysian Freelance Developers: A Conceptual Framework. In Proceedings, Vol. 82. MDPI, 30. DOI: 10.3390/proceedings2022082030
Mohamed A Oumaziz, Alan Charpentier, Jean-Rémy Falleri, and Xavier Blanc. 2017. Documentation reuse: Hot or not? An empirical study. In 16th International Conference on Software Reuse. 12–27. DOI: 10.1007/978-3-319-56856-0_2
Iris Reinhartz-Berger. 2024. Challenges in software model reuse: cross application domain vs. cross modeling paradigm. Empirical Software Engineering 29, 1 (2024), 16. DOI: 10.1007/s10664-023-10386-9
M.A. Rothenberger, K.J. Dooley, U.R. Kulkarni, and N. Nada. 2003. Strategies for software reuse: a principal component analysis of reuse practices. IEEE Transactions on Software Engineering 29, 9 (2003), 825–837. DOI: 10.1109/TSE.2003.1232287
Marcus A Rothenberger. 2003. Project-Level Reuse Factors: Drivers for Variation within Software Development Environments. Decision sciences 34, 1 (2003), 83–106. DOI: 10.1111/1540-5915.02252
Di Shang, Karl Lang, and Roumen Vragov. 2022. A Market-Based Approach to Facilitate the Organizational Adoption of Software Component Reuse Strategies. Communications of the Association for Information Systems 51, 1 (2022), 36. DOI: 10.17705/1CAIS.05140
Karma Sherif and Ajay Vinze. 2003. Barriers to adoption of software reuse: A qualitative study. Information & Management 41, 2 (2003), 159–175. DOI: 10.1016/S0378-7206(03)00045-4
Gustavo Silva, Carla Bezerra, Anderson Uchôa, and Ivan Machado. 2023. What Factors Affect the Build Failures Correction Time? A Multi-Project Study. In Brazilian Symposium on Software Components, Architectures, and Reuse (SBCARS ’23). 41–50. DOI: 10.1145/3622748.3622753
Odd Petter N Slyngstad, Anita Gupta, Reidar Conradi, Parastoo Mohagheghi, Harald Rønneberg, and Einar Landre. 2006. An empirical study of developers views on software reuse in statoil asa. In ACM/IEEE International Symposium on Empirical Software Engineering. 242–251. DOI: 10.1145/1159733.1159770
Dalia Sobhy, Rami Bahsoon, Leandro Minku, and Rick Kazman. 2021. Evaluation of software architectures under uncertainty: A systematic literature review. ACM Transactions on Software Engineering and Methodology (TOSEM) 30, 4 (2021), 1–50. DOI: 10.1145/3464305
Manuel Sojer and Joachim Henkel. 2010. Code reuse in open source software development: Quantitative evidence, drivers, and impediments. Journal of the Association for Information Systems 11, 12 (2010), 868–901. DOI: abstract=1489789
IO Standardization. 2019. Part 210: Human-centred design for interactive systems. (2019).
Sebastian Spaeth Stefan Haefliger, Georg von Krogh. 2008. Code Reuse in Open Source Software. Management Science 54, 1 (2008), 180–193. DOI: 10.1287/mnsc.1070.0748
Hongyi Sun, Waileung Ha, Min Xie, and Jianglin Huang. 2015. Modularity’s impact on the quality and productivity of embedded software development: a case study in a Hong Kong company. Total Quality Management & Business Excellence 26, 11-12 (2015), 1188–1201. DOI: 10.1080/14783363.2014.920179
Sri Lakshmi Vadlamani and Olga Baysal. 2020. Studying software developer expertise and contributions in Stack Overflow and GitHub. In IEEE International Conference on Software Maintenance and Evolution (ICSME). 312–323. DOI: 10.1109/ICSME46990.2020.00038
Julia Varnell-Sarjeant and Anneliese Amschler Andrews. 2015. Comparing reuse strategies in different development environments. In Advances in Computers. Vol. 97. Elsevier, 1–47. DOI: 10.1016/bs.adcom.2014.10.002