@proceedings {1827,
	title = {A Large-Scale Study on Repetitiveness, Containment, and Composability of Routines in Open-Source Projects},
	year = {2016},
	month = {05/2016},
	pages = {362-373},
	abstract = {Source code in software systems has been shown to have a good
degree of repetitiveness at the lexical, syntactical, and API usage
levels. This paper presents a large-scale study on the repetitiveness,
containment, and composability of source code at the semantic level.
We collected a large dataset consisting of 9,224 Java projects with
2.79M class files, 17.54M methods with 187M SLOCs. For each
method in a project, we build the program dependency graph (PDG)
to represent a routine, and compare PDGs with one another as well
as the subgraphs within them. We found that within a project, 12.1\%
of the routines are repeated, and most of them repeat from 2{\textendash}7 times.
As entirety, the routines are quite project-specific with only 3.3\% of
them exactly repeating in 1{\textendash}4 other projects with at most 8 times.
We also found that 26.1\% and 7.27\% of the routines are contained
in other routine(s), i.e., implemented as part of other routine(s) elsewhere
within a project and in other projects, respectively. Except for
trivial routines, their repetitiveness and containment is independent
of their complexity. Defining a subroutine via a per-variable slicing
subgraph in a PDG, we found that 14.3\% of all routines have all
of their subroutines repeated. A high percentage of subroutines in
a routine can be found/reused elsewhere. We collected 8,764,971
unique subroutines (with 323,564 unique JDK subroutines) as basic
units for code searching/synthesis. We also provide practical
implications of our findings to automated tools.},
	doi = {http://dx.doi.org/10.1145/2901739.2901759},
	author = {Nguyen, Anh Duc and Nguyen, Hoan Anh and Nguyen, Tien N.}
}
@proceedings {1522,
	title = {Boa: A Language and Infrastructure for Analyzing Ultra-Large-Scale Software Repositories},
	year = {2013},
	month = {05/2013},
	pages = {422-431},
	abstract = {In today{\textquoteright}s software-centric world, ultra-large-scale software repositories, e.g. SourceForge (350,000+ projects), GitHub (250,000+ projects), and Google Code (250,000+ projects) are the new library of Alexandria. They contain an enormous corpus of software and information about software. Scientists and engineers alike are interested in analyzing this wealth of information both for curiosity as well as for testing important hypotheses. However, systematic extraction of relevant data from these repositories and analysis of such data for testing hypotheses is hard, and best left for mining software repository (MSR) experts! The goal of Boa, a domain-specific language and infrastructure described here, is to ease testing MSR-related hypotheses. We have implemented Boa and provide a web-based interface to Boa{\textquoteright}s infrastructure. Our evaluation demonstrates that Boa substantially reduces programming efforts, thus lowering the barrier to entry. We also see drastic improvements in scalability. Last but not least, reproducing an experiment conducted using Boa is just a matter of re-running small Boa programs provided by previous researchers.},
	keywords = {ease of use, forge, github, google code, lower barrier to entry, mining, repository, reproducible, scalable, Software, sourceforge},
	author = {Dyer, Robert and Nguyen, Hoan Anh and Rajan, Hridesh and Nguyen, Tien N.}
}
