A Model to Identify Refactoring Effort during Maintenance by Mining Source Code Repositories

  • Raimund Moser
  • Witold Pedrycz
  • Alberto Sillitti
  • Giancarlo Succi
Part of the Lecture Notes in Computer Science book series (LNCS, volume 5089)

Abstract

The use of refactoring as a way to continuously improve the design and quality of software and prevent its aging is mostly limited to Agile Methodologies and to a lower amount to software reengineering. In these communities refactoring is supposed to improve in the long-term the structure of existing code in order to make it easier to modify and maintain. To sustain such claims and analyze the impact of refactoring on maintenance we need to know how much refactoring developers do. In few cases such information is directly available for example from CVS log messages. In this study we propose a model on how to mine software repositories in order to obtain information of refactoring effort throughout the evolution of a software system. Moreover, we have developed a prototype that implements our model and validate our approach with two small case studies.

Keywords

refactoring software metrics software evolution Agile Methodologies 

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  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 19th Annual ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2004, Vancouver, British Columbia, Canada (2004)Google Scholar
  2. 2.
    Beck, K.: Extreme Programming Explained: Embrace Change. Addison-Wesley, Reading (2000)Google Scholar
  3. 3.
    Bois, B.D., Mens, T.: Describing the impact of refactoring on internal program quality. In: Proceedings of the International Workshop on Evolution of Large-scale Industrial Software Applications (ELISA), Amsterdam, The Netherlands (2003)Google Scholar
  4. 4.
    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
  5. 5.
    Chidamber, S., Kemerer, C.F.: Metrics suite for object-oriented design. IEEE Transactions on Software Engineering 20(6), 476–493 (1994)CrossRefGoogle Scholar
  6. 6.
    Demeyer, S., Ducasse, S., Nierstrasz, O.: Finding Refactorings via Change Metrics. In: Proceedings 15th Annual ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2000, Minneapolis, USA (2000)Google Scholar
  7. 7.
    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
  8. 8.
    Fowler, M.: Refactoring Improving the Design of Existing Code. Addison-Wesley, Reading (2000)Google Scholar
  9. 9.
    Hollander, M., Wolfe, D.A.: Nonparametric statistical inference, pp. 68–75. John Wiley & Sons, New York (1999)Google Scholar
  10. 10.
    Johnson, P.M., Disney, A.M.: Investigating Data Quality Problems in the PSP. In: Proceedings of 6th International Symposium on the Foundations of Software Engineering (SIGSOFT 1998) (1998)Google Scholar
  11. 11.
    McCabe, T.: Complexity Measure. IEEE Transactions on Software Engineering 2(4), 308–320 (1976)CrossRefMathSciNetGoogle Scholar
  12. 12.
    Mens, T., Demeyer, S., Bois, B.D., Stenten, H., van Gorp, P.: Refactoring: Current Research and Future Trends. Electronic Notes in Theoretical Computer Science, vol. 82(3) (2003)Google Scholar
  13. 13.
    Mens, T., Tourwé, T.: A Survey of Software Refactoring. IEEE Transactions on Software Engineering 30(2), 126–139 (2004)CrossRefGoogle Scholar
  14. 14.
    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: Proc. of the 2nd IFIP Central and East European Conference on Software Engineering Techniques CEE-SET 2007, Poznan, Poland (2007)Google Scholar
  15. 15.
    Pizka, M.: Straightening spaghetti-code with refactoring? In: Proceedings of the Int. Conf. on Software Engineering Research and Practice - SERP, Las Vegas, NV, pp. 846–852 (2004)Google Scholar
  16. 16.
    Ratzinger, J., Fischer, M., Gall, H.: Improving Evolvability through Refactoring. In: Proceedings 2nd International Workshop on Mining Software Repositories, MSR 2005, Saint Louis, Missouri, USA (2005)Google Scholar
  17. 17.
    Ratzinger, J., Fischer, M., Gall, H.: EvoLens: Lens-View Visualizations of Evolution Data. In: Proceedings of 8th International Workshop on Principles of Software Evolution (IWPSE 2005), Lisbon, Portugal, 5-7 September (2005)Google Scholar
  18. 18.
    Sillitti, A., Janes, A., Succi, G., Vernazza, T.: Collecting, Integrating and Analyzing Software Metrics and Personal Software Process Data. In: Proceedings of the EUROMICRO, Belek-Antalya, Turkey, September 3-5 (2003)Google Scholar
  19. 19.
    Simon, F., Steinbruckner, F., Lewerentz, C.: Metrics based refactoring. In: Proc. European Conf. Software Maintenance and Reengineering, pp. 30–38. IEEE Computer Society Press, Los Alamitos (2001)CrossRefGoogle Scholar
  20. 20.
    Stroulia, E., Kapoor, R.V.: Metrics of Refactoring-based Development: An Experience Report. In: The 7th International Conference on Object-Oriented Information Systems, Calgary, AB, Canada, pp. 113–122. Springer, Heidelberg (2001)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2008

Authors and Affiliations

  • Raimund Moser
    • 1
  • Witold Pedrycz
    • 2
  • Alberto Sillitti
    • 1
  • Giancarlo Succi
    • 1
  1. 1.Center for Applied Software EngineeringFree University of Bolzano-BozenItaly
  2. 2.Department of Electrical and Computer EngineeringUniversity of AlbertaCanada

Personalised recommendations