PROFES 2008: Product-Focused Software Process Improvement pp 360-370 | Cite as
A Model to Identify Refactoring Effort during Maintenance by Mining Source Code Repositories
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 MethodologiesPreview
Unable to display preview. Download preview PDF.
References
- 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.Beck, K.: Extreme Programming Explained: Embrace Change. Addison-Wesley, Reading (2000)Google Scholar
- 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.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.Chidamber, S., Kemerer, C.F.: Metrics suite for object-oriented design. IEEE Transactions on Software Engineering 20(6), 476–493 (1994)CrossRefGoogle Scholar
- 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.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.Fowler, M.: Refactoring Improving the Design of Existing Code. Addison-Wesley, Reading (2000)Google Scholar
- 9.Hollander, M., Wolfe, D.A.: Nonparametric statistical inference, pp. 68–75. John Wiley & Sons, New York (1999)Google Scholar
- 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.McCabe, T.: Complexity Measure. IEEE Transactions on Software Engineering 2(4), 308–320 (1976)CrossRefMathSciNetGoogle Scholar
- 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.Mens, T., Tourwé, T.: A Survey of Software Refactoring. IEEE Transactions on Software Engineering 30(2), 126–139 (2004)CrossRefGoogle Scholar
- 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.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.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.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.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.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.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