skip to main content
research-article
Open Access

Active Learning for Inference and Regeneration of Applications that Access Databases

Published:22 January 2021Publication History
Skip Abstract Section

Abstract

We present Konure, a new system that uses active learning to infer models of applications that retrieve data from relational databases. Konure comprises a domain-specific language (each model is a program in this language) and associated inference algorithm that infers models of applications whose behavior can be expressed in this language. The inference algorithm generates inputs and database contents, runs the application, then observes the resulting database traffic and outputs to progressively refine its current model hypothesis. Because the technique works with only externally observable inputs, outputs, and database contents, it can infer the behavior of applications written in arbitrary languages using arbitrary coding styles (as long as the behavior of the application is expressible in the domain-specific language). Konure also implements a regenerator that produces a translated Python implementation of the application that systematically includes relevant security and error checks.

References

  1. 2018. Enki. Retrieved from https://github.com/xaviershay/enki.Google ScholarGoogle Scholar
  2. 2018. Fulcrum. Retrieved from https://github.com/fulcrum-agile/fulcrum.Google ScholarGoogle Scholar
  3. 2018. Getting Started with Rails. Retrieved from http://guides.rubyonrails.org/getting_started.html.Google ScholarGoogle Scholar
  4. 2018. Kandan -- Modern Open Source Chat. Retrieved from https://github.com/kandanapp/kandan.Google ScholarGoogle Scholar
  5. 2019. PLDI 2019 Konure Code. Retrieved from http://people.csail.mit.edu/jiasi/pldi2019.code/.Google ScholarGoogle Scholar
  6. 2020. Software Assurance Reference Dataset. Retrieved from https://samate.nist.gov/SARD/testsuite.php.Google ScholarGoogle Scholar
  7. F. Aarts, J. De Ruiter, and E. Poll. 2013. Formal models of bank cards for free. In Proceedings of the IEEE 6th International Conference on Software Testing, Verification and Validation Workshops. 461--468. DOI:https://doi.org/10.1109/ICSTW.2013.60Google ScholarGoogle Scholar
  8. Fides Aarts and Frits Vaandrager. 2010. Learning I/O Automata. Springer Berlin, 71--85. DOI:https://doi.org/10.1007/978-3-642-15375-4_6Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. M. H. Alalfi, J. R. Cordy, and T. R. Dean. 2009. WAFA: Fine-grained dynamic analysis of web applications. In Proceedings of the 11th IEEE International Symposium on Web Systems Evolution. 141--150. DOI:https://doi.org/10.1109/WSE.2009.5631226Google ScholarGoogle Scholar
  10. Rajeev Alur, Rastislav Bodík, Garvit Juniwal, Milo M. K. Martin, Mukund Raghothaman, Sanjit A. Seshia, Rishabh Singh, Armando Solar-Lezama, Emina Torlak, and Abhishek Udupa. 2013. Syntax-guided synthesis. In Proceedings of the Formal Methods in Computer-Aided Design (FMCAD’13). 1--8.Google ScholarGoogle ScholarCross RefCross Ref
  11. Dana Angluin. 1987. Learning regular sets from queries and counterexamples. Inf. Comput. 75, 2 (Nov. 1987), 87--106. DOI:https://doi.org/10.1016/0890-5401(87)90052-6Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Dana Angluin and Carl H. Smith. 1983. Inductive inference: Theory and methods. ACM Comput. Surv. 15, 3 (Sept. 1983), 237--269. DOI:https://doi.org/10.1145/356914.356918Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Sruthi Bandhakavi, Prithvi Bisht, P. Madhusudan, and V. N. Venkatakrishnan. 2007. CANDID: Preventing SQL injection attacks using dynamic candidate evaluations. In Proceedings of the ACM Conference on Computer and Communications (CCS’07). 13. DOI:https://doi.org/10.1145/1315245.1315249Google ScholarGoogle Scholar
  14. Gilles Barthe, Juan Manuel Crespo, Sumit Gulwani, Cesar Kunz, and Mark Marron. 2013. From relational verification to SIMD loop synthesis. In Proceedings of the 18th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP’13). ACM, New York, NY, 123--134. DOI:https://doi.org/10.1145/2442516.2442529Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Osbert Bastani, Rahul Sharma, Alex Aiken, and Percy Liang. 2017. Synthesizing program input grammars. In Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI’17). 95--110.Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Osbert Bastani, Rahul Sharma, Alex Aiken, and Percy Liang. 2018. Active learning of points-to specifications. In Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI’18). ACM, New York, NY, 678--692. DOI:https://doi.org/10.1145/3192366.3192383Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Tewodros A. Beyene, Swarat Chaudhuri, Corneliu Popeea, and Andrey Rybalchenko. 2015. Recursive games for compositional program synthesis. In Proceedings of the 7th International Conference on Verified Software: Theories, Tools, and Experiments (VSTTE’15). 19--39.Google ScholarGoogle Scholar
  18. Prithvi Bisht, P. Madhusudan, and V. N. Venkatakrishnan. 2010. CANDID: Dynamic candidate evaluations for automatic prevention of SQL injection attacks. ACM Trans. Inf. Syst. Secur. 13, 2 (Mar. 2010). DOI:https://doi.org/10.1145/1698750.1698754Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. James F. Bowring, James M. Rehg, and Mary Jean Harrold. 2004. Active learning for automatic classification of software behavior. In Proceedings of the ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA’04). ACM, New York, NY, 195--205. DOI:https://doi.org/10.1145/1007512.1007539Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Aaron R. Bradley and Zohar Manna. 2007. The Calculus of Computation: Decision Procedures with Applications to Verification. Springer Science 8 Business Media.Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Cristian Cadar, Vijay Ganesh, Peter M. Pawlowski, David L. Dill, and Dawson R. Engler. 2006. EXE: Automatically generating inputs of death. In Proceedings of the 13th ACM Conference on Computer and Communications Security (CCS’06). ACM, New York, NY, 322--335. DOI:https://doi.org/10.1145/1180405.1180445Google ScholarGoogle Scholar
  22. José P. Cambronero, Thurston H. Y. Dang, Nikos Vasilakis, Jiasi Shen, Jerry Wu, and Martin C. Rinard. 2019. Active learning for software engineering. In Proceedings of the ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software (Onward!’19). Association for Computing Machinery, New York, NY, 62--78. DOI:https://doi.org/10.1145/3359591.3359732Google ScholarGoogle Scholar
  23. Sofia Cassel, Falk Howar, Bengt Jonsson, and Bernhard Steffen. 2016. Active learning for extended finite state machines. Form. Asp. Comput. 28, 2 (2016), 233--263. DOI:https://doi.org/10.1007/s00165-016-0355-5Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Alvin Cheung, Armando Solar-Lezama, and Samuel Madden. 2013. Optimizing database-backed applications with query synthesis. In Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI’13). ACM, New York, NY, 3--14. DOI:https://doi.org/10.1145/2491956.2462180Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. T. S. Chow. 1978. Testing software design modeled by finite-state machines. IEEE Trans. Softw. Eng. 4, 3 (May 1978), 178--187. DOI:https://doi.org/10.1109/TSE.1978.231496Google ScholarGoogle Scholar
  26. Shumo Chu, Chenglong Wang, Konstantin Weitz, and Alvin Cheung. 2017. Cosette: An automated prover for SQL. In Proceedings of the 8th Biennial Conference on Innovative Data Systems Research (CIDR’17). Retrieved from http://cidrdb.org/cidr2017/papers/p51-chu-cidr17.pdf.Google ScholarGoogle Scholar
  27. Anthony Cleve, Nesrine Noughi, and Jean-Luc Hainaut. 2013. Dynamic program analysis for database reverse engineering. In Generative and Transformational Techniques in Software Engineering IV. Springer, 297--321.Google ScholarGoogle Scholar
  28. Yossi Cohen and Yishai A. Feldman. 2003. Automatic high-quality reengineering of database programs by abstraction, transformation and reimplementation. ACM Trans. Softw. Eng. Methodol. 12, 3 (July 2003), 285--316. DOI:https://doi.org/10.1145/958961.958962Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Bas Cornelissen, Andy Zaidman, Arie van Deursen, Leon Moonen, and Rainer Koschke. 2009. A systematic survey of program comprehension through dynamic analysis. IEEE Trans. Softw. Eng. 35, 5 (Sept. 2009), 684--702. DOI:https://doi.org/10.1109/TSE.2009.28Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Kathi Hogshead Davis and Peter H. Aiken. 2000. Data reverse engineering: A historical survey. In Proceedings of the 7th Working Conference on Reverse Engineering (WCRE’00). IEEE Computer Society, Washington, DC, 70--.Google ScholarGoogle ScholarCross RefCross Ref
  31. Joeri De Ruiter and Erik Poll. 2015. Protocol state fuzzing of TLS implementations. In Proceedings of the 24th USENIX Conference on Security Symposium (SEC’15). USENIX Association, Berkeley, CA, 193--206.Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Kevin Ellis, Armando Solar-Lezama, and Josh Tenenbaum. 2016. Sampling for Bayesian program learning. In Proceedings of the Conference on Advances in Neural Information Processing Systems. 1289--1297.Google ScholarGoogle Scholar
  33. Yu Feng, Ruben Martins, Osbert Bastani, and Isil Dillig. 2018. Program synthesis using conflict-driven learning. In Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI’18). 420--435.Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. 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 Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI’17). 422--436.Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. John K. Feser, Swarat Chaudhuri, and Isil Dillig. 2015. Synthesizing data structure transformations from input-output examples. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation. 229--239.Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Paul Fiterău-Broştean, Ramon Janssen, and Frits Vaandrager. 2016. Combining Model Learning and Model Checking to Analyze TCP Implementations. Springer International Publishing, Cham, 454--471. DOI:https://doi.org/10.1007/978-3-319-41540-6_25Google ScholarGoogle Scholar
  37. X. Fu, X. Lu, B. Peltsverger, S. Chen, K. Qian, and L. Tao. 2007. A static analysis framework for detecting SQL injection vulnerabilities. In Proceedings of the IEEE Computer Society Computers, Software, and Applications Conference (COMPSAC’07). DOI:https://doi.org/10.1109/COMPSAC.2007.43Google ScholarGoogle Scholar
  38. Vijay Ganesh, Tim Leek, and Martin Rinard. 2009. Taint-based directed whitebox fuzzing. In Proceedings of the 31st International Conference on Software Engineering (ICSE’09). IEEE Computer Society, Washington, DC, 474--484. DOI:https://doi.org/10.1109/ICSE.2009.5070546Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. Timon Gehr, Dimitar Dimitrov, and Martin T. Vechev. 2015. Learning commutativity specifications. In Proceedings of the 27th International Conference on Computer-Aided Verification (CAV’15). 307--323.Google ScholarGoogle Scholar
  40. Patrice Godefroid, Nils Klarlund, and Koushik Sen. 2005. DART: Directed automated random testing. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI’05). ACM, New York, NY, 213--223. DOI:https://doi.org/10.1145/1065010.1065036Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. Patrice Godefroid, Michael Y. Levin, and David Molnar. 2012. SAGE: Whitebox fuzzing for security testing. Queue 10, 1 (Jan. 2012). DOI:https://doi.org/10.1145/2090147.2094081Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. Olga Grinchtein, Bengt Jonsson, and Martin Leucker. 2010. Learning of event-recording automata. Theor. Comput. Sci. 411, 47 (Oct. 2010), 4029--4054. DOI:https://doi.org/10.1016/j.tcs.2010.07.008Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. Sumit Gulwani, Oleksandr Polozov, and Rishabh Singh. 2017. Program synthesis. Found. Trends Program. Lang. 4, 1--2 (2017), 1--119.Google ScholarGoogle ScholarCross RefCross Ref
  44. B. P. Gupta, D. Vira, and S. Sudarshan. 2010. X-data: Generating test data for killing SQL mutants. In Proceedings of the IEEE 26th International Conference on Data Engineering (ICDE’10). 876--879. DOI:https://doi.org/10.1109/ICDE.2010.5447862Google ScholarGoogle Scholar
  45. Raju Halder and Agostino Cortesi. 2010. Obfuscation-based analysis of SQL injection attacks. In Proceedings of the IEEE Symposium on Computers and Communications (ISCC’10). 931--938. DOI:https://doi.org/10.1109/ISCC.2010.5546750Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. William G. J. Halfond and Alessandro Orso. 2005. AMNESIA: Analysis and monitoring for neutralizing SQL-injection attacks. In Proceedings of the IEEE/ACM International Conference on Automated Software Engineering (ASE’05). 174--183. DOI:https://doi.org/10.1145/1101908.1101935Google ScholarGoogle Scholar
  47. Stefan Heule, Manu Sridharan, and Satish Chandra. 2015. Mimic: Computing models for opaque code. In Proceedings of the 10th Joint Meeting on Foundations of Software Engineering (ESEC/FSE’15). 710--720.Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. Malte Isberner, Falk Howar, and Bernhard Steffen. 2014. The TTT Algorithm: A Redundancy-free Approach to Active Automata Learning. Springer International Publishing, Cham, 307--322. DOI:https://doi.org/10.1007/978-3-319-11164-3_26Google ScholarGoogle Scholar
  49. Jinseong Jeon, Xiaokang Qiu, Jonathan Fetter-Degges, Jeffrey S. Foster, and Armando Solar-Lezama. 2016. Synthesizing framework models for symbolic execution. In Proceedings of the 38th International Conference on Software Engineering (ICSE’16). 156--167.Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. Jinseong Jeon, Xiaokang Qiu, Jeffrey S. Foster, and Armando Solar-Lezama. 2015. JSketch: Sketching for Java. In Proceedings of the 10th Joint Meeting on Foundations of Software Engineering (ESEC/FSE15). 934--937.Google ScholarGoogle ScholarDigital LibraryDigital Library
  51. Susmit Jha, Sumit Gulwani, Sanjit A. Seshia, and Ashish Tiwari. 2010. Oracle-guided component-based program synthesis. In Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering (ICSE’10). ACM, New York, NY, 215--224. DOI:https://doi.org/10.1145/1806799.1806833Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. Nenad Jovanovic, Christopher Kruegel, and Engin Kirda. 2006. Pixy: A static analysis tool for detecting web application vulnerabilities. In Proceedings of the IEEE Symposium on Security and Privacy (SP’06). 6. DOI:https://doi.org/10.1109/SP.2006.29Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. V. Benjamin Livshits and Monica S. Lam. 2005. Finding security vulnerabilities in Java applications with static analysis. In Proceedings of the USENIX Security Symposium (SSYM’05). 18--18.Google ScholarGoogle Scholar
  54. Fan Long, Vijay Ganesh, Michael Carbin, Stelios Sidiroglou, and Martin Rinard. 2012. Automatic input rectification. In Proceedings of the 34th International Conference on Software Engineering (ICSE’12). IEEE Press, Piscataway, NJ, 80--90. Retrieved from http://dl.acm.org/citation.cfm?id=2337223.2337233.Google ScholarGoogle ScholarDigital LibraryDigital Library
  55. Lucia, David Lo, Lingxiao Jiang, and Aditya Budi. 2012. Active refinement of clone anomaly reports. In Proceedings of the 34th International Conference on Software Engineering (ICSE’12). IEEE Press, 397--407.Google ScholarGoogle Scholar
  56. Edward F. Moore. 1956. Gedanken—Experiments on sequential machines. Autom. Stud. 34 (1956), 129--153.Google ScholarGoogle Scholar
  57. Nesrine Noughi, Marco Mori, Loup Meurice, and Anthony Cleve. 2014. Understanding the database manipulation behavior of programs. In Proceedings of the 22nd International Conference on Program Comprehension (ICPC’14). ACM, New York, NY, 64--67. DOI:https://doi.org/10.1145/2597008.2597790Google ScholarGoogle ScholarDigital LibraryDigital Library
  58. Daniel Perelman, Sumit Gulwani, Dan Grossman, and Peter Provost. 2014. Test-driven synthesis. In Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI’14). ACM, New York, NY, 408--418. DOI:https://doi.org/10.1145/2594291.2594297Google ScholarGoogle ScholarDigital LibraryDigital Library
  59. Jeff Perkins, Jordan Eikenberry, Alessandro Coglio, Daniel Willenson, Stelios Sidiroglou-Douskos, and Martin Rinard. 2016. AutoRand: Automatic keyword randomization to prevent injection attacks. In Proceedings of the 13th International Conference on Detection of Intrusions and Malware, and Vulnerability Assessment (DIMVA’16). Springer-Verlag New York, Inc., New York, NY, 37--57. DOI:https://doi.org/10.1007/978-3-319-40667-1_3Google ScholarGoogle ScholarDigital LibraryDigital Library
  60. Long H. Pham, Ly Ly Tran Thi, and Jun Sun. 2017. Assertion generation through active learning. In Proceedings of the 39th International Conference on Software Engineering Companion (ICSE-C’17). IEEE Press, Piscataway, NJ, 155--157. DOI:https://doi.org/10.1109/ICSE-C.2017.87Google ScholarGoogle ScholarDigital LibraryDigital Library
  61. Nadia Polikarpova, Ivan Kuraj, and Armando Solar-Lezama. 2016. Program synthesis from polymorphic refinement types. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation, (PLDI’16). 522--538.Google ScholarGoogle ScholarDigital LibraryDigital Library
  62. Yewen Pu, Zachery Miranda, Armando Solar-Lezama, and Leslie Kaelbling. 2018. Selecting representative examples for program synthesis. In Proceedings of the 35th International Conference on Machine Learning (Proceedings of Machine Learning Research), Vol. 80. PMLR, 4161--4170. Retrieved from http://proceedings.mlr.press/v80/pu18b.html.Google ScholarGoogle Scholar
  63. Arjun Radhakrishna, Nicholas V. Lewchenko, Shawn Meier, Sergio Mover, Krishna Chaitanya Sripada, Damien Zufferey, Bor-Yuh Evan Chang, and Pavol Černý. 2018. DroidStar: Callback typestates for Android classes. In Proceedings of the 40th International Conference on Software Engineering (ICSE’18). ACM, New York, NY, 1160--1170. DOI:https://doi.org/10.1145/3180155.3180232Google ScholarGoogle ScholarDigital LibraryDigital Library
  64. Harald Raffelt, Bernhard Steffen, and Therese Berg. 2005. LearnLib: A library for automata learning and experimentation. In Proceedings of the 10th International Workshop on Formal Methods for Industrial Critical Systems (FMICS’05). ACM, New York, NY, 62--71. DOI:https://doi.org/10.1145/1081180.1081189Google ScholarGoogle ScholarDigital LibraryDigital Library
  65. George Reese. 2000. Database Programming with JDBC and JAVA. O’Reilly Media, Inc.Google ScholarGoogle ScholarDigital LibraryDigital Library
  66. Martin C. Rinard. 2007. Living in the comfort zone. In Proceedings of the 22nd ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA’07). 611--622.Google ScholarGoogle ScholarDigital LibraryDigital Library
  67. Martin C. Rinard, Jiasi Shen, and Varun Mangalick. 2018. Active learning for inference and regeneration of computer programs that store and retrieve data. In Proceedings of the ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software (Onward!’18). ACM, New York, NY, 12--28. DOI:https://doi.org/10.1145/3276954.3276959Google ScholarGoogle ScholarDigital LibraryDigital Library
  68. Koushik Sen, Darko Marinov, and Gul Agha. 2005. CUTE: A concolic unit testing engine for C. In Proceedings of the 10th European Software Engineering Conference Held Jointly with the 13th ACM SIGSOFT International Symposium on Foundations of Software Engineering (ESEC/FSE’05). ACM, New York, NY, 263--272. DOI:https://doi.org/10.1145/1081706.1081750Google ScholarGoogle ScholarCross RefCross Ref
  69. Burr Settles. 2009. Active Learning Literature Survey. Computer Sciences Technical Report 1648. University of Wisconsin--Madison.Google ScholarGoogle Scholar
  70. Jiasi Shen and Martin Rinard. 2018. Using Dynamic Monitoring to Synthesize Models of Applications That Access Databases. Technical Report. Retrieved from http://hdl.handle.net/1721.1/118184.Google ScholarGoogle Scholar
  71. Jiasi Shen and Martin 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 (PLDI’19). ACM. DOI:https://doi.org/10.1145/3314221.3314591Google ScholarGoogle ScholarDigital LibraryDigital Library
  72. Xujie Si, Woosuk Lee, Richard Zhang, Aws Albarghouthi, Paraschos Koutris, and Mayur Naik. 2018. Syntax-guided synthesis of datalog programs. In Proceedings of the 26th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE’18). Association for Computing Machinery, New York, NY, 515--527. DOI:https://doi.org/10.1145/3236024.3236034Google ScholarGoogle ScholarDigital LibraryDigital Library
  73. Stelios Sidiroglou-Douskos, Eric Lahtinen, Nathan Rittenhouse, Paolo Piselli, Fan Long, Deokhwan Kim, and Martin Rinard. 2015. Targeted automatic integer overflow discovery using goal-directed conditional branch enforcement. In Proceedings of the 20th International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS’15). ACM, New York, NY, 473--486. DOI:https://doi.org/10.1145/2694344.2694389Google ScholarGoogle ScholarDigital LibraryDigital Library
  74. Armando Solar-Lezama, Liviu Tancau, Rastislav Bodik, Sanjit Seshia, and Vijay Saraswat. 2006. Combinatorial sketching for finite programs. In Proceedings of the 12th International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS’06). ACM, New York, NY, 404--415. DOI:https://doi.org/10.1145/1168857.1168907Google ScholarGoogle ScholarDigital LibraryDigital Library
  75. H. Tanno, X. Zhang, T. Hoshino, and K. Sen. 2015. TesMa and CATG: Automated test generation tools for models of enterprise applications. In Proceedings of the IEEE/ACM 37th IEEE International Conference on Software Engineering. 717--720. DOI:https://doi.org/10.1109/ICSE.2015.231Google ScholarGoogle Scholar
  76. Frits Vaandrager. 2017. Model learning. Commun. ACM 60, 2 (Jan. 2017), 86--95. DOI:https://doi.org/10.1145/2967606Google ScholarGoogle ScholarDigital LibraryDigital Library
  77. Margus Veanes, Pavel Grigorenko, Peli de Halleux, and Nikolai Tillmann. 2009. Symbolic query exploration. In Formal Methods and Software Engineering, Karin Breitman and Ana Cavalcanti (Eds.). Springer Berlin, 49--68.Google ScholarGoogle Scholar
  78. Margus Veanes, Nikolai Tillmann, and Jonathan de Halleux. 2010. Qex: Symbolic SQL query explorer. In Logic for Programming, Artificial Intelligence, and Reasoning, Edmund M. Clarke and Andrei Voronkov (Eds.). Springer Berlin, 425--446.Google ScholarGoogle ScholarDigital LibraryDigital Library
  79. Michele Volpato and Jan Tretmans. 2015. Approximate active learning of nondeterministic input output transition systems. Electron. Commun. EASST 72 (2015).Google ScholarGoogle Scholar
  80. Chenglong Wang, Alvin Cheung, and Rastislav Bodik. 2017. Synthesizing highly expressive SQL queries from input-output examples. In Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI’17). ACM, New York, NY, 452--466. DOI:https://doi.org/10.1145/3062341.3062365Google ScholarGoogle ScholarDigital LibraryDigital Library
  81. Chenglong Wang, Alvin Cheung, and Rastislav Bodik. 2018. Speeding up symbolic reasoning for relational queries. Proc. ACM Program. Lang. 2, OOPSLA (Oct. 2018). DOI:https://doi.org/10.1145/3276527Google ScholarGoogle ScholarDigital LibraryDigital Library
  82. Shaowei Wang, David Lo, and Lingxiao Jiang. 2014. Active code search: Incorporating user feedback to improve code search relevance. In Proceedings of the 29th ACM/IEEE International Conference on Automated Software Engineering (ASE’14). Association for Computing Machinery, New York, NY, 677--682. DOI:https://doi.org/10.1145/2642937.2642947Google ScholarGoogle ScholarDigital LibraryDigital Library
  83. Xinyu Wang, Isil Dillig, and Rishabh Singh. 2018. Program synthesis using abstraction refinement. Proc. ACM Program. Lang. 2, POPL (2018), 63:1--63:30.Google ScholarGoogle ScholarDigital LibraryDigital Library
  84. Michael Widenius and Davis Axmark. 2002. Mysql Reference Manual (1st ed.). O’Reilly 8 Associates, Inc., Sebastopol, CA.Google ScholarGoogle ScholarDigital LibraryDigital Library
  85. Jerry Wu. 2018. Using Dynamic Analysis to Infer Python Programs and Convert Them into Database Programs. Master’s thesis. Massachusetts Institute of Technology, Cambridge, MA.Google ScholarGoogle Scholar
  86. Wenfei Wu, Ying Zhang, and Sujata Banerjee. 2016. Automatic synthesis of NF models by program analysis. In Proceedings of the 15th ACM Workshop on Hot Topics in Networks (HotNets’16). ACM, New York, NY, 29--35. DOI:https://doi.org/10.1145/3005745.3005754Google ScholarGoogle ScholarDigital LibraryDigital Library
  87. Navid Yaghmazadeh, Christian Klinger, Isil Dillig, and Swarat Chaudhuri. 2016. Synthesizing transformations on hierarchically structured data. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI’16). 508--521.Google ScholarGoogle ScholarDigital LibraryDigital Library
  88. Navid Yaghmazadeh, Xinyu Wang, and Isil Dillig. 2018. Automated migration of hierarchical data to relational tables using programming-by-example. Proc. VLDB Endow. 11, 5 (Jan. 2018), 580--593. DOI:https://doi.org/10.1145/3187009.3177735Google ScholarGoogle ScholarDigital LibraryDigital Library
  89. Navid Yaghmazadeh, Yuepeng Wang, Isil Dillig, and Thomas Dillig. 2017. SQLizer: Query synthesis from natural language. Proc. ACM Program. Lang. 1, OOPSLA (Oct. 2017). DOI:https://doi.org/10.1145/3133887Google ScholarGoogle ScholarDigital LibraryDigital Library
  90. Cong Yan, Alvin Cheung, Junwen Yang, and Shan Lu. 2017. Understanding database performance inefficiencies in real-world web applications. In Proceedings of the ACM on Conference on Information and Knowledge Management (CIKM’17). ACM, New York, NY, 1299--1308.Google ScholarGoogle ScholarDigital LibraryDigital Library
  91. Hong Yan, David Garlan, Bradley Schmerl, Jonathan Aldrich, and Rick Kazman. 2004. DiscoTect: A system for discovering architectures from running systems. In Proceedings of the 26th International Conference on Software Engineering (ICSE’04). IEEE Computer Society, Washington, DC, 470--479.Google ScholarGoogle Scholar

Index Terms

  1. Active Learning for Inference and Regeneration of Applications that Access Databases

        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

        Full Access

        • Published in

          cover image ACM Transactions on Programming Languages and Systems
          ACM Transactions on Programming Languages and Systems  Volume 42, Issue 4
          December 2020
          265 pages
          ISSN:0164-0925
          EISSN:1558-4593
          DOI:10.1145/3441648
          Issue’s Table of Contents

          Copyright © 2021 ACM

          Publisher

          Association for Computing Machinery

          New York, NY, United States

          Publication History

          • Published: 22 January 2021
          • Accepted: 1 October 2020
          • Revised: 1 September 2020
          • Received: 1 May 2019
          Published in toplas Volume 42, Issue 4

          Permissions

          Request permissions about this article.

          Request Permissions

          Check for updates

          Qualifiers

          • research-article
          • Research
          • Refereed

        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
        About Cookies On This Site

        We use cookies to ensure that we give you the best experience on our website.

        Learn more

        Got it!