2015 · 27 citations · 16 references
ComputingComputer ScienceParallel ComputingProgramming LanguagesSoftware EngineeringCode GenerationControl-flow AnalysisData-flow AnalysisModel-driven Software EngineeringSoftware DesignStatic Code AnalysisAutomated Program SynthesisFitness Function EngineeringModel-to-code GenerationProgram Synthesis
Opaque code, which is executable but whose source is unavailable or hard to process, can be problematic in a number of scenarios, such as program analysis. Manual construction of models is often used to handle opaque code, but this process is tedious and error-prone. (In this paper, we use model to mean a representation of a piece of code suitable for program analysis.) We present a novel technique for automatic generation of models for opaque code, based on program synthesis. The technique intercepts memory accesses from the opaque code to client objects, and uses this information to construct partial execution traces. Then, it performs a heuristic search inspired by Markov Chain Monte Carlo techniques to discover an executable code model whose behavior matches the opaque code. Native execution, parallelization, and a carefully-designed fitness function are leveraged to increase the effectiveness of the search. We have implemented our technique in a tool Mimic for discovering models of opaque JavaScript functions, and used Mimic to synthesize correct models for a variety of array-manipulating routines.
16
Language identification in the limit
Eric Gold · Information and Control · 1967 · 3.6K citations
An Introduction to MCMC for Machine Learning
Christophe Andrieu, Nando de Freitas, Arnaud Doucet et al. · Machine Learning · 2003 · 2.4K citations · Full text
Combinatorial sketching for finite programs
Armando Solar-Lezama, Liviu Tancau, Rastislav Bodík et al. · 2006 · 642 citations
Oracle-guided component-based program synthesis
Susmit Jha, Sumit Gulwani, Sanjit A. Seshia et al. · 2010 · 479 citations