skip to main content
10.1145/2463372.2463554acmconferencesArticle/Chapter ViewAbstractPublication PagesgeccoConference Proceedingsconference-collections
research-article

The use of development history in software refactoring using a multi-objective evolutionary algorithm

Published:06 July 2013Publication History

ABSTRACT

One of the widely used techniques for evolving software systems is refactoring, a maintenance activity that improves design structure while preserving the external behavior. Exploring past maintenance and development history can be an effective way of finding refactoring opportunities. Code elements which undergo changes in the past, at approximately the same time, bear a good probability for being semantically related. Moreover, these elements that experienced a huge number of refactoring in the past have a good chance for refactoring in the future. In addition, the development history can be used to propose new refactoring solutions in similar contexts. In this paper, we propose a multi-objective optimization-based approach to find the best sequence of refactorings that minimizes the number of bad-smells, and maximizes the use of development history and semantic coherence. To this end, we use the non-dominated sorting genetic algorithm (NSGA-II) to find the best trade-off between these three objectives. We report the results of our experiments using different large open source projects.

References

  1. M. Kessentini, W. Kessentini, H. Sahraoui, M. Boukadoum, and A. Ouni. Design Defects Detection and Correction by Example. In Proc. of the 19th IEEE Int. Conf. on Program Comprehension (ICPC), pp. 81--90, Kingston, Canada, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. A. Ouni, M. Kessentini, H. Sahraoui and M. Boukadoum. Maintainability Defects Detection and Correction: A Multi-Objective Approach. Journal of Autmated Software Engineering, Springer, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. M. Harman, and L. Tratt. Pareto optimal search based refactoring at the design level. In Proceedings of the Genetic and Evolutionary Computation Conference (GECCO'07), 1106--1113, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. O. Seng, J. Stammel, and D. Burkhart, Search-based determination of refactorings for improving the class structure of object-oriented systems, In Proceedings of the Genetic and Evolutionary Computation Conference (GECCO'06), 1909--1916, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. A. Ouni, M. Kessentini, H. Sahraoui and M. S. Hamdi. Search-based Refactoring: Towards Semantics Preservation. In Proceedings of the 28th IEEE International Conference on Software Maintenance (ICSM), Italy, september 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. M. Fowler, K. Beck, J. Brant, W. Opdyke, and D. Roberts. Refactoring -- Improving the Design of Existing Code, 1st ed. Addison-Wesley, June 1999.Google ScholarGoogle Scholar
  7. N. Fenton and S. L. Pfleeger. Software Metrics: A Rigorous and Practical Approach, 2nd ed. London, UK: International Thomson Computer Press, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. K. Deb, A. Pratap, S. Agarwal, and T. Meyarivan. A fast and elitist multiobjective genetic algorithm: NSGA-II, IEEE Trans. Evol. Comput., vol. 6, pp. 182--197, Apr. 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. http://www.refactoring.com/catalog/Google ScholarGoogle Scholar
  10. M. O'Keeffe, and M. O. Cinnéide. Search-based Refactoring for Software Maintenance. Journal of Systems and Software, 81(4), 502--516, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. W. F. Opdyke, Refactoring: A Program Restructuring Aid in Designing Object-Oriented Application Frameworks, Ph.D. thesis, University of Illinois at Urbana-Champaign, 1992.Google ScholarGoogle Scholar
  12. F. Qayum, and R. Heckel. Local search-based refactoring as graph transformation. Proceedings of 1st Int. Symposium on Search Based Software Engineering, 2009; 43--46. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. R. Heckel, Algebraic graph transformations with application conditions, M.S. thesis, TU Berlin, 1995.Google ScholarGoogle Scholar
  14. M. Ó Cinnéide, L. Tratt, M. Harman, S. Counsell, and I. H. Moghadam, Experimental Assessment of Software Metrics Using Automated Refactoring, Proc. Empirical Software Engineering and Management (ESEM), pages 49--58, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. A. Ouni, M. Kessentini and H. Sahraoui, Search-based Refactoring Using Recorded Code Changes, in Proc of the 17th European Conference on Software Maintenance and Reengineering (CSMR), Genova, Italy, march 5--8, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. T. Zimmermann, P. Weißgerber, S. Diehl, and A. Zeller. Mining version histories to guide software changes. In Proc. 26th International Conference on Software Engineering (ICSE), Edinburgh, Scotland, May 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. T. Gîrba, S. Ducasse, A. Kuhn, R. Marinescu, and R. Daniel. Using Concept Analysis to Detect Co-Change Patterns. In Proceedings of International Workshop on Principles of Software Evolution (IWPSE), 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. D. Beyer, and A. Noack. Clustering Software Artifacts Based on Frequent Common Changes. Proceedings of the 13th International Workshop on Program Comprehension, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. A. Hassan and R. Holt. Predicting change propagation in software systems. In Proceedings 20th Int. Conference on Software Maintenance (ICSM'04), pp. 284--293, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. H. Gall, K. Hajek, and M. Jazayeri. Detection of logical coupling based on product release history. Int. Proc. of Conf. on Soft. Maintenance (ICSM), pages 190--198, Los Alamitos CA, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. T.T. Ying, G. C. Murphy, R. Ng, and M. C. Chu-Carroll. Predicting source code changes by mining change history. IEEE Transactions on Soft. Eng. (TSE), Vol 30, No. 9, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. T. Mens, T. Tourwé: A Survey of Software Refactoring. IEEE Trans. Software Eng. 30(2), pp. 126--139, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. P. Cederqvist. Version Management with CVS, Dec. 2003. www.cvshome.org/docs/manual/Google ScholarGoogle Scholar
  24. http://www.jfree.org/jfreechart/Google ScholarGoogle Scholar
  25. http://xerces.apache.org/Google ScholarGoogle Scholar
  26. John R. Koza. 1992. Genetic Programming: On the Programming of Computers by Means of Natural Selection. MIT Press, Cambridge, MA, USA. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. K. Prete, N. Rachatasumrit, N. Sudan, M. Kim. Template-based reconstruction of complex refactorings. in Proc. of the Int. Conf. on Software Maintenance (ICSM), 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. http://www.eclipse.org/Google ScholarGoogle Scholar

Index Terms

  1. The use of development history in software refactoring using a multi-objective evolutionary algorithm

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in
      • Published in

        cover image ACM Conferences
        GECCO '13: Proceedings of the 15th annual conference on Genetic and evolutionary computation
        July 2013
        1672 pages
        ISBN:9781450319638
        DOI:10.1145/2463372
        • Editor:
        • Christian Blum,
        • General Chair:
        • Enrique Alba

        Copyright © 2013 ACM

        Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 6 July 2013

        Permissions

        Request permissions about this article.

        Request Permissions

        Check for updates

        Qualifiers

        • research-article

        Acceptance Rates

        GECCO '13 Paper Acceptance Rate204of570submissions,36%Overall Acceptance Rate1,669of4,410submissions,38%

        Upcoming Conference

        GECCO '24
        Genetic and Evolutionary Computation Conference
        July 14 - 18, 2024
        Melbourne , VIC , Australia

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader