ACM Computing Surveys (CSUR)
Retrieving reusable software by sampling behavior
ACM Transactions on Software Engineering and Methodology (TOSEM)
Signature matching: a key to reuse
SIGSOFT '93 Proceedings of the 1st ACM SIGSOFT symposium on Foundations of software engineering
Research directions in software reuse: where to go from here?
SSR '95 Proceedings of the 1995 Symposium on Software reusability
Extracting Reusable Functions by Flow Graph-Based Program Slicing
IEEE Transactions on Software Engineering
Practical experience with an application extractor for Java
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Testing object-oriented systems: models, patterns, and tools
Testing object-oriented systems: models, patterns, and tools
Hyper/J: multi-dimensional separation of concerns for Java
ICSE '01 Proceedings of the 23rd International Conference on Software Engineering
Test Driven Development: By Example
Test Driven Development: By Example
Empirical Software Engineering
Empirical Software Engineering
Reusing Software: Issues and Research Directions
IEEE Transactions on Software Engineering
An examination of software engineering work practices
CASCON '97 Proceedings of the 1997 conference of the Centre for Advanced Studies on Collaborative research
ICSE '81 Proceedings of the 5th international conference on Software engineering
Archetypal Source Code Searches: A Survey of Software Developers and Maintainers
IWPC '98 Proceedings of the 6th International Workshop on Program Comprehension
A Survey of Program Slicing Techniques.
A Survey of Program Slicing Techniques.
The Art of Software Testing
Using structural context to recommend source code examples
Proceedings of the 27th international conference on Software engineering
Jungloid mining: helping to navigate the API jungle
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
On the Effectiveness of the Test-First Approach to Programming
IEEE Transactions on Software Engineering
Using an information retrieval system to retrieve source code samples
Proceedings of the 28th international conference on Software engineering
Unanticipated reuse of large-scale software features
Proceedings of the 28th international conference on Software engineering
JIRiSS - an Eclipse plug-in for Source Code Exploration
ICPC '06 Proceedings of the 14th IEEE International Conference on Program Comprehension
XSnippet: mining For sample code
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Sourcerer: a search engine for open source code supporting structure-based search
Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications
Supporting the Investigation and Planning of Pragmatic Reuse Tasks
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Assieme: finding and leveraging implicit references in a web search interface for programmers
Proceedings of the 20th annual ACM symposium on User interface software and technology
CodeGenie:: a tool for test-driven source code search
Companion to the 22nd ACM SIGPLAN conference on Object-oriented programming systems and applications companion
Parseweb: a programmer assistant for reusing open source code on the web
Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
CodeGenie: using test-cases to search and reuse source code
Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
Jigsaw: a tool for the small-scale reuse of source code
Companion of the 30th international conference on Software engineering
Code Conjurer: Pulling Reusable Software out of Thin Air
IEEE Software
Sourcerer: mining and searching internet-scale software repositories
Data Mining and Knowledge Discovery
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
Sourcerer: An internet-scale software repository
SUITE '09 Proceedings of the 2009 ICSE Workshop on Search-Driven Development-Users, Infrastructure, Tools and Evaluation
MSR '09 Proceedings of the 2009 6th IEEE International Working Conference on Mining Software Repositories
Supporting agile reuse through extreme harvesting
XP'07 Proceedings of the 8th international conference on Agile processes in software engineering and extreme programming
Facilitating internet-scale code retrieval
Facilitating internet-scale code retrieval
Proceedings of the 34th International Conference on Software Engineering
Liberating the programmer with prorogued programming
Proceedings of the ACM international symposium on New ideas, new paradigms, and reflections on programming and software
Discovering math APIs by mining unit tests
FASE'13 Proceedings of the 16th international conference on Fundamental Approaches to Software Engineering
Sourcerer: An infrastructure for large-scale collection and analysis of open-source code
Science of Computer Programming
Hi-index | 0.00 |
Context: Software developers spend considerable effort implementing auxiliary functionality used by the main features of a system (e.g., compressing/decompressing files, encryption/decription of data, scaling/rotating images). With the increasing amount of open source code available on the Internet, time and effort can be saved by reusing these utilities through informal practices of code search and reuse. However, when this type of reuse is performed in an ad hoc manner, it can be tedious and error-prone: code results have to be manually inspected and integrated into the workspace. Objective: In this paper we introduce and evaluate the use of test cases as an interface for automating code search and reuse. We call our approach Test-Driven Code Search (TDCS). Test cases serve two purposes: (1) they define the behavior of the desired functionality to be searched; and (2) they test the matching results for suitability in the local context. We also describe CodeGenie, an Eclipse plugin we have developed that performs TDCS using a code search engine called Sourcerer. Method: Our evaluation consists of two studies: an applicability study with 34 different features that were searched using CodeGenie; and a performance study comparing CodeGenie, Google Code Search, and a manual approach. Results: Both studies present evidence of the applicability and good performance of TDCS in the reuse of auxiliary functionality. Conclusion: This paper presents an approach to source code search and its application to the reuse of auxiliary functionality. Our exploratory evaluation shows promising results, which motivates the use and further investigation of TDCS.