Refactoring-based support for binary compatibility in evolving frameworks

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.

[1]  Frederick P. Brooks,et al.  No Silver Bullet: Essence and Accidents of Software Engineering , 1987 .

[2]  Ralph E. Johnson,et al.  Frameworks = (components + patterns) , 1997, CACM.

[3]  Marwan Abi-Antoun,et al.  Compile-Time Views of Execution Structure Based on Ownership , 2007 .

[4]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[5]  Andreas Zeller,et al.  Mining Version Histories to Guide Software Changes , 2004 .

[6]  Jos L. M. Vrancken,et al.  Requirements specification and modeling through SysML , 2007, 2007 IEEE International Conference on Systems, Man and Cybernetics.

[7]  Patrick Borras,et al.  Centaur: the system , 1988, Software Development Environments.

[8]  Jeffrey D. Ullman,et al.  Introduction to automata theory, languages, and computation, 2nd edition , 2001, SIGA.

[9]  Narciso Martí-Oliet,et al.  The Maude 2.0 System , 2003, RTA.

[10]  Robert O'Callahan,et al.  Generalized aliasing as a basis for program analysis tools , 2001 .

[11]  Ralph E. Johnson,et al.  Documenting frameworks using patterns , 1992, OOPSLA '92.

[12]  Sergey Brin,et al.  The Anatomy of a Large-Scale Hypertextual Web Search Engine , 1998, Comput. Networks.

[13]  Tadao Murata,et al.  Petri nets: Properties, analysis and applications , 1989, Proc. IEEE.

[14]  Earl T. Barr,et al.  Runtime Support for Type-Safe Dynamic Java Classes , 2000, ECOOP.

[15]  Oscar Nierstrasz,et al.  The story of moose: an agile reengineering environment , 2005, ESEC/FSE-13.

[16]  Cliff B. Jones,et al.  RODIN (Rigorous Open Development Environment for Complex Systems) , 2005 .

[17]  David Notkin,et al.  Semi-automatic update of applications in response to library changes , 1996, 1996 Proceedings of International Conference on Software Maintenance.

[18]  Jonathan Aldrich,et al.  Lightweight object specification with typestates , 2005, ESEC/FSE-13.

[19]  山川 烈,et al.  Soft Computing , 2000, Soft Comput..

[20]  Tom Mens,et al.  Design preservation over subsequent releases of a software product: a case study of Baan ERP: Practice Articles , 2005 .

[21]  Grigore Roşu,et al.  K : a Rewrite Logic Framework for Language Design , Semantics , Analysis and Implementation CS 422 Lecture Notes for Homework 6 , 2005 .

[22]  Don Roberts,et al.  Practical analysis for refactoring , 1999 .

[23]  Grigore Rosu,et al.  KOOL: An Application of Rewriting Logic to Language Prototyping and Analysis , 2007, RTA.

[24]  Berthold Hoffmann,et al.  Cloning and Expanding Graph Transformation Rules for Refactoring , 2006, GRaMoT@GPCE.

[25]  Johan Lilius,et al.  Formal Model-Driven Development of Communicating Systems , 2005, ICFEM.

[26]  Greg Nelson,et al.  Extended static checking for Java , 2002, PLDI '02.

[27]  Paul L. Bergstein,et al.  Object-preserving class transformations , 1991, OOPSLA '91.

[28]  Gordon D. Plotkin,et al.  A structural approach to operational semantics , 2004, J. Log. Algebraic Methods Program..

[29]  Robert DeLine,et al.  Typestates for Objects , 2004, ECOOP.

[30]  Ondrej Lhoták,et al.  A Staged Static Program Analysis to Improve the Performance of Runtime Monitoring , 2007, ECOOP.

[31]  Ira R. Forman,et al.  Putting metaclasses to work: a new dimension in object-oriented programming , 1999 .

