skip to main content
10.1145/1368088.1368154acmconferencesArticle/Chapter ViewAbstractPublication PagesicseConference Proceedingsconference-collections
research-article

Recommending adaptive changes for framework evolution

Published: 10 May 2008 Publication History

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 adapts to its own changes. In a study of the evolution of the Eclipse JDT framework and three client programs, our approach recommended relevant adaptive changes with a high level of precision, and detected non-trivial changes typically undiscovered by current refactoring detection techniques.

References

[1]
J.-S. Boulanger and M. P. Robillard. Managing concern interfaces. In Proc. of the 22nd IEEE Int'l Conference on Software Maintenance, pages 14--23, 2006.
[2]
M. Bruch, T. Schäfer, and M. Mezini. FrUiT: IDE support for framework understanding. In Proc. of the 2006 OOPSLA workshop on eclipse technology eXchange, pages 55--59, 2006.
[3]
K. Chow and D. Notkin. Semi-automatic update of applications in response to library changes. In Proc. of the Int'l Conference on Software Maintenance, pages 359--369, 1996.
[4]
B. Daniel, D. Dig, K. Garcia, and D. Marinov. Automated testing of refactoring engines. In Proc. of the the 6th joint meeting of the European software engineering conference and the symposium on The foundations of software engineering, pages 185--194, 2007.
[5]
D. Dig, C. Comertoglu, D. Marinov, and R. Johnson. Automated detection of refactorings in evolving components. In Proc. of the European Conference on Object-Oriented Programming, pages 404--428, 2006.
[6]
D. Dig and R. Johnson. How do APIs evolve? A story of refactoring. Journal of software maintenance and evolution: Research and Practice, 18(2):83--107, 2006.
[7]
D. Dig, K. Manzoor, R. Johnson, and T. N. Nguyen. Refactoring-aware configuration management for object-oriented programs. In Proc. of the 29th Int'l Conference on Software Engineering, pages 427--436, 2007.
[8]
B. Fluri, M. Würsch, M. Pinzger, and H. C. Gall. Change distilling: Tree differencing for fine-grained source code change extraction. IEEE Transactions on Software Engineering, 33(11):725--743, 2007.
[9]
M. W. Godfrey and L. Zou. Using origin analysis to detect merging and splitting of source code entities. IEEE Transactions on Software Engineering, 31(2):166--181, 2005.
[10]
J. Henkel and A. Diwan. Catchup!: capturing and replaying refactorings to support API evolution. In Proc. of the 27th international conference on Software engineering, pages 274--283, 2005.
[11]
R. Holmes, R. J. Walker, and G. C. Murphy. Approximate structural context matching: An approach for recommending relevant examples. IEEE Transactions on Software Engineering, 32(12):952--970, 2006.
[12]
M. Kersten and G. C. Murphy. Using task context to improve programmer productivity. In Proc. of the 14th international symposium on Foundations of software engineering, pages 1--11, 2006.
[13]
M. Kim, D. Notkin, and D. Grossman. Automatic inference of structural changes for matching across program versions. In Proc. of the 29th Int'l Conference on Software Engineering, pages 333--343, 2007.
[14]
S. Kim, K. Pan, and J. E. James Whitehead. When functions change their names: Automatic detection of origin relationships. In Proc. of the 12th Working Conference on Reverse Engineering, pages 143--152, 2005.
[15]
B. P. Lientz and E. B. Swanson. Software Maintenance Management. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 1980.
[16]
N. Nystrom, M. R. Clarkson, and A. C. Myers. Polyglot: An extensible compiler framework for java. In Proc. of the 12th Int'l Conference on Compiler Construction, pages 138--152, 2003.
[17]
J. Ratzinger, T. Sigmund, P. Vorburger, and H. C. Gall. Mining software evolution to predict refactoring. In Proc. of the Int'l Symposium on Empirical Software Engineering and Measurement, 2007.
[18]
T. Schäfer, J. Jonas, and M. Mezini. Mining framework usage changes from instantiation code. In To appear in Proc. of the 30th Int'l Conference on Software Engineering, 2008.
[19]
V. Sundaresan, P. Lam, E. Gagnon, R. Vallée-Rai, L. Hendren, and P. Co. Soot - a java optimization framework. In Proc. of CASCON, pages 125--135, 1999.
[20]
P. Weißgerber and S. Diehl. Identifying refactorings from source-code changes. In Proc. of the 21st IEEE Int'l Conference on Automated Software Engineering, pages 231--240, 2006.
[21]
Z. Xing and E. Stroulia. Understanding the evolution and co-evolution of classes in object-oriented systems. Int'l Journal of Software Engineering and Knowledge Engineering, 16(1):23--51, 2006.
[22]
T. Zimmermann and P. Weißgerber. Preprocessing cvs data for fine-grained analysis. In Proc. of the Int'l Workshop on Mining Software Repositories, 2004.
[23]
T. Zimmermann, A. Zeller, P. Weißgerber, and S. Diehl. Mining version histories to guide software changes. IEEE Transactions on Software Engineering, 31(6):429--445, 2005.

