Program restructuring as an aid to software maintenance
Program restructuring as an aid to software maintenance
The WyCash portfolio management system
OOPSLA '92 Addendum to the proceedings on Object-oriented programming systems, languages, and applications (Addendum)
A refactoring tool for Smalltalk
Theory and Practice of Object Systems - Special issue object-oriented software evolution and re-engineering
Extreme programming explained: embrace change
Extreme programming explained: embrace change
Building Knowledge through Families of Experiments
IEEE Transactions on Software Engineering
Design Rules: The Power of Modularity Volume 1
Design Rules: The Power of Modularity Volume 1
A Quantitative Evaluation of Maintainability Enhancement by Refactoring
ICSM '02 Proceedings of the International Conference on Software Maintenance (ICSM'02)
A Survey of Software Refactoring
IEEE Transactions on Software Engineering
Use of relative code churn measures to predict system defect density
Proceedings of the 27th international conference on Software engineering
Error detection by refactoring reconstruction
MSR '05 Proceedings of the 2005 international workshop on Mining software repositories
The Role of Refactorings in API Evolution
ICSM '05 Proceedings of the 21st IEEE International Conference on Software Maintenance
UMLDiff: an algorithm for object-oriented design differencing
Proceedings of the 20th IEEE/ACM international Conference on Automated software engineering
Refactoring a legacy component for reuse in a software product line: a case study: Practice Articles
Journal of Software Maintenance and Evolution: Research and Practice - IEEE International Conference on Software Maintenance (ICSM2005)
Are refactorings less error-prone than other changes?
Proceedings of the 2006 international workshop on Mining software repositories
How Are Java Software Developers Using the Eclipse IDE?
IEEE Software
Identifying Refactorings from Source-Code Changes
ASE '06 Proceedings of the 21st IEEE/ACM International Conference on Automated Software Engineering
Automated testing of refactoring engines
Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
Predicting defects using network analysis on dependency graphs
Proceedings of the 30th international conference on Software engineering
On the relation of refactorings and software defect prediction
Proceedings of the 2008 international working conference on Mining software repositories
Is it a bug or an enhancement?: a text-based approach to classify change requests
CASCON '08 Proceedings of the 2008 conference of the center for advanced studies on collaborative research: meeting of minds
How we refactor, and how we know it
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
A model of large program development
IBM Systems Journal
Putting It All Together: Using Socio-technical Networks to Predict Failures
ISSRE '09 Proceedings of the 2009 20th International Symposium on Software Reliability Engineering
A cost-benefit framework for making architectural decisions in a business context
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 2
Template-based reconstruction of complex refactorings
ICSM '10 Proceedings of the 2010 IEEE International Conference on Software Maintenance
An empirical investigation into the role of API-level refactorings during software evolution
Proceedings of the 33rd International Conference on Software Engineering
Automated detection of refactorings in evolving components
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
Does refactoring improve reusability?
ICSR'06 Proceedings of the 9th international conference on Reuse of Off-the-Shelf Components
Use, disuse, and misuse of automated refactorings
Proceedings of the 34th International Conference on Software Engineering
Comparing approaches to analyze refactoring activity on software repositories
Journal of Systems and Software
RefactorPad: editing source code on touchscreens
Proceedings of the 5th ACM SIGCHI symposium on Engineering interactive computing systems
A comparative study of manual and automated refactorings
ECOOP'13 Proceedings of the 27th European conference on Object-Oriented Programming
A multidimensional empirical study on refactoring activity
CASCON '13 Proceedings of the 2013 Conference of the Center for Advanced Studies on Collaborative Research
Hi-index | 0.00 |
It is widely believed that refactoring improves software quality and developer productivity. However, few empirical studies quantitatively assess refactoring benefits or investigate developers' perception towards these benefits. This paper presents 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. Our survey finds that the refactoring definition in practice is not confined to a rigorous definition of semantics-preserving code transformations and that developers perceive that refactoring involves substantial cost and risks. We also report on interviews with a designated refactoring team that has led a multi-year, centralized effort on refactoring Windows. The quantitative analysis of Windows 7 version history finds that the binary modules refactored by this team experienced significant reduction in the number of inter-module dependencies and post-release defects, indicating a visible benefit of refactoring.