|
ABSTRACT
Reuse of existing code from class libraries and frameworks is often difficult because APIs are complex and the client code required to use the APIs can be hard to write. We observed that a common scenario is that the programmer knows what type of object he needs, but does not know how to write the code to get the object.In order to help programmers write API client code more easily, we developed techniques for synthesizing jungloid code fragments automatically given a simple query that describes that desired code in terms of input and output types. A jungloid is simply a unary expression; jungloids are simple, enabling synthesis, but are also versatile, covering many coding problems, and composable, combining to form more complex code fragments. We synthesize jungloids using both API method signatures and jungloids mined from a corpus of sample client programs.We implemented a tool, prospector, based on these techniques. prospector is integrated with the Eclipse IDE code assistance feature, and it infers queries from context so there is no need for the programmer to write queries. We tested prospector on a set of real programming problems involving APIs; prospector found the desired solution for 18 of 20 problems. We also evaluated prospector in a user study, finding that programmers solved programming problems more quickly and with more reuse when using prospector than without prospector.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
R. Alur, P. Černý, P. Madhusudan, and W. Nam. Synthesis of interface specifications for java classes.
|
 |
2
|
|
| |
3
|
|
 |
4
|
|
 |
5
|
|
| |
6
|
A. J. Ko, B. A. Myers, and H. H. Aung. Six learning barriers in end-user programming systems.
|
| |
7
|
|
| |
8
|
|
| |
9
|
K. J. Lieberherr, W. Hürsch, I. Silva-Lepe, and C. Xiao. Experience with a graph-based propagation pattern programming tool. In G. F. et al., editor, International Workshop on CASE, pages 114--119, Montréal, Canada, 1992. IEEE Computer Society.
|
| |
10
|
M. Rittri. Retrieving library identifiers via equational matching of types, Jan. 24 1997.
|
| |
11
|
D. W. Stringer-Calvert. Signature Matching for Ada Software Reuse. Master of engineering, Department of Computer Science, University of York, Mar. 1994.
|
| |
12
|
|
| |
13
|
|
| |
14
|
|
| |
15
|
J. Whaley, M. C. Martin, and M. S. Lam. Automatic extraction of object-oriented component interfaces, July 11 2002.
|
 |
16
|
|
 |
17
|
|
| |
18
|
A. M. Zaremski and J. M. Wing. Signature matching: a tool for using software libraries, July 22 1996.
|
| |
19
|
A. M. Zaremski and J. M. Wing. Specification matching of software components, Dec. 11 1997.
|
CITED BY 33
|
|
|
|
|
|
|
|
|
|
|
Sushil Bajracharya , Trung Ngo , Erik Linstead , Yimeng Dou , Paul Rigor , Pierre Baldi , Cristina Lopes, Sourcerer: a search engine for open source code supporting structure-based search, Companion to the 21st ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications, October 22-26, 2006, Portland, Oregon, USA
|
|
|
|
|
|
Sunghun Kim , Kai Pan , E. E. James Whitehead, Jr., Memories of bug fixes, Proceedings of the 14th ACM SIGSOFT international symposium on Foundations of software engineering, November 05-11, 2006, Portland, Oregon, USA
|
|
|
|
|
|
Yunwen Ye , Yasuhiro Yamamoto , Kumiyo Nakakoji , Yoshiyuki Nishinaka , Mitsuhiro Asada, Searching the library and asking the peers: learning to use Java APIs on demand, Proceedings of the 5th international symposium on Principles and practice of programming in Java, September 05-07, 2007, Lisboa, Portugal
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Erik Linstead , Sushil Bajracharya , Trung Ngo , Paul Rigor , Cristina Lopes , Pierre Baldi, Sourcerer: mining and searching internet-scale software repositories, Data Mining and Knowledge Discovery, v.18 n.2, p.300-336, April 2009
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Werner Janjic , Dietmar Stoll , Philipp Bostan , Colin Atkinson, Lowering the barrier to reuse through test-driven search, Proceedings of the 2009 ICSE Workshop on Search-Driven Development-Users, Infrastructure, Tools and Evaluation, p.21-24, May 16-16, 2009
|
|
|
|
|
|
Joel Brandt , Philip J. Guo , Joel Lewenstein , Mira Dontcheva , Scott R. Klemmer, Two studies of opportunistic programming: interleaving web foraging, learning, and writing code, Proceedings of the 27th international conference on Human factors in computing systems, April 04-09, 2009, Boston, MA, USA
|
|