Abstract
AbstractBuild automation tools and package managers have a profound influence on software development. They facilitate the reuse of third-party libraries, support a clear separation between the application’s code and its external dependencies, and automate several software development tasks. However, the wide adoption of these tools introduces new challenges related to dependency management. In this paper, we propose an original study of one such challenge: the emergence of bloated dependencies. Bloated dependencies are libraries that are packaged with the application’s compiled code but that are actually not necessary to build and run the application. They artificially grow the size of the built binary and increase maintenance effort. We propose DepClean, a tool to determine the presence of bloated dependencies in Maven artifacts. We analyze 9,639 Java artifacts hosted on Maven Central, which include a total of 723,444 dependency relationships. Our key result is as follows: 2.7% of the dependencies directly declared are bloated, 15.4% of the inherited dependencies are bloated, and 57% of the transitive dependencies of the studied artifacts are bloated. In other words, it is feasible to reduce the number of dependencies of Maven artifacts to 1/4 of its current count. Our qualitative assessment with 30 notable open-source projects indicates that developers pay attention to their dependencies when they are notified of the problem. They are willing to remove bloated dependencies: 21/26 answered pull requests were accepted and merged by developers, removing 140 dependencies in total: 75 direct and 65 transitive.
Funder
Knut och Alice Wallenbergs Stiftelse
Publisher
Springer Science and Business Media LLC
Reference46 articles.
1. Azad BA, Laperdrix P, Nikiforakis N (2019) Less is more: Quantifying the security benefits of debloating web applications. In: Proceedings of the 28th USENIX conference on security symposium, SEC, pp 1697–1714, USA, USENIX Association
2. Bauer V, Eckhardt J, Hauptmann B, Klimek M (2014) An exploratory study on reuse at Google. In: Proceedings of the 1st International workshop on software engineering research and industrial practices, SERIP. ACM, New York, pp 14–23
3. Bavota G, Canfora G, Di Penta M, Oliveto R, Panichella S (2015) How the apache community upgrades dependencies: An evolutionary study. Empir Softw Eng 20(5):1275–1317
4. Benelallam A, Harrand N, Soto-Valero C, Baudry B, Barais O (2019) The Maven dependency graph: a temporal graph-based representation of Maven Central. In: 16th international conference on mining software repositories (MSR). IEEE/ACM, Montreal
5. Bezemer C. -P., McIntosh S, Adams B, German DM, Hassan AE (2017) An empirical study of unspecified dependencies in make-based build systems. Empir Softw Eng 22(6):3117–3148
Cited by
52 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献