Refactoring object-oriented frameworks
Refactoring object-oriented frameworks
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
Finding refactorings via change metrics
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Test Driven Development: By Example
Test Driven Development: By Example
Evolving Object-Oriented Designs with Refactorings
Automated Software Engineering
Trends in Java code changes: the key to identification of refactorings?
PPPJ '03 Proceedings of the 2nd international conference on Principles and practice of programming in Java
A Survey of Software Refactoring
IEEE Transactions on Software Engineering
Open Source Software Development: A Case Study of FreeBSD
METRICS '04 Proceedings of the Software Metrics, 10th International Symposium
XUnit Test Patterns: Refactoring Test Code
XUnit Test Patterns: Refactoring Test Code
Proceedings of the 2006 ACM symposium on Applied computing
Common refactorings, a dependency graph and some code smells: an empirical study of Java OSS
Proceedings of the 2006 ACM/IEEE international symposium on Empirical software engineering
On The Detection of Test Smells: A Metrics-Based Approach for General Fixture and Eager Test
IEEE Transactions on Software Engineering
Mining Software Repositories to Study Co-Evolution of Production & Test Code
ICST '08 Proceedings of the 2008 International Conference on Software Testing, Verification, and Validation
Refactoring and metrics for TTCN-3 test suites
SAM'06 Proceedings of the 5th international conference on System Analysis and Modeling: language Profiles
Modeling continuous integration practice differences in industry software development
Journal of Systems and Software
Hi-index | 0.00 |
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.