Cited By

View all
  • (2024)Adaptoring: Adapter Generation to Provide an Alternative API for a Library2024 IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER)10.1109/SANER60148.2024.00027(192-203)Online publication date: 12-Mar-2024
  • (2023)An Empirical Study of Bugs in Eclipse Stable Internal InterfacesIndian Journal of Software Engineering and Project Management10.54105/ijsepm.D9015.0722222:2(4-10)Online publication date: 30-Dec-2023
  • (2022)Assisting Example-Based API Misuse Detection via Complementary Artificial ExamplesIEEE Transactions on Software Engineering10.1109/TSE.2021.309324648:9(3410-3422)Online publication date: 1-Sep-2022
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
ICSE '08: Proceedings of the 30th international conference on Software engineering
May 2008
558 pages
ISBN:9781605580791
DOI:10.1145/1368088
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]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 10 May 2008

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. adaptive changes
  2. framework
  3. historical study
  4. mining software repositories
  5. origin analysis
  6. partial program analysis
  7. recommendation system
  8. software evolution

Qualifiers

  • Research-article

Conference

ICSE '08
Sponsor:

Acceptance Rates

ICSE '08 Paper Acceptance Rate 56 of 370 submissions, 15%;
Overall Acceptance Rate 276 of 1,856 submissions, 15%

Upcoming Conference

ICSE 2025

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)1
  • Downloads (Last 6 weeks)0
Reflects downloads up to 16 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2024)Adaptoring: Adapter Generation to Provide an Alternative API for a Library2024 IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER)10.1109/SANER60148.2024.00027(192-203)Online publication date: 12-Mar-2024
  • (2023)An Empirical Study of Bugs in Eclipse Stable Internal InterfacesIndian Journal of Software Engineering and Project Management10.54105/ijsepm.D9015.0722222:2(4-10)Online publication date: 30-Dec-2023
  • (2022)Assisting Example-Based API Misuse Detection via Complementary Artificial ExamplesIEEE Transactions on Software Engineering10.1109/TSE.2021.309324648:9(3410-3422)Online publication date: 1-Sep-2022
  • (2022)DepMiner: Automatic Recommendation of Transformation Rules for Method DeprecationReuse and Software Quality10.1007/978-3-031-08129-3_2(22-37)Online publication date: 10-Jun-2022
  • (2020)M3Proceedings of the 35th IEEE/ACM International Conference on Automated Software Engineering10.1145/3324884.3416618(90-102)Online publication date: 21-Dec-2020
  • (2019)TestMig: migrating GUI test cases from iOS to AndroidProceedings of the 28th ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3293882.3330575(284-295)Online publication date: 10-Jul-2019
  • (2019)Automated API-usage update for Android appsProceedings of the 28th ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3293882.3330571(204-215)Online publication date: 10-Jul-2019
  • (2019)How Stable Are Eclipse Application Framework Internal Interfaces?2019 IEEE 26th International Conference on Software Analysis, Evolution and Reengineering (SANER)10.1109/SANER.2019.8668018(117-127)Online publication date: Feb-2019
  • (2019)Graph-based mining of in-the-wild, fine-grained, semantic code change patternsProceedings of the 41st International Conference on Software Engineering10.1109/ICSE.2019.00089(819-830)Online publication date: 25-May-2019
  • (2019)MeditorProceedings of the 27th International Conference on Program Comprehension10.1109/ICPC.2019.00052(335-346)Online publication date: 25-May-2019
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media