Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/1449913.1449939acmconferencesArticle/Chapter ViewAbstractPublication PagesgpceConference Proceedingsconference-collections
research-article

Practical refactoring-based framework upgrade

Published: 19 October 2008 Publication History

Abstract

Although the API of a software framework should stay stable, in practice it often changes during maintenance. When deploying a new framework version such changes may invalidate plugins - modules that used one of its previous versions. While manual plugin adaptation is expensive and error-prone, automatic adaptation demands cumbersome specifications, which the developers are reluctant to write and maintain. Basing on the history of structural framework changes (refactorings), in our previous work we formally defined how to automatically derive an adaptation layer that shields plugins from framework changes. In this paper we make our approach practical. Two case studies of unconstrained API evolution show that our approach scales in a large number of adaptation scenarios and comparing to other adaptation techniques. The evaluation of our logic-based tool ComeBack! demonstrates that it can adapt efficiently most of the problem-causing API refactorings.

References

[1]
ASM homepage. asm.objectweb.org.
[2]
Microsoft COM homepage. www.microsoft.com/Com/default.mspx.
[3]
ComeBack! homepage. comeback.sf.net.
[4]
CORBA homepage. www.corba.org.
[5]
Eclipse homepage. www.eclipse.org.
[6]
JHotDraw homepage. www.jhotdraw.org.
[7]
LAN-simulation lab session homepage. www.lore.ua.ac.be.
[8]
SalesPoint homepage. www-st.inf.tu-dresden.de/SalesPoint/v3.1/index.html.
[9]
Robert Allen and David Garlan. A formal basis for architectural connection. ACM Transactions on Software Engineering and Methodology, July 1997.
[10]
Dennis Angeline. Side-by-side execution of the .NET framework. msdn2.microsoft.com/en-us/library/ms994410.aspx, December 2002.
[11]
Ittai Balaban, Frank Tip, and Robert Fuhrer. Refactoring support for class library migration. In OOPSLA '05: Proceedings of the 20th annual ACM SIGPLAN conference on Object oriented programming, systems, languages, and applications, pages 265--279, New York, NY, USA, 2005. ACM Press.
[12]
Steffen Becker, Antonio Brogi, Ian Gorton, Sven Overhage, Alexander Romanovsky, and Massimo Tivoli. Towards an engineering approach to component adaptation. In Ralf H. Reussner, Judith A. Stafford, and Clemens A. Szyperski, editors, Architecting Systems with Trustworthy Components, volume 3938 of Lecture Notes in Computer Science, pages 193--215. Springer, 2004.
[13]
Kingsum Chow and David Notkin. Semi-automatic update of applications in response to library changes. In ICSM '96: Proceedings of the 1996 International Conference on Software Maintenance, pages 359--368, Washington, DC, USA, 1996. IEEE Computer Society.
[14]
Jim des Rivières. Evolving Java-based APIs. http://wiki.eclipse.org/Evolving_Java-based_APIs, 2001.
[15]
Daniel Dig. Safe Component Upgrade. PhD thesis, University of Illinois at Urbana--Champaign, Urbana, Illinois, USA, October 2007.
[16]
Danny Dig and Ralph Johnson. The role of refactorings in API evolution. In ICSM '05: Proceedings of the 21st IEEE International Conference on Software Maintenance (ICSM '05), pages 389--398, Washington, DC, USA, 2005. IEEE Computer Society.
[17]
Danny Dig, Can Comertoglu, Darko Marinov, and Ralph Johnson. Automated detection of refactorings in evolving components. In ECOOP '06: European Conference on Object-Oriented Programming, volume 4067 of Lecture Notes in Computer Science, pages 404--428. Springer, 2006.
[18]
Danny Dig, Stas Negara, Vibhu Mohindra, and Ralph Johnson. ReBA: Refactoring-aware binary adaptation of evolving libraries. In ICSE '08: International Conference on Software Engineering, pages 441--450, Leipzig, Germany, May 2008.
[19]
Susan Eisenbach, Chris Sadler, and Vladimir Jurisic. Feeling the way through DLL hell. In ECOOP '02: European Conference on Object-Oriented Programming, Lecture Notes in Computer Science, pages 404--428. Springer, 2002.
[20]
Ira Richard Forman, Michael H. Conner, Scott Harrison Danforth, and Larry K. Raper. Release-to-release binary compatibility in SOM. In OOPSLA '95: Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications, pages 426--438, New York, NY, USA, 1995. ACM Press.
[21]
Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading, Massachusetts, 1995.
[22]
Johannes Henkel and Amer Diwan. Catchup!: capturing and replaying refactorings to support API evolution. In ICSE '05: Proceedings of the 27th international conference on Software engineering, pages 274--283, New York, NY, USA, 2005. ACM Press.
[23]
Ralph Johnson and Brian Foote. Designing reusable classes. Journal of Object-Oriented Programming, June 1988.
[24]
Ralph Keller and Urs Hölzle. Binary component adaptation. In ECOOP '98: European Conference on Object-Oriented Programming, volume 1445 of Lecture Notes in Computer Science, pages 307--329. Springer, 1998.
[25]
Joshua Kerievsky. Refactoring to Patterns. Addison-Wesley, 2004.
[26]
Meir M. Lehman. Laws of software evolution revisited. In Carlo Montangero, editor, Software Process Technology - Proceedings of the 5th European Workshop, volume 1149 of Lecture Notes in Computer Science, pages 108--124. Springer, October 1996.
[27]
Scott Malabarba, Raju Pandey, Jeff Gragg, Earl Barr, and J. Fritz Barnes. Runtime support for type-safe dynamic java classes. In ECOOP '00: Proceedings of the 14th European Conference on Object-Oriented Programming, pages 337--361, London, UK, 2000. Springer.
[28]
Leonid Mikhajlov and Emil Sekerinski. A study of the fragile base class problem. Lecture Notes in Computer Science, 1998.
[29]
William F. Opdyke. Refactoring Object-Oriented Frameworks. PhD thesis, University of Illinois at Urbana-Champaign, Urbana-Champaign, IL, USA, 1992.
[30]
Yoann Padioleau, Julia Lawall, René Rydhof Hansen, and Gilles Muller. Documenting and automating collateral evolutions in linux device drivers. SIGOPS Operational System Review, 2008.
[31]
Stefan Roock and Andreas Havenstein. Refactoring tags for automatic refactoring of framework dependent applications. In XP '02: Proceedings of Extreme Programming Conference, pages 182--185, 2002.
[32]
Ilie Şavga and Michael Rudolf. Refactoring-based support for binary compatiblity in evolving frameworks. In GPCE '07: Proceedings of the Sixth International Conference on Generative Programming and Component Engineering, pages 175--184, Salzburg, Austria, October 2007. ACM.
[33]
Ilie Şavga and Michael Rudolf. Refactoring-based adaptation of adaptation specifications. In SERA '08: Best Paper Selection Proceedings of Software Engineering Research, Management and Applications, Prague, Czech Republic, August 2008. Springer.
[34]
Ilie Şavga, Michael Rudolf, and Jan Lehmann. Controlled adaptation-oriented evolution of object-oriented components. In IASTED SE '08: Proceedings of the IASTED International Conference on Software Engineering, Innsbruck, Austria, February 2008. ACTA Press.
[35]
Robert C. Seacord, Daniel Plakosh, and Grace A. Lewis. Modernizing Legacy Systems: Software Technologies, Engineering Process and Business Practices. Addison-Wesley, 2003.
[36]
K. Chandra Sekharaiah and D. Janaki Ram. Object schizophrenia problem in object role system design. In OOIS '02: Proceedings of the 8th International Conference on Object-Oriented Information Systems, pages 494--506, London, UK, 2002. Springer.
[37]
Patrick Steyaert, Carine Lucas, Kim Mens, and Theo D'Hondt. Reuse contracts: Managing the evolution of reusable assets. In OOPSLA '96 Conference on Object-Oriented Programming Systems, Languages and Applications, pages 268--285. ACM Press, October 1996.
[38]
Lance Tokuda and Don Batory. Evolving object-oriented designs with refactorings. Automated Software Engineering, January 2001.
[39]
Peter Weißgerber and Stephan Diehl. Identifying refactorings from source-code changes. In ASE '06: Proceedings of the 21st IEEE International Conference on Automated Software Engineering, pages 231--240, Washington, DC, USA, 2006. IEEE Computer Society.
[40]
Ulf Wemmie. Using version control system for tracking adaptation--relevant software changes. Bachelor Thesis. Dresden University of Technology, December 2006.
[41]
Daniel M. Yellin and Robert E. Strom. Protocol specifications and component adaptors. ACM TOPLAS: ACM Transactions on Programming Languages and Systems, 1997.
[42]
Robert K. Yin. Case Study Research: Design and Methods. SAGE Publications, December 1994.

