Empirical Support for Two Refactoring Studies Using Commercial C# Software

Empirical Support for Two Refactoring Studies Using Commercial C# Software
复制标题

使用商业 C 语言进行两项重构研究的实证支持

DOI:
--
复制
发表时间:
2009
期刊:
International Conference on Evaluation & Assessment in Software Engineering
影响因子:
--
通讯作者:
T. Hall
T. Hall
中科院分区:
--
文献类型:
--
作者:
Matt Gatrell;S. Counsell;T. Hall

文献摘要

被引文献

相似文献

目标。本文对重构在商业C#软件中的应用进行了研究,在两个月的时间里包含了270个版本。该软件是在一家大型跨国公司的持续集成环境中开发的,在该环境中,致力于源代码控制的每一次软件更改都被视为新版本。这项研究的目的是将之前两个重构研究的结果与C#软件的结果进行比较。 方法。开发了一个工具来将每个版本与以前的版本进行比较,并检测在生产类和测试类中出现的15种重构。总共确定了1000多个不同的重构。然后,我们扩展了重构的概要,以(分别)比较测试代码中标识的重构类型和生产代码中标识的重构类型。最后,我们探索了15个重构的子集之间的相互关系,作为对结果的部分解释。 结论。虽然“较简单”的重构很常见,但较“复杂”的结构重构相对较少。这支持了Advani等人早些时候的一项实证研究的关键结果。使用Java开源的地方。在应用于每种代码类型的重构类型中发现了明显的差异。Zaidman等人最近的一项观察得到了支持。在致力于生产和测试类的并行工作方面。因此,这项研究说明了之前两项研究中发现的重构趋势之间的强烈共同点。对我们所有结果的分析和洞察都是通过与公司架构师的后续讨论和咨询而获得的。
Objective. This paper documents a study of the application of refactorings in commercial C# software comprising 270 versions over a two-month period. The software was developed in a continuous integration environment in a large, multi-national company where each software change committed to the source control was regarded as a new version. The aim of the research was to compare and contrast the results from two previous refactoring studies with those of the C# software. Method. A tool was developed to compare each version with the previous and detect occurrences of fifteen types of refactorings in both production and test classes. In total, over one thousand separate refactorings were identified. We then extended the profile of refactorings to compare (separately) the types of refactorings identified in test code and those in production code. Finally, we explored the interrelationships between a subset of the fifteen refactorings as a part explanation for the results. Conclusions. While 'simpler' refactorings were common, the more 'complex' structural refactorings were relatively rare. This supported the key result of an earlier empirical study by Advani et al. where Java open-source was used. Distinct differences were found in the types of refactoring applied to each code type. Support was found for a recent observation of Zaidman et al. in terms of parallel effort devoted to production and test classes. The study thus illustrates a strong commonality between refactoring trends found in both previous studies. Analysis of, and insight into all of our results were informed by follow-up discussions and consultation with the company's Architect.