The Effect of Refactoring on Change and Fault-Proneness in Commercial C# Software
Thursday 14 March 2013
3:00 pm - 4:00 pm
3:00 pm - 4:00 pm
| Event type | Seminar |
| Location | St Johns Building - Room 050 |
Speaker: Matt Gatrell, Director of Development and Chief Architect at BancTec
Matt Gatrell, Director of Development and Chief Architect at BancTec
Refactoring is a process for improving the internal characteristics and design of software while preserving its external behavior. Refactoring has been suggested as a positive influence on the long-term quality and maintainability of software and, as a result, we might expect benefits of a lower future change or fault propensity by refactoring software. Conversely, many studies show a correlation between change and future faults; so the application of a refactoring may in itself increase future fault propensity, negating any benefit of the refactoring. In this paper, we determine whether the refactoring process reaps future maintenance benefits and, as a consequence, results in software with a lower propensity for both faults and change. We studied a large, commercial software system over a twelve-month period and identified a set of refactored classes during the middle four months of the study; a bespoke tool was used to detect occurrences of fifteen types of refactoring. We then examined the fault and change proneness of the same set of refactored classes in the four months prior to, during, and after the period of refactoring to determine if change or fault activity was reduced either during or after the period of refactoring studied. We also compared these trends with remaining classes in the system that had not been refactored over the same periods. Results revealed that refactored classes experienced a lower change-proneness in the period after refactoring and were significantly less fault-prone during and after the period of refactoring, even when accounting for the effects of change. The study therefore presents concrete evidence of the benefits of refactoring in these two senses.
Bio:
Matt Gatrell is the Director of Development and Chief Architect at BancTec, a global technology company providing software and BPO services for the financial service industry.
He completed his PhD at Brunel University in 2012. His research interests include empirical software engineering, design patterns, refactoring and testing.
Refactoring is a process for improving the internal characteristics and design of software while preserving its external behavior. Refactoring has been suggested as a positive influence on the long-term quality and maintainability of software and, as a result, we might expect benefits of a lower future change or fault propensity by refactoring software. Conversely, many studies show a correlation between change and future faults; so the application of a refactoring may in itself increase future fault propensity, negating any benefit of the refactoring. In this paper, we determine whether the refactoring process reaps future maintenance benefits and, as a consequence, results in software with a lower propensity for both faults and change. We studied a large, commercial software system over a twelve-month period and identified a set of refactored classes during the middle four months of the study; a bespoke tool was used to detect occurrences of fifteen types of refactoring. We then examined the fault and change proneness of the same set of refactored classes in the four months prior to, during, and after the period of refactoring to determine if change or fault activity was reduced either during or after the period of refactoring studied. We also compared these trends with remaining classes in the system that had not been refactored over the same periods. Results revealed that refactored classes experienced a lower change-proneness in the period after refactoring and were significantly less fault-prone during and after the period of refactoring, even when accounting for the effects of change. The study therefore presents concrete evidence of the benefits of refactoring in these two senses.
Bio:
Matt Gatrell is the Director of Development and Chief Architect at BancTec, a global technology company providing software and BPO services for the financial service industry.
He completed his PhD at Brunel University in 2012. His research interests include empirical software engineering, design patterns, refactoring and testing.





