Does Refactoring Improve Reusability?

  • Raimund Moser
  • Alberto Sillitti
  • Pekka Abrahamsson
  • Giancarlo Succi
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4039)


The improvement of the software development process through the development and utilization of high quality and reusable software components has been advocated for a long time. Agile Methods promote some interesting practices, in particular the practice of refactoring, which are supposed to improve understandability and maintainability of source code. In this research we analyze if refactoring promotes ad-hoc reuse of object-oriented classes by improving internal quality metrics. We conduct a case study in a close-to industrial, agile environment in order to analyze the impact of refactoring on internal quality metrics of source code. Our findings sustain the hypothesis that refactoring enhances quality and reusability of – otherwise hard to reuse – classes in an agile development environment. Given such promising results, additional experimentation is required to validate and generalize the results of this work.


Software Reuse Code Quality User Story Agile Method Candidate Class 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Abrahamsson, P., Hanhineva, A., Hulkko, H., Ihme, T., Jäälinoja, J., Korkala, M., Koskela, J., Kyllönen, P., Salo, O.: Mobile-D: An Agile Approach for Mobile Application Development. In: Proceedings of the 19th Annual ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2004, Vancouver, British Columbia, Canada (2004)Google Scholar
  2. 2.
    Basili, V., Briand, L., Melo, W.L.: A Validation of Object-Oriented Design Metrics as Quality Indicators. IEEE Transactions on Software Engineering 22(10), 267–271 (1996)CrossRefGoogle Scholar
  3. 3.
    Beck, K.: Extreme Programming Explained: Embrace Change. Addison-Wesley, Reading (2000)Google Scholar
  4. 4.
    Benlarbi, S., El Emam, K., Goel, N., Rai, S.: Thresholds for Object-Oriented Measures. In: Proceedings of 11th International Symposium on Software Reliability Engineering (ISSRE 2000), p. 24 (2000)Google Scholar
  5. 5.
    Bois, B.D., Demeyer, S., Verelst, J.: Refactoring – Improving Coupling and Cohesion of Existing Code. In: Belgian Symposium on Software Restructuring, Gent, Belgium (2005)Google Scholar
  6. 6.
    Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P., Stal, M.: Pattern oriented software architecture. A System of Patterns, vol. 1. John Wiley & Sons, Chichester (1996)Google Scholar
  7. 7.
    Caballero, R., Demurjian, S.A.: Towards the Formalization of a Reusability Frame-work for Refactoring. In: Gacek, C. (ed.) ICSR 2002. LNCS, vol. 2319, p. 293. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  8. 8.
    Chidamber, S., Kemerer, C.F.: A metrics suite for object-oriented design. IEEE Transactions on Software Engineering 20(6), 476–493 (1994)CrossRefGoogle Scholar
  9. 9.
    Counsell, S., Mendes, E., Swift, S.: Comprehension of object-oriented software cohesion: the empirical quagmire. In: Proceedings of the 10th International Workshop on in Program Comprehension, Paris, France, pp. 33–42 (2002)Google Scholar
  10. 10.
    Curry, W.E., Succi, G., Smith, M.R., Liu, E., Wong, R.W.: Empirical Analysis of the Correlation between Amount of Reuse Metrics in the C Programming Language. In: Proceedings of the 1999 Symposium on Software Reusability (SSR 1999), Los Angeles, CA, USA (1999)Google Scholar
  11. 11.
    Dandashi, F., Rine, D.C.: A Method for Assessing the Reusability of Object-Oriented Code Using a Validated Set of Automated Measurements. In: Proceedings of 17th ACM Symposium on Applied Computing (SAC 2002), Madrid (2002)Google Scholar
  12. 12.
    Demeyer, S., Ducasse, S., Nierstrasz, O.: Finding Refactorings via Change Metrics. In: Proceedings of the 15th Annual ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2000, Minneapolis, USA (2000)Google Scholar
  13. 13.
    Devanbu, P., Karstu, S., Melo, W., Thomas, W.: Analytical and Empirical Evaluation of Software Reuse Metrics. In: Proceedings of the 18th International Conference on Software Engineering, Berlin, Germany (1996)Google Scholar
  14. 14.
    van Emden, E., Moonen, L.: Java Quality Assurance by Detecting Code Smells. In: Proceedings of the 9th Working Conference on Reverse Engineering. IEEE Computer Society Press, Los Alamitos (2002)Google Scholar
  15. 15.
    Fenton, N., Pfleeger, S.L.: Software Metrics A Rigorous & Practical Approach, p. 408. PWS Publishing Company, Boston (1997)Google Scholar
  16. 16.
    Fowler, M.: Refactoring Improving the Design of Existing Code. Addison-Wesley, Reading (2000)Google Scholar
  17. 17.
    Frakes, W., Terry, C.: Reuse Level Metrics. In: Proceedings of the 3rd International Conference on Software Reuse, Rio de Janeiro, Brazil (1994)Google Scholar
  18. 18.
    Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading (1995)Google Scholar
  19. 19.
    Johnson, P.M., Disney, A.M.: Investigating Data Quality Problems in the PSP. In: Proceedings of the Sixth International Symposium on the Foundations of Software Engineering (SIGSOFT 1998) (1998)Google Scholar
  20. 20.
    Hollander, M., Wolfe, D.A.: Nonparametric statistical inference, pp. 27–33. John Wiley & Sons, New York (1973)Google Scholar
  21. 21.
    Layman, L., Williams, L., Cunningham, L.: Exploring Extreme Programming in Context: An Industrial Case Study. In: Agile Development Conference, pp. 32–41 (2004)Google Scholar
  22. 22.
    Li, W., Henry, S.: Maintenance Metrics for the Object Oriented Paradigm. In: Proceedings of the First International Software Metrics Symposium, Baltimore, MD, pp. 52–60 (1993)Google Scholar
  23. 23.
    McCabe, T.: Complexity Measure. IEEE Transactions on Software Engineering 2(4), 308–320 (1976)CrossRefMathSciNetGoogle Scholar
  24. 24.
    Poulin, J.S.: Measuring Software Reusability. In: Proceedings of the Third Conference on Software Reuse, Rio de Janeiro, Brazil (1994)Google Scholar
  25. 25.
    Ratzinger, J., Fischer, M., Gall, H.: Improving Evolvability through Refactoring. In: Proceedings of the 2nd International Workshop on Mining Software Repositories (MSR 2005), Saint Louis, Missouri, USA (2005)Google Scholar
  26. 26.
    Sillitti, A., Janes, A., Succi, G., Vernazza, T.: Collecting, Integrating and Analyzing Software Metrics and Personal Software Process Data. In: Proceedings of the EUROMICRO 2003 (2003)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • Raimund Moser
    • 1
  • Alberto Sillitti
    • 1
  • Pekka Abrahamsson
    • 2
  • Giancarlo Succi
    • 1
  1. 1.Center for Applied Software EngineeringFree University of Bolzano-BozenItaly
  2. 2.VTT ElectronicsOuluFinland

Personalised recommendations