skip to main content
10.1145/3366424.3382087acmconferencesArticle/Chapter ViewAbstractPublication PageswwwConference Proceedingsconference-collections
research-article

Enhancing Web App Execution with Automated Reengineering

Published:20 April 2020Publication History

ABSTRACT

The execution of modern web applications is affected by distribution, mobility, and heterogeneity. The design-time assumptions of web applications rarely correspond to their runtime conditions. As a result, the efficiency, performance, and reliability of web app execution can suffer. This dissertation research addresses this problem by introducing novel automated reengineering techniques. In particular, we put forward a series of novel domain-specific refactorings, semantics-preserving program transformations, that behind-the-scenes improve the efficiency, performance, and reliability of extant web applications. To that end, we apply state-of-the-art program analysis and transformation techniques, extending and adapting them for the domain of web applications. Our ultimate objective is to enhance the execution of real-world web apps to meet the requirements of modern users, so the web can remain the most versatile computing application deployment and delivery infrastructure. The intermediate results of this dissertation research have been accepted for publication as a full research paper in the proceedings of the Web Conference 2020 [3].

References

  1. Kijin An. 2019. Facilitating the Evolutionary Modifications in Distributed Apps via Automated Refactoring. In Web Engineering. Springer International Publishing, 548–553.Google ScholarGoogle Scholar
  2. Kijin An and Eli Tilevich. 2019. Catch & Release: An Approach to Debugging Distributed Full-Stack JavaScript Applications. In Web Engineering. 459–473.Google ScholarGoogle Scholar
  3. Kijin An and Eli Tilevich. 2020. Client Insourcing: Bringing Ops In-House for Seamless Re-engineering of Full-Stack JavaScript Applications. In Proceedings of the Web Conference 2020.Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Kijin An and Eli Tilevich. 2020. D-Goldilocks: Automatic Redistribution of Remote Functionalities for Performance and Efficiency. In Proceedings of the 27th IEEE International Conference on Software Analysis, Evolution and Reengineering(SANER).Google ScholarGoogle ScholarCross RefCross Ref
  5. Earl T. Barr, Mark Harman, Yue Jia, Alexandru Marginean, and Justyna Petke. 2015. Automated Software Transplantation. In Proceedings of the 2015 International Symposium on Software Testing and Analysis (Baltimore, MD, USA) (ISSTA 2015). ACM, New York, NY, USA, 257–269.Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Osbert Bastani, Rahul Sharma, Alex Aiken, and Percy Liang. 2017. Synthesizing program input grammars. In ACM SIGPLAN Notices, Vol. 52. ACM, 95–110.Google ScholarGoogle Scholar
  7. Kevin Ellis, Armando Solar-Lezama, and Josh Tenenbaum. 2016. Sampling for Bayesian program learning. In Advances in Neural Information Processing Systems. 1297–1305.Google ScholarGoogle Scholar
  8. Yu Feng, Ruben Martins, Osbert Bastani, and Isil Dillig. 2018. Program synthesis using conflict-driven learning. In ACM SIGPLAN Notices, Vol. 53. ACM, 420–435.Google ScholarGoogle Scholar
  9. Yu Feng, Ruben Martins, Jacob Van Geffen, Isil Dillig, and Swarat Chaudhuri. 2017. Component-based synthesis of table consolidation and transformation tasks from examples. In ACM SIGPLAN Notices, Vol. 52. ACM, 422–436.Google ScholarGoogle Scholar
  10. Norman E Fenton and Martin Neil. 1999. A critique of software defect prediction models. IEEE Transactions on software engineering 25, 5 (1999), 675–689.Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. John K Feser, Swarat Chaudhuri, and Isil Dillig. 2015. Synthesizing data structure transformations from input-output examples. In ACM SIGPLAN Notices, Vol. 50. ACM, 229–239.Google ScholarGoogle Scholar
  12. Paul Fiterău-Broştean, Ramon Janssen, and Frits Vaandrager. 2016. Combining model learning and model checking to analyze TCP implementations. In International Conference on Computer Aided Verification. Springer, 454–471.Google ScholarGoogle ScholarCross RefCross Ref
  13. Matthew Fredrikson and Benjamin Livshits. 2014. ZØ: An Optimizing Distributing Zero-Knowledge Compiler. In 23rd USENIX Security Symposium (USENIX Security 14). USENIX Association, San Diego, CA, 909–924. https://www.usenix.org/conference/usenixsecurity14/technical-sessions/presentation/fredriksonGoogle ScholarGoogle Scholar
  14. Liang Gong, Michael Pradel, and Koushik Sen. 2015. JITProf: Pinpointing JIT-unfriendly JavaScript Code. In Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering (Bergamo, Italy) (ESEC/FSE 2015). 357–368.Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Liang Gong, Michael Pradel, Manu Sridharan, and Koushik Sen. 2015. DLint: Dynamically Checking Bad Coding Practices in JavaScript. In Proceedings of the 2015 International Symposium on Software Testing and Analysis (Baltimore, MD, USA) (ISSTA 2015). 94–105.Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Salvatore Guarnieri and Benjamin Livshits. 2009. GATEKEEPER: Mostly Static Enforcement of Security and Reliability Policies for JavaScript Code.. In USENIX Security Symposium, Vol. 10. USENIX, Montreal, Canada, 78–85.Google ScholarGoogle Scholar
  17. Sumit Gulwani, Oleksandr Polozov, Rishabh Singh, 2017. Program synthesis. Foundations and Trends® in Programming Languages 4, 1-2(2017), 1–119.Google ScholarGoogle Scholar
  18. Les Hatton. 1997. Reexamining the fault density component size connection. IEEE software 14, 2 (1997), 89–97.Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Michael Hilton, Arpit Christi, Danny Dig, Michał Moskal, Sebastian Burckhardt, and Nikolai Tillmann. 2014. Refactoring local to cloud data types for mobile apps. In Proceedings of the 1st International Conference on Mobile Software Engineering and Systems. ACM, 83–92.Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Young-Woo Kwon and Eli Tilevich. 2014. Cloud refactoring: automated transitioning to cloud-based services. Automated Software Engineering 21, 3 (01 Sep 2014), 345–372. https://doi.org/10.1007/s10515-013-0136-9Google ScholarGoogle Scholar
  21. Young-Woo Kwon and Eli Tilevich. 2014. Configurable and adaptive middleware for energy-efficient distributed mobile computing. In Proceedings of the 6th International Conference on Mobile Computing, Applications and Services (MobiCASE). IEEE, 106–115.Google ScholarGoogle ScholarCross RefCross Ref
  22. Ding Li, Shuai Hao, Jiaping Gui, and William GJ Halfond. 2014. An empirical study of the energy consumption of Android applications. In 2014 IEEE International Conference on Software Maintenance and Evolution (ICSME). IEEE, 121–130.Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Ding Li, Yingjun Lyu, Jiaping Gui, and William GJ Halfond. 2016. Automated energy optimization of HTTP requests for mobile applications. In Software Engineering (ICSE), 2016 IEEE/ACM 38th International Conference on. IEEE, 249–260.Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Guodong Li, Esben Andreasen, and Indradeep Ghosh. 2014. SymJS: Automatic Symbolic Testing of JavaScript Web Applications. In Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering (Hong Kong, China) (FSE 2014). 449–459.Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Yin Liu, Kijin An, and Eli Tilevich. 2018. RT-Trust: Automated Refactoring for Trusted Execution Under Real-Time Constraints. In Proceedings of the 17th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences (Boston, MA, USA) (GPCE 2018). ACM, 175–187.Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Yin Liu, Kijin An, and Eli Tilevich. 2019. RT-Trust: Automated Refactoring for Different Trusted Execution Environments under Real-Time Constraints. Journal of Computer Languages(2019), 100939.Google ScholarGoogle Scholar
  27. Benjamin Livshits and Monica S. Lam. 2005. Finding Security Vulnerabilities in Java Applications with Static Analysis. In Proceedings of the 14th Conference on USENIX Security Symposium - Volume 14 (Baltimore, MD).Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Magnus Madsen, Ondřej Lhoták, and Frank Tip. 2017. A Model for Reasoning About JavaScript Promises. Proc. ACM Program. Lang. 1, OOPSLA, Article 86 (Oct. 2017), 24 pages.Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Magnus Madsen, Frank Tip, and Ondřej Lhoták. 2015. Static Analysis of Event-driven Node.Js JavaScript Applications. In Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications (Pittsburgh, PA, USA) (OOPSLA 2015). ACM, 505–519.Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Nima Nikzad, Octav Chipara, and William G Griswold. 2014. APE: an annotation language and middleware for energy-efficient mobile application development. In Proceedings of the 36th International Conference on Software Engineering. ACM, 515–526.Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Prateek Saxena, Devdatta Akhawe, Steve Hanna, Feng Mao, Stephen McCamant, and Dawn Song. 2010. A symbolic execution framework for JavaScript. In 2010 IEEE Symposium on Security and Privacy. IEEE, 513–528.Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. M. Selakovic and M. Pradel. 2016. Performance Issues and Optimizations in JavaScript: An Empirical Study. In 2016 IEEE/ACM 38th International Conference on Software Engineering (ICSE). 61–72.Google ScholarGoogle Scholar
  33. Koushik Sen, Swaroop Kalasapur, Tasneem Brutch, and Simon Gibbs. 2013. Jalangi: A Selective Record-replay and Dynamic Analysis Framework for JavaScript. In Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering (Saint Petersburg, Russia) (ESEC/FSE 2013). ACM, 488–498.Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Koushik Sen, George Necula, Liang Gong, and Wontae Choi. 2015. MultiSE: Multi-path Symbolic Execution Using Value Summaries. In Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering (Bergamo, Italy) (ESEC/FSE 2015). ACM, 842–853.Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Jiasi Shen and Martin C Rinard. 2019. Using active learning to synthesize models of applications that access databases. In Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation. ACM, 269–285.Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Stelios Sidiroglou-Douskos, Eric Lahtinen, Anthony Eden, Fan Long, and Martin Rinard. 2017. CodeCarbonCopy. In Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering(ESEC/FSE 2017). ACM, 95–105.Google ScholarGoogle Scholar
  37. Chungha Sung, Markus Kusano, Nishant Sinha, and Chao Wang. 2016. Static DOM Event Dependency Analysis for Testing Web Applications. In Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering(Seattle, WA, USA) (FSE 2016). ACM, 447–459.Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Eli Tilevich and Yannis Smaragdakis. 2002. J-Orchestra: Automatic Java Application Partitioning. In ECOOP 2002 — Object-Oriented Programming. Springer, 178–204.Google ScholarGoogle Scholar
  39. Jim Waldo, Geoff Wyant, Ann Wollrath, and Sam Kendall. 1996. A note on distributed computing. In International Workshop on Mobile Object Systems. Springer, 49–64.Google ScholarGoogle Scholar
  40. Xudong Wang, Xuanzhe Liu, Ying Zhang, and Gang Huang. 2012. Migration and execution of JavaScript applications between mobile devices and cloud. In Proceedings of the 3rd annual conference on Systems, programming, and applications: software for humanity. ACM, 83–84.Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. Young woo Kwon and Eli Tilevich. 2013. Power-Efficient and Fault-Tolerant Distributed Mobile Execution(ICDCS ’13). IEEE.Google ScholarGoogle Scholar

Index Terms

  1. Enhancing Web App Execution with Automated Reengineering
            Index terms have been assigned to the content through auto-classification.

            Recommendations

            Comments

            Login options

            Check if you have access through your login credentials or your institution to get full access on this article.

            Sign in
            • Published in

              cover image ACM Conferences
              WWW '20: Companion Proceedings of the Web Conference 2020
              April 2020
              854 pages
              ISBN:9781450370240
              DOI:10.1145/3366424

              Copyright © 2020 ACM

              Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

              Publisher

              Association for Computing Machinery

              New York, NY, United States

              Publication History

              • Published: 20 April 2020

              Permissions

              Request permissions about this article.

              Request Permissions

              Check for updates

              Qualifiers

              • research-article
              • Research
              • Refereed limited

              Acceptance Rates

              Overall Acceptance Rate1,899of8,196submissions,23%

              Upcoming Conference

              WWW '24
              The ACM Web Conference 2024
              May 13 - 17, 2024
              Singapore , Singapore
            • Article Metrics

              • Downloads (Last 12 months)20
              • Downloads (Last 6 weeks)3

              Other Metrics

            PDF Format

            View or Download as a PDF file.

            PDF

            eReader

            View online with eReader.

            eReader

            HTML Format

            View this article in HTML Format .

            View HTML Format