Congratulations to Joel Ossher on passing his advancement to candidacy exam!
Thesis: Automated Dependency Analysis for Internet-Scale Code Reuse
Crista Lopes (Chair)
Andre van der Hoek
Software reuse by search-copy-paste-and-adapt has become a common practice in software development, along with other more traditional forms of reuse. Opportunities for this kind of reuse are plentiful, thanks in large part to the widespread adoption of open source processes and the availability of search engines for locating relevant code. Despite increased availability, merely locating an appropriate artifact to reuse is not sufficient. There remains the challenge of developing an understanding of its workings as well as integrating it into a project. This is made more difficult by the interconnected nature of complex software, as a single artifact may touch many different pieces of the system. This greatly complicates localizing usage examples and extracting reusable pieces from existing code. This paper presents a novel method of static dependency analysis to help support the understanding and integration of reusable code. Our dependency slicing algorithm automatically isolates self-contained slices from a source program, thereby dramatically reducing the amount of source code irrelevant to the artifact of interest. We describe how we modified Sourcerer, an infrastructure for internet-scale open source code search, to support an implementation of our dependency slicing algorithm. An empirical evaluation showed that the slicing algorithm introduced no compilation errors. Further, compared to the standard approach to dependency resolution, it reduced the number of files required by up to 300 times and decreased the number of declarations in these files by up to 4000 times.