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 条
  • [41] Reverse execution of Java bytecode
    Cook, J.J. (Jon.Cook@ed.ac.uk), 1600, Oxford University Press (45):
  • [42] Use of local memory for efficient Java']Java execution
    Tomar, S
    Kim, S
    Vijaykrishnan, N
    Kandemir, M
    Irwin, MJ
    2001 INTERNATIONAL CONFERENCE ON COMPUTER DESIGN, ICCD 2001, PROCEEDINGS, 2001, : 468 - 473
  • [43] A JAVA']JAVA TASK EXECUTION MANAGER FOR COMMODITY GRIDS
    Yousouf, Shenol
    Kirchev, Lazar
    Georgiev, Vasil
    GRID AND SERVICES EVOLUTION, 2009, : 1 - 16
  • [44] Serialization of distributed execution-state in Java']Java
    Weyns, D
    Truyen, E
    Verbaeten, P
    OBJECTS, COMPONENTS, ARCHITECTURES, SERVICES, AND APPLICATIONS FOR A NETWORKED WORLD, 2003, 2591 : 41 - 61
  • [45] A distributed execution environment for shared Java']Java objects
    Erdogan, N
    Selcuk, YE
    Sahingoz, O
    INFORMATION AND SOFTWARE TECHNOLOGY, 2004, 46 (07) : 445 - 455
  • [46] A Method Specialisation and Virtualised Execution Environment for Java']Java
    Cheadle, A. M.
    Field, A. J.
    Nystroem-Persson, J.
    VEE'08: PROCEEDINGS OF THE FOURTH INTERNATIONAL CONFERENCE ON VIRTUAL EXECUTION ENVIRONMENTS, 2008, : 51 - 60
  • [47] Optimized execution of deterministic blocks in Java']Java PathFinder
    d'Amorim, Marcelo
    Sobeih, Ahmed
    Marinov, Darko
    FORMAL METHODS AND SOFTWARE ENGINEERING, PROCEEDINGS, 2006, 4260 : 549 - +
  • [48] Testing Java']Java monitors through deterministic execution
    Harvey, C
    Strooper, P
    2001 AUSTRALIAN SOFTWARE ENGINEERING CONFERENCE, PROCEEDINGS, 2001, : 61 - 67
  • [49] Compiling multithreaded Java']Java bytecode for distributed execution
    Antoniu, G
    Bougé, L
    Hatcher, P
    MacBeth, M
    McGuigan, K
    Namyst, R
    EURO-PAR 2000 PARALLEL PROCESSING, PROCEEDINGS, 2000, 1900 : 1039 - 1052
  • [50] Java']Java Ranger: Statically Summarizing Regions for Efficient Symbolic Execution of Java']Java
    Sharma, Vaibhav
    Hussein, Soha
    Whalen, Michael W.
    McCamant, Stephen
    Visser, Willem
    PROCEEDINGS OF THE 28TH ACM JOINT MEETING ON EUROPEAN SOFTWARE ENGINEERING CONFERENCE AND SYMPOSIUM ON THE FOUNDATIONS OF SOFTWARE ENGINEERING (ESEC/FSE '20), 2020, : 123 - 134