A Context-Oriented Software Architecture

Kim Mens, Nicolás Cardozo, Benoît Duhoux
2016 Proceedings of the 8th International Workshop on Context-Oriented Programming - COP'16  
The last two decades have seen a lot of research on context-aware and context-oriented software development technologies, across subfields of computer science. This research area is slowly starting to mature and researchers currently explore how to unify di↵erent solutions proposed in these subfields. We envision that within another decade some of these solutions will make it into mainstream software development approaches, tools and environments. Most end-user software built by that time will
more » ... e context-aware and able to adapt seamlessly to its context of use (devices, surrounding environment, and users' preferences). This transition from traditional to context-oriented software also requires a mindset shift in users. If users are to accept adaptive systems, they need to be in control. Contextorientation should evolve to become less technologyand more user-centric, putting the user back in control. A first step is to provide good feedback to the user about when and what adaptations take place, and mechanisms to allow users to partly control certain adaptations, followed by easily usable and understandable personalisation mechanisms dedicated to each end user. Eventually, when adaptive systems become completely natural and adopted by end users, this will culminate in our vision where users are in full control of relevant features or adaptations of applications of their interest, selected on-demand from online feature clouds, and integrated automatically into the running system. The first civil examples of context-aware systems started to appear in the early nineties, with application prototypes that acted as o ce or personal assistants. Since the turn of the century, the amount of context-aware applications, such as context-aware tour guides [38], increased rapidly, by taking advantage of smart mobile devices, sensors or smart objects. Such smart devices are able to perceive their context of execution, communicate with each other, and interact with people [29] . With these new found capabilities, software systems have become increasingly sensitive to their context. In contrast to traditional software, the behaviour of context-aware systems depends not only on their input and output, but also on their context of use, including the time, place, weather, user preferences, system internals, and interaction habits [26] . In 2003, Rohn [38] predicted the first context-aware systems to become commercially available by 2007 and to reach maturity by 2035. Today, many applications on smart devices indeed exhibit context-aware features. Di↵erent programming paradigms to develop context-aware systems have been proposed over the last two decades [39, 40] . Such new trends to make software systems more aware of and adaptive to context have even started to appear in mainstream languages, in the form of application frameworks like OSGi 1 or ReactiveBlocks. 2 We expect the ideas and mechanisms of context-aware systems to slowly percolate and become more available and adopted over the following decade, when most end-user applications will be developed with dedicated context-oriented technology so that software systems can seamlessly adapt to their users and context of use. By that time, the fact that software knows its context of use and how it needs to adapt, will have become a feature expected by every user. This ongoing trend towards context-oriented software development has opened many questions from a technological perspective as well as from a human perspective. From a computer science perspective, the problem of building context-oriented software systems that can adapt dynamically to changing contexts has been studied from at least three di↵erent angles, each proposing independent solutions to manage adaptations in their own domain. In the domain of software development, programming language research has explored novel programming paradigms to dynamically adapt the behaviour of running systems according to detected context changes [22, 40] . In the domain of information systems, database research has studied contextaware database technology and more flexible query languages [5, 16, 28, 31] . In the domain of human-computer interaction (HCI), research has studied the problem from the point of view of user interfaces [3, 8, 27] , including multimodal interfaces [18, 19] , adapting software systems' interfaces to particular devices or (group of) users. From a human perspective, the notion of context in computer science as a user-centered concept can be seen as an individualising paradigm, raising interesting ethical and sociological questions [4, 20] . Nevertheless, despite the fact that the concept of "context" is a key issue in humanities and social sciences, these areas have not yet researched in detail the notion of context in computing, and the impact it has on how users interact with a software system, or with their environment through a software system. Today, these di↵erent research perspectives are still largely disconnected and independent, which begs for more unified approaches that reconcile the progress in these di↵erent domains. Current research [30] is starting to look at how to integrate these proposals of context-orientation in di↵erent domains into a single unified approach. We expect that quite some progress towards such unified approaches will be achieved in the next decade. Yet, something is still missing for this paradigm to become truly mature and accepted: a user-centric vision. Putting the user in control Context-orientation can be seen as a new modularisation mechanism that supports the trend towards ever more dynamicity and context-awareness. As stated in the previous section, in the coming years we expect context-oriented technology to reach some level of maturity and adoption. 1 https://www.osgi.org 2
doi:10.1145/2951965.2951971 dblp:conf/ecoop/MensCD16 fatcat:xj4ltcqirzd6dekyss74xs4xuy