CONTEXT-ORIENTED PROGRAMMING
LINGI2252 – PROF. KIM MENS
* Slides based on joint research with Dr. Sebastian Gonzalez, Dr. Nicolas Cardozo & others
*
(These slides are part of the course LINGI2252 “Software Maintenance and Evolution”, given by Prof. Kim Mens at UCL, Belgium)
Why
is there a need for dynamic
adaptation to context ?
Traditional Computer Systems
“Traditionally, hardware and software were input-
output systems that took input explicitly given to
them by a human, and acted upon that input
alone to produce an explicit output.

Now, this view is seen as too restrictive. …”
Henry Lieberman & Ted Selker
system
input output
3
Out of Context: Computer Systems That Adapt To, and Learn From, Context. 

IBM Systems Journal,Vol 39, Nos 3&4, p.617-631, 2000 [Lieberman&Selker2000]
Context-Aware Systems
“… Smart computers, intelligent agent software,
and digital devices of the future operate on data
that is not explicitly given to them, data that they
observe or gather for themselves.These operations
may be dependent on time, place, weather, user
preferences, or the history of interaction. 

In other words: context.”
Henry Lieberman & Ted Selker
4
Out of Context: Computer Systems That Adapt To, and Learn From, Context. 

IBM Systems Journal,Vol 39, Nos 3&4, p.617-631, 2000 [Lieberman&Selker2000]
Evolution Of Hardware 5
fixed (1980)
mainframes

servers

desktops

consoles
portable (1990)
laptops

netbooks

subnotebooks
mobile (2000)
handhelds

tablets

smartphones
‣ CPU load
‣ available memory (RAM)
‣ available storage (HD)
‣ date and time
‣ connected peripherals
‣ network peers
‣ touch screen
‣ geographical location
‣ GPS signal quality
‣ accelerometer
‣ wi-fi signal quality
‣ battery power
‣ camera
‣ microphone
‣ light sensor
+
+
…
text (1970)
BSD

SunOS

MS DOS

GNU/Linux
graphical (1980)
Mac OS

Amiga OS

Windows

KDE, GNOME
web (1990)
static

dynamic

web 2.0

mashups
mobile (2000)
Symbian OS

Windows CE

iOS

Android
Evolution Of Software 6
‣ available libraries
‣ available hardware services
‣ available network services
‣ user task
‣ user expertise
‣ user preferences
‣ user privileges
‣ task urgency
‣ operation modes
‣ logging
‣ debugging
‣ degraded
‣ free trial
‣ partial failure
‣ domain specific
‣ [3D] wireframe / solid view
‣ [Maps] satellite / schematic
‣ ...
The Future Is Here 7
“smart” objects
Need For Context-Aware Computing
“Computer systems will increasingly need to be
sensitive to their context to serve their users better.”
Eli Rohn
8
Predicting Context Aware Computing Performance.

Ubiquity, p.1-17, Feb. 2003 [Rohn2003]
Context-Aware Systems
Idea appeared ~ late 1980s; increasingly studied since ~ 2000.
9
3. The general characteristics of the articles
Fig. 2. Classification of articles by publication year.
Table 3
Classification
Journal artic
IEEE Pervasi
Personal and
IEEE Interne
Wireless Per
IEEE Intellige
Mobile Netw
IEEE Transac
The Others
Expert Syste
Computer Co
Journal of Sy
Pervasive an
World Wide
IEEE Wireles
Interacting w
Total
J.-y. Hong et al. / Expert Systems with Applications 36
Jong-yi Hong, Eui-ho Suh, Sung-Jin Kim

Context-Aware Systems:A literature review and classification.

Expert Systems with Applications 36, 2009 [Hong&al2009]
Context-Aware Systems
Studied from a variety of research angles [Hong&al2009]:
‣ conceptual: guidelines, frameworks, algorithms, context
reasoning and context data management
‣ networks: network protocols, sensor networks, …
‣ middleware for distributed context-aware applications
‣ applications: studies and

development of dedicated

context-aware applications

(e.g., a smart tour guide)
‣ user-interface technology

and usability studies
10
systems Ranganathan, Campbell, Ravi, and Mahaja
(2002), Sumi and Mase (2000), Sumi and N
Chen (2007)
M-commerce Anagnostopoulos, Tsounis, and Hadjiefthy
Frank, and Hansen (2003), Broens, Haltere
Santoro (2006), Kwon (2003), Kwon and S
Mitteregger (2007), Mandato, Kovacs, Hoh
(2005), Skov and Høegh (2006), Stylianos,
Broens (2007), Wohltorf, Cissée, and Riege
Web service Blake, Kahan, and Nowlan (2007), Debaty,
(2004), Kanter (2003), Kwon (2006b), Kwo
Pearce (2003)
Table 9
References of user infrastructure layer.
Classification criteria References
User infrastructure Interface Alexander and Matth
(2005), Hong, Dickso
Salovaara, and Lopez
(2003), Rehman, Staj
Usability Barnard, Yi, Jacko, an
Focusses on the programming angle:
Enabling context-aware software adaptability through a
programming language engineering approach:
‣ dedicated programming languages to express

context-driven behaviour adaptation
‣ contexts and behavioural variations to context

as first class language citizens
Context-Oriented Programming 11
COP
… through a programming
language engineering approach
enables context-driven
behaviour adaptability …
Some Definitions
“A software system is context-aware

if it can extract, interpret and use context information

and adapt its functionality to the current context of use.”
[Rohn2003]

“Context is everything

but the explicit input and output to a system.”
[Lieberman&Selker2000]
“A context-oriented software system is

a context-aware system that has an explicit representation

