An experimental investigation on the innate relationship between quality and refactoring

@article{Bavota2015AnEI,
  title={An experimental investigation on the innate relationship between quality and refactoring},
  author={Gabriele Bavota and Andrea De Lucia and Massimiliano Di Penta and Rocco Oliveto and Fabio Palomba},
  journal={J. Syst. Softw.},
  year={2015},
  volume={107},
  pages={1-14}
}

An Exploratory Study on the Relationship between Changes and Refactoring

TLDR
A quantitative investigation on the relationship between different types of code changes and 28 different refactoring types coming from 3 open source projects showed that developers tend to apply a higher number ofRefactoring operations aimed at improving maintainability and comprehensibility of the source code when fixing bugs.

On the Impact of Refactoring on the Relationship between Quality Attributes and Design Metrics

TLDR
A large corpus of design-related refactoring activities that are applied and documented by developers during their daily changes from 3,795 curated open source Java projects are extracted.

Why Developers Refactor Source Code: A Mining-based Study

TLDR
A large-scale study quantitatively and qualitatively investigating why developers perform refactoring in open source projects and a detailed taxonomy of motivations pushing developers to refactor source code is presented.

Why Developers Refactor Source Code

TLDR
A large-scale study quantitatively and qualitatively investigating why developers perform refactoring in open source projects and a detailed taxonomy of motivations pushing developers to refactor source code is presented.

On the Relationship Between Developer Experience and Refactoring: An Exploratory Study and Preliminary Results

TLDR
Although refactoring is not restricted to a subset of developers, those with higher experiences score tend to perform more refactorings than others; and the qualitative analysis of three randomly sampled projects show that the developers who are responsible for the majority ofRefactoring activities are typically on advanced positions in their development teams, demonstrating their extensive knowledge of the design of the systems they contribute to.

A Code Refactoring Dataset and Its Assessment Regarding Software Maintainability

TLDR
Early results show that lower maintainability indeed triggers more code refactoring in practice and these refactorings significantly decrease complexity, code lines, coupling and clone metrics, however, there is a decrease in comment related metrics in the refactored code.

Do Design Metrics Capture Developers Perception of Quality? An Empirical Study on Self-Affirmed Refactoring Activities

TLDR
There are a variety of structural metrics that can represent the internal quality attributes with different degrees of improvement and degradation of software quality, and most of the metrics that are mapped to the main quality attributes do capture developer intentions of quality improvement reported in the commit messages.

On the relationship between refactoring actions and bugs: a differentiated replication

TLDR
A differentiated replication of the work by Bavota etal is presented in which some of the weaknesses that affect their experimental design are overcome and the role played by refactoring actions in the bug introduction is demystified.

How Do I Refactor This? An Empirical Study on Refactoring Trends and Topics in Stack Overflow

TLDR
The results show that Stack Overflow is utilized by a diverse set of developers for refactoring assistance for a variety of technologies, and observations show five areas that developers typically require help withRefactoring– Code Optimization, Tools and IDEs, Architecture and Design Patterns, Unit Testing, and Database.

Understanding the impact of refactoring on smells: a longitudinal study of 23 software projects

TLDR
How often commonly-used refactoring types affect the density of 13 types of code smells along the version histories of 23 projects is analyzed, and it is suggested refactorings tend to more frequently introduce long-living smells instead of eliminating existing ones.
...

References

SHOWING 1-10 OF 63 REFERENCES

When Does a Refactoring Induce Bugs? An Empirical Study

TLDR
An empirical study carried out on three Java software systems, namely Apache Ant, Xerces, and Ar-go UML, aimed at investigating to what extent refactoring activities induce faults, indicates that, while some kinds of refactorings are unlikely to be harmful, others, such as refactoring involving hierarchies, tend to induce faults very frequently.

A field study of refactoring challenges and benefits

TLDR
A field study of refactoring benefits and challenges at Microsoft through three complementary study methods: a survey, semi-structured interviews with professional software engineers, and quantitative analysis of version history data finds that the refactored definition in practice is not confined to a rigorous definition of semantics-preserving code transformations.

Improving evolvability through refactoring

TLDR
The approach enables the detection of bad smells allowing an engineer to apply refactoring on these parts of the source code to improve the evolvability of the software.

Improving evolvability through refactoring

TLDR
The approach enables the detection of bad smells allowing an engineer to apply refactoring on these parts of the source code to improve the evolvability of the software.

An Empirical Assessment of Refactoring Impact on Software Quality Using a Hierarchical Quality Model

TLDR
It is found that the majority of refactoring heuristics do improve quality; however some heuristic do not have a positive impact on all software quality factors, and the impact analysis of refactorings divides software measures into high and low impacted measures.

Do They Really Smell Bad? A Study on Developers' Perception of Bad Code Smells

TLDR
This study showed to developers code entities -- belonging to three systems -- affected and not by bad smells, and asked them to indicate whether the code contains a potential design problem, and if any, the nature and severity of the problem.

Metrics based refactoring

TLDR
It is shown that a special kind of metrics can support these subjective perceptions and thus can be used as an effective and efficient way to get support for the decision of where to apply refactoring.

Recommending Refactoring Operations in Large Software Systems

During its lifecycle, the internal structure of a software system undergoes continuous modifications. These changes push away the source code from its original design, often reducing its quality. In

Automating extract class refactoring: an improved method and its evaluation

TLDR
The new approach for automating the Extract Class refactoring outperforms a previously proposed approach and that developers find the proposed solutions useful in guiding refactorings.

A Case Study on the Impact of Refactoring on Quality and Productivity in an Agile Team

TLDR
Results indicate that refactoring not only increases aspects of software quality, but also improves productivity and is applicable to small teams working in similar, highly volatile domains.
...