Jungloid mining
Authors:
Open Access
- 12 June 2005
- journal article
- Published by Association for Computing Machinery (ACM) in ACM SIGPLAN Notices
- Vol. 40 (6) , 48-61
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 .Keywords
This publication has 10 references indexed in Scilit:
- Effective, automatic procedure extraction2004
- Experience with a graph-based propagation programming tool2003
- Automatic extraction of object-oriented component interfacesACM SIGSOFT Software Engineering Notes, 2002
- Mining specificationsACM SIGPLAN Notices, 2002
- Supporting reuse by delivering task-relevant and personalized information2002
- Protocol specifications and component adaptorsACM Transactions on Programming Languages and Systems, 1997
- The use of program dependence graphs in software engineering1992
- Retrieving library identifiers via equational matching of types1990
- The program dependence graph and its use in optimizationACM Transactions on Programming Languages and Systems, 1987
- Typestate: A programming language concept for enhancing software reliabilityIEEE Transactions on Software Engineering, 1986