Synthesizing framework models for symbolic execution

Symbolic execution is a powerful program analysis technique, but it is difficult to apply to programs built using frameworks such as Swing and Android, because the framework code itself is hard to symbolically execute. The standard solution is to manually create a framework model that can be symboli...

Full description

Bibliographic Details
Main Authors: Jeon, Jinseong (Author), Qiu, Xiaokang (Contributor), Fetter-Degges, Jonathan (Author), Foster, Jeffrey S. (Author), Solar-Lezama, Armando (Contributor)
Other Authors: Massachusetts Institute of Technology. Computer Science and Artificial Intelligence Laboratory (Contributor), Massachusetts Institute of Technology. Department of Electrical Engineering and Computer Science (Contributor)
Format: Article
Language:English
Published: Association for Computing Machinery (ACM), 2016-06-09T14:16:51Z.
Subjects:
Online Access:Get fulltext
LEADER 02393 am a22002773u 4500
001 103076
042 |a dc 
100 1 0 |a Jeon, Jinseong  |e author 
100 1 0 |a Massachusetts Institute of Technology. Computer Science and Artificial Intelligence Laboratory  |e contributor 
100 1 0 |a Massachusetts Institute of Technology. Department of Electrical Engineering and Computer Science  |e contributor 
100 1 0 |a Qiu, Xiaokang  |e contributor 
100 1 0 |a Solar-Lezama, Armando  |e contributor 
700 1 0 |a Qiu, Xiaokang  |e author 
700 1 0 |a Fetter-Degges, Jonathan  |e author 
700 1 0 |a Foster, Jeffrey S.  |e author 
700 1 0 |a Solar-Lezama, Armando  |e author 
245 0 0 |a Synthesizing framework models for symbolic execution 
260 |b Association for Computing Machinery (ACM),   |c 2016-06-09T14:16:51Z. 
856 |z Get fulltext  |u http://hdl.handle.net/1721.1/103076 
520 |a Symbolic execution is a powerful program analysis technique, but it is difficult to apply to programs built using frameworks such as Swing and Android, because the framework code itself is hard to symbolically execute. The standard solution is to manually create a framework model that can be symbolically executed, but developing and maintaining a model is difficult and error-prone. In this paper, we present Pasket, a new system that takes a first step toward automatically generating Java framework models to support symbolic execution. Pasket's focus is on creating models by instantiating design patterns. Pasket takes as input class, method, and type information from the framework API, together with tutorial programs that exercise the framework. From these artifacts and Pasket's internal knowledge of design patterns, Pasket synthesizes a framework model whose behavior on the tutorial programs matches that of the original framework. We evaluated Pasket by synthesizing models for subsets of Swing and Android. Our results show that the models derived by Pasket are sufficient to allow us to use off-the-shelf symbolic execution tools to analyze Java programs that rely on frameworks. 
520 |a National Science Foundation (U.S.) (CCF-1139021) 
520 |a National Science Foundation (U.S.) (CCF-1139056) 
520 |a National Science Foundation (U.S.) (CCF-1161775) 
546 |a en_US 
655 7 |a Article 
773 |t Proceedings of the 38th International Conference on Software Engineering (ICSE '16)