• DocumentCode
    86556
  • Title

    An Empirical Study of RefactoringChallenges and Benefits at Microsoft

  • Author

    Miryung Kim ; Zimmermann, Thomas ; Nagappan, Nachiappan

  • Author_Institution
    Dept. of Electr. & Comput. Eng., Univ. of Texas at Austin, Austin, TX, USA
  • Volume
    40
  • Issue
    7
  • fYear
    2014
  • fDate
    July 1 2014
  • Firstpage
    633
  • Lastpage
    649
  • Abstract
    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 the top 5 percent of preferentially refactored modules experience higher reduction in the number of inter-module dependencies and several complexity measures but increase size more than the bottom 95 percent. This indicates that measuring the impact of refactoring requires multi-dimensional assessment.
  • Keywords
    data analysis; software maintenance; software metrics; software quality; Microsoft; complexity measures; intermodule dependencies; quantitative Windows 7 version history data analysis; refactoring benefits; refactoring challenges; semi-structured interviews; software evolution; software quality improvement; survey; Complexity theory; Computer bugs; History; Interviews; Size measurement; Software; Software metrics; Refactoring; churn; component dependencies; defects; empirical study; software evolution;
  • fLanguage
    English
  • Journal_Title
    Software Engineering, IEEE Transactions on
  • Publisher
    ieee
  • ISSN
    0098-5589
  • Type

    jour

  • DOI
    10.1109/TSE.2014.2318734
  • Filename
    6802406