Context-oriented programming in ContextL: state of the art

There is a wide range of scenarios where software systems have to be able to behave differently according to their context of use. In Context-oriented Programming (COP), programs can be partitioned into behavioral variations that can be freely activated and combined at runtime with well-defined scopes, such that the program behavior is affected depending on context. About four years ago, we have introduced our vision of Context-oriented Programming and have presented the programming language ContextL as an extension to the Common Lisp Object System (CLOS), as our first language extension that explicitly realizes this vision. Since then, ContextL has been picked up by various developers world-wide, is now in use in several software systems, and has been continuously improved to meet the demands of its users. For these reasons, ContextL can currently be regarded as the most mature realization of COP concepts. In this paper, we give an overview of the major ingredients of ContextL, describe the developments in ContextL of the last four years, and sketch some future work.

[1]  Jakob E. Bardram,et al.  Applications of context-aware computing in hospital work: examples and design principles , 2004, SAC '04.

[2]  Oscar Nierstrasz,et al.  Context-oriented Programming , 2008, J. Object Technol..

[3]  Gregory D. Abowd,et al.  The context toolkit: aiding the development of context-enabled applications , 1999, CHI '99.

[4]  Theo D'Hondt,et al.  Filtered dispatch , 2008, DLS '08.

[5]  Stéphane Ducasse,et al.  The Meta in Meta-object Architectures , 2008, TOOLS.

[6]  Amr Sabry,et al.  Delimited dynamic binding , 2006, ICFP '06.

[7]  Pascal Costanza,et al.  The Context-Dependent Role Model , 2007, DAIS.

[8]  Kim Mens,et al.  Context-Oriented Programming with the Ambient Object System , 2008, J. Univers. Comput. Sci..

[9]  Guanling Chen,et al.  A Survey of Context-Aware Mobile Computing Research , 2000 .

[10]  Wouter Joosen,et al.  Modelling Variability in Self-Adaptive systems: Towards a Research Agenda , 2008 .

[11]  Christian Queinnec,et al.  The influence of browsers on evaluators or, continuations to program web servers , 2000, ICFP '00.

[12]  Theo D'Hondt,et al.  Feature Descriptions for Context-oriented Programming , 2008, SPLC.

[13]  Éric Tanter Contextual values , 2008, DLS '08.

[14]  Zakaria Maamar,et al.  What can context do for web services? , 2006, CACM.

[15]  Volker Wulf,et al.  Exploration environments: concept and empirical evaluation , 2001, GROUP.

[16]  Daniel G. Bobrow,et al.  Book review: The Art of the MetaObject Protocol By Gregor Kiczales, Jim des Rivieres, Daniel G. and Bobrow(MIT Press, 1991) , 1991, SGAR.

[17]  Gregor Kiczales,et al.  Efficient method dispatch in PCL , 1990, LISP and Functional Programming.

[18]  Robert Hirschfeld,et al.  Language constructs for context-oriented programming: an overview of ContextL , 2005, DLS '05.

[19]  Robert Hirschfeld,et al.  Reflective layer activation in ContextL , 2007, SAC '07.

[20]  Gregory D. Abowd,et al.  Towards a Better Understanding of Context and Context-Awareness , 1999, HUC.

[21]  Daniel G. Bobrow,et al.  Common lisp object system specification , 1988, SIGP.

[22]  Matthias Baldauf,et al.  A survey on context-aware systems , 2007, Int. J. Ad Hoc Ubiquitous Comput..

[23]  Henry G. Baker,et al.  Shallow binding makes functional arrays fast , 1991, SIGP.

[24]  Archan Misra,et al.  Intelligent pervasive middleware for context-based and localized telematics services , 2002, WMC '02.

[25]  Robert Hirschfeld,et al.  Language Constructs for Context-oriented Programming , 2005 .

[26]  Gregory D. Abowd,et al.  CybreMinder: A Context-Aware System for Supporting Reminders , 2000, HUC.

[27]  Theo D'Hondt,et al.  Context-Oriented Domain Analysis , 2007, CONTEXT.

[28]  Arie van Deursen,et al.  Domain-specific language design requires feature descriptions , 2002 .

[29]  Wolfgang De Meuter,et al.  Efficient Layer Activation for Switching Context-Dependent Behavior , 2006, JMLC.