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

Enhancing Web App Execution with Automated Reengineering

Published: 20 April 2020 Publication 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.
[2]
Kijin An and Eli Tilevich. 2019. Catch & Release: An Approach to Debugging Distributed Full-Stack JavaScript Applications. In Web Engineering. 459–473.
[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.
[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).
[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.
[6]
Osbert Bastani, Rahul Sharma, Alex Aiken, and Percy Liang. 2017. Synthesizing program input grammars. In ACM SIGPLAN Notices, Vol. 52. ACM, 95–110.
[7]
Kevin Ellis, Armando Solar-Lezama, and Josh Tenenbaum. 2016. Sampling for Bayesian program learning. In Advances in Neural Information Processing Systems. 1297–1305.
[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.
[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.
[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.
[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.
[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.
[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/fredrikson
[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.
[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.
[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.
[17]
Sumit Gulwani, Oleksandr Polozov, Rishabh Singh, 2017. Program synthesis. Foundations and Trends® in Programming Languages 4, 1-2(2017), 1–119.
[18]
Les Hatton. 1997. Reexamining the fault density component size connection. IEEE software 14, 2 (1997), 89–97.
[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.
[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-9
[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.
[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.
[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.
[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.
[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.
[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.
[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).
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[38]
Eli Tilevich and Yannis Smaragdakis. 2002. J-Orchestra: Automatic Java Application Partitioning. In ECOOP 2002 — Object-Oriented Programming. Springer, 178–204.
[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.
[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.
[41]
Young woo Kwon and Eli Tilevich. 2013. Power-Efficient and Fault-Tolerant Distributed Mobile Execution(ICDCS ’13). IEEE.

Recommendations

Comments

Information & Contributors

Information

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
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]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 20 April 2020

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. JavaScript
  2. Middleware
  3. Mobile Apps
  4. Program Analysis & Transformation
  5. Reengineering
  6. Software Engineering
  7. Web Applications

Qualifiers

  • Research-article
  • Research
  • Refereed limited

Conference

WWW '20
Sponsor:
WWW '20: The Web Conference 2020
April 20 - 24, 2020
Taipei, Taiwan

Acceptance Rates

Overall Acceptance Rate 1,899 of 8,196 submissions, 23%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • 0
    Total Citations
  • 180
    Total Downloads
  • Downloads (Last 12 months)14
  • Downloads (Last 6 weeks)1
Reflects downloads up to 02 Mar 2025

Other Metrics

Citations

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

HTML Format

View this article in HTML Format.

HTML Format

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media