Export Citations
No abstract available.
Software history under the lens: A study on why and how developers examine it
Despite software history being indispensable for developers, there is little empirical knowledge about how they examine software history. Without such knowledge, researchers and tool builders are in danger of making wrong assumptions and building ...
To fix or to learn? How production bias affects developers' information foraging during debugging
- David Piorkowski,
- Scott D. Fleming,
- Christopher Scaffidi,
- Margaret Burnett,
- Irwin Kwan,
- Austin Z. Henley,
- Jamie Macbeth,
- Charles Hill,
- Amber Horvath
Developers performing maintenance activities must balance their efforts to learn the code vs. their efforts to actually change it. This balancing act is consistent with the “production bias” that, according to Carroll's minimalist learning theory, ...
Developers' perception of co-change patterns: An empirical study
Co-change clusters are groups of classes that frequently change together. They are proposed as an alternative modular view, which can be used to assess the traditional decomposition of systems in packages. To investigate developer's perception of co-...
When and why developers adopt and change software licenses
- Christopher Vendome,
- Mario Linares-Vasquez,
- Gabriele Bavota,
- Massimiliano Di Penta,
- Daniel M. German,
- Denys Poshyvanyk
Software licenses legally govern the way in which developers can use, modify, and redistribute a particular system. While previous studies either investigated licensing through mining software repositories or studied licensing through FOSS reuse, we aim ...
Investigating naming convention adherence in Java references
Naming conventions can help the readability and comprehension of code, and thus the onboarding of new developers. Conventions also provide cues that help developers and tools extract information from identifier names to support software maintenance. ...
Developing a model of loop actions by mining loop characteristics from a large code corpus
Some high level algorithmic steps require more than one statement to implement, but are not large enough to be a method on their own. Specifically, many algorithmic steps (e.g., count, compare pairs of elements, find the maximum) are implemented as loop ...
Delta extraction: An abstraction technique to comprehend why two objects could be related
In an execution of a large scale program, even a simple observable behavior may be generated by a wide range of the source code. To comprehend how such a behavior is implemented in the code, a debugger would be helpful. However, when using a debugger, ...
Modeling changeset topics for feature location
Feature location is a program comprehension activity in which a developer inspects source code to locate the classes or methods that implement a feature of interest. Many feature location techniques (FLTs) are based on text retrieval models, and in such ...
Four eyes are better than two: On the impact of code reviews on software quality
Code review is advocated as one of the best practices to improve software quality and reduce the likelihood of introducing defects during code change activities. Recent research has shown how code components having a high review coverage (i.e., a high ...
A comparative study on the bug-proneness of different types of code clones
Code clones are defined to be the exactly or nearly similar code fragments in a software system's code-base. The existing clone related studies reveal that code clones are likely to introduce bugs and inconsistencies in the code-base. However, although ...
An empirical study of bugs in test code
Testing aims at detecting (regression) bugs in production code. However, testing code is just as likely to contain bugs as the code it tests. Buggy test cases can silently miss bugs in the production code or loudly ring false alarms when the production ...
Investigating code review quality: Do people and participation matter?
Code review is an essential element of any mature software development project; it aims at evaluating code contributions submitted by developers. In principle, code review should improve the quality of code changes (patches) before they are committed to ...
Inter-smell relations in industrial and open source systems: A replication and comparative analysis
The presence of anti-patterns and code smells can affect adversely software evolution and quality. Recent work has shown that code smells that appear together in the same file (i.e., collocated smells) can interact with each other, leading to various ...
Evaluating clone detection tools with BigCloneBench
Many clone detection tools have been proposed in the literature. However, our knowledge of their performance in real software systems is limited, particularly their recall. In this paper, we use our big data clone benchmark, BigCloneBench, to evaluate ...
Uncovering dependence clusters and linchpin functions
Dependence clusters are (maximal) collections of mutually dependent source code entities according to some dependence relation. Their presence in software complicates many maintenance activities including testing, refactoring, and feature extraction. ...
Forked and integrated variants in an open-source firmware project
Code cloning has been reported both on small (code fragments) and large (entire projects) scale. Cloning-in-the-large, or forking, is gaining ground as a reuse mechanism thanks to availability of better tools for maintaining forked project variants, ...
Towards automating dynamic analysis for behavioral design pattern detection
The detection of behavioral design patterns is more accurate when a dynamic analysis is performed on the candidate instances identified statically. Such a dynamic analysis requires the monitoring of the candidate instances at run-time through the ...
Practical and accurate pinpointing of configuration errors using static analysis
Software misconfigurations are responsible for a substantial part of today's system failures, causing about one-quarter of all customer-reported issues. Identifying their root causes can be costly in terms of time and human resources. We present an ...
Deterministic dynamic race detection across program versions
Dynamic race detectors operate by analyzing execution traces of programs to detect races in multithreaded programs. As the thread interleavings influence these traces, the sets of races detected across multiple runs of the detector can vary. This non-...
Program specialization and verification using file format specifications
Programs that process data that reside in files are widely used in varied domains, such as banking, healthcare, and web-traffic analysis. Precise static analysis of these programs in the context of software transformation and verification tasks is a ...
An empirical evaluation of ant build maintenance using Formiga
As a software project evolves, so does its build system. Significant effort is necessary to maintain the build system to cope with this evolution, in part because changes to source code often require parallel changes in the build system. Our tool, ...
Scripting parametric refactorings in Java to retrofit design patterns
Retrofitting design patterns into a program by hand is tedious and error-prone. A programmer must distinguish refactorings that are provided by an Integrated Development Environment (IDE) from those that must be realized manually, determine a precise ...
System specific, source code transformations
During its lifetime, a software system might undergo a major transformation effort in its structure, for example to migrate to a new architecture or bring some drastic improvements to the system. Particularly in this context, we found evidences that ...
A decision support system to refactor class cycles
Many studies show that real-world systems are riddled with large dependency cycles among software classes. Dependency cycles are claimed to affect quality factors such as testability, extensibility, modifiability, and reusability. Recent studies reveal ...
On the role of developer's scattered changes in bug prediction
The importance of human-related factors in the introduction of bugs has recently been the subject of a number of empirical studies. However, such factors have not been captured yet in bug prediction models which simply exploit product metrics or process ...
How do developers react to API evolution? The Pharo ecosystem case
Software engineering research now considers that no system is an island, but it is part of an ecosystem involving other systems, developers, users, hardware, … When one system (e.g., a framework) evolves, its clients often need to adapt. Client ...