• Publications
  • Influence
Why we refactor? confessions of GitHub contributors
Refactoring is a widespread practice that helps developers to improve the maintainability and readability of their code. However, there is a limited number of studies empirically investigating theExpand
  • 95
  • 21
Understanding the Factors That Impact the Popularity of GitHub Repositories
Software popularity is a valuable information to modern open source developers, who constantly want to know if their systems are attracting new users, if new releases are gaining acceptance, or ifExpand
  • 108
  • 12
Extracting relative thresholds for source code metrics
Establishing credible thresholds is a central challenge for promoting source code metrics as an effective instrument to control the internal quality of software systems. To address this challenge, weExpand
  • 82
  • 11
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
  • 95
  • 10
A dependency constraint language to manage object-oriented software architectures
This paper presents a domain-specific dependency constraint language that allows software architects to restrict the spectrum of structural dependencies, which can be established in object-orientedExpand
  • 67
  • 9
Extracting Software Product Lines: A Case Study Using Conditional Compilation
Software Product Line (SPL) is a development paradigm that targets the creation of variable software systems. Despite the increasing interest in product lines, research in the area usually relies onExpand
  • 85
  • 9
Historical and impact analysis of API breaking changes: A large-scale study
Change is a routine in software development. Like any system, libraries also evolve over time. As a consequence, clients are compelled to update and, thus, benefit from the available APIExpand
  • 47
  • 9
RefDiff: Detecting Refactorings in Version Histories
Refactoring is a well-known technique that is widely adopted by software engineers to improve the design and enable the evolution of a system. Knowing which refactoring operations were applied in aExpand
  • 37
  • 8
Recommending automated extract method refactorings
Extract Method is a key refactoring for improving program comprehension. However, recent empirical research shows that refactoring tools designed to automate Extract Methods are often underused. ToExpand
  • 55
  • 7
Towards a Technique for Extracting Microservices from Monolithic Enterprise Systems
The idea behind microservices architecture is to develop a single large, complex, application as a suite of small, cohesive, independent services. On the other way, monolithic systems get larger overExpand
  • 58
  • 6