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.
- 2018. Enki. Retrieved from https://github.com/xaviershay/enki.Google Scholar
- 2018. Fulcrum. Retrieved from https://github.com/fulcrum-agile/fulcrum.Google Scholar
- 2018. Getting Started with Rails. Retrieved from http://guides.rubyonrails.org/getting_started.html.Google Scholar
- 2018. Kandan -- Modern Open Source Chat. Retrieved from https://github.com/kandanapp/kandan.Google Scholar
- 2019. PLDI 2019 Konure Code. Retrieved from http://people.csail.mit.edu/jiasi/pldi2019.code/.Google Scholar
- 2020. Software Assurance Reference Dataset. Retrieved from https://samate.nist.gov/SARD/testsuite.php.Google Scholar
- 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 Scholar
- 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 Scholar
Digital Library
- 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 Scholar
- 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 Scholar
Cross Ref
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- Aaron R. Bradley and Zohar Manna. 2007. The Calculus of Computation: Decision Procedures with Applications to Verification. Springer Science 8 Business Media.Google Scholar
Digital Library
- 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 Scholar
- 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 Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
- 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 Scholar
- 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 Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Cross Ref
- 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 Scholar
Digital Library
- 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 Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
- 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 Scholar
- 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 Scholar
Digital Library
- 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 Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- Sumit Gulwani, Oleksandr Polozov, and Rishabh Singh. 2017. Program synthesis. Found. Trends Program. Lang. 4, 1--2 (2017), 1--119.Google Scholar
Cross Ref
- 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 Scholar
- 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 Scholar
Digital Library
- 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 Scholar
- 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 Scholar
Digital Library
- 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 Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
- 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 Scholar
Digital Library
- 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 Scholar
- Edward F. Moore. 1956. Gedanken—Experiments on sequential machines. Autom. Stud. 34 (1956), 129--153.Google Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- George Reese. 2000. Database Programming with JDBC and JAVA. O’Reilly Media, Inc.Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Cross Ref
- Burr Settles. 2009. Active Learning Literature Survey. Computer Sciences Technical Report 1648. University of Wisconsin--Madison.Google Scholar
- 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 Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
- Frits Vaandrager. 2017. Model learning. Commun. ACM 60, 2 (Jan. 2017), 86--95. DOI:https://doi.org/10.1145/2967606Google Scholar
Digital Library
- 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 Scholar
- 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 Scholar
Digital Library
- Michele Volpato and Jan Tretmans. 2015. Approximate active learning of nondeterministic input output transition systems. Electron. Commun. EASST 72 (2015).Google Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- Michael Widenius and Davis Axmark. 2002. Mysql Reference Manual (1st ed.). O’Reilly 8 Associates, Inc., Sebastopol, CA.Google Scholar
Digital Library
- 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 Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Index Terms
Active Learning for Inference and Regeneration of Applications that Access Databases
Recommendations
Using active learning to synthesize models of applications that access databases
PLDI 2019: Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and ImplementationWe present Konure, a new system that uses active learning to infer models of applications that access relational databases. Konure comprises a domain-specific language (each model is a program in this language) and associated inference algorithm that ...
Deep active inference
This work combines the free energy principle and the ensuing active inference dynamics with recent advances in variational inference in deep generative models, and evolution strategies to introduce the "deep active inference" agent. This agent minimises ...
Active learning for software engineering
Onward! 2019: Proceedings of the 2019 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and SoftwareSoftware applications have grown increasingly complex to deliver the features desired by users. Software modularity has been used as a way to mitigate the costs of developing such complex software. Active learning-based program inference provides an ...






Comments