of context and contextual variations as first class citizens.”
[my definition]
13
Enabling Context-Driven Behaviour Adaptability
How to build software systems that can adapt their
behaviour dynamically …
… according to detected context changes in their
surrounding environment ?
One possible approach :
context-oriented programming
a programming language engineering approach
Applications should become more aware of their execution context,
and should adapt dynamically to such context to provide services
that match their clients’ needs to the best extent possible.
environmental properties
humidity, light, noise, lighting
network peers & services
projector, GPS, storage
internal state
load, time, battery
spatial state
position, orientation,
movement
location semantics
nearby objects & facilities
users
expertise, preferences
Context Is Key 15
take advantage of room projector for presentation
peer service
decrease playback quality when battery power is low
internal state
user task
show parking spots and gas stations (only) when driving
environmental conditions
give more detailed indications when visibility is low
disable phone ringtone in quiet places
location semantics
Adaptation Examples 16
So Why Aren’t We There Yet? 17
Richard Gabriel, 2006
Software systems today are produced
according to a manufacturing model:

a finished product is constructed at the
factory and shipped to its final
destination where it is expected to act
like any other machine —reliable but
oblivious to its surroundings and its own
welfare.
we still program this...
using the
programming models
conceived for this....
(2010) (1980)
Mindset Mismatch 18
Current programming techniques and design principles invite
programmers to think in a way that is mostly oblivious of the physical,
technical and human environment in which the software will be used.
Many chances of delivering improved services are thus missed.
?
?
?
?
?
?
Current Mindset 19
programming in isolation
programming with context
A new paradigm is needed that helps overcoming this limiting vision
by putting programmers in the right state of mind to build
dynamically adaptable applications from the ground up.
Needed Mindset 20
Conditional statementsDesign patternsPlugin architectures
from context-blind systems to context-oriented systems
forward!
?
?
?
?
?
?
Mindset Shift 21
Adaptation Example 22
context behaviour
ringtonedefault
call reception behaviour
Adaptation Example 23
context behaviour
vibrationquiet
call reception behaviour
Adaptation Example 24
off-hook call waiting signal
context behaviour
call reception behaviour
Adaptation Example 25
context behaviour
call reception behaviour
Paradigmatic Shortcomings 26
class phone {



method receive ( call ) {



if ( phone.isOffHook( ) )

play( phone.callWaitingSignal( ), 2 );



else if ( phone.environment( ).acoustics( ).isQuiet( ) )

phone.vibrate( 5 );



else if ( phone.user( ).isUnavailable( ) )

forwardCall( call, phone.forwardNumber( ) );



else

play( phone.ringTone( ), 10 );

}
conditional statements
default
phone user
phone environment
phone status
class phone {

method receive ( call ) {

if ( ) then

else if ( ) then

else if ( ) then

else

}
Paradigmatic Shortcomings 27
conditional statements
Adaptable
Tangled
Scattered
Fixed
No reuse
Complex logic
Paradigmatic Shortcomings 28
class Phone

{ attribute strategy;
method receive ( call )

{ strategy.receive( call ); } }
class UnavailableStrategy

{ method receive ( call ) { ... } }
class OffHookStrategy

{ method receive ( call ) { ... } }
class QuietStrategy

{ method receive ( call ) { ... } }
class DefaultStrategy

{ method receive ( call ) { ... } }
Phone
QuietStrategy
OffHookStrategy
UnavailableStrateg
DefaultStrategy
strategy.receive( call );
special software architectures
Modular
Open
Infrastructural burden
Anticipated adaptation points
E.g., Strategy

design pattern
Paradigmatic Shortcomings 29
Software rigidness

The variability points of the application are hard-
coded in its architecture. It is difficult to add new
variants non-invasively.

Lack of modularity

Tight coupling between core business logic and
infrastructural code to manage the variants makes the
software difficult to maintain and evolve.

Mindset mismatch

Programming tools make programmers oblivious of
the context in which their applications will run.
Programmers are not put in the right state of mind to
build adaptable software.
General Symptoms (Recap)
Hypothesis 30
current programming tools
adaptive systems
we need to reengineer our tools
A major obstacle for adaptability is the unavailability of appropriate
context-aware programming languages and related tool sets.
Side Comment 31
programming abstractions matter
tool 1: C#
using System;
public class Program
{
static long Factorial(long number)
{
if(number <= 1)
return 1;
else
return number * Factorial(number - 1);
}
static int Main(string[] args) {
Console.WriteLine(Factorial(5));
return 0;
}
}
tool 2: Ruby
def fact(n)
n <= 1 ? 1 : n * fact(n - 1)
end
fact(5)
n! = {1
n(n-1)!
if n = 0
if n > 0
maintainability
domain: math
Side Comment
A high-level language frees a program from
much of its accidental complexity; it eliminates
a whole level of complexity that was never
inherent in the program at all.
programming language engineering
32
Develop programming tools that reduce accidental complexity
in the expression of context-driven behaviour adaptation
Frederick Brooks, 1987
essential complexity ≠
accidental complexity
What?
context-driven

software adaptability through
dedicated language abstractions
and composition mechanisms
2008 20132010
Subjective-CAmbience
Context Traits
“Our ambition is to provide languages, formalisms, models and tools to support the
development of software systems that can dynamically adapt their behaviour to the current
execution context, to provide the most appropriate behaviour according to that context.”
Some Context-Oriented Programming Languages34
S. GONZALEZ, K. MENS,A. CADIZ.

Context-Oriented Programming with the Ambient Object System.

Journal of Universal Computer Science, 14(20):3307–3332, 2008.

S. GONZALEZ, N. CARDOZO, K. MENS,A. CADIZ, J-C. LIBBRECHT, J. GOFFAUX.

Subjective-C: Bringing Context to Mobile Platform Programming. International
Conference on Software Language Engineering 2010.

S. GONZALEZ, K. MENS, M. COLACIOIU,W. CAZZOLA.

Context Traits: dynamic behaviour adaptation through run-time trait recomposition.

International conference on Aspect-Oriented Software Development 2013.
Subjective-CAmbience
Context Traits
2008 20132010
Some Context-Oriented Programming Languages35
Subjective-C
2010 * cited by 59 according to

Google Scholar on 14.12.2016
*
S. GONZALEZ, K. MENS,A. CADIZ.

Context-Oriented Programming with the Ambient Object System.

Journal of Universal Computer Science, 14(20):3307–3332, 2008.

S. GONZALEZ, N. CARDOZO, K. MENS,A. CADIZ, J-C. LIBBRECHT, J. GOFFAUX.

Subjective-C: Bringing Context to Mobile Platform Programming. International
Conference on Software Language Engineering 2010.

S. GONZALEZ, K. MENS, M. COLACIOIU,W. CAZZOLA.

Context Traits: dynamic behaviour adaptation through run-time trait recomposition.

International conference on Aspect-Oriented Software Development 2013.
Context-Driven System Architecture 36
external context
effect
context
information
ActuatorsSensors
arbitrated

context
changes
World
Context
Discovery
Context
Management
Active
Context
internal
Application
Behaviour
Contexts As Situation Reifiers 37
no semantics
computationally
accessible data
Battery charge = 220 mAh
Idle cycles = 100 MHz
User agent = “Mozilla/5.0...”
Z axis = 0.03
action can be taken
well-defined
situations
Context
Discovery
contexts are reified situations
for which adapted application behaviour can be defined
Low battery charge
High CPU load
Firefox
Landscape orientation
LowBattery = new Context();
window.addEventListener(‘batterystatus’,
function (battery) {
if (battery.level < 30)
LowBattery.activate();
else
LowBattery.deactivate(); });
… in JavaScript
Context
Discovery
38
Label
Minimalistic Case Study
Standard Widget Spec
UILabel class
drawTextInRect:
Draws the receiver’s text in the specified rectangle.
- (void)drawTextInRect:(CGRect)rect
Parameters
rect
The rectangle in which to draw the text.
Discussion
You should not call this method directly. This method
should only be overridden by subclasses that want to
modify the default drawing behavior for the label’s text.
Availability
Available in iOS 2.0 and later.
Declared In
UILabel.h
39
Main Idea 40
@implementation UILabel (color)
@contexts Landscape
- (void)drawTextInRect:(CGRect)rect {
self.textColor = [UIColor greenColor];
return @resend();
}
@end
Open classes
Objective-C
COP
Subjective-C
✓ Adaptation of any existing component

✓ No access to original source code needed

✓ Adaptations can be cleanly modularised
Application
Behaviour
Label
Context Dependencies
Implication Antwerp Belgium Antwerp => Belgium
Suggestion ClassRoom Quiet ClassRoom -> Quiet
Requirement HDVideo BatteryHigh HDVideo =< BatteryHigh
41
Context
Management
Combination Driving + UKDriving+UK
Driving
UK
Exclusion Landscape Portrait Landscape >< Portrait
Context Dependency Graph 42
X
X
X
X
X
X X
Summary 43
✓ Clean application logic

✓ Clean modularisation of adaptations

✓ Context reification and management

✓ Run-time behaviour adaptation of any component (incl. 3rd party)

✓ No need for recompilation or access to original source code

✓ Maximises adaptation points while avoiding architectural burden

✓ Scoped adaptations
language abstractions for adaptation to context … with sound technical underpinnings
@context Landscape
-id behaviour {
// context-specific logic
} Objects
Open Classes
Reflection
Subjective Programming
Context-Oriented Programming
Subjective-C
Some Case Studies 44
Case Study: On-Board Car System 45
N. CARDOZO, K. MENS, S. GONZALEZ, P.-Y. ORBAN,W. DE MEUTER. Features on Demand.
International Workshop onVariability Modelling of Software-Intensive Systems, 2014.
Context Traits
Case Study: On-Board Car System 46
Context Traits
P.-Y. ORBAN. Using Context-Oriented Programming for Building

Adaptive Feature-Oriented Software for Car On-Board Systems.

Master thesis in Computer Science, Université catholique de Louvain, 2013
Case Study: On-Board Car System 47
Context Traits
location = EU
Display speed reading using

the metric system units
Context-specific features
Case Study: On-Board Car System 48
location = EU
Context changes trigger behavioural adaptation
location = UK
Case Study: On-Board Car System 49
location = EU location = UK
Display speed reading using

the metric system units
Display speed reading using

the imperial system units
Context TraitsImperialSystem = Trait({
var CONV_RATIO = 0.621371192;
getSpeed: function(msg) {
_val = this.proceed();
Math.round _val * CONV_RATIO; }
getHtml: function() {
display.setGaugeDisplay(this.proceed().replace("km/h", "mph")); }
});
How?
Subjective-CAmbience
2008 20132010
Context Traits
implementation of context-driven

software adaptability through …
… method dispatch … and method pre-dispatch.
Method Pre-Dispatch 51
Whenever a context is (de)activated

For every class c and selector s the context adapts,

find all active* methods

M(c, s)={ m1, m2, m3, ..., mn }
Reorder them according to specificity

m1 < m2 < m3 < ... < mn
and deploy the first one m1

‣ m1 is the most specific implementation for the current context

‣ resend invokes the remaining methods in order

‣ mn is (usually) the default implementation
* methods defined for contexts that are currently active
Method Dispatch 52
Whenever a message is sent

(to receiver r, with selector s and arguments a)

Find all active* methods that match the message

M(r,s,a) = { m1, m2, m3, ..., mn }
Reorder them according to specificity

m1 < m2 < m3 < ... < mn
and invoke the first one m1

‣ m1 is the most specific implementation for the current context

‣ resend invokes the remaining methods in order

‣ mn is (usually) the default implementation
* methods defined for contexts that are currently active
Comparison Of Implementation Techniques
behavioural reflection
method invocation
message sending
Method Dispatch
M(r,s,a)={ m1, m2, m3, ..., mn }
( more powerful )
trigger
action
mechanismstructural reflection
method deployment
context activation
Method Pre-Dispatch
( more commonly supported )
M(c, s)={ m1, m2, m3, ..., mn }
Method Pre-Dispatch 54
Is the method order always defined?
‣ Could there be no applicable methods?

➡ default implementation

‣ Could there be non-comparable methods?

➡ the order should be total

➡ if not, we’re in trouble
M(r,s,a)={ m1, m2, m3, ..., mn }
M(c, s)={ m1, m2, m3, ..., mn }
Method Pre-Dispatch 55
Subjective-C
Case Study
Subjective-C
Dynamic Method Pre-Dispatch 56
UILabel

@property NSString *text

@property UIFont *font

...

- (void)Portrait_drawTextInRect:(CGRect)rect

- (void)Landscape_drawTextInRect:(CGRect)rect

- (void)Default_drawTextInRect:(CGRect)rect

- (void)drawTextInRect:(CGRect)rect

‣ no additional cost for method invocations

‣ cost incurred at context switching time
@activate(Landscape);
@deactivate(Landscape);
Default impl
Landscape impl
Portrait impl
vtable
(1.0)
Subjective-C
Structural Reflection in Objective-C 57
Method class_getClassMethod(Class aClass, SEL aSelector)
Method class_getInstanceMethod(Class aClass, SEL aSelector)
IMP method_getImplementation(Method method)
Class Introspection
Method Introspection
Method Intercession
IMP method_setImplementation(Method method, IMP imp)
BOOL class_addMethod(Class cls, SEL name, IMP imp, const char *types)
Class Intercession
Subjective-C
...
NSMethodSignature *signature = defaultMethod->signature;
NSInvocation *invocation =
[NSInvocation invocationWithMethodSignature:signature];
[invocation setTarget:receiver];
[invocation setSelector:adaptedMethod->selector];
va_list arguments;
va_start(arguments, methodSelector);
int arg = va_arg(arguments, int);
[invocation setArgument:&arg atIndex: 0];
...
Invocation Reification
Behavioural Reflection in Objective-C 58
Invocation Activation
[invocation invoke];
...
void *result;
[invocation getReturnValue:result];
return result;
Programming For Context-Driven Adaptability59
✓Definition of context

✓Reifies the circumstances in which the software executes

✓Frame of reference to define adaptations

✓Behaviour adaptability

✓Language abstractions

✓Modularity of adaptations

✓Context discovery

✓Context management

➡ Consistency management
Summary
Conclusion : Mind The Context ! 60
Richard Gabriel, 2006
We need to use softer, more dynamic
architectures that support adding or
replacing modules after deployment
and architectures where objects can
be repaired in situ, methods
changed / added, internal state
restructured, and object hierarchies
rewired. We also need new types of
languages to describe the architecture
of our systems.
Additional Reading 61
N. CARDOZO, S. GONZALEZ, K. MENS, R.VAN DER STRAETEN, J.VALLEJOS,T. D’HONDT. Semantics for Consistent
Activation in Context-Oriented Systems. Information and Software Technology, 58:71-94, 2015.
N. CARDOZO, K. MENS, S. GONZALEZ, P.-Y. ORBAN,W. DE MEUTER. Features on Demand. International Workshop on
Variability Modelling of Software-Intensive Systems, 2014.
N. CARDOZO, S. GONZALEZ, K. MENS, R.VAN DER STRAETEN,T. D’HONDT. Modeling and Analyzing Self-adaptive
Systems with Context Petri Nets. Symposium on Theoretical Aspects of Software Engineering, 2013.
S. GONZALEZ, K. MENS, M. COLACIOIU,W. CAZZOLA. Context Traits: dynamic behaviour adaptation through run-time
trait recomposition. International conference on Aspect-Oriented Software Development, 2013.
E. BAINOMUGISHA,A. CADIZ, P. COSTANZA,W. DE MEUTER, S. GONZALEZ, K. MENS, J.VALLEJOS,T.VAN CUTSEM.
Language Engineering for Mobile Software. Chapter of the Handbook of Research on Mobile Software Engineering:
Design, Implementation and Emergent Applications, IGI Global, 2012.
N. CARDOZO, S. GUNTHER, K. MENS,T. D’HONDT. Feature-Oriented Programming and Context-Oriented
Programming: Comparing Paradigm Characteristics by Example Implementations. International Conference on Software
Engineering Advances, 2011.
S. GONZALEZ, N. CARDOZO, K. MENS,A. CADIZ, J-C. LIBBRECHT, J. GOFFAUX. Subjective-C: Bringing Context to
Mobile Platform Programming. International Conference on Software Language Engineering, 2010.
J.VALLEJOS, S. GONZALEZ, P. COSTANZA,W. DE MEUTER,T. D’HONDT, K. MENS. Predicated Generic Functions:
Enabling Context-Dependent Method Dispatch. International Conference on Software Composition, 2010.
S. GONZALEZ, K. MENS,A. CADIZ. Context-Oriented Programming with the Ambient Object System. Journal of
Universal Computer Science, 14(20):3307–3332, 2008.
S. GONZALEZ, K. MENS, P. HEYMANS. Highly Dynamic Behaviour Adaptability through Prototypes with Subjective
Multimethods. Symposium on Dynamic Languages, 2007.
CONTEXT-ORIENTED PROGRAMMING
POSSIBLE QUESTIONS
✦ What is the main difference between traditional software systems and context-aware
systems?
✦ Explain, in your own words, what problems context-oriented programming tries to solve.
✦ Explain, in your own words, what context-oriented programming is.
✦ Two different techniques exist for implementing dynamic adaptation of software behaviour
to context: method dispatch and method pre-dispatch. Briefly explain and compare these
two techniques.
✦ One particular technique for implementing dynamic adaptation of software behaviour to
context is that of method pre-dispatch. Explain that technique in detail and illustrate it with
a concrete example.

Context-Oriented Programming

  • 1.
    
 CONTEXT-ORIENTED PROGRAMMING LINGI2252 –PROF. KIM MENS * Slides based on joint research with Dr. Sebastian Gonzalez, Dr. Nicolas Cardozo & others * (These slides are part of the course LINGI2252 “Software Maintenance and Evolution”, given by Prof. Kim Mens at UCL, Belgium)
  • 2.
    Why is there aneed for dynamic adaptation to context ?
  • 3.
    Traditional Computer Systems “Traditionally,hardware and software were input- output systems that took input explicitly given to them by a human, and acted upon that input alone to produce an explicit output.
 Now, this view is seen as too restrictive. …” Henry Lieberman & Ted Selker system input output 3 Out of Context: Computer Systems That Adapt To, and Learn From, Context. 
 IBM Systems Journal,Vol 39, Nos 3&4, p.617-631, 2000 [Lieberman&Selker2000]
  • 4.
    Context-Aware Systems “… Smartcomputers, intelligent agent software, and digital devices of the future operate on data that is not explicitly given to them, data that they observe or gather for themselves.These operations may be dependent on time, place, weather, user preferences, or the history of interaction. 
 In other words: context.” Henry Lieberman & Ted Selker 4 Out of Context: Computer Systems That Adapt To, and Learn From, Context. 
 IBM Systems Journal,Vol 39, Nos 3&4, p.617-631, 2000 [Lieberman&Selker2000]
  • 5.
    Evolution Of Hardware5 fixed (1980) mainframes servers desktops
 consoles portable (1990) laptops
 netbooks subnotebooks mobile (2000) handhelds
 tablets
 smartphones ‣ CPU load ‣ available memory (RAM) ‣ available storage (HD) ‣ date and time ‣ connected peripherals ‣ network peers ‣ touch screen ‣ geographical location ‣ GPS signal quality ‣ accelerometer ‣ wi-fi signal quality ‣ battery power ‣ camera ‣ microphone ‣ light sensor + + …
  • 6.
    text (1970) BSD SunOS MS DOS GNU/Linux graphical(1980) Mac OS Amiga OS Windows
 KDE, GNOME web (1990) static dynamic web 2.0 mashups mobile (2000) Symbian OS Windows CE iOS Android Evolution Of Software 6 ‣ available libraries ‣ available hardware services ‣ available network services ‣ user task ‣ user expertise ‣ user preferences ‣ user privileges ‣ task urgency ‣ operation modes ‣ logging ‣ debugging ‣ degraded ‣ free trial ‣ partial failure ‣ domain specific ‣ [3D] wireframe / solid view ‣ [Maps] satellite / schematic ‣ ...
  • 7.
    The Future IsHere 7 “smart” objects
  • 8.
    Need For Context-AwareComputing “Computer systems will increasingly need to be sensitive to their context to serve their users better.” Eli Rohn 8 Predicting Context Aware Computing Performance.
 Ubiquity, p.1-17, Feb. 2003 [Rohn2003]
  • 9.
    Context-Aware Systems Idea appeared~ late 1980s; increasingly studied since ~ 2000. 9 3. The general characteristics of the articles Fig. 2. Classification of articles by publication year. Table 3 Classification Journal artic IEEE Pervasi Personal and IEEE Interne Wireless Per IEEE Intellige Mobile Netw IEEE Transac The Others Expert Syste Computer Co Journal of Sy Pervasive an World Wide IEEE Wireles Interacting w Total J.-y. Hong et al. / Expert Systems with Applications 36 Jong-yi Hong, Eui-ho Suh, Sung-Jin Kim
 Context-Aware Systems:A literature review and classification.
 Expert Systems with Applications 36, 2009 [Hong&al2009]
  • 10.
    Context-Aware Systems Studied froma variety of research angles [Hong&al2009]: ‣ conceptual: guidelines, frameworks, algorithms, context reasoning and context data management ‣ networks: network protocols, sensor networks, … ‣ middleware for distributed context-aware applications ‣ applications: studies and
 development of dedicated
 context-aware applications
 (e.g., a smart tour guide) ‣ user-interface technology
 and usability studies 10 systems Ranganathan, Campbell, Ravi, and Mahaja (2002), Sumi and Mase (2000), Sumi and N Chen (2007) M-commerce Anagnostopoulos, Tsounis, and Hadjiefthy Frank, and Hansen (2003), Broens, Haltere Santoro (2006), Kwon (2003), Kwon and S Mitteregger (2007), Mandato, Kovacs, Hoh (2005), Skov and Høegh (2006), Stylianos, Broens (2007), Wohltorf, Cissée, and Riege Web service Blake, Kahan, and Nowlan (2007), Debaty, (2004), Kanter (2003), Kwon (2006b), Kwo Pearce (2003) Table 9 References of user infrastructure layer. Classification criteria References User infrastructure Interface Alexander and Matth (2005), Hong, Dickso Salovaara, and Lopez (2003), Rehman, Staj Usability Barnard, Yi, Jacko, an
  • 11.
    Focusses on theprogramming angle: Enabling context-aware software adaptability through a programming language engineering approach: ‣ dedicated programming languages to express
 context-driven behaviour adaptation ‣ contexts and behavioural variations to context
 as first class language citizens Context-Oriented Programming 11
  • 12.
    COP … through aprogramming language engineering approach enables context-driven behaviour adaptability …
  • 13.
    Some Definitions “A softwaresystem is context-aware
 if it can extract, interpret and use context information
 and adapt its functionality to the current context of use.” [Rohn2003]
 “Context is everything
 but the explicit input and output to a system.” [Lieberman&Selker2000] “A context-oriented software system is
 a context-aware system that has an explicit representation
 of context and contextual variations as first class citizens.” [my definition] 13
  • 14.
    Enabling Context-Driven BehaviourAdaptability How to build software systems that can adapt their behaviour dynamically … … according to detected context changes in their surrounding environment ? One possible approach : context-oriented programming a programming language engineering approach
  • 15.
    Applications should becomemore aware of their execution context, and should adapt dynamically to such context to provide services that match their clients’ needs to the best extent possible. environmental properties humidity, light, noise, lighting network peers & services projector, GPS, storage internal state load, time, battery spatial state position, orientation, movement location semantics nearby objects & facilities users expertise, preferences Context Is Key 15
  • 16.
    take advantage ofroom projector for presentation peer service decrease playback quality when battery power is low internal state user task show parking spots and gas stations (only) when driving environmental conditions give more detailed indications when visibility is low disable phone ringtone in quiet places location semantics Adaptation Examples 16
  • 17.
    So Why Aren’tWe There Yet? 17 Richard Gabriel, 2006 Software systems today are produced according to a manufacturing model:
 a finished product is constructed at the factory and shipped to its final destination where it is expected to act like any other machine —reliable but oblivious to its surroundings and its own welfare.
  • 18.
    we still programthis... using the programming models conceived for this.... (2010) (1980) Mindset Mismatch 18
  • 19.
    Current programming techniquesand design principles invite programmers to think in a way that is mostly oblivious of the physical, technical and human environment in which the software will be used. Many chances of delivering improved services are thus missed. ? ? ? ? ? ? Current Mindset 19 programming in isolation
  • 20.
    programming with context Anew paradigm is needed that helps overcoming this limiting vision by putting programmers in the right state of mind to build dynamically adaptable applications from the ground up. Needed Mindset 20
  • 21.
    Conditional statementsDesign patternsPluginarchitectures from context-blind systems to context-oriented systems forward! ? ? ? ? ? ? Mindset Shift 21
  • 22.
    Adaptation Example 22 contextbehaviour ringtonedefault call reception behaviour
  • 23.
    Adaptation Example 23 contextbehaviour vibrationquiet call reception behaviour
  • 24.
    Adaptation Example 24 off-hookcall waiting signal context behaviour call reception behaviour
  • 25.
    Adaptation Example 25 contextbehaviour call reception behaviour
  • 26.
    Paradigmatic Shortcomings 26 classphone { method receive ( call ) { if ( phone.isOffHook( ) ) play( phone.callWaitingSignal( ), 2 );
 else if ( phone.environment( ).acoustics( ).isQuiet( ) ) phone.vibrate( 5 );
 else if ( phone.user( ).isUnavailable( ) ) forwardCall( call, phone.forwardNumber( ) ); else play( phone.ringTone( ), 10 ); } conditional statements
  • 27.
    default phone user phone environment phonestatus class phone { method receive ( call ) { if ( ) then else if ( ) then else if ( ) then else } Paradigmatic Shortcomings 27 conditional statements Adaptable Tangled Scattered Fixed No reuse Complex logic
  • 28.
    Paradigmatic Shortcomings 28 classPhone
 { attribute strategy; method receive ( call ) { strategy.receive( call ); } } class UnavailableStrategy
 { method receive ( call ) { ... } } class OffHookStrategy
 { method receive ( call ) { ... } } class QuietStrategy
 { method receive ( call ) { ... } } class DefaultStrategy
 { method receive ( call ) { ... } } Phone QuietStrategy OffHookStrategy UnavailableStrateg DefaultStrategy strategy.receive( call ); special software architectures Modular Open Infrastructural burden Anticipated adaptation points E.g., Strategy
 design pattern
  • 29.
    Paradigmatic Shortcomings 29 Softwarerigidness
 The variability points of the application are hard- coded in its architecture. It is difficult to add new variants non-invasively. Lack of modularity
 Tight coupling between core business logic and infrastructural code to manage the variants makes the software difficult to maintain and evolve. Mindset mismatch
 Programming tools make programmers oblivious of the context in which their applications will run. Programmers are not put in the right state of mind to build adaptable software. General Symptoms (Recap)
  • 30.
    Hypothesis 30 current programmingtools adaptive systems we need to reengineer our tools A major obstacle for adaptability is the unavailability of appropriate context-aware programming languages and related tool sets.
  • 31.
    Side Comment 31 programmingabstractions matter tool 1: C# using System; public class Program { static long Factorial(long number) { if(number <= 1) return 1; else return number * Factorial(number - 1); } static int Main(string[] args) { Console.WriteLine(Factorial(5)); return 0; } } tool 2: Ruby def fact(n) n <= 1 ? 1 : n * fact(n - 1) end fact(5) n! = {1 n(n-1)! if n = 0 if n > 0 maintainability domain: math
  • 32.
    Side Comment A high-levellanguage frees a program from much of its accidental complexity; it eliminates a whole level of complexity that was never inherent in the program at all. programming language engineering 32 Develop programming tools that reduce accidental complexity in the expression of context-driven behaviour adaptation Frederick Brooks, 1987 essential complexity ≠ accidental complexity
  • 33.
    What? context-driven
 software adaptability through dedicatedlanguage abstractions and composition mechanisms 2008 20132010 Subjective-CAmbience Context Traits “Our ambition is to provide languages, formalisms, models and tools to support the development of software systems that can dynamically adapt their behaviour to the current execution context, to provide the most appropriate behaviour according to that context.”
  • 34.
    Some Context-Oriented ProgrammingLanguages34 S. GONZALEZ, K. MENS,A. CADIZ.
 Context-Oriented Programming with the Ambient Object System.
 Journal of Universal Computer Science, 14(20):3307–3332, 2008.
 S. GONZALEZ, N. CARDOZO, K. MENS,A. CADIZ, J-C. LIBBRECHT, J. GOFFAUX.
 Subjective-C: Bringing Context to Mobile Platform Programming. International Conference on Software Language Engineering 2010.
 S. GONZALEZ, K. MENS, M. COLACIOIU,W. CAZZOLA.
 Context Traits: dynamic behaviour adaptation through run-time trait recomposition.
 International conference on Aspect-Oriented Software Development 2013. Subjective-CAmbience Context Traits 2008 20132010
  • 35.
    Some Context-Oriented ProgrammingLanguages35 Subjective-C 2010 * cited by 59 according to
 Google Scholar on 14.12.2016 * S. GONZALEZ, K. MENS,A. CADIZ.
 Context-Oriented Programming with the Ambient Object System.
 Journal of Universal Computer Science, 14(20):3307–3332, 2008.
 S. GONZALEZ, N. CARDOZO, K. MENS,A. CADIZ, J-C. LIBBRECHT, J. GOFFAUX.
 Subjective-C: Bringing Context to Mobile Platform Programming. International Conference on Software Language Engineering 2010.
 S. GONZALEZ, K. MENS, M. COLACIOIU,W. CAZZOLA.
 Context Traits: dynamic behaviour adaptation through run-time trait recomposition.
 International conference on Aspect-Oriented Software Development 2013.
  • 36.
    Context-Driven System Architecture36 external context effect context information ActuatorsSensors arbitrated
 context changes World Context Discovery Context Management Active Context internal Application Behaviour
  • 37.
    Contexts As SituationReifiers 37 no semantics computationally accessible data Battery charge = 220 mAh Idle cycles = 100 MHz User agent = “Mozilla/5.0...” Z axis = 0.03 action can be taken well-defined situations Context Discovery contexts are reified situations for which adapted application behaviour can be defined Low battery charge High CPU load Firefox Landscape orientation LowBattery = new Context(); window.addEventListener(‘batterystatus’, function (battery) { if (battery.level < 30) LowBattery.activate(); else LowBattery.deactivate(); }); … in JavaScript Context Discovery
  • 38.
  • 39.
    Standard Widget Spec UILabelclass drawTextInRect: Draws the receiver’s text in the specified rectangle. - (void)drawTextInRect:(CGRect)rect Parameters rect The rectangle in which to draw the text. Discussion You should not call this method directly. This method should only be overridden by subclasses that want to modify the default drawing behavior for the label’s text. Availability Available in iOS 2.0 and later. Declared In UILabel.h 39
  • 40.
    Main Idea 40 @implementationUILabel (color) @contexts Landscape - (void)drawTextInRect:(CGRect)rect { self.textColor = [UIColor greenColor]; return @resend(); } @end Open classes Objective-C COP Subjective-C ✓ Adaptation of any existing component ✓ No access to original source code needed ✓ Adaptations can be cleanly modularised Application Behaviour Label
  • 41.
    Context Dependencies Implication AntwerpBelgium Antwerp => Belgium Suggestion ClassRoom Quiet ClassRoom -> Quiet Requirement HDVideo BatteryHigh HDVideo =< BatteryHigh 41 Context Management Combination Driving + UKDriving+UK Driving UK Exclusion Landscape Portrait Landscape >< Portrait
  • 42.
    Context Dependency Graph42 X X X X X X X
  • 43.
    Summary 43 ✓ Cleanapplication logic ✓ Clean modularisation of adaptations ✓ Context reification and management ✓ Run-time behaviour adaptation of any component (incl. 3rd party) ✓ No need for recompilation or access to original source code ✓ Maximises adaptation points while avoiding architectural burden ✓ Scoped adaptations language abstractions for adaptation to context … with sound technical underpinnings @context Landscape -id behaviour { // context-specific logic } Objects Open Classes Reflection Subjective Programming Context-Oriented Programming Subjective-C
  • 44.
  • 45.
    Case Study: On-BoardCar System 45 N. CARDOZO, K. MENS, S. GONZALEZ, P.-Y. ORBAN,W. DE MEUTER. Features on Demand. International Workshop onVariability Modelling of Software-Intensive Systems, 2014. Context Traits
  • 46.
    Case Study: On-BoardCar System 46 Context Traits P.-Y. ORBAN. Using Context-Oriented Programming for Building
 Adaptive Feature-Oriented Software for Car On-Board Systems.
 Master thesis in Computer Science, Université catholique de Louvain, 2013
  • 47.
    Case Study: On-BoardCar System 47 Context Traits location = EU Display speed reading using
 the metric system units Context-specific features
  • 48.
    Case Study: On-BoardCar System 48 location = EU Context changes trigger behavioural adaptation location = UK
  • 49.
    Case Study: On-BoardCar System 49 location = EU location = UK Display speed reading using
 the metric system units Display speed reading using
 the imperial system units Context TraitsImperialSystem = Trait({ var CONV_RATIO = 0.621371192; getSpeed: function(msg) { _val = this.proceed(); Math.round _val * CONV_RATIO; } getHtml: function() { display.setGaugeDisplay(this.proceed().replace("km/h", "mph")); } });
  • 50.
    How? Subjective-CAmbience 2008 20132010 Context Traits implementationof context-driven
 software adaptability through … … method dispatch … and method pre-dispatch.
  • 51.
    Method Pre-Dispatch 51 Whenevera context is (de)activated For every class c and selector s the context adapts,
 find all active* methods M(c, s)={ m1, m2, m3, ..., mn } Reorder them according to specificity m1 < m2 < m3 < ... < mn and deploy the first one m1
 ‣ m1 is the most specific implementation for the current context ‣ resend invokes the remaining methods in order ‣ mn is (usually) the default implementation * methods defined for contexts that are currently active
  • 52.
    Method Dispatch 52 Whenevera message is sent
 (to receiver r, with selector s and arguments a) Find all active* methods that match the message M(r,s,a) = { m1, m2, m3, ..., mn } Reorder them according to specificity m1 < m2 < m3 < ... < mn and invoke the first one m1
 ‣ m1 is the most specific implementation for the current context ‣ resend invokes the remaining methods in order ‣ mn is (usually) the default implementation * methods defined for contexts that are currently active
  • 53.
    Comparison Of ImplementationTechniques behavioural reflection method invocation message sending Method Dispatch M(r,s,a)={ m1, m2, m3, ..., mn } ( more powerful ) trigger action mechanismstructural reflection method deployment context activation Method Pre-Dispatch ( more commonly supported ) M(c, s)={ m1, m2, m3, ..., mn }
  • 54.
    Method Pre-Dispatch 54 Isthe method order always defined? ‣ Could there be no applicable methods? ➡ default implementation ‣ Could there be non-comparable methods? ➡ the order should be total ➡ if not, we’re in trouble M(r,s,a)={ m1, m2, m3, ..., mn } M(c, s)={ m1, m2, m3, ..., mn }
  • 55.
  • 56.
    Subjective-C Dynamic Method Pre-Dispatch56 UILabel
 @property NSString *text
 @property UIFont *font
 ...
 - (void)Portrait_drawTextInRect:(CGRect)rect
 - (void)Landscape_drawTextInRect:(CGRect)rect
 - (void)Default_drawTextInRect:(CGRect)rect
 - (void)drawTextInRect:(CGRect)rect
 ‣ no additional cost for method invocations ‣ cost incurred at context switching time @activate(Landscape); @deactivate(Landscape); Default impl Landscape impl Portrait impl vtable (1.0)
  • 57.
    Subjective-C Structural Reflection inObjective-C 57 Method class_getClassMethod(Class aClass, SEL aSelector) Method class_getInstanceMethod(Class aClass, SEL aSelector) IMP method_getImplementation(Method method) Class Introspection Method Introspection Method Intercession IMP method_setImplementation(Method method, IMP imp) BOOL class_addMethod(Class cls, SEL name, IMP imp, const char *types) Class Intercession
  • 58.
    Subjective-C ... NSMethodSignature *signature =defaultMethod->signature; NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature]; [invocation setTarget:receiver]; [invocation setSelector:adaptedMethod->selector]; va_list arguments; va_start(arguments, methodSelector); int arg = va_arg(arguments, int); [invocation setArgument:&arg atIndex: 0]; ... Invocation Reification Behavioural Reflection in Objective-C 58 Invocation Activation [invocation invoke]; ... void *result; [invocation getReturnValue:result]; return result;
  • 59.
    Programming For Context-DrivenAdaptability59 ✓Definition of context ✓Reifies the circumstances in which the software executes ✓Frame of reference to define adaptations ✓Behaviour adaptability ✓Language abstractions ✓Modularity of adaptations ✓Context discovery ✓Context management ➡ Consistency management Summary
  • 60.
    Conclusion : MindThe Context ! 60 Richard Gabriel, 2006 We need to use softer, more dynamic architectures that support adding or replacing modules after deployment and architectures where objects can be repaired in situ, methods changed / added, internal state restructured, and object hierarchies rewired. We also need new types of languages to describe the architecture of our systems.
  • 61.
    Additional Reading 61 N.CARDOZO, S. GONZALEZ, K. MENS, R.VAN DER STRAETEN, J.VALLEJOS,T. D’HONDT. Semantics for Consistent Activation in Context-Oriented Systems. Information and Software Technology, 58:71-94, 2015. N. CARDOZO, K. MENS, S. GONZALEZ, P.-Y. ORBAN,W. DE MEUTER. Features on Demand. International Workshop on Variability Modelling of Software-Intensive Systems, 2014. N. CARDOZO, S. GONZALEZ, K. MENS, R.VAN DER STRAETEN,T. D’HONDT. Modeling and Analyzing Self-adaptive Systems with Context Petri Nets. Symposium on Theoretical Aspects of Software Engineering, 2013. S. GONZALEZ, K. MENS, M. COLACIOIU,W. CAZZOLA. Context Traits: dynamic behaviour adaptation through run-time trait recomposition. International conference on Aspect-Oriented Software Development, 2013. E. BAINOMUGISHA,A. CADIZ, P. COSTANZA,W. DE MEUTER, S. GONZALEZ, K. MENS, J.VALLEJOS,T.VAN CUTSEM. Language Engineering for Mobile Software. Chapter of the Handbook of Research on Mobile Software Engineering: Design, Implementation and Emergent Applications, IGI Global, 2012. N. CARDOZO, S. GUNTHER, K. MENS,T. D’HONDT. Feature-Oriented Programming and Context-Oriented Programming: Comparing Paradigm Characteristics by Example Implementations. International Conference on Software Engineering Advances, 2011. S. GONZALEZ, N. CARDOZO, K. MENS,A. CADIZ, J-C. LIBBRECHT, J. GOFFAUX. Subjective-C: Bringing Context to Mobile Platform Programming. International Conference on Software Language Engineering, 2010. J.VALLEJOS, S. GONZALEZ, P. COSTANZA,W. DE MEUTER,T. D’HONDT, K. MENS. Predicated Generic Functions: Enabling Context-Dependent Method Dispatch. International Conference on Software Composition, 2010. S. GONZALEZ, K. MENS,A. CADIZ. Context-Oriented Programming with the Ambient Object System. Journal of Universal Computer Science, 14(20):3307–3332, 2008. S. GONZALEZ, K. MENS, P. HEYMANS. Highly Dynamic Behaviour Adaptability through Prototypes with Subjective Multimethods. Symposium on Dynamic Languages, 2007.
  • 63.
    CONTEXT-ORIENTED PROGRAMMING POSSIBLE QUESTIONS ✦What is the main difference between traditional software systems and context-aware systems? ✦ Explain, in your own words, what problems context-oriented programming tries to solve. ✦ Explain, in your own words, what context-oriented programming is. ✦ Two different techniques exist for implementing dynamic adaptation of software behaviour to context: method dispatch and method pre-dispatch. Briefly explain and compare these two techniques. ✦ One particular technique for implementing dynamic adaptation of software behaviour to context is that of method pre-dispatch. Explain that technique in detail and illustrate it with a concrete example.