[32]  Martin P. Robillard,et al.  Tracking Code Clones in Evolving Software , 2007, 29th International Conference on Software Engineering (ICSE'07).

[33]  Derek Rayside,et al.  A dynamic analysis for revealing object ownership and sharing , 2006, WODA '06.

[34]  Meir M. Lehman,et al.  Laws of Software Evolution Revisited , 1996, EWSPT.

[35]  Chris F. Kemerer,et al.  A Metrics Suite for Object Oriented Design , 2015, IEEE Trans. Software Eng..

[36]  Craig Chambers,et al.  Ownership Domains: Separating Aliasing Policy from Mechanism , 2004, ECOOP.

[37]  Ralph E. Johnson,et al.  Automated Detection of Refactorings in Evolving Components , 2006, ECOOP.

[38]  David Walker,et al.  Enforcing Resource Usage Protocols via Scoped Methods , 2004 .

[39]  Romain Robbes,et al.  Characterizing and Understanding Development Sessions , 2007, 15th IEEE International Conference on Program Comprehension (ICPC '07).

[40]  Jakob Nielsen,et al.  Determining Usability Test Sample Size , 2006 .

[41]  Romain Robbes,et al.  Versioning systems for evolution research , 2005, Eighth International Workshop on Principles of Software Evolution (IWPSE'05).

[42]  Ebrahim H. Mamdani,et al.  An Experiment in Linguistic Synthesis with a Fuzzy Logic Controller , 1999, Int. J. Hum. Comput. Stud..

[43]  Andreas Paepcke,et al.  Conference proceedings on Object-oriented programming systems, languages, and applications , 1991, Conference on Object-Oriented Programming Systems, Languages, and Applications.

[44]  Lotfi A. Zadeh,et al.  Fuzzy Sets , 1996, Inf. Control..

[45]  Romain Robbes,et al.  The "Extract Refactoring" Refactoring , 2007, WRT.

[46]  Patrick Lam,et al.  A Type System and Analysis for the Automatic Extraction and Enforcement of Design Information , 2003, ECOOP.

[47]  Ian Sommerville,et al.  Software Engineering (7th Edition) , 2004 .

[48]  Peter D. Mosses,et al.  Modular structural operational semantics , 2004, J. Log. Algebraic Methods Program..

[49]  Grigore Rosu,et al.  On Formal Analysis of OO Languages Using Rewriting Logic: Designing for Performance , 2007, FMOODS.

[50]  Christopher L. Magee,et al.  Complex System Classification , 2004 .

[51]  Ian M. Holland,et al.  Contracts: specifying behavioral compositions in object-oriented systems , 1990, OOPSLA/ECOOP '90.

[52]  Stephen N. Freund,et al.  Dynamic Architecture Extraction , 2006, FATES/RV.

[53]  Ivar Jacobson,et al.  The Unified Software Development Process , 1999 .

[54]  Eoin Woods,et al.  Software Systems Architecture: Working with Stakeholders Using Viewpoints and Perspectives , 2005 .

[55]  H. James Hoover,et al.  Using SCL to specify and check design intent in source code , 2006, IEEE Transactions on Software Engineering.

[56]  José Meseguer,et al.  The Rewriting Logic Semantics Project , 2006, SOS@ICALP.

[57]  Karl J. Lieberherr,et al.  Object-extending class transformations , 1994, Formal Aspects of Computing.

[58]  Craig Chambers,et al.  Alias annotations for program understanding , 2002, OOPSLA '02.

[59]  Anneke Kleppe,et al.  MDA explained - the Model Driven Architecture: practice and promise , 2003, Addison Wesley object technology series.

[60]  Edsger W. Dijkstra,et al.  Guarded commands, nondeterminacy and formal derivation of programs , 1975, Commun. ACM.

[61]  Dewayne E. Perry,et al.  Toward understanding the rhetoric of small source code changes , 2005, IEEE Transactions on Software Engineering.

[62]  Stéphane Ducasse,et al.  Characterizing the evolution of class hierarchies , 2005, Ninth European Conference on Software Maintenance and Reengineering.

[63]  Shinji Kusumoto,et al.  Ranking significance of software components based on use relations , 2003, IEEE Transactions on Software Engineering.

[64]  William F. Opdyke,et al.  Refactoring object-oriented frameworks , 1992 .

[65]  Daniel Jackson,et al.  Lightweight extraction of object models from bytecode , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[66]  Martin Odersky,et al.  Making the future safe for the past: adding genericity to the Java programming language , 1998, OOPSLA '98.

[67]  Debora Shaw,et al.  Handbook of usability testing: How to plan, design, and conduct effective tests , 1996 .

[68]  Gilles Kahn,et al.  Natural Semantics , 1987, STACS.

[69]  Paul Klint,et al.  Compiling language definitions: the ASF+SDF compiler , 2000, TOPL.

[70]  Neelam Soundarajan,et al.  Responsibilities and rewards: specifying design patterns , 2004, Proceedings. 26th International Conference on Software Engineering.

[71]  Albert L. Baker,et al.  Preliminary design of JML: a behavioral interface specification language for java , 2006, SOEN.

[72]  Maurice H. Halstead,et al.  Elements of software science (Operating and programming systems series) , 1977 .

[73]  Pierre Deransart,et al.  Prolog - the standard: reference manual , 1996 .

[74]  José Meseguer,et al.  Formal Analysis of Java Programs in JavaFAN , 2004, CAV.

[75]  David Brown,et al.  Model-driven systems development , 2006, IEEE Engineering Management Review.

[76]  Stephan Diehl,et al.  Identifying Refactorings from Source-Code Changes , 2006, 21st IEEE/ACM International Conference on Automated Software Engineering (ASE'06).

[77]  H. James Hoover,et al.  Towards Specifying Constraints for Object-Oriented Frameworks , 2001, Inf. Syst. Frontiers.

[78]  Urs Hölzle,et al.  Binary Component Adaptation , 1997, ECOOP.

[79]  Peter D. Mosses The Varieties of Programming Language Semantics , 2000, IFIP TCS.

[80]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[81]  Romain Robbes,et al.  A Change-based Approach to Software Evolution , 2006, EVOL.

[82]  Lee W. Lacy OWL: Representing Information Using the Web Ontology Language , 2006 .

[83]  Jos L. M. Vrancken,et al.  Road Traffic Signals Modeling and Analysis with Petri nets and Linear Logic , 2007, 2007 IEEE International Conference on Networking, Sensing and Control.

[84]  Reidar Conradi,et al.  Impact of software engineering research on the practice of software configuration management , 2005, ACM Trans. Softw. Eng. Methodol..

[85]  M. dos Santos Soares,et al.  Scenario Analysis of a Network of Traffic Signals Designed with Petri Nets , 2007 .

[86]  José Meseguer,et al.  Rewriting logic: roadmap and bibliography , 2002, Theor. Comput. Sci..

[87]  Ralph E. Johnson,et al.  Refactoring and Aggregation , 1993, ISOTAS.

[88]  Flaviu Ghitulescu,et al.  Google Code Search , 2006 .

[89]  David Garlan,et al.  Using framework interfaces with design fragments , 2006, OOPSLA '06.

[90]  Ralph E. Johnson,et al.  The role of refactorings in API evolution , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[91]  Marwan Abi-Antoun,et al.  Ownership Domains in the Real World , 2007 .

[92]  William G. Griswold,et al.  Automated assistance for program restructuring , 1993, TSEM.

[93]  Ondrej Lhoták,et al.  Efficient trace monitoring , 2006, OOPSLA '06.

[94]  Dirk Riehle,et al.  Framework Design: A Role Modeling Approach , 2000, Softwaretechnik-Trends.

[95]  Mangala Gowri Nanda,et al.  Deriving object typestates in the presence of inter-object references , 2005, OOPSLA '05.

[96]  Paul G. Sorenson,et al.  Hooking into Object-Oriented Application Frameworks , 1997, Proceedings of the (19th) International Conference on Software Engineering.

[97]  Alan W. Brown,et al.  Introduction: Models, Modeling, and Model-Driven Architecture (MDA) , 2005, Model-Driven Software Development.

[98]  Yaneer Bar-Yam,et al.  When systems engineering fails-toward complex systems engineering , 2003, SMC'03 Conference Proceedings. 2003 IEEE International Conference on Systems, Man and Cybernetics. Conference Theme - System Security and Assurance (Cat. No.03CH37483).

[99]  Javier Cámara,et al.  An Aspect-Oriented Adaptation Framework for Dynamic Component Evolution , 2007, Electron. Notes Theor. Comput. Sci..

[100]  José Meseguer,et al.  Conditioned Rewriting Logic as a United Model of Concurrency , 1992, Theor. Comput. Sci..

[101]  Danny B. Lange,et al.  Interactive visualization of design patterns can help in framework understanding , 1995, OOPSLA.

[102]  J Vrancken,et al.  ARCHITECTURE FOR DISTRIBUTED TRAFFIC CONTROL. A bottom-up approach for deploying traffic control measures , 2006 .

[103]  Narciso Martí-Oliet,et al.  Maude: specification and programming in rewriting logic , 2002, Theor. Comput. Sci..

[104]  Yi Lu,et al.  Protecting representation with effect encapsulation , 2006, POPL '06.

[105]  Michael W. Godfrey,et al.  An integrated approach for studying architectural evolution , 2002, Proceedings 10th International Workshop on Program Comprehension.

[106]  Viktor Kuncak,et al.  Generalized Typestate Checking for Data Structure Consistency , 2005, VMCAI.

[107]  Grigore Rosu,et al.  A Rewrite Logic Approach to Semantic Definition, Design and Analysis of Object-Oriented Languages , 2006 .

[108]  Kathryn Anne Weiss,et al.  Reusable Specification Components for Model-Driven Development∗ , 2003 .

[109]  Ira R. Forman,et al.  Release-to-release binary compatibility in SOM , 1995, OOPSLA.

[110]  Meir M. Lehman,et al.  Program evolution: processes of software change , 1985 .

[111]  D. Janaki Ram,et al.  Object Schizophrenia Problem in Object Role System Design , 2002, OOIS.

[112]  Grigore Rosu,et al.  KOOL: A K-based Object-Oriented Language , 2006 .

[113]  Stefan Roock,et al.  Refactoring Tags for automatic refactoring of framework dependent applications , 2002 .

[114]  C. Jotin Khisty,et al.  Transportation Engineering: An Introduction , 1990 .

[115]  Colin F. Snook,et al.  UML-B: Formal modeling and design aided by UML , 2006, TSEM.

[116]  Anas N. Al-Rabadi,et al.  A comparison of modified reconstructability analysis and Ashenhurst‐Curtis decomposition of Boolean functions , 2004 .

[117]  Marco Meijers,et al.  Tool Support for Object-Oriented Patterns , 1997, ECOOP.

[118]  Grigore Rosu,et al.  An Executable Semantic Definition of the Beta Language using Rewriting Logic , 2005 .

[119]  Jeff Sauro,et al.  A method to standardize usability metrics into a single score , 2005, CHI.

[120]  Welf Löwe,et al.  Generating design pattern detectors from pattern specifications , 2003, 18th IEEE International Conference on Automated Software Engineering, 2003. Proceedings..

[121]  Jan Vitek,et al.  Flexible Alias Protection , 1998, ECOOP.

[122]  Patrick W. Jordan,et al.  An Introduction to Usability , 1998 .

[123]  Colin Atkinson,et al.  Extreme Harvesting: test driven discovery and reuse of software components , 2004, Proceedings of the 2004 IEEE International Conference on Information Reuse and Integration, 2004. IRI 2004..

[124]  Kent L. Beck,et al.  Extreme programming explained - embrace change , 1990 .

[125]  Robert Hieb,et al.  The Revised Report on the Syntactic Theories of Sequential Control and State , 1992, Theor. Comput. Sci..

[126]  Wuu Yang,et al.  Traps in Java , 2004, J. Syst. Softw..

[127]  Steffen Becker,et al.  Towards an Engineering Approach to Component Adaptation , 2004, Architecting Systems with Trustworthy Components.

[128]  William B. Rouse,et al.  Engineering complex systems: implications for research in systems engineering , 2003, IEEE Trans. Syst. Man Cybern. Part C.

[129]  J. Henkel,et al.  CatchUp! Capturing and replaying refactorings to support API evolution , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[130]  Derek Rayside,et al.  An analysis and visualization for revealing object sharing , 2005, eclipse '05.

[131]  Rastislav Bodík,et al.  Jungloid mining: helping to navigate the API jungle , 2005, PLDI '05.

[132]  Frank Tip,et al.  Refactoring support for class library migration , 2005, OOPSLA '05.

[133]  Günter Kniesel,et al.  Static composition of refactorings , 2004, Sci. Comput. Program..

[134]  Grigore Rosu,et al.  A Rewrite Framework for Language Definitions and for Generation of Efficient Interpreters , 2006, WRLA.

[135]  Peter Müller,et al.  Universes: Lightweight Ownership for JML , 2005, J. Object Technol..

[136]  Mario Piattini,et al.  Ontologies for Software Engineering and Software Technology , 2010 .

[137]  Ondrej Lhoták,et al.  Adding trace matching with free variables to AspectJ , 2005, OOPSLA '05.

[138]  Stefan Seedorf,et al.  Applications of Ontologies in Software Engineering , 2006 .

[139]  Rex B. Kline,et al.  Usability measurement and metrics: A consolidated model , 2006, Software Quality Journal.

[140]  Jean-Yves Girard,et al.  Linear Logic , 1987, Theor. Comput. Sci..