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.
References
- 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 Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital Library
- P. Deransart, L. Cervoni, and A. Ed-Dbali. Prolog: The Standard Reference Manual. Springer, London, UK, 1996. Google Scholar
Digital 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 Scholar
Digital Library
- E. W. Dijkstra. Guarded commands, nondeterminacy and formal derivation of programs. Commun. ACM, 18(8):453--457, 1975. Google Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital Library
- M. Fowler. Refactoring: Improving the Design of Existing Code. Addison-Wesley, 1999. Google Scholar
Digital Library
- E. Gamma, R. Helm, R. Johnson, and J. Vlisside. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading, Massachusetts, 1995. Google Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital Library
- R. Keller and U. Hoelzle. Binary component adaptation. Lecture Notes in Computer Science, 1445:307--329, 1998. Google Scholar
Digital Library
- G. Kniesel and H. Koch. Static composition of refactorings. Science of Computer Programming, 52(1-3):9--51, 2004. Google Scholar
Digital Library
- M. M. Lehman. Laws of software evolution revisited. In European Workshop on Software Process Technology, pages 108--124, 1996. Google Scholar
Digital Library
- K. J. Lieberherr, W. L. Hursch, and C. Xiao. Object-extending class transformations. Formal Aspects of Computing, 6(4):391--416, 1994.Google Scholar
Cross 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 Scholar
Digital 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 Scholar
Digital Library
- W. F. Opdyke. Refactoring Object-Oriented Frameworks. PhD thesis, Urbana-Champaign, IL, USA, 1992. Google Scholar
Digital 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 Scholar
Digital 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 Scholar
Digital 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





Comments