Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/3368089.3409738acmconferencesArticle/Chapter ViewAbstractPublication PagesfseConference Proceedingsconference-collections
research-article
Open access

JShrink: in-depth investigation into debloating modern Java applications

Published: 08 November 2020 Publication History

Abstract

Modern software is bloated. Demand for new functionality has led developers to include more and more features, many of which become unneeded or unused as software evolves. This phenomenon, known as software bloat, results in software consuming more resources than it otherwise needs to. How to effectively and automatically debloat software is a long-standing problem in software engineering. Various debloating techniques have been proposed since the late 1990s. However, many of these techniques are built upon pure static analysis and have yet to be extended and evaluated in the context of modern Java applications where dynamic language features are prevalent.
To this end, we develop an end-to-end bytecode debloating framework called JShrink. It augments traditional static reachability analysis with dynamic profiling and type dependency analysis and renovates existing bytecode transformations to account for new language features in modern Java. We highlight several nuanced technical challenges that must be handled properly and examine behavior preservation of debloated software via regression testing. We find that (1) JShrink is able to debloat our real-world Java benchmark suite by up to 47% (14% on average); (2) accounting for dynamic language features is indeed crucial to ensure behavior preservation---reducing 98% of test failures incurred by a purely static equivalent, Jax, and 84% for ProGuard; and (3) compared with purely dynamic approaches, integrating static analysis with dynamic profiling makes the debloated software more robust to unseen test executions---in 22 out of 26 projects, the debloated software ran successfully under new tests.

Supplementary Material

Auxiliary Teaser Video (fse20main-p497-p-teaser.mp4)
The presentation for "JShrink: In-Depth Investigation into Debloating Modern Java Applications" by Bobby R. Bruce, Tianyi Zhang, Jaspreet Arora, Guoqing Harry Xu, and Miryung Kim
Auxiliary Presentation Video (fse20main-p497-p-video.mp4)
The presentation for "JShrink: In-Depth Investigation into Debloating Modern Java Applications" by Bobby R. Bruce, Tianyi Zhang, Jaspreet Arora, Guoqing Harry Xu, and Miryung Kim

References

