Abstract
Software construction today often involves the use of large frameworks. The challenge in this type of programming is that object-oriented frameworks tend to grow exceedingly intricate; they spread functionality among numerous classes, and any use of the framework requires knowledge of many interacting components. We present a system named MATCHMAKER that from a simple query synthesizes code that interacts with the framework. The query consists of names of two framework classes, and our system produces code enabling interaction between them. MATCHMAKER relies on a database of dynamic program traces called DELIGHT that uses novel abstraction-based indexing techniques to answer queries about the evolution of heap connectivity in a matter of seconds.
The paper evaluates the performance and effectiveness of MATCHMAKER on a number of benchmarks from the Eclipse framework. The paper also presents the results of a user study that showed a 49% average productivity improvement from the use of our tool.
- E. Bruneton, R. Lenglet, and T. Coupaye. ASM: a code manipulation tool to implement adaptable systems. Adaptable and extensible component systems, 2002.Google Scholar
- A. Diwan, K. S. McKinley, and J. E. B. Moss. Type-based alias analysis. PLDI '98, pages 106--117, New York, NY, USA, 1998. ACM. Google Scholar
Digital Library
- Eclipse. Helios release notes, 2010.Google Scholar
- S. F. Goldsmith, R. O'Callahan, and A. Aiken. Relational queries over program traces. OOPSLA '05, pages 385--402, New York, NY, USA, 2005. ACM. Google Scholar
Digital Library
- M. Harman, D. Binkley, and S. Danicic. Amorphous program slicing. J. Syst. Softw.}, 68:45--64, October 2003. Google Scholar
Digital Library
- A. Heydarnoori, K. Czarnecki, and T. T. Bartolomei. Supporting framework use via automatically extracted concept-implementation templates. In Proceedings of the 23rd European Conference on ECOOP 2009 - Object-Oriented Programming, Genoa, pages 344--368, Berlin, Heidelberg, 2009. Springer-Verlag. Google Scholar
Digital Library
- R. Holmes and G. C. Murphy. Using structural context to recommend source code examples. ICSE '05, pages 117--125, New York, NY, USA, 2005. ACM. Google Scholar
Digital Library
- A. J. Ko and B. A. Myers. Debugging reinvented: asking and answering why and why not questions about program behavior. ICSE '08, pages 301--310, New York, NY, USA, 2008. ACM. Google Scholar
Digital Library
- D. Mandelin, L. Xu, R. Bodik, and D. Kimelman. Jungloid mining: helping to navigate the api jungle. PLDI '05, pages 48--61, New York, NY, USA, 2005. ACM. Google Scholar
Digital Library
- M. Martin, B. Livshits, and M. S. Lam. Finding application errors and security flaws using pql: a program query language. OOPSLA '05, pages 365--383, New York, NY, USA, 2005. ACM. Google Scholar
Digital Library
- S. Narayanasamy, G. Pokam, and B. Calder. Bugnet: Continuously recording program execution for deterministic replay debugging. ISCA '05, pages 284--295, Washington, DC, USA, 2005. IEEE Computer Society. Google Scholar
Digital Library
- Neo4J. Home page, 2011.Google Scholar
- N. Sahavechaphan and K. Claypool. Xsnippet: mining for sample code. OOPSLA '06, pages 413--430, New York, NY, USA, 2006. ACM. Google Scholar
Digital Library
- A. Solar-Lezama, L. Tancau, R. Bodik, S. Seshia, and V. Saraswat. Combinatorial sketching for finite programs. ASPLOS-XII, pages 404--415, New York, NY, USA, 2006. ACM. Google Scholar
Digital Library
- M. Sridharan, S. J. Fink, and R. Bodik. Thin slicing. PLDI '07, pages 112--122, New York, NY, USA, 2007. ACM. Google Scholar
Digital Library
- S. Srivastava, S. Gulwani, and J. S. Foster. From program verification to program synthesis. POPL '10, pages 313--326, New York, NY, USA, 2010. ACM. Google Scholar
Digital Library
- S. Thummalapenta and T. Xie. Parseweb: a programmer assistant for reusing open source code on the web. ASE '07, pages 204--213, New York, NY, USA, 2007. ACM. Google Scholar
Digital Library
- M. Vechev and E. Yahav. Deriving linearizable fine-grained concurrent objects. PLDI '08, pages 125--135, New York, NY, USA, 2008. ACM. Google Scholar
Digital Library
- G. Xu, N. Mitchell, M. Arnold, A. Rountev, E. Schonberg, and G. Sevitsky. Finding low-utility data structures. PLDI '10, pages 174--186, New York, NY, USA, 2010. ACM. Google Scholar
Digital Library
- H. Zhong, T. Xie, L. Zhang, J. Pei, and H. Mei. MAPO: Mining and recommending API usage patterns. ECOOP 2009--Object-Oriented Programming, pages 318--343, 2009. Google Scholar
Digital Library
Index Terms
Data-driven synthesis for object-oriented frameworks
Recommendations
Data-driven synthesis for object-oriented frameworks
OOPSLA '11: Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applicationsSoftware construction today often involves the use of large frameworks. The challenge in this type of programming is that object-oriented frameworks tend to grow exceedingly intricate; they spread functionality among numerous classes, and any use of the ...
General Program Synthesis Benchmark Suite
GECCO '15: Proceedings of the 2015 Annual Conference on Genetic and Evolutionary ComputationRecent interest in the development and use of non-trivial benchmark problems for genetic programming research has highlighted the scarcity of general program synthesis (also called "traditional programming") benchmark problems. We present a suite of 29 ...
Can reactive synthesis and syntax-guided synthesis be friends?
PLDI 2022: Proceedings of the 43rd ACM SIGPLAN International Conference on Programming Language Design and ImplementationWhile reactive synthesis and syntax-guided synthesis (SyGuS) have seen enormous progress in recent years, combining the two approaches has remained a challenge. In this work, we present the synthesis of reactive programs from Temporal Stream Logic ...







Comments