Consistent Unanticipated Adaptation for Context-Dependent Applications

Unanticipated adaptation allows context-dependent applications to overcome the limitation of foreseen adaptation by incorporating previously unknown behavior. Introducing this concept in language-based approaches leads to inconsistencies as an object can have different views in different contexts. Existing language-based approaches do not address unanticipated adaptation and its associated run-time inconsistencies. We propose an architecture for unanticipated adaptation at run time based on dynamic instance binding crafted in a loosely manner to asynchronously replace adaptable entities that allow for behavioral changes of objects. To solve inconsistencies, we introduce the notion of transactions at the object level. Transactions guard the changing objects during their execution, ensuring consistent views. This allows for disruption-free, safe updates of adaptable entities by means of consistent unanticipated adaptation.

[1]  Matteo Pradella,et al.  Context-oriented programming: A software engineering perspective , 2012, J. Syst. Softw..

[2]  Hidehiko Masuhara,et al.  EventCJ: a context-oriented programming language with declarative event-based context transition , 2011, AOSD '11.

[3]  Danny Weyns,et al.  Design for Sustainability = Runtime Adaptation ∪ Evolution , 2015, ECSA Workshops.

[4]  Friedrich Steimann,et al.  On the representation of roles in object-oriented and conceptual modelling , 2000, Data Knowl. Eng..

[5]  Kim Mens,et al.  Safer context (de)activation: through the prompt-loyal strategy , 2011, COP@ECOOP.

[6]  Uwe Aßmann,et al.  A Metamodel Family for Role-Based Modeling and Programming Languages , 2014, SLE.

[7]  Theo D'Hondt,et al.  Tranquility: A Low Disruptive Alternative to Quiescence for Ensuring Safe Dynamic Updates , 2007, IEEE Transactions on Software Engineering.

[8]  Kim Mens,et al.  Context Petri Nets: Enabling Consistent Composition of Context-dependent Behavior , 2012, PNSE.

[9]  Hidehiko Masuhara,et al.  Generalized layer activation mechanism through contexts and subscribers , 2015, MODULARITY.

[10]  Jeff Magee,et al.  The Evolving Philosophers Problem: Dynamic Change Management , 1990, IEEE Trans. Software Eng..

[11]  Robert Hirschfeld,et al.  An open implementation for context-oriented layer composition in ContextJS , 2011, Sci. Comput. Program..

[12]  Siobhán Clarke,et al.  Context Slices: Lightweight discovery of behavioral adaptations , 2015, COP@ECOOP.

[13]  Alexander Schill,et al.  A dynamic instance binding mechanism supporting run-time variability of role-based software systems , 2016, MODULARITY.

[14]  Kim Mens,et al.  Uniting global and local context behavior with context Petri nets , 2012, COP@ECOOP.

[15]  Dirk Janssens,et al.  Safely updating running software: tranquility at the object level , 2010, RAM-SE@ECOOP.

[16]  Kim Mens,et al.  Context traits: dynamic behaviour adaptation through run-time trait recomposition , 2013, AOSD.

[17]  Nicolás Cardozo,et al.  Run-time Validation of Behavioral Adaptations , 2014, COP@ECOOP.