Advertisement

A Case Study of Refactoring Large-Scale Industrial Systems to Efficiently Improve Source Code Quality

  • Gábor Szőke
  • Csaba Nagy
  • Rudolf Ferenc
  • Tibor Gyimóthy
Part of the Lecture Notes in Computer Science book series (LNCS, volume 8583)

Abstract

Refactoring source code has many benefits (e.g. improving maintainability, robustness and source code quality), but it takes time away from other implementation tasks, resulting in developers neglecting refactoring steps during the development process. But what happens when they know that the quality of their source code needs to be improved and they can get the extra time and money to refactor the code? What will they do? What will they consider the most important for improving source code quality? What sort of issues will they address first or last and how will they solve them? In our paper, we look for answers to these questions in a case study of refactoring large-scale industrial systems where developers participated in a project to improve the quality of their software systems. We collected empirical data of over a thousand refactoring patches for 5 systems with over 5 million lines of code in total, and we found that developers really optimized the refactoring process to significantly improve the quality of these systems.

Keywords

software engineering refactoring software quality 

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Alshayeb, M.: Empirical investigation of refactoring effect on software quality. Inf. Softw. Technol. 51(9), 1319–1326 (2009)CrossRefGoogle Scholar
  2. 2.
    Arcelli Fontana, F., Braione, P., Zanoni, M.: Automatic detection of bad smells in code: An experimental assessment. Journal of Object Technology 11(2), 1–38 (2012)CrossRefGoogle Scholar
  3. 3.
    Beck, K.: Extreme Programming Explained: Embrace Change, 1st edn. Addison-Wesley Professional (1999)Google Scholar
  4. 4.
    Choi, E., Yoshida, N., Ishio, T., Inoue, K., Sano, T.: Extracting code clones for refactoring using combinations of clone metrics. In: Proceedings of the 5th International Workshop on Software Clones, IWSC 2011, pp. 7–13. ACM (2011)Google Scholar
  5. 5.
    Demeyer, S., Ducasse, S., Nierstrasz, O.: Object-Oriented Reengineering Patterns. Morgan Kaufmann (2002)Google Scholar
  6. 6.
    Du Bois, B.: A Study of Quality Improvements by Refactoring. Ph.D. thesis (2006)Google Scholar
  7. 7.
    Du Bois, B., Gorp, P.V., Amsel, A., Eetvelde, N.V., Stenten, H., Demeyer, S.: A discussion of refactoring in research and practice. Tech. rep. (2004)Google Scholar
  8. 8.
    Ferenc, R., Beszédes, Á., Tarkiainen, M., Gyimóthy, T.: Columbus – Reverse Engineering Tool and Schema for C++. In: Proceedings of the 18th International Conference on Software Maintenance (ICSM 2002), pp. 172–181. IEEE Computer Society (October 2002)Google Scholar
  9. 9.
    Fontana, F.A., Spinelli, S.: Impact of refactoring on quality code evaluation. In: Proceedings of the 4th Workshop on Refactoring Tools, WRT 2011, pp. 37–40. ACM (2011)Google Scholar
  10. 10.
    Fowler, M.: Refactoring: Improving the Design of Existing Code. Addison-Wesley Longman Publishing Co., Inc. (1999)Google Scholar
  11. 11.
    Maiga, A.: Impacts and Detection of Design Smells. Ph.D. thesis (2012)Google Scholar
  12. 12.
    Mens, T., Tourwé, T.: A survey of software refactoring. IEEE Trans. Softw. Eng. 30(2), 126–139 (2004)CrossRefGoogle Scholar
  13. 13.
    Moser, R., Abrahamsson, P., Pedrycz, W., Sillitti, A., Succi, G.: A Case Study on the Impact of Refactoring on Quality and Productivity in an Agile Team. In: Meyer, B., Nawrocki, J.R., Walter, B. (eds.) CEE-SET 2007. LNCS, vol. 5082, pp. 252–266. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  14. 14.
    Murphy-Hill, E., Black, A.P., Dig, D., Parnin, C.: Gathering refactoring data: A comparison of four methods. In: Proceedings of the 2nd Workshop on Refactoring Tools, WRT 2008, pp. 7:1–7:5. ACM (2008)Google Scholar
  15. 15.
    Opdyke, W.F.: Refactoring Object-oriented Frameworks. Ph.D. thesis (1992)Google Scholar
  16. 16.
    Pinto, G.H., Kamei, F.: What programmers say about refactoring tools?: An empirical investigation of Stack Overflow. In: Proceedings of the 2013 ACM Workshop on Workshop on Refactoring Tools, WRT 2013, pp. 33–36. ACM (2013)Google Scholar
  17. 17.
    Ratzinger, J., Fischer, M., Gall, H.: Improving evolvability through refactoring. SIGSOFT Softw. Eng. Notes 30(4), 1–5 (2005)CrossRefGoogle Scholar
  18. 18.
    Stroggylos, K., Spinellis, D.: Refactoring–does it improve software quality? In: Proceedings of the 5th International Workshop on Software Quality, WoSQ 2007, p. 10. IEEE Computer Society (2007)Google Scholar
  19. 19.
    Tairas, R.: Clone detection and refactoring. In: Companion to the 21st ACM SIGPLAN Symposium on Object-oriented Programming Systems, Languages, and Applications, OOPSLA 2006, pp. 780–781. ACM (2006)Google Scholar
  20. 20.
    Zibran, M.F., Roy, C.K.: Towards flexible code clone detection, management, and refactoring in IDE. In: Proceedings of the 5th International Workshop on Software Clones, IWSC 2011, pp. 75–76. ACM (2011)Google Scholar

Copyright information

© Springer International Publishing Switzerland 2014

Authors and Affiliations

  • Gábor Szőke
    • 1
  • Csaba Nagy
    • 1
  • Rudolf Ferenc
    • 1
  • Tibor Gyimóthy
    • 1
  1. 1.Department of Software EngineeringUniversity of SzegedHungary

Personalised recommendations