Cited By

View all
  • (2010)Refactoring references for library migrationACM SIGPLAN Notices10.1145/1932682.186951845:10(726-738)Online publication date: 17-Oct-2010
  • (2010)Refactoring references for library migrationProceedings of the ACM international conference on Object oriented programming systems languages and applications10.1145/1869459.1869518(726-738)Online publication date: 17-Oct-2010
  • (2009)On performance of delegation in JavaProceedings of the 2nd International Workshop on Hot Topics in Software Upgrades10.1145/1656437.1656441(1-6)Online publication date: 25-Oct-2009

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
GPCE '08: Proceedings of the 7th international conference on Generative programming and component engineering
October 2008
194 pages
ISBN:9781605582672
DOI:10.1145/1449913
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: 19 October 2008

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. adaptation
  2. frameworks
  3. maintenance
  4. refactoring

Qualifiers

  • Research-article

Conference

GPCE '08
Sponsor:

Acceptance Rates

Overall Acceptance Rate 56 of 180 submissions, 31%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)3
  • Downloads (Last 6 weeks)3
Reflects downloads up to 22 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2010)Refactoring references for library migrationACM SIGPLAN Notices10.1145/1932682.186951845:10(726-738)Online publication date: 17-Oct-2010
  • (2010)Refactoring references for library migrationProceedings of the ACM international conference on Object oriented programming systems languages and applications10.1145/1869459.1869518(726-738)Online publication date: 17-Oct-2010
  • (2009)On performance of delegation in JavaProceedings of the 2nd International Workshop on Hot Topics in Software Upgrades10.1145/1656437.1656441(1-6)Online publication date: 25-Oct-2009

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media