[1]
[n.d.]. Cobertura: A code coverage utility for Java. https://cobertura.github.io/ cobertura. Accessed: 2020-02-16.
[2]
[n.d.]. Google BigQuery API and GitHub Dataset. https://cloud.google.com/ bigquery/public-data/. Accessed: 2020-04-04.
[3]
[n.d.]. JVM TI APIs. https://docs.oracle.com/javase/8/docs/technotes/guides/ jvmti/. Accessed: 2020-04-04.
[4]
[n.d.]. ONR BAA Announcement # N00014-17-S-B010. https://www.onr. navy.mil/-/media/Files/Funding-Announcements/BAA/2017/N00014-17-SB010.ashx. Accessed: 2019-05-13.
[5]
[n.d.]. ProGuard Bug # 767: A misjudgement exception occurs while preverifying. https://sourceforge.net/p/proguard/bugs/767. Accessed: 2020-04-04.
[6]
[n.d.]. ProGuard: Java and Android Apps Optimizer. https://www.guardsquare. com/en/products/proguard. Accessed: 2019-12-13.
[7]
[n.d.]. Why The Java Deserialization Bug Is A Big Deal. Available from www.darkreading.com. https://www.darkreading.com/informationweek-home/ why-the-java-deserialization-bug-is-a-big-deal/d/d-id/1323237
[8]
[n.d.]. ysoserial: a proof-of-concept tool for generating payloads that exploit unsafe Java object deserialization. https://github.com/frohof/ysoserial. Accessed: 2019-05-10.
[9]
David F Bacon and Peter F Sweeney. 1996. Fast static analysis of C++ virtual function calls. ACM Sigplan Notices 31, 10 ( 1996 ), 324-341. https://doi.org/10. 1145/236338.236371
[10]
Árpád Beszédes, Rudolf Ferenc, Tibor Gyimóthy, André Dolenc, and Konsta Karsisto. 2003. Survey of Code-size Reduction Methods. ACM Computer Survey 35, 3 ( 2003 ), 223-267. https://doi.org/10.1145/937503.937504
[11]
Eric Bodden, Andreas Sewe, Jan Sinschek, Hela Oueslati, and Mira Mezini. 2011. Taming Reflection: Aiding Static Analysis in the Presence of Reflection and Custom Class Loaders. In Proceedings of the 2011 International Conference on Software Engineering-ICSE '11. ACM, 241-250. https://doi.org/10.1145/1985793. 1985827
[12]
Eric Bruneton, Romain Lenglet, and Thierry Coupaye. 2002. ASM: A code manipulation tool to implement adaptable systems. In Adaptable and extensible component systems.
[13]
Erik Buchanan, Ryan Roemer, Hovav Shacham, and Stefan Savage. 2008. When good instructions go bad: Generalizing return-oriented programming to RISC. In Proceedings of the 2008 ACM conference on Computer and Communications Security-CCS '08. ACM, 27-38. https://doi.org/10.1145/1455770.1455776
[14]
Jefrey C. Carver, Natalia Juristo, Maria Teresa Baldassarre, and Sira Vegas. 2014. Replications of Software Engineering Experiments. Empirical Softw. Engg. 19, 2 (April 2014 ), 267-276. https://doi.org/10.1007/s10664-013-9290-8
[15]
Ahmet Celik, Alex Knaust, Aleksandar Milicevic, and Milos Gligoric. 2016. Build system with lazy retrieval for Java projects. In Proceedings of the 2016 SIGSOFT International Symposium on Foundations of Software Engineering-FSE '16. ACM, 643-654. https://doi.org/10.1145/2950290.2950358
[16]
Keith D. Cooper and Nathaniel McIntosh. 1999. Enhanced Code Compression for Embedded RISC Processors. In Proceedings of the 1999 Conference on Programming Language Design and Implementation-PLDI '99. ACM, 139-149. https://doi.org/ 10.1145/301631.301655
[17]
Jefrey Dean, David Grove, and Craig Chambers. 1995. Optimization of objectoriented programs using static class hierarchy analysis. In Proceedings of the 1995 European Conference on Object-Oriented Programming-ECOOP '95. https: //doi.org/10.1007/3-540-49538-X_5
[18]
Saumya K. Debray, William Evans, Robert Muth, and Bjorn De Sutter. 2000. Compiler Techniques for Code Compaction. Transactions on Programming Languages and Systems 22, 2 ( 2000 ), 378-415. https://doi.org/10.1145/349214.349233
[19]
Jens Ernst, William Evans, Christopher W. Fraser, Todd A. Proebsting, and Steven Lucco. 1997. Code Compression. In Proceedings of the 1997 Conference on Programming Language Design and Implementation-PLDI '97. ACM, 358-365. https://doi.org/10.1145/258916.258947
[20]
Robert Feldt, Tim Menzies, and Thomas Zimmermann. 2018. The 26th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE 2018), ROSE Festival 2018 Recognizing and Rewarding Open Science in Software Engineering. https://2018.fseconference.org/track/rosefest-2018.
[21]
Kostas Ferles, Valentin Wüstholz, Maria Christakis, and Isil Dillig. 2017. Failuredirected Program Trimming. In Proceedings of the 2017 Symposium on the Foundations of Software Engineering-FSE '17. ACM, 174-185. https://doi.org/10.1145/ 3106237.3106249
[22]
George Fourtounis, George Kastrinis, and Yannis Smaragdakis. 2018. Static Analysis of Java Dynamic Proxies. In Proceedings of the 27th ACM SIGSOFT International Symposium on Software Testing and Analysis (Amsterdam, Netherlands) ( ISSTA 2018). ACM, New York, NY, USA, 209-220. https://doi.org/10.1145/3213846. 3213864
[23]
Gordon Fraser and Andrea Arcuri. 2011. EvoSuite: automatic test suite generation for object-oriented software. In Proceedings of the 2011 Conference on Foundations of Software Engineering-FSE '11. ACM, 416-419. https://doi.org/10.1145/2025113. 2025179
[24]
Neal Glew and Jens Palsberg. 2002. Type-safe method inlining. In Proceedings of the European Conference on Object-Oriented Programming-ECOOP '02. Springer, 525-544. https://doi.org/10.1007/3-540-47993-7_22
[25]
Neal Glew and Jens Palsberg. 2005. Method Inlining, Dynamic Class Loading, and Type Soundness. Journal of Object Technology 4, 8 ( 2005 ), 33-53.
[26]
David Grove, Greg DeFouw, Jefrey Dean, and Craig Chambers. 1997. Call graph construction in object-oriented languages. ACM SIGPLAN Notices 32, 10 ( 1997 ), 108-124. https://doi.org/10.1145/263698.264352
[27]
Kihong Heo, Woosuk Lee, Pardis Pashakhanloo, and Mayur Naik. 2018. Efective Program Debloating via Reinforcement Learning. In Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security (Toronto, Canada) ( CCS '18). ACM, New York, NY, USA, 380-394. https://doi.org/10.1145/3243734. 3243838
[28]
S. Horwitz, T. Reps, and D. Binkley. 1988. Interprocedural Slicing Using Dependence Graphs. In Proceedings of the Conference on Programming Language Design and Implementation-PLDI '88. ACM, 35-46. https://doi.org/10.1145/77606.77608
[29]
Yufei Jiang, Qinkun Bao, Shuai Wang, Xiao Liu, and Dinghao Wu. 2018. RedDroid: Android application redundancy customization based on static analysis. In 2018 IEEE 29th International Symposium on Software Reliability Engineering (ISSRE). IEEE, 189-199. https://doi.org/10.1109/ISSRE. 2018.00029
[30]
Yufei Jiang, Dinghao Wu, and Peng Liu. 2016. JRed: Program customization and bloatware mitigation based on static analysis. In Proceedings of the 2016 Computer Software and Applications Conference-COMPSAC '16. IEEE, 12-21. https://doi.org/10.1109/COMPSAC. 2016.146
[31]
Christian Gram Kalhauge and Jens Palsberg. 2019. Binary Reduction of Dependency Graphs. In Proceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering (Tallinn, Estonia) (ESEC/FSE 2019). ACM, New York, NY, USA, 556-566. https://doi.org/10.1145/3338906.3338956
[32]
Darko Kirovski, Johnson Kin, and William H. Mangione-Smith. 1997. Procedure Based Program Compression. In Proceedings of the 1997 International Symposium on Microarchitecture-Micro '97. ACM, 204-213. https://doi.org/10.1023/A: 1018728216668
[33]
Davy Landman, Alexander Serebrenik, and Jurgen J. Vinju. 2017. Challenges for Static Analysis of Java Reflection: Literature Review and Empirical Study. In Proceedings of the 39th International Conference on Software Engineering (Buenos Aires, Argentina) (ICSE '17). IEEE Press, Piscataway, NJ, USA, 507-518. https: //doi.org/10.1109/ICSE. 2017.53
[34]
Jason Landsborough, Stephen Harding, and Sunny Fugate. 2015. Removing the kitchen sink from software. In Proceedings of the 2015 Genetic and Evolutionary Computation Conference Companion-GECCO Companion '15. ACM, 833-838. https://doi.org/10.1145/2739482.2768424
[35]
Charles Lefurgy, Eva Piccininni, and Trevor Mudge. 1999. Evaluation of a High Performance Code Compression Method. In Proceedings of the 1999 International Symposium on Microarchitecture-Micro '99. 93-102. https://doi.org/10.1109/ MICRO. 1999.809447
[36]
Haris Lekatsas, Jörg Henkel, and Wayne Wolf. 2000. Code Compression for Low Power Embedded System Design. In Proceedings of the 2000 Annual Design Automation Conference-DAC '00. 294-299. https://doi.org/10.1145/337292. 337423
[37]
Ondrej Lhoták. 2002. Spark: A flexible points-to analysis framework for Java. ( 2002 ).
[38]
Yue Li, Tian Tan, Yulei Sui, and Jingling Xue. 2014. Self-inferencing Reflection Resolution for Java. In ECOOP 2014-Object-Oriented Programming, Richard Jones (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg, 27-53. https://doi. org/10.1007/978-3-662-44202-9_2
[39]
Benjamin Livshits, Dimitrios Vardoulakis, Manu Sridharan, Yannis Smaragdakis, Ondřej Lhoták, José Amaral, Bor-Yuh Evan Chang, Samuel Guyer, Uday Khedker, and Anders Møller. 2015. In Defense of Soundiness: A Manifesto. Commun. ACM 58 ( 01 2015 ), 44-46. https://doi.org/10.1145/2644805
[40]
Benjamin Livshits, John Whaley, and Monica S. Lam. 2005. Reflection Analysis for Java. In Proceedings of the Third Asian Conference on Programming Languages and Systems (Tsukuba, Japan) (APLAS'05). Springer-Verlag, Berlin, Heidelberg, 139-160. https://doi.org/10.1007/11575467_11
[41]
Konner Macias, Mihir Mathur, Bobby R. Bruce, Tianyi Zhang, and Miryung Kim. 2020. WebJShrink: A Web Service for Debloating Java Bytecode. In Proceedings of the 28th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering-ESEC/FSE '20. ACM. https://doi. org/10.1145/3368089.3417934
[42]
Frederic P. Miller, Agnes F. Vandome, and John McBrewster. 2010. Apache Maven. Alpha Press.
[43]
Nick Mitchell, Edith Schonberg, and Gary Sevitsky. [n.d.]. Four Trends Leading to Java Runtime Bloat. IEEE Software 27, 1 ([n. d.]), 56-63. https://doi.org/10. 1109/MS. 2010.7
[44]
Nick Mitchell and Gary Sevitsky. 2007. The Causes of Bloat, the Limits of Health. Proceedings of the 2007 Conference on Object-Oriented Programming Systems, Languages, and Applications-OOPSLA '07 ( 2007 ), 245-260. https: //doi.org/10.1145/1297027.1297046
[45]
Chenxiong Qian, Hong Hu, Mansour Alharthi, Pak Ho Chung, Taesoo Kim, and Wenke Lee. 2019. {RAZOR}: A Framework for Post-deployment Software Debloating. In 28th {USENIX} Security Symposium ({USENIX} Security 19). 1733-1750.
[46]
Anh Quach, Aravind Prakash, and Lok Yan. 2018. Debloating software through piece-wise compilation and loading. In Proceedings of the 2018 USENIX Security Symposium-USENIX Security '18. 869-886.
[47]
Vaibhav Rastogi, Drew Davidson, Lorenzo De Carli, Somesh Jha, and Patrick McDaniel. 2017. Cimplifier: Automatically Debloating Containers. In Proceedings of the 2017 Symposium on the Foundations of Software Engineering-FSE '17. ACM, 476-486. https://doi.org/10.1145/3106237.3106271
[48]
John Regehr, Yang Chen, Pascal Cuoq, Eric Eide, Chucky Ellison, and Xuejun Yang. 2012. Test-case reduction for C compiler bugs. In ACM SIGPLAN Notices, Vol. 47. ACM, 335-346. https://doi.org/10.1145/2254064.2254104
[49]
Thomas Reps, Susan Horwitz, Mooly Sagiv, and Genevieve Rosay. 1994. Speeding Up Slicing. In Proceedings of the 1994 Symposium on Foundations of Software Engineering-FSE '94. ACM, 11-20. https://doi.org/10.1145/195274.195287
[50]
IEEE Security and Privacy. 2019. A list of CS conferences with “SoK” tracks. https://oaklandsok.github.io/others/.
[51]
Marc Shapiro and Susan Horwitz. 1997. Fast and accurate flow-insensitive pointsto analysis. In Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages. ACM, 1-14. https://doi.org/10.1145/263699. 263703
[52]
Hashim Sharif, Muhammad Abubakar, Ashish Gehani, and Fareed Zafar. 2018. TRIMMER: Application Specialization for Code Debloating. In Proceedings of the 2018 International Conference on Automated Software Engineering-ASE '18. ACM, 329-339. https://doi.org/10.1145/3238147.3238160
[53]
Olin Shivers. 1991. Control-flow analysis of higher-order languages. Ph.D. Dissertation. Citeseer.
[54]
Yannis Smaragdakis, George Balatsouras, George Kastrinis, and Martin Bravenboer. 2015. More Sound Static Handling of Java Reflection. In APLAS. https: //doi.org/10.1007/978-3-319-26529-2_26
[55]
César Soto-Valero, Nicolas Harrand, Martin Monperrus, and Benoit Baudry. 2020. A Comprehensive Study of Bloated Dependencies in the Maven Ecosystem. arXiv preprint arXiv: 2001. 07808 ( 2020 ).
[56]
Manu Sridharan, Stephen J. Fink, and Rastislav Bodik. 2007. Thin Slicing. In Proceedings of the Conference on Programming Language Design and Implementation-PLDI '07. ACM, 112-122. https://doi.org/10.1145/1250734.1250748
[57]
Venkatesh Srinivasan and Thomas Reps. 2016. An Improved Algorithm for Slicing Machine Code. In Proceedings of the Conference on Object-Oriented Programming, Systems, Languages, and Applications-OOPSLA '16. ACM, 378-393. https: //doi.org/10.1145/3022671.2984003
[58]
Li Sui, Jens Dietrich, Michael Emery, Shawn Rasheed, and Amjed Tahir. 2018. On the Soundness of Call Graph Construction in the Presence of Dynamic Language Features-A Benchmark and Tool Evaluation. In Asian Symposium on Programming Languages and Systems. Springer, 69-88. https://doi.org/10.1007/978-3-030-02768-1_4
[59]
Chengnian Sun, Yuanbo Li, Qirun Zhang, Tianxiao Gu, and Zhendong Su. 2018. Perses: syntax-guided program reduction. In Proceedings of the 40th International Conference on Software Engineering. ACM, 361-371. https://doi.org/10.1145/ 3180155.3180236
[60]
Frank Tip. 1994. A Survey of Program Slicing Techniques. Technical Report. Amsterdam, The Netherlands, The Netherlands.
[61]
Frank Tip, Chris Lafra, Peter F. Sweeney, and David Streeter. 1999. Practical Experience with an Application Extractor for Java. In Proceedings of the 1999 Conference on Object-oriented Programming, Systems, Languages, and Applications-OOPSLA '99. ACM, 292-305. https://doi.org/10.1145/320384.320414
[62]
Frank Tip, Peter F Sweeney, Chris Lafra, Aldo Eisma, and David Streeter. 2002. Practical extraction techniques for Java. ACM Transactions on Programming Languages and Systems-TOPLAS '02 24, 6 ( 2002 ), 625-666. https://doi.org/10. 1145/586088.586090
[63]
Mohsen Vakilian, Raluca Sauciuc, J David Morgenthaler, and Vahab Mirrokni. 2015. Automated decomposition of build targets. In Proceedings of the 2015 International Conference on Software Engineering-ICSE '15. IEEE Press, 123-133. https://doi.org/10.1109/ICSE. 2015.34
[64]
Raja Vallée-Rai, Phong Co, Etienne Gagnon, Laurie Hendren, Patrick Lam, and Vijay Sundaresan. 1999. Soot-A Java Bytecode Optimization Framework. In Proceedings of the 1999 Conference of the Centre for Advanced Studies on Collaborative Research-CASCON '99. IBM Press, 13-23. https://doi.org/10.1145/1925805. 1925818
[65]
R. van de Wiel, L. Augusteijn, A. Bink, and P. Hoogendijk. 2001. Code compaction: Reducing memory cost of embedded software. Philips White Paper.
[66]
R. van de Wiel and P. Hoogendijk. 2001. Belt-tightening in software. Philips Res. Passw. Mag., 16-19 pages.
[67]
H.C. Vazquez, A. Bergel, S. Vidal, J.A. Diaz Pace, and C. Marcos. 2019. Slimming Javascript applications: An approach for removing unused functions from Javascript libraries. Information and Software Technology 107 ( 2019 ), 18-29. https://doi.org/10.1016/j.infsof. 2018. 10.009
[68]
Dongpeng Xu, Jiang Ming, Yu Fu, and Dinghao Wu. 2018. VMHunt: A verifiable approach to partially-virtualized binary code simplification. In Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security. ACM, 442-458. https://doi.org/10.1145/3243734.3243827
[69]
Guoqing Xu. 2012. Finding Reusable Data Structures. In Proceedings of the 2012 Conference on Object-Oriented Programming Systems, Languages, and Applications-OOPSLA '12. ACM, 1017-1034. https://doi.org/10.1145/2398857.2384690
[70]
Guoqing Xu. 2013. CoCo: Sound and Adaptive Replacement of Java Collections. In Proceedings of the 2013 European Conference on Object-Oriented Programming-ECOOP '13. Springer, 1-26. https://doi.org/10.1007/978-3-642-39038-8_1
[71]
Guoqing Xu. 2013. Resurrector: A Tunable Object Lifetime Profiling Technique for Optimizing Real-world Programs. In Proceedings of the 2013 Conference on Object Oriented Programming Systems Languages and Applications-OOPSLA '13. ACM, 111-130. https://doi.org/10.1145/2509136.2509512
[72]
Guoqing Xu, Matthew Arnold, Nick Mitchell, and Atanas Rountev añd Gary Sevitsky. 2009. Go with the flow: Profiling copies to find runtime bloat. In Proceedings of the 2009 Conference on Programming Language Design and Implementation-PLDI '09. ACM, 419-430. https://doi.org/10.1145/1542476.1542523
[73]
Guoqing Xu, Matthew Arnold, Nick Mitchell, Atanas Rountev, Edith Schonberg, and Gary S evitsky. 2010. Finding Low-Utility Data Structures. In Proceedings of the 2010 Conference on Programming Language Design and Implementation-PLDI '10. ACM, 174-186. https://doi.org/10.1145/1806596.1806617
[74]
Guoqing Xu, Nick Mitchell, Matthew Arnold, Atanas Rountev, and Gary Sevitsky. 2010. Software bloat analysis: finding, removing, and preventing performance problems in modern large-scale object-oriented applications. In Proceedings of the 2010 workshop on Future of Software Engineering Research-FoSER '10. ACM, 421-426. https://doi.org/10.1145/1882362.1882448
[75]
Dacong Yan, Guoqing Xu, and Atanas Rountev. 2012. Uncovering Performance Problems in Java Applications with Reference Propagation Profiling. In Proceedings of the International Conference on Software Engineering-ICSE '12. IEEE, 134-144. https://doi.org/10.1109/ICSE. 2012.6227199
[76]
Andreas Zeller and Ralf Hildebrandt. 2002. Simplifying and Isolating FailureInducing Input. IEEE Trans. Softw. Eng. 28, 2 (Feb. 2002 ), 183-200. https://doi. org/10.1109/32.988498

Cited By

View all
  • (2024)SoK: Software Debloating Landscape and Future DirectionsProceedings of the 2024 Workshop on Forming an Ecosystem Around Software Transformation10.1145/3689937.3695792(11-18)Online publication date: 14-Oct-2024
  • (2024)Bloat beneath Python’s Scales: A Fine-Grained Inter-Project Dependency AnalysisProceedings of the ACM on Software Engineering10.1145/36608211:FSE(2584-2607)Online publication date: 12-Jul-2024
  • (2024)Finding Cuts in Static Analysis Graphs to Debloat SoftwareProceedings of the 33rd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3650212.3680306(603-614)Online publication date: 11-Sep-2024
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
ESEC/FSE 2020: Proceedings of the 28th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering
November 2020
1703 pages
ISBN:9781450370431
DOI:10.1145/3368089
This work is licensed under a Creative Commons Attribution International 4.0 License.

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 08 November 2020

Permissions

Request permissions for this article.

Check for updates

Badges

Author Tags

  1. Java bytecode
  2. debloating
  3. reachability analysis
  4. size reduction

Qualifiers

  • Research-article

Conference

ESEC/FSE '20
Sponsor:

Acceptance Rates

Overall Acceptance Rate 112 of 543 submissions, 21%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)403
  • Downloads (Last 6 weeks)38
Reflects downloads up to 22 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2024)SoK: Software Debloating Landscape and Future DirectionsProceedings of the 2024 Workshop on Forming an Ecosystem Around Software Transformation10.1145/3689937.3695792(11-18)Online publication date: 14-Oct-2024
  • (2024)Bloat beneath Python’s Scales: A Fine-Grained Inter-Project Dependency AnalysisProceedings of the ACM on Software Engineering10.1145/36608211:FSE(2584-2607)Online publication date: 12-Jul-2024
  • (2024)Finding Cuts in Static Analysis Graphs to Debloat SoftwareProceedings of the 33rd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3650212.3680306(603-614)Online publication date: 11-Sep-2024
  • (2024)Characterizing Deep Learning Package Supply Chains in PyPI: Domains, Clusters, and DisengagementACM Transactions on Software Engineering and Methodology10.1145/364033633:4(1-27)Online publication date: 10-Jan-2024
  • (2024)Machine Learning Systems are Bloated and VulnerableProceedings of the ACM on Measurement and Analysis of Computing Systems10.1145/36390328:1(1-30)Online publication date: 21-Feb-2024
  • (2024)SourcererJBF: A Java Build Framework For Large-Scale CompilationACM Transactions on Software Engineering and Methodology10.1145/363571033:3(1-35)Online publication date: 15-Mar-2024
  • (2024)Efficiently Trimming the Fat: Streamlining Software Dependencies with Java Reflection and Dependency AnalysisProceedings of the IEEE/ACM 46th International Conference on Software Engineering10.1145/3597503.3639123(1-12)Online publication date: 20-May-2024
  • (2024)MiniMon: Minimizing Android Applications with Intelligent Monitoring-Based DebloatingProceedings of the IEEE/ACM 46th International Conference on Software Engineering10.1145/3597503.3639113(1-13)Online publication date: 20-May-2024
  • (2024)SoK: A Tale of Reduction, Security, and Correctness - Evaluating Program Debloating Paradigms and Their CompositionsComputer Security – ESORICS 202310.1007/978-3-031-51482-1_12(229-249)Online publication date: 11-Jan-2024
  • (2023)On the Caching Schemes to Speed Up Program ReductionACM Transactions on Software Engineering and Methodology10.1145/361717233:1(1-30)Online publication date: 5-Sep-2023
  • Show More Cited By

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media