Learn More
Program specifications are important for many tasks during software design, development, and maintenance. Among these, temporal specifications are particularly useful. They express formal correctness requirements of an application's ordering of specific actions and events during execution, such as the strict alternation of acquisition and release of locks.(More)
Several techniques have been developed for identifying similar code fragments in programs. These similar fragments, referred to as code clones, can be used to identify redundant code, locate bugs, or gain insight into program design. Existing scalable approaches to clone detection are limited to finding program fragments that are similar only in their(More)
This paper presents the results of the first study of the <i>uniqueness of source code</i>. We define the uniqueness of a unit of source code with respect to the entire body of written software, which we approximate with a corpus of 420 million lines of source code. Our high-level methodology consists of examining a collection of 6,000 software projects and(More)
Program specifications are important in many phases of the software development process, but they are often omitted or incomplete. An important class of specifications takes the form of temporal properties that prescribe proper usage of components of a software system. Recent work has focused on the automated inference of temporal specifications from the(More)
The interfaces of software components are often paired with specifications or protocols that prescribe correct and safe usage. An important class of these specifications consists of <i>temporal safety properties</i> over function or method call sequences. Because violations of these properties can lead to program crashes or subtly inconsistent program(More)
Software developers often duplicate source code to replicate functionality. This practice can hinder the maintenance of a software project: bugs may arise when two identical code segments are edited inconsistently. This paper presents DejaVu, a highly scalable system for detecting these general syntactic inconsistency bugs. DejaVu operates in two phases.(More)
Specifications are necessary for nearly every software engineering task, but they are often missing or incomplete. "Specification mining" is a line of research promising to solve this problem through automated tools that infer specifications directly from existing programs. The standard practice is one of inductive learning: mining tools make observations(More)
In recent decades, the branch of Clone Detection has undergone a great advancement. This progress is due to the development of various methods, which involves the implementation of complex algorithms and tool chains to offer clone detection. Various clone detection methods that are already available include textual comparison, token comparison, and(More)
Ground beetles (Coleoptera: Carabidae) are a major component of terrestrial invertebrate communities and have been used as bioindicators of habitat change and disturbance. The Black Hills of South Dakota is a small area with a high biodiversity, but the ground beetles of this region are little studied. The habitat preferences of ground beetles in the Black(More)
Accurate performance testing of heterogeneous distributed systems, such as those created using GRID technology, requires a consistent method for retrieving system performance data from multiple platforms. This paper presents CAMP1: a low-level platform independent performance data API designed for use with distributed testing frameworks. CAMP is not(More)
  • 1