ABSTRACT
The evolution of a software framework may invalidate existing plugins - modules that used one of its previous versions. To preserve binary compatibility (i.e., plugins will link and run with a new framework release without recompilation), we automatically create an adaptation layer that translates between plugins and the framework. The creation of these adapters is guided by information about syntactic framework changes (refactorings). For each supported refactoring we formally define a comeback - a refactoring used to construct adapters. For an ordered set of refactorings that occured between two framework versions, the backward execution of the corresponding comebacks yields the adaptation layer.
- Comarch homepage. http://www.comarch.com.Google Scholar
- ComeBack! homepage. http://comeback.sf.net.Google Scholar
- CORBA homepage. http://www.corba.org.Google Scholar
- Eclipse homepage. http://www.eclipse.org.Google Scholar
- Fujaba homepage. http://www.fujaba.de.Google Scholar
- Microsoft COM homepage. http://www.microsoft.com/Com/default.mspx.Google Scholar
- Microsoft.NET homepage. http://www.microsoft.com/net.Google Scholar
- I. Balaban, F. Tip, and R. 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. Google ScholarDigital Library
- S. Becker, A. Brogi, I. Gorton, S. Overhage, A. Romanovsky, and M. Tivoli. Towards an engineering approach to component adaptation. Technical Report 939, University of Newcastle upon Tyne, School of Computing Science, Jan 2006.Google ScholarDigital Library
- P. L. Bergstein. Object-Preserving Class Transformations. In Proceedings of the OOPSLA '91 Conference on Object-oriented Programming Systems, Languages and Applications, pages 299--313, 1991. Google ScholarDigital Library
- J. Camara, C. Canal, J. Cubo, and J. Murillo. An aspect-oriented adaptation framework for dynamic component evolution. In 3rd ECOOP Workshop on Reflection, AOP and Meta-Data for Software Evolution, pages 59--71, 2006.Google Scholar
- K. Chow and D. Notkin. Semi-automatic update of applications in response to library changes. In ICSM '96: Proceedings of the 1996 International Conference on Software Maintenance, page 359, Washington, DC, USA, 1996. IEEE Computer Society. Google ScholarDigital Library
- P. Deransart, L. Cervoni, and A. Ed-Dbali. Prolog: The Standard Reference Manual. Springer, London, UK, 1996. Google ScholarDigital Library
- J. des Rivières. Evolving Java-based APIs. http://wiki.eclipse.org/Evolving_Java-based_APIs, 2001.Google Scholar
- D. Dig and R. 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. Google ScholarDigital Library
- E. W. Dijkstra. Guarded commands, nondeterminacy and formal derivation of programs. Commun. ACM, 18(8):453--457, 1975. Google ScholarDigital Library
- I. R. Forman, M. H. Conner, S. H. Danforth, and L. 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. Google ScholarDigital Library
- I. R. Forman and S. H. Danforth. Putting metaclasses to work: a new dimension in object-oriented programming. Addison Wesley Longman Publishing Co., Inc., Redwood City, CA, USA, 1999. Google ScholarDigital Library
- M. Fowler. Refactoring: Improving the Design of Existing Code. Addison-Wesley, 1999. Google ScholarDigital Library
- E. Gamma, R. Helm, R. Johnson, and J. Vlisside. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading, Massachusetts, 1995. Google ScholarDigital Library
- W. G. Griswold and D. Notkin. Automated assistance for program restructuring. ACM Transactions on Software Engineering and Methodology, 2(3):228-269, 1993. Google ScholarDigital Library
- J. Henkel and A. 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. Google ScholarDigital Library
- B. Hoffmann, D. Janssens, and N. V. Eetvelde. Cloning and expanding graph transformation rules for refactoring. In Electronic Notes in Theoretical Computer Science, pages 53--67, 2006. Google ScholarDigital Library
- J. E. Hopcroft, R. Motwani, and J. D. Ullman. Introduction to automata theory, languages, and computation, 2nd edition. SIGACT News, 32(1):60--65, 2001. Google ScholarDigital Library
- R. E. Johnson and W. F. Opdyke. Refactoring and aggregation. In Proceedings of the First JSSST International Symposium on Object Technologies for Advanced Software, pages 264--278, London, UK, 1993. Springer. Google ScholarDigital Library
- R. Keller and U. Hoelzle. Binary component adaptation. Lecture Notes in Computer Science, 1445:307--329, 1998. Google ScholarDigital Library
- G. Kniesel and H. Koch. Static composition of refactorings. Science of Computer Programming, 52(1-3):9--51, 2004. Google ScholarDigital Library
- M. M. Lehman. Laws of software evolution revisited. In European Workshop on Software Process Technology, pages 108--124, 1996. Google ScholarDigital Library
- K. J. Lieberherr, W. L. Hursch, and C. Xiao. Object-extending class transformations. Formal Aspects of Computing, 6(4):391--416, 1994.Google ScholarCross Ref
- S. Malabarba, R. Pandey, J. Gragg, E. Barr, and J. F. 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-Verlag. Google ScholarDigital Library
- F. McGurren and D. Conroy. X-adapt: An architecture for dynamic systems. In Workshop on Component-Oriented Programming, ECOOP, Malaga, Spain, pages 56--70, 2002.Google Scholar
- T. Mens, N. V. Eetvelde, S. Demeyer, and D. Janssens. Formalizing refactorings with graph transformations: Research articles. Journal of Software Maintenance and Evolution: Research and Practice, 17(4):247--276, 2005. Google ScholarDigital Library
- W. F. Opdyke. Refactoring Object-Oriented Frameworks. PhD thesis, Urbana-Champaign, IL, USA, 1992. Google ScholarDigital Library
- D. Riehle. Framework Design: A Role Modeling Approach. PhD thesis, Swiss Federal Institute of Technology Zurich, Universitaet Hamburg, 2000.Google Scholar
- D. B. Roberts. Practical analysis for refactoring. PhD thesis, University of Illinois at Urbana-Champaign, Urbana, Illinois, 1999. Google ScholarDigital Library
- S. Roock and A. Havenstein. Refactoring tags for automatic refactoring of framework dependent applications. In XP'02: Proceedings of Extreme Programming Conference, pages 182--185, 2002.Google Scholar
- K. C. Sekharaiah and D. J. 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. Google ScholarDigital Library
- R. M. Smullyan. First-Order Logic. Dover Publications, New York, USA, 1968.Google Scholar
Index Terms
- Refactoring-based support for binary compatibility in evolving frameworks
Recommendations
Annotation refactoring: inferring upgrade transformations for legacy applications
Since annotations were added to the Java language, many frameworks have moved to using annotated Plain Old Java Objects (POJOs) in their newest releases. Legacy applications are thus forced to undergo extensive restructuring in order to migrate from old ...
Binary refactoring: improving code behind the scenes
ICSE '05: Proceedings of the 27th international conference on Software engineeringWe present Binary Refactoring: a software engineering technique for improving the implementation of programs without modifying their source code. While related to regular refactoring in preserving a program's functionality, binary refactoring aims to ...
Annotation refactoring: inferring upgrade transformations for legacy applications
OOPSLA '08: Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applicationsSince annotations were added to the Java language, many frameworks have moved to using annotated Plain Old Java Objects (POJOs) in their newest releases. Legacy applications are thus forced to undergo extensive restructuring in order to migrate from old ...
Comments