EdSketch: execution-driven sketching for Java

被引:0
|
作者
Jinru Hua
Yushan Zhang
Yuqun Zhang
Sarfraz Khurshid
机构
[1] The University of Texas at Austin,
[2] Southern University of Science and Technology,undefined
关键词
Program sketching; Execution-driven synthesis; Backtracking search;
D O I
暂无
中图分类号
学科分类号
摘要
Sketching is a synthesis approach that allows users to provide high-level insights into a synthesis problem and let synthesis tools complete low-level details. Users write sketches—partial programs that have “holes” and provide test assertions as the correctness criteria. The sketching techniques fill the holes with code fragments such that the complete program satisfies all test assertions. Traditional techniques translate the sketching problem to propositional satisfiability formulas and leverage SAT solvers to generate programs with the desired functionality. While effective for a range of small well-defined domains, such translation-based approaches have a key limitation when applying to real applications: They require either translating all relevant libraries that are invoked directly or indirectly by the given sketch or creating models of those libraries, which requires much manual effort. This paper introduces execution-driven sketching, a novel approach for synthesizing Java programs with on-demand candidate generation. The key novelty of our work is to leverage runtime behavior to prune a large amount of search space. EdSketch explores the actual program behaviors in the presence of libraries and sketches small parts of real-world applications, which may use complex constructs of modern languages, such as reflection, native calls and File I/O. We further leverage a set of pruning strategies based on Java syntax to expedite the synthesis process. EdSketch embodies our approach in two forms: a stateful search based on the Java PathFinder model checker; and a stateless search based on re-execution inspired by the VeriSoft model checker. Experimental results show that EdSketch can complete some sketches that contain complex constructs in the presence of libraries, recursive procedures and advanced features like reflection. Without translating to SAT, EdSketch ’s performance compares well with the SAT-based Sketch system for a range of small but complex data structure subjects.
引用
收藏
页码:249 / 265
页数:16
相关论文
共 50 条
  • [31] A comparison between Web Service and JAVA']JAVA Message Service technologies for Event-Driven Mashup execution
    Stecca, Michele
    Maresca, Massimo
    INTERNATIONAL JOURNAL OF WEB AND GRID SERVICES, 2010, 6 (03) : 269 - 288
  • [32] HORB: Distributed execution of Java']Java programs
    Hirano, S
    WORLDWIDE COMPUTING AND ITS APPLICATIONS, 1997, 1274 : 29 - 42
  • [33] Design, and implementation of a Java']Java execution environment
    Chen, FG
    Hou, TW
    1998 INTERNATIONAL CONFERENCE ON PARALLEL AND DISTRIBUTED SYSTEMS, PROCEEDINGS, 1998, : 686 - 692
  • [34] Harissa: A hybrid approach to Java']Java execution
    Muller, G
    Schultz, UP
    IEEE SOFTWARE, 1999, 16 (02) : 44 - +
  • [35] Adaptive distributed execution of Java']Java applications
    Felea, V
    Toursel, B
    12TH EUROMICRO CONFERENCE ON PARALLEL, DISTRIBUTED AND NETWORK-BASED PROCESSING, PROCEEDINGS, 2004, : 16 - 21
  • [36] A uniform transactional execution environment for Java']Java
    Ziarek, Lukasz
    Welc, Adam
    Adl-Tabatabai, Ali-Reza
    Menon, Vijay
    Shpeisman, Tatiana
    Jagannathan, Suresh
    ECOOP 2008 - OBJECT-ORIENTED PROGRAMMING, PROCEEDINGS, 2008, 5142 : 129 - +
  • [37] Compact visualization of Java']Java program execution
    Jayaraman, S.
    Jayaraman, B.
    Lessa, D.
    SOFTWARE-PRACTICE & EXPERIENCE, 2017, 47 (02): : 163 - 191
  • [38] Java']Java Remote Job Execution System
    Jiang, Shanliang
    Clements, Stuart
    CISIS 2008: THE SECOND INTERNATIONAL CONFERENCE ON COMPLEX, INTELLIGENT AND SOFTWARE INTENSIVE SYSTEMS, PROCEEDINGS, 2008, : 561 - 566
  • [39] PicoJava']Java: A direct execution engine for Java']Java bytecode
    McGhan, H
    O'Connor, M
    COMPUTER, 1998, 31 (10) : 22 - +
  • [40] Symbolic Execution for Java']JavaScript
    Santos, Jose Fragoso
    Maksimovic, Petar
    Grohens, Theotime
    Dolby, Julian
    Gardner, Philippa
    PPDP'18: PROCEEDINGS OF THE 20TH INTERNATIONAL SYMPOSIUM ON PRINCIPLES AND PRACTICE OF DECLARATIVE PROGRAMMING, 2018,