{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,6,10]],"date-time":"2026-06-10T03:30:08Z","timestamp":1781062208961,"version":"3.54.1"},"reference-count":46,"publisher":"Springer Science and Business Media LLC","issue":"3","license":[{"start":{"date-parts":[[2021,3,25]],"date-time":"2021-03-25T00:00:00Z","timestamp":1616630400000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"},{"start":{"date-parts":[[2021,3,25]],"date-time":"2021-03-25T00:00:00Z","timestamp":1616630400000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"}],"funder":[{"DOI":"10.13039\/501100004063","name":"Knut och Alice Wallenbergs Stiftelse","doi-asserted-by":"publisher","award":["Wallenberg AI"],"award-info":[{"award-number":["Wallenberg AI"]}],"id":[{"id":"10.13039\/501100004063","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/501100004063","name":"Knut och Alice Wallenbergs Stiftelse","doi-asserted-by":"publisher","award":["Autonomous Systems and Software Program (WASP)"],"award-info":[{"award-number":["Autonomous Systems and Software Program (WASP)"]}],"id":[{"id":"10.13039\/501100004063","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":["Empir Software Eng"],"published-print":{"date-parts":[[2021,5]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>Build 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\u2019s 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\u2019s 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 <jats:sc>DepClean<\/jats:sc>, 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.<\/jats:p>","DOI":"10.1007\/s10664-020-09914-8","type":"journal-article","created":{"date-parts":[[2021,3,25]],"date-time":"2021-03-25T23:40:09Z","timestamp":1616715609000},"update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":77,"title":["A comprehensive study of bloated dependencies in the Maven ecosystem"],"prefix":"10.1007","volume":"26","author":[{"ORCID":"https:\/\/orcid.org\/0000-0003-0541-6411","authenticated-orcid":false,"given":"C\u00e9sar","family":"Soto-Valero","sequence":"first","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-2491-2771","authenticated-orcid":false,"given":"Nicolas","family":"Harrand","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-3505-3383","authenticated-orcid":false,"given":"Martin","family":"Monperrus","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-4015-4640","authenticated-orcid":false,"given":"Benoit","family":"Baudry","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"297","published-online":{"date-parts":[[2021,3,25]]},"reference":[{"key":"9914_CR1","unstructured":"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\u20131714, USA, USENIX Association"},{"key":"9914_CR2","doi-asserted-by":"crossref","unstructured":"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\u201323","DOI":"10.1145\/2593850.2593854"},{"issue":"5","key":"9914_CR3","doi-asserted-by":"publisher","first-page":"1275","DOI":"10.1007\/s10664-014-9325-9","volume":"20","author":"G Bavota","year":"2015","unstructured":"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\u20131317","journal-title":"Empir Softw Eng"},{"key":"9914_CR4","doi-asserted-by":"crossref","unstructured":"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","DOI":"10.1109\/MSR.2019.00060"},{"issue":"6","key":"9914_CR5","doi-asserted-by":"publisher","first-page":"3117","DOI":"10.1007\/s10664-017-9510-8","volume":"22","author":"C-P Bezemer","year":"2017","unstructured":"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\u20133148","journal-title":"Empir Softw Eng"},{"issue":"5","key":"9914_CR6","doi-asserted-by":"publisher","first-page":"3077","DOI":"10.1007\/s10664-018-9675-9","volume":"24","author":"D Binkley","year":"2019","unstructured":"Binkley D, Gold N, Islam S, Krinke J, Yoo S (2019) A comparison of tree-and line-oriented observational slicing. Empir Softw Eng 24(5):3077\u20133113","journal-title":"Empir Softw Eng"},{"issue":"4","key":"9914_CR7","doi-asserted-by":"publisher","first-page":"10","DOI":"10.1109\/MC.1987.1663532","volume":"20","author":"FP Brooks","year":"1987","unstructured":"Brooks FP (1987) No silver bullet: Essence and accidents of software engineering. Computer 20(4):10\u201319","journal-title":"Computer"},{"issue":"5","key":"9914_CR8","doi-asserted-by":"publisher","first-page":"544","DOI":"10.1007\/s10664-011-9158-8","volume":"16","author":"TB Callo Arias","year":"2011","unstructured":"Callo Arias TB, van der Spek P, Avgeriou P (2011) A practice-driven systematic review of dependency analysis solutions. Empir Softw Eng 16 (5):544\u2013586","journal-title":"Empir Softw Eng"},{"key":"9914_CR9","doi-asserted-by":"crossref","unstructured":"Celik A, Knaust A, Milicevic A, Gligoric M (2016) Build system with lazy retrieval for java projects. In: Proceedings of the 2016 24th ACM SIGSOFT international symposium on foundations of software engineering, FSE,. ACM, New York, pp 643\u2013654","DOI":"10.1145\/2950290.2950358"},{"issue":"9","key":"9914_CR10","doi-asserted-by":"publisher","first-page":"36","DOI":"10.1145\/3347446","volume":"62","author":"R Cox","year":"2019","unstructured":"Cox R (2019) Surviving software dependencies. Commun ACM 62 (9):36\u201343","journal-title":"Commun ACM"},{"key":"9914_CR11","doi-asserted-by":"crossref","unstructured":"Decan A, Mens T, Claes M (2017) An empirical comparison of dependency issues in OSS packaging ecosystems. In: 2017 IEEE 24th international conference on software analysis, evolution and reengineering, SANER, pp 2\u201312","DOI":"10.1109\/SANER.2017.7884604"},{"issue":"1","key":"9914_CR12","doi-asserted-by":"publisher","first-page":"381","DOI":"10.1007\/s10664-017-9589-y","volume":"24","author":"A Decan","year":"2019","unstructured":"Decan A, Mens T, Grosjean P (2019) An empirical comparison of dependency network evolution in seven software packaging ecosystems. Empir Softw Eng 24(1):381\u2013416","journal-title":"Empir Softw Eng"},{"key":"9914_CR13","doi-asserted-by":"crossref","unstructured":"Gkortzis A, Feitosa D, Spinellis D (2019) A double-edged sword? Software reuse and potential security vulnerabilities. In: Reuse in the big data era. Springer International Publishing, pp 187\u2013203","DOI":"10.1007\/978-3-030-22888-0_13"},{"key":"9914_CR14","unstructured":"Harrand N, Benelallam A, Soto-Valero C, Barais O, Baudry B (2019) Analyzing 2.3 million Maven dependencies to reveal an essential core in APIs. arXiv:1908.09757"},{"key":"9914_CR15","unstructured":"Heath B, Velingker N, Bastani O, Naik M (2019) PolyDroid: Learning-driven specialization of mobile applications. arXiv:1902.09589"},{"key":"9914_CR16","unstructured":"Hejderup J (2015) In dependencies we trust: How vulnerable are dependencies in software modules? PhD thesis, Delft University of Technology"},{"key":"9914_CR17","unstructured":"Hejderup J, Beller M, Gousios G (2018) PR\u00c4ZI: From package-based to precise call-based dependency network analyses. Delft University of Technology"},{"issue":"2","key":"9914_CR18","doi-asserted-by":"publisher","first-page":"10","DOI":"10.1109\/MS.2015.40","volume":"1","author":"GJ Holzmann","year":"2015","unstructured":"Holzmann GJ (2015) Code inflation. IEEE Softw 1(2):10\u201313","journal-title":"IEEE Softw"},{"issue":"7","key":"9914_CR19","doi-asserted-by":"publisher","first-page":"35","DOI":"10.1145\/960116.53994","volume":"23","author":"S Horwitz","year":"1988","unstructured":"Horwitz S, Reps T, Binkley D (1988) Interprocedural slicing using dependence graphs. SIGPLAN Not 23(7):35\u201346","journal-title":"SIGPLAN Not"},{"key":"9914_CR20","doi-asserted-by":"crossref","unstructured":"Jezek K, Dietrich J (2014) On the use of static analysis to safeguard recursive dependency resolution. In: 2014 40th EUROMICRO conference on software engineering and advanced applications, pp 166\u2013173","DOI":"10.1109\/SEAA.2014.35"},{"key":"9914_CR21","doi-asserted-by":"crossref","unstructured":"Jiang Y, Wu D, Liu P (2016) JRed: Program customization and bloatware mitigation based on static analysis. In: 2016 IEEE 40th annual computer software and applications conference (COMPSAC), vol 1, pp 12\u201321","DOI":"10.1109\/COMPSAC.2016.146"},{"issue":"2","key":"9914_CR22","doi-asserted-by":"publisher","first-page":"131","DOI":"10.1145\/130844.130856","volume":"24","author":"CW Krueger","year":"1992","unstructured":"Krueger CW (1992) Software reuse. ACM Comput Surv 24(2):131\u2013183","journal-title":"ACM Comput Surv"},{"issue":"1","key":"9914_CR23","doi-asserted-by":"publisher","first-page":"384","DOI":"10.1007\/s10664-017-9521-5","volume":"23","author":"RG Kula","year":"2018","unstructured":"Kula RG, German DM, Ouni A, Ishio T, Inoue K (2018) Do developers update their library dependencies?. Empir Softw Eng 23(1):384\u2013417","journal-title":"Empir Softw Eng"},{"key":"9914_CR24","doi-asserted-by":"crossref","unstructured":"L\u00e4mmel R, Pek E, Starek J (2011) Large-scale, AST-based API-usage analysis of open-source java projects. In: Proceedings of the 2011 ACM symposium on applied computing, SAC \u201911. ACM, New York, pp 1317\u20131324","DOI":"10.1145\/1982185.1982471"},{"key":"9914_CR25","doi-asserted-by":"crossref","unstructured":"Landman D, Serebrenik A, Vinju JJ (2017) Challenges for static analysis of java reflection - literature review and empirical study. In: 2017 IEEE\/ACM 39th international conference on software engineering (ICSE), pp 507\u2013518","DOI":"10.1109\/ICSE.2017.53"},{"issue":"5","key":"9914_CR26","doi-asserted-by":"publisher","first-page":"23","DOI":"10.1109\/52.311048","volume":"11","author":"WC Lim","year":"1994","unstructured":"Lim WC (1994) Effects of reuse on quality, productivity, and economics. IEEE Softw 11(5):23\u201330","journal-title":"IEEE Softw"},{"key":"9914_CR27","unstructured":"Lindholm T, Yellin F, Bracha G, Buckley A (2014) The java virtual machine specification. Pearson Education"},{"issue":"4","key":"9914_CR28","doi-asserted-by":"publisher","first-page":"578","DOI":"10.1007\/s10664-011-9169-5","volume":"17","author":"S McIntosh","year":"2012","unstructured":"McIntosh S, Adams B, Hassan AE (2012) The evolution of java build systems. Empir Softw Eng 17(4):578\u2013608","journal-title":"Empir Softw Eng"},{"key":"9914_CR29","doi-asserted-by":"crossref","unstructured":"McIntosh S, Poehlmann M, Juergens E, Mockus A, Adams B, Hassan AE, Haupt B, Wagner C (2014) Collecting and leveraging a benchmark of build system clones to aid in quality assessments. In: Companion proceedings of the 36th international conference on software engineering, ICSE Companion 2014. Association for Computing Machinery, New York, pp 145\u2013154","DOI":"10.1145\/2591062.2591181"},{"issue":"6","key":"9914_CR30","doi-asserted-by":"publisher","first-page":"62","DOI":"10.1145\/2896587","volume":"59","author":"BA Myers","year":"2016","unstructured":"Myers BA, Stylos J (2016) Improving API usability. Commun ACM 59(6):62\u201369","journal-title":"Commun ACM"},{"key":"9914_CR31","volume-title":"Software engineering: Report of a conference sponsored by the NATO Science Committee, Garmisch, Germany, 7\u201311 Oct. 1968, Brussels, Scientific Affairs Division, NATO","year":"1969","unstructured":"Naur P., Randell B. (eds) (1969) Software engineering: Report of a conference sponsored by the NATO Science Committee, Garmisch, Germany, 7\u201311 Oct. 1968, Brussels, Scientific Affairs Division, NATO. Newcastle University, Newcastle upon Tyne"},{"key":"9914_CR32","doi-asserted-by":"publisher","first-page":"110460","DOI":"10.1016\/j.jss.2019.110460","volume":"161","author":"PT Nguyen","year":"2020","unstructured":"Nguyen PT, Di Rocco J, Di Ruscio D, Di Penta M (2020) CrossRec: Supporting software developers by recommending third-party libraries. J Syst Softw 161:110460","journal-title":"J Syst Softw"},{"key":"9914_CR33","unstructured":"Pham HV, Vu PM, Nguyen TT, et al. (2016) Learning API usages from bytecode: A statistical approach. In: Proceedings of the 38th international conference on software engineering. ACM, pp 416\u2013427"},{"key":"9914_CR34","doi-asserted-by":"publisher","first-page":"81","DOI":"10.1016\/j.infsof.2016.01.011","volume":"73","author":"D Qiu","year":"2016","unstructured":"Qiu D, Li B, Leung H (2016) Understanding the API usage in Java. Info Softw Technol 73:81\u2013100","journal-title":"Info Softw Technol"},{"key":"9914_CR35","doi-asserted-by":"crossref","unstructured":"Quach A, Erinfolami R, Demicco D, Prakash A (2017) A multi-OS cross-layer study of bloating in user programs, kernel and managed execution environments. In: Proceedings of the 2017 workshop on forming an ecosystem around software transformation. ACM, pp 65\u201370","DOI":"10.1145\/3141235.3141242"},{"key":"9914_CR36","doi-asserted-by":"crossref","unstructured":"Rastogi V, Davidson D, De Carli L, Jha S, McDaniel P (2017) Cimplifier: Automatically debloating containers. In: Proceedings of the 2017 11th Joint meeting on foundations of software engineering, ESEC\/FSE 2017. ACM, New York, pp 476\u2013486","DOI":"10.1145\/3106237.3106271"},{"key":"9914_CR37","doi-asserted-by":"crossref","unstructured":"Roover CD, L\u00e4mmel R, Pek E (2013) Multi-dimensional exploration of API usage. In: 21st International conference on program comprehension, ICPC, pp 152\u2013161","DOI":"10.1109\/ICPC.2013.6613843"},{"key":"9914_CR38","doi-asserted-by":"crossref","unstructured":"Salza P, Palomba F, Di Nucci D, De Lucia A, Ferrucci F (2019) Third-party libraries in mobile apps. Empirical Software Engineering","DOI":"10.1145\/3196321.3196341"},{"key":"9914_CR39","doi-asserted-by":"crossref","unstructured":"Seo H, Sadowski C, Elbaum S, Aftandilian E, Bowdidge R (2014) Programmers\u2019 build errors: A case study (at Google). In: Proceedings of the 36th international conference on software engineering, ICSE 2014. ACM, New York, pp 724\u2013734","DOI":"10.1145\/2568225.2568255"},{"key":"9914_CR40","doi-asserted-by":"crossref","unstructured":"Sharif H, Abubakar M, Gehani A, Zaffar F (2018) TRIMMER: Application specialization for code debloating. In: Proceedings of the 33rd ACM\/EEE international conference on automated software engineering, ASE 2018. ACM, New York, pp 329\u2013339","DOI":"10.1145\/3238147.3238160"},{"key":"9914_CR41","volume-title":"Guide to advanced empirical software engineering","author":"F Shull","year":"2007","unstructured":"Shull F, Singer J, Sj\u00f8berg DI (2007) Guide to advanced empirical software engineering. Springer, Berlin"},{"key":"9914_CR42","doi-asserted-by":"crossref","unstructured":"Soto-Valero C, Benelallam A, Harrand N, Barais O, Baudry B (2019) The emergence of software diversity in Maven Central. In: 16th international conference on mining software repositories, MSR 2019. ACM, New York, pp 1\u201310","DOI":"10.1109\/MSR.2019.00059"},{"key":"9914_CR43","doi-asserted-by":"crossref","unstructured":"Sridharan M, Fink SJ, Bodik R (2007) Thin slicing. In: Proceedings of the 28th ACM SIGPLAN conference on programming language design and implementation, PLDI\u201907. Association for Computing Machinery, New York, pp 112\u2013122","DOI":"10.1145\/1250734.1250748"},{"key":"9914_CR44","doi-asserted-by":"publisher","first-page":"18","DOI":"10.1016\/j.infsof.2018.10.009","volume":"107","author":"H V\u00e1zquez","year":"2019","unstructured":"V\u00e1zquez H, Bergel A, Vidal S, Pace JD, Marcos C (2019) Slimming Javascript applications: An approach for removing unused functions from Javascript libraries. Inf Softw Technol 107:18\u201329","journal-title":"Inf Softw Technol"},{"issue":"3","key":"9914_CR45","doi-asserted-by":"publisher","first-page":"1194","DOI":"10.1007\/s10664-016-9487-8","volume":"22","author":"Y Wu","year":"2017","unstructured":"Wu Y, Manabe Y, Kanda T, German DM, Inoue K (2017) Analysis of license inconsistency in large collections of open source projects. Empir Softw Eng 22(3):1194\u20131222","journal-title":"Empir Softw Eng"},{"key":"9914_CR46","unstructured":"Yu Y, Dayani-Fard H, Mylopoulos J (2003) Removing false code dependencies to speedup software build processes. In: Proceedings of the 2003 conference of the centre for advanced studies on collaborative research, CASCON. IBM Press, pp 343\u2013352"}],"container-title":["Empirical Software Engineering"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s10664-020-09914-8.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/article\/10.1007\/s10664-020-09914-8\/fulltext.html","content-type":"text\/html","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s10664-020-09914-8.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2021,4,25]],"date-time":"2021-04-25T07:52:33Z","timestamp":1619337153000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/s10664-020-09914-8"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2021,3,25]]},"references-count":46,"journal-issue":{"issue":"3","published-print":{"date-parts":[[2021,5]]}},"alternative-id":["9914"],"URL":"https:\/\/doi.org\/10.1007\/s10664-020-09914-8","relation":{},"ISSN":["1382-3256","1573-7616"],"issn-type":[{"value":"1382-3256","type":"print"},{"value":"1573-7616","type":"electronic"}],"subject":[],"published":{"date-parts":[[2021,3,25]]},"assertion":[{"value":"23 September 2020","order":1,"name":"accepted","label":"Accepted","group":{"name":"ArticleHistory","label":"Article History"}},{"value":"25 March 2021","order":2,"name":"first_online","label":"First Online","group":{"name":"ArticleHistory","label":"Article History"}}],"article-number":"45"}}