skip to main content
research-article

Recommending Adaptive Changes for Framework Evolution

Published:01 September 2011Publication History
Skip Abstract Section

Abstract

In the course of a framework’s evolution, changes ranging from a simple refactoring to a complete rearchitecture can break client programs. Finding suitable replacements for framework elements that were accessed by a client program and deleted as part of the framework’s evolution can be a challenging task. We present a recommendation system, SemDiff, that suggests adaptations to client programs by analyzing how a framework was adapted to its own changes. In a study of the evolution of one open source framework and three client programs, our approach recommended relevant adaptive changes with a high level of precision. In a second study of the evolution of two frameworks, we found that related change detection approaches were better at discovering systematic changes and that SemDiff was complementary to these approaches by detecting non-trivial changes such as when a functionality is imported from an external library.

References

  1. Boulanger, J.-S. and Robillard, M. P. 2006. Managing concern interfaces. In Proceedings of the 22nd IEEE International Conference on Software Maintenance. 14--23. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Bruch, M., Schäfer, T., and Mezini, M. 2006. FrUiT: IDE support for framework understanding. In Proceedings of the OOPSLA Workshop on Eclipse Technology eXchange. 55--59. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Chow, K. and Notkin, D. 1996. Semi-automatic update of applications in response to library changes. In Proceedings of the International Conference on Software Maintenance. 359--369. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Dagenais, B. and Hendren, L. 2008. Enabling static analysis for partial java programs. In Proceedings of the Conference on Object Oriented Programming Systems and Applications. 313--328. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Dagenais, B. and Robillard, M. P. 2008. Recommending adaptive changes for framework evolution. In Proceedings of the 30th International Conference on Software Engineering. 481--490. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Dagenais, B. and Robillard, M. P. 2009. SemDiff: Analysis and recommendation support for api evolution. In Proceedings of the 31st International Conference on Software Engineering (Formal Demonstration). 599--602. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Daniel, B., Dig, D., Garcia, K., and Marinov, D. 2007. Automated testing of refactoring engines. In Proceedings of the 6th Joint Meeting of the European Software Engineering Conference and the Symposium on the Foundations of Software Engineering. 185--194. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. des Rivières, J. 2007. Evolving Java-based APIs. . (accessed 7/09).Google ScholarGoogle Scholar
  9. Dig, D. and Johnson, R. 2006. How do APIs evolve? A story of refactoring. J. Softw. Maint. Evol.: Resear. Prac. 18, 2, 83--107. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Dig, D., Comertoglu, C., Marinov, D., and Johnson, R. 2006. Automated detection of refactorings in evolving components. In Proceedings of the European Conference on Object-Oriented Programming. 404--428. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Dig, D., Manzoor, K., Johnson, R., and Nguyen, T. N. 2007. Refactoring-aware configuration management for object-oriented programs. In Proceedings of the 29th International Conference on Software Engineering. 427--436. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Fluri, B., Würsch, M., Pinzger, M., and Gall, H. C. 2007. Change distilling: Tree differencing for fine-grained source code change extraction. IEEE Trans. Softw. Engin. 33, 11, 725--743. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Fowler, M. 2002. Public versus published interfaces. IEEE Softw. 19, 2, 18--19. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Godfrey, M. W. and Zou, L. 2005. Using origin analysis to detect merging and splitting of source code entities. IEEE Trans. Softw. Engin. 31, 2, 166--181. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Henkel, J. and Diwan, A. 2005. Catchup!: Capturing and replaying refactorings to support API evolution. In Proceedings of the 27th International Conference on Software Engineering. 274--283. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Holmes, R., Walker, R. J., and Murphy, G. C. 2006. Approximate structural context matching: An approach for recommending relevant examples. IEEE Trans. Softw. Engin. 32, 12, 952--970. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Jagannath, V., Lee, Y. Y., Daniel, B., and Marinov, D. 2009. Reducing the costs of bounded-exhaustive testing. In Fundamental Approaches to Software Engineering. 171--185. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Kersten, M. and Murphy, G. C. 2006. Using task context to improve programmer productivity. In Proceedings of the 14th International Symposium on Foundations of Software Engineering. 1--11. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Kim, M. and Notkin, D. 2009. Discovering and representing systematic code changes. In Proceedings of the 31st International Conference on Software Engineering. 309--319. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Kim, M., Notkin, D., and Grossman, D. 2007. Automatic inference of structural changes for matching across program versions. In Proceedings of the 29th International Conference on Software Engineering. 333--343. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Kim, S., Pan, K., and E. James Whitehead, J. 2005. When functions change their names: Automatic detection of origin relationships. In Proceedings of the 12th Working Conference on Reverse Engineering. 143--152. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Larman, C. 2001. Protected variation: The importance of being closed. IEEE Softw., 98--90. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Lientz, B. P. and Swanson, E. B. 1980. Software Maintenance Management. Addison-Wesley Longman Publishing Co., Inc., Boston, MA. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Nystrom, N., Clarkson, M. R., and Myers, A. C. 2003. Polyglot: An extensible compiler framework for java. In Proceedings of the 12th International Conference on Compiler Construction. 138--152. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Ratzinger, J., Sigmund, T., Vorburger, P., and Gall, H. C. 2007. Mining software evolution to predict refactoring. In Proceedings of the International Symposium on Empirical Software Engineering and Measurement. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Robillard, M. P. and Dagenais, B. 2008. Retrieving task-related clusters from change history. In Proceedings of the 15th Working Conference on Reverse Engineering. 17--26. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Schäfer, T., Jonas, J., and Mezini, M. 2008. Mining framework usage changes from instantiation code. In Proceedings of the 30th International Conference on Software Engineering. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Weissgerber, P. and Diehl, S. 2006. Identifying refactorings from source-code changes. In Proceedings of the 21st IEEE International Conference on Automated Software Engineering. 231--240. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Xing, Z. and Stroulia, E. 2006. Understanding the evolution and co-evolution of classes in object-oriented systems. Int. J. Softw. Engin. Knowl. Engin. 16, 1, 23--51.Google ScholarGoogle ScholarCross RefCross Ref
  30. Zelkowitz, M. V. and Wallace, D. R. 1998. Experimental models for validating technology. IEEE Comput. 31, 5, 23--31. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Zimmermann, T. and Weissgerber, P. 2004. Preprocessing cvs data for fine-grained analysis. In Proceedings of the International Workshop on Mining Software Repositories.Google ScholarGoogle Scholar
  32. Zimmermann, T., Zeller, A., Weissgerber, P., and Diehl, S. 2005. Mining version histories to guide software changes. IEEE Trans. Softw. Engin. 31, 6, 429--445. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Recommending Adaptive Changes for Framework Evolution

      Recommendations

      Reviews

      Alexandre Bergel

      One lesson learned in the last 50 years of software production is that software either evolves or quickly becomes obsolete. This is particularly true of software frameworks. Not all of the components of a given software evolve at the same pace. Unfortunately, keeping all the software pieces as a coherent compound is challenging because the new version of a component may break dependent, previously validated components. This paper presents an effective approach to synchronizing clients of an evolving framework with the framework itself. Changes made on clients are recommended based on how the framework absorbed its internal changes: "If a method m1 is removed from the framework code, we can identify all of the callers of m1 within the framework and analyze how they were adapted to the removal of m1 ." In their compelling case study, the authors provide a functionality replacement for 97 percent of the broken methods, a significant increase when compared with the findings of other studies. The authors' approach is intuitive, effective, and easy to implement; the paper is well written; and the idea is indeed convincing. Researchers on software evolution will surely find this paper inspiring. Online Computing Reviews Service

      Access critical reviews of Computing literature here

      Become a reviewer for Computing Reviews.

      Comments

      Login options

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

      Sign in

      Full Access

      • Published in

        cover image ACM Transactions on Software Engineering and Methodology
        ACM Transactions on Software Engineering and Methodology  Volume 20, Issue 4
        September 2011
        242 pages
        ISSN:1049-331X
        EISSN:1557-7392
        DOI:10.1145/2000799
        Issue’s Table of Contents

        Copyright © 2011 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: 1 September 2011
        • Accepted: 1 November 2009
        • Revised: 1 October 2009
        • Received: 1 July 2009
        Published in tosem Volume 20, Issue 4

        Permissions

        Request permissions about this article.

        Request Permissions

        Check for updates

        Qualifiers

        • research-article
        • Research
        • Refereed

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader