Abstract
The process of migration between different third-party software libraries, while being an typical library reuse practice, is complex, time consuming and error-prone. Typically, during a library migration process, developers opt to replace methods from a retired library with other methods from a new library without altering the software behavior. However, the extent to which the process of migrating to new libraries will be rewarded with improved software quality is still unknown. In this paper, our goal is to study the impact of library API migration on software quality. We conducted a large-scale empirical study on 9 popular API migrations, collected from a corpus of 57,447 open-source Java projects. We computed the values of commonly-used software quality metrics before and after a migration occurs. The statistical analysis of the obtained results provides evidence that library migrations are likely to improve different software quality attributes including significantly reduced coupling, increased cohesion, and improved code readability. Furthermore, we released an online portal that helps software developers to understand the impact of a library migration on software quality and recommend migration examples that adopt best design and implementation practices to improve software quality. Finally, we provide the software engineering community with a large scale dataset to foster research in software library migration.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
Notes
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
References
Allamanis, M., Sutton, C.: Mining source code repositories at massive scale using language modeling. In: Proceedings of the 10th Working Conference on Mining Software Repositories, pp. 207–216. IEEE Press (2013)
AlOmar, E., Mkaouer, M.W., Ouni, A.: Can refactoring be self-affirmed? an exploratory study on how developers document their refactoring activities in commit messages. In: 2019 IEEE/ACM 3rd International Workshop on Refactoring (IWoR), pp. 51–58. IEEE (2019)
AlOmar, E.A., Mkaouer, M.W., Ouni, A.: Toward the automatic classification of self-affirmed refactoring. J. Syst. Softw. 171, 110821 (2020)
AlOmar, E.A., Mkaouer, M.W., Ouni, A., Kessentini, M.: On the impact of refactoring on the relationship between quality attributes and design metrics. In: 2019 ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM), pp. 1–11. IEEE (2019)
Alrubaye, H., Mkaouer, M.W.: Automating the detection of third-party java library migration at the function level. In: Proceedings of the 28th Annual International Conference on Computer Science and Software Engineering, pp. 60–71. IBM Corp. (2018)
Alrubaye, H., Mkaouer, M.W., Khokhlov, I., Reznik, L., Ouni, A., Mcgoff, J.: Learning to recommend third-party library migration opportunities at the API level. Appl. Soft Comput. 90, 106140 (2020)
Alrubaye, H., Mkaouer, M.W., Ouni, A.: Migrationminer: an automated detection tool of third-party java library migration at the method level. In: The International Conference on Software Maintenance and Evolution (ICSME). IEEE Press (2019)
Alrubaye, H., Mkaouer, M.W., Ouni, A.: On the use of information retrieval to automate the detection of third-party java library migration at the method level. In: Proceedings of the 27th International Conference on Program Comprehension, pp. 347–357. IEEE Press (2019)
Alrubaye, H., Wiem, M.: Variability in library evolution. In: Software Engineering for Variability Intensive Systems: Foundations and Applications, p. 295 (2019)
Alshoaibi, D., Hannigan, K., Gupta, H., Mkaouer, M.W.: PRICE: detection of performance regression introducing code changes using static and dynamic metrics. In: Nejati, S., Gay, G. (eds.) SSBSE 2019. LNCS, vol. 11664, pp. 75–88. Springer, Cham (2019). https://doi.org/10.1007/978-3-030-27455-9_6
Boehm, B., Basili, V.R.: Software defect reduction top 10 list. Found. Empirical Softw. Eng.: Legacy of Victor R. Basili 426(37), 426–431 (2005)
Buse, R.P., Weimer, W.R.: Learning a metric for code readability. IEEE Trans. Softw. Eng. 36(4), 546–558 (2010)
Chidamber, S.R., Kemerer, C.F.: A metrics suite for object oriented design. IEEE Trans. Softw. Eng. 20(6), 476–493 (1994)
Endrikat, S., Hanenberg, S., Robbes, R., Stefik, A.: How do API documentation and static typing affect api usability? In: Proceedings of the 36th International Conference on Software Engineering, pp. 632–642. ACM (2014)
Kula, R.G., German, D.M., Ouni, A., Ishio, T., Inoue, K.: Do developers update their library dependencies? Empirical Softw. Eng. 23(1), 384–417 (2017). https://doi.org/10.1007/s10664-017-9521-5
Linares-Vásquez, M., Bavota, G., Bernal-Cárdenas, C., Di Penta, M., Oliveto, R., Poshyvanyk, D.: Api change and fault proneness: a threat to the success of android apps. In: Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering, pp. 477–487. ACM (2013)
McDonnell, T., Ray, B., Kim, M.: An empirical study of API stability and adoption in the android ecosystem. In: 2013 IEEE International Conference on Software Maintenance, pp. 70–79. IEEE (2013)
Mkaouer, M.W., Kessentini, M., Bechikh, S., Deb, K., Ó Cinnéide, M.: High dimensional search-based software engineering: finding tradeoffs among 15 objectives for automating software refactoring using NSGA-III. In: Proceedings of the 2014 Annual Conference on Genetic and Evolutionary Computation, pp. 1263–1270 (2014)
Mkaouer, M.W., Kessentini, M., Bechikh, S., Ó’Cinnéide, M., Deb, K.: Software refactoring under uncertainty: a robust multi-objective approach. In: Proceedings of the Companion Publication of the 2014 Annual Conference on Genetic and Evolutionary Computation, pp. 187–188 (2014)
Peruma, A., Mkaouer, M.W., Decker, M.J., Newman, C.D.: Contextualizing rename decisions using refactorings, commit messages, and data types. J. Syst. Softw. 169, 110704 (2020)
Peruma, A., Mkaouer, M.W., Decker, M.J., Newman, C.D.: Contextualizing rename decisions using refactorings and commit messages. In: 2019 19th International Working Conference on Source Code Analysis and Manipulation (SCAM), pp. 74–85. IEEE (2019)
Scalabrino, S., Linares-Vásquez, M., Poshyvanyk, D., Oliveto, R.: Improving code readability models with textual features. In: 2016 IEEE 24th International Conference on Program Comprehension (ICPC), pp. 1–10. IEEE (2016)
Shatnawi, A., Seriai, A.D., Sahraoui, H., Alshara, Z.: Reverse engineering reusable software components from object-oriented APIs. J. Syst. Softw. 131, 442–460 (2017)
Stevens, W.P., Myers, G.J., Constantine, L.L.: Structured design. IBM Syst. J. 13(2), 115–139 (1974)
Teyton, C., Falleri, J.R., Blanc, X.: Mining library migration graphs. In: 2012 19th Working Conference on Reverse Engineering (WCRE), pp. 289–298. IEEE (2012)
Teyton, C., Falleri, J.R., Blanc, X.: Automatic discovery of function mappings between similar libraries. In: In 2013 20th Working Conference on Reverse Engineering (WCRE), pp. 192–201. IEEE (2013)
Teyton, C., Falleri, J.R., Palyart, M., Blanc, X.: A study of library migrations in java. J. Softw. Evol. Process 26(11), 1030–1052 (2014)
Acknowledgements
This material is based on work supported by the National Science Foundation under Grant No. 1757680.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2020 Springer Nature Switzerland AG
About this paper
Cite this paper
Alrubaye, H., Alshoaibi, D., Alomar, E., Mkaouer, M.W., Ouni, A. (2020). How Does Library Migration Impact Software Quality and Comprehension? An Empirical Study. In: Ben Sassi, S., Ducasse, S., Mili, H. (eds) Reuse in Emerging Software Engineering Practices. ICSR 2020. Lecture Notes in Computer Science(), vol 12541. Springer, Cham. https://doi.org/10.1007/978-3-030-64694-3_15
Download citation
DOI: https://doi.org/10.1007/978-3-030-64694-3_15
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-64693-6
Online ISBN: 978-3-030-64694-3
eBook Packages: Computer ScienceComputer Science (R0)