• Publications
  • Influence
Why we refactor? confessions of GitHub contributors
This work monitored Java projects hosted on GitHub to detect recently applied refactorings, and asked developers to explain the reasons behind their decision to refactor the code, compiling a catalogue of 44 distinct motivations for 12 well-known refactoring types. Expand
Understanding the Factors That Impact the Popularity of GitHub Repositories
A study on the popularity of software systems hosted at GitHub, which is the world's largest collection of open source software, reveals the main factors that impact the number of stars of GitHub projects, including programming language and application domain. Expand
Extracting relative thresholds for source code metrics
An empirical method for extracting relative thresholds from real systems is described and it is argued that the proposed thresholds express a balance between real and idealized design practices. Expand
Static Architecture-Conformance Checking: An Illustrative Overview
In this article, the authors compare and illustrate the use of three static architecture-conformance techniques: dependency-structure matrices, source code query languages, and reflexion models. ToExpand
A dependency constraint language to manage object-oriented software architectures
A domain-specific dependency constraint language that allows software architects to restrict the spectrum of structural dependencies, which can be established in object-oriented systems, is presented. Expand
A novel approach for estimating Truck Factors
A novel (and automated) approach for estimating TF-values is proposed, which is executed against a corpus of 133 popular project in GitHub and later survey developers as a means to assess the reliability of the results. Expand
Towards a Technique for Extracting Microservices from Monolithic Enterprise Systems
This paper describes a technique to identify and define microservices on monolithic enterprise systems and shows that the approach was able to identify relevant candidates to become micro services on a 750 KLOC banking system. Expand
Extracting Software Product Lines: A Case Study Using Conditional Compilation
An experiment involving the extraction of a SPL for ArgoUML, an open source tool widely used for designing systems in UML, and the results were possible to shed light on the major challenges involved in extracting features from real-world systems. Expand
RefDiff: Detecting Refactorings in Version Histories
An automated approach that identifies refactorings performed between two code revisions in a git repository, which suggests that RefDiff has superior precision and recall than existing state-of-the-art approaches. Expand
Historical and impact analysis of API breaking changes: A large-scale study
The authors' large-scale analysis on 317 real-world Java libraries, 9K releases, and 260K client applications shows that systems with higher frequency of breaking changes are larger, more popular, and more active. Expand