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].
- Kijin An. 2019. Facilitating the Evolutionary Modifications in Distributed Apps via Automated Refactoring. In Web Engineering. Springer International Publishing, 548–553.Google Scholar
- Kijin An and Eli Tilevich. 2019. Catch & Release: An Approach to Debugging Distributed Full-Stack JavaScript Applications. In Web Engineering. 459–473.Google Scholar
- 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 ScholarDigital Library
- 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 ScholarCross Ref
- 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 ScholarDigital Library
- Osbert Bastani, Rahul Sharma, Alex Aiken, and Percy Liang. 2017. Synthesizing program input grammars. In ACM SIGPLAN Notices, Vol. 52. ACM, 95–110.Google Scholar
- Kevin Ellis, Armando Solar-Lezama, and Josh Tenenbaum. 2016. Sampling for Bayesian program learning. In Advances in Neural Information Processing Systems. 1297–1305.Google Scholar
- 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 Scholar
- 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 Scholar
- 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 ScholarDigital Library
- 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 Scholar
- 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 ScholarCross Ref
- 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 Scholar
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 Scholar
- Sumit Gulwani, Oleksandr Polozov, Rishabh Singh, 2017. Program synthesis. Foundations and Trends® in Programming Languages 4, 1-2(2017), 1–119.Google Scholar
- Les Hatton. 1997. Reexamining the fault density component size connection. IEEE software 14, 2 (1997), 89–97.Google ScholarDigital Library
- 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 ScholarDigital Library
- 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 Scholar
- 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 ScholarCross Ref
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 Scholar
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 Scholar
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 Scholar
- 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 ScholarDigital Library
- Eli Tilevich and Yannis Smaragdakis. 2002. J-Orchestra: Automatic Java Application Partitioning. In ECOOP 2002 — Object-Oriented Programming. Springer, 178–204.Google Scholar
- 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 Scholar
- 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 ScholarDigital Library
- Young woo Kwon and Eli Tilevich. 2013. Power-Efficient and Fault-Tolerant Distributed Mobile Execution(ICDCS ’13). IEEE.Google Scholar
Index Terms
- Enhancing Web App Execution with Automated Reengineering
Recommendations
Challenges in transition from web to app
MobileDeLi 2015: Proceedings of the 3rd International Workshop on Mobile Development LifecycleEase of availability and handy nature of mobile devices have made accessing services through mobile apps more popular than that of web applications. The inclination of service providers also is towards using mobile apps instead of traditional web ...
Migration of Web Applications with Seamless Execution
VEE '15Web applications (apps) are programmed using HTML5, CSS, and JavaScript, and are distributed in the source code format. Web apps can be executed on any devices where a web browser is installed, allowing one-source, multi-platform environment. We can ...
Communicating Web Vessels: Improving the Responsiveness of Mobile Web Apps with Adaptive Redistribution
Web EngineeringAbstractIn a mobile web app, a browser-based client communicates with a cloud-based server across the network. An app is statically divided into client and server functionalities, so the resulting division remains fixed at runtime. However, if such static ...
Comments