SlideShare a Scribd company logo
TICSw @ncardoz
Programming language
techniques for adaptive software
05/5/2016
Nicolás Cardozo
2
Bogotá
• 24 departments split in 10+2 faculties
• > 18700 students
• 14085 undergrads (~100 CS/ps)
• 708 specialization
• 3536 master (~500 CS)
• 435 PhD
• > 1500 professors
• 644 professors (all levels)
• 873 temporal professors
3
COMIT IMAGINE TICSw
Software
Engineering
Formal
Methods
Modeling
Business
and IT
Big Data
HPC
Cloud Computing
Data
Analysis
Networks
Graphic
Computing
Image
Processing
Robotics and
Autonomous Systems
Simulation and
Visualisation
10 5 11Professors Professors Professors
Motivation4
i	=	0	
i	=	i	+	1	
PRINT	i;	"	squared	=	";	i	*	i	
IF	i	>=	10	THEN	GOTO	60	
GOTO	20	
PRINT	"Program	Completed."	
END
Motivation4
public	class	MyClass	{	
private	Object	attribute1;	
…		
public	void	foo(bar,	baz)	{	
…	
}	
}
Motivation4
public	class	MyClass	{	
private	Object	attribute1;	
…		
public	void	foo(bar,	baz)	{	
…	
}	
}
Motivation4
public	class	MyClass	{	
private	Object	attribute1;	
…		
public	void	foo(bar,	baz)	{	
…	
}	
}
Motivation4
public	class	MyClass	{	
private	Object	attribute1;	
…		
public	void	foo(bar,	baz)	{	
…	
}	
}
Motivation4
public	class	MyClass	{	
private	Object	attribute1;	
…		
public	void	foo(bar,	baz)	{	
…	
}	
}
Motivation4
public	class	MyClass	{	
private	Object	attribute1;	
…		
public	void	foo(bar,	baz)	{	
…	
}	
}
Motivation5
Motivation5
1. Complexity of systems is increasing (data, connections)
Motivation5
Software systems are not isolated, they interact and
influence each other
2.
1. Complexity of systems is increasing (data, connections)
Motivation5
Software systems are not isolated, they interact and
influence each other
2.
1. Complexity of systems is increasing (data, connections)
3. Users’ expectancy for personalization and interaction increases
Motivation5
Software systems are not isolated, they interact and
influence each other
2.
4. Programming models for such systems are inadequate
1. Complexity of systems is increasing (data, connections)
3. Users’ expectancy for personalization and interaction increases
Programming models that foster
systems to interact and influence each
other, as to maximize personalization
6
Dynamic adaptations to the context7
Sensors
World
Management
Actuators
Application
Behavior
Discovery
(Active)
Representation
Architecture Middleware Language Formalisms
Workflows
Petri nets
Symbolic execution
Constraint programming
SMT solvers
Dependency injection
COP
Role programming
model
Event systems
Reactive
programming
Model free learning
Logic programming
Dataflow graphs
Petri nets
[Cadiz, et al. Orchestrating Context-Aware Systems. CASTA’09]
Context-oriented programming8
… “programming language technique to enable behavioral
adaptations to a system’s surrounding context of execution”…
Context-oriented programming8
… “programming language technique to enable behavioral
adaptations to a system’s surrounding context of execution”…
What is context?
Context-oriented programming8
… “programming language technique to enable behavioral
adaptations to a system’s surrounding context of execution”…
What is context?
context := Semantically meaningful information gathered from monitors and sensors
Context-oriented programming8
… “programming language technique to enable behavioral
adaptations to a system’s surrounding context of execution”…
What is context?
Discovery
context := Semantically meaningful information gathered from monitors and sensors
.4807.038,N.
01131.000,E.
.10º.10º.11º. Interpretation & Reasoning
Context-oriented programming8
… “programming language technique to enable behavioral
adaptations to a system’s surrounding context of execution”…
What is context?
Discovery
context := Semantically meaningful information gathered from monitors and sensors
.4807.038,N.
01131.000,E.
.10º.10º.11º.
GPSAntenna
Interpretation & Reasoning
Context-oriented programming8
… “programming language technique to enable behavioral
adaptations to a system’s surrounding context of execution”…
What is context?
Discovery
context := Semantically meaningful information gathered from monitors and sensors
.4807.038,N.
01131.000,E.
.10º.10º.11º.
GPSAntenna
Interpretation & Reasoning
GPSAntenna	=	cop.Context({	
name:	“GPS”,	
slice:	“localization”	
});
Run-time behavior adaptation9
PositioningService	=	{	
		displayPosition:	function()	{	
var	pos	=	this.getPosition();	
console.log(“long:	“	+	pos[0]	+	“lat:	“	+	pos[1]);	
},	
getPosition:	function()	{	
throw	new	Error(“No	position	available");	
}	
};
[Gonzalez, S., et al. ContextTraits: Dynamic Behaviour AdaptationThrough Run-TimeTrait Recomposition. Modularity’13]
Application
Behavior
Run-time behavior adaptation9
PositioningService	=	{	
		displayPosition:	function()	{	
var	pos	=	this.getPosition();	
console.log(“long:	“	+	pos[0]	+	“lat:	“	+	pos[1]);	
},	
getPosition:	function()	{	
throw	new	Error(“No	position	available");	
}	
};
getPosition:	function()	{	
var	posx	=	gps.getX();	
var	posy	=	gps.getY();	
return	[posx,	posy];	
}	
[Gonzalez, S., et al. ContextTraits: Dynamic Behaviour AdaptationThrough Run-TimeTrait Recomposition. Modularity’13]
Application
Behavior
Run-time behavior adaptation9
PositioningService	=	{	
		displayPosition:	function()	{	
var	pos	=	this.getPosition();	
console.log(“long:	“	+	pos[0]	+	“lat:	“	+	pos[1]);	
},	
getPosition:	function()	{	
throw	new	Error(“No	position	available");	
}	
};
getPosition:	function()	{	
var	posx	=	gps.getX();	
var	posy	=	gps.getY();	
return	[posx,	posy];	
}	
[Gonzalez, S., et al. ContextTraits: Dynamic Behaviour AdaptationThrough Run-TimeTrait Recomposition. Modularity’13]
Behavior definition, to which module
Definition of the same behavior twice
Disconnect between behavior
definitions
Application
Behavior
Run-time behavior adaptation9
PositioningService	=	{	
		displayPosition:	function()	{	
var	pos	=	this.getPosition();	
console.log(“long:	“	+	pos[0]	+	“lat:	“	+	pos[1]);	
},	
getPosition:	function()	{	
throw	new	Error(“No	position	available");	
}	
};
getPosition:	function()	{	
var	posx	=	gps.getX();	
var	posy	=	gps.getY();	
return	[posx,	posy];	
}	
GPSAntennaOperations	=	Trait({	
});
[Gonzalez, S., et al. ContextTraits: Dynamic Behaviour AdaptationThrough Run-TimeTrait Recomposition. Modularity’13]
Behavior definition, to which module
Definition of the same behavior twice
Disconnect between behavior
definitions
Application
Behavior
Run-time behavior adaptation9
PositioningService	=	{	
		displayPosition:	function()	{	
var	pos	=	this.getPosition();	
console.log(“long:	“	+	pos[0]	+	“lat:	“	+	pos[1]);	
},	
getPosition:	function()	{	
throw	new	Error(“No	position	available");	
}	
};
getPosition:	function()	{	
var	posx	=	gps.getX();	
var	posy	=	gps.getY();	
return	[posx,	posy];	
}	
GPSAntennaOperations	=	Trait({	
});
GPSAntenna.adapt(PositioningService,	GPSAntennaOperations);
[Gonzalez, S., et al. ContextTraits: Dynamic Behaviour AdaptationThrough Run-TimeTrait Recomposition. Modularity’13]
Behavior definition, to which module
Definition of the same behavior twice
Disconnect between behavior
definitions
Application
Behavior
Run-time behavior adaptation10
GPSAntennaOperations	=	Trait({	
getPosition:	function()	{	
var	posx	=	gps.getX();	
var	posy	=	gps.getY();	
return	[posx,	posy];	
}	
});
[Gonzalez, S., et al. ContextTraits: Dynamic Behaviour AdaptationThrough Run-TimeTrait Recomposition. Modularity’13]
GalileoOperations	=	Trait({	
getPosition:	function()	{	
return	{		
posx:	galileo.latitude(),	
posy:	galileo.longitude()}	
};	
});
PositioningService	=	{	
		displayPosition:	function()	{	
var	pos	=	this.getPosition();	
console.log(“long:	“	+	pos[0]	+	“lat:	“	+	pos[1]);	
},	
getPosition:	function()	{	
throw	new	Error(“No	position	available");	
}	
};
[Cardozo et al. Context Slices: Lightweight discovery of behavioral adaptations. COP’15]
Run-time behavior adaptation10
GPSAntennaOperations	=	Trait({	
getPosition:	function()	{	
var	posx	=	gps.getX();	
var	posy	=	gps.getY();	
return	[posx,	posy];	
}	
});
[Gonzalez, S., et al. ContextTraits: Dynamic Behaviour AdaptationThrough Run-TimeTrait Recomposition. Modularity’13]
GalileoOperations	=	Trait({	
getPosition:	function()	{	
return	{		
posx:	galileo.latitude(),	
posy:	galileo.longitude()}	
};	
});
PositioningService	=	{	
		displayPosition:	function()	{	
var	pos	=	this.getPosition();	
console.log(“long:	“	+	pos[0]	+	“lat:	“	+	pos[1]);	
},	
getPosition:	function()	{	
throw	new	Error(“No	position	available");	
}	
};
[Cardozo et al. Context Slices: Lightweight discovery of behavioral adaptations. COP’15]
Run-time behavior adaptation10
GPSAntennaOperations	=	Trait({	
getPosition:	function()	{	
var	posx	=	gps.getX();	
var	posy	=	gps.getY();	
return	[posx,	posy];	
}	
});
[Gonzalez, S., et al. ContextTraits: Dynamic Behaviour AdaptationThrough Run-TimeTrait Recomposition. Modularity’13]
GalileoOperations	=	Trait({	
getPosition:	function()	{	
return	{		
posx:	galileo.latitude(),	
posy:	galileo.longitude()}	
};	
});
PositioningService	=	{	
		displayPosition:	function()	{	
var	pos	=	this.getPosition();	
console.log(“long:	“	+	pos[0]	+	“lat:	“	+	pos[1]);	
},	
getPosition:	function()	{	
throw	new	Error(“No	position	available");	
}	
};
Which
implementation
to call?
[Cardozo et al. Context Slices: Lightweight discovery of behavioral adaptations. COP’15]
Run-time behavior adaptation10
GPSAntennaOperations	=	Trait({	
getPosition:	function()	{	
var	posx	=	gps.getX();	
var	posy	=	gps.getY();	
return	[posx,	posy];	
}	
});
[Gonzalez, S., et al. ContextTraits: Dynamic Behaviour AdaptationThrough Run-TimeTrait Recomposition. Modularity’13]
GalileoOperations	=	Trait({	
getPosition:	function()	{	
return	{		
posx:	galileo.latitude(),	
posy:	galileo.longitude()}	
};	
});
PositioningService	=	{	
		displayPosition:	function()	{	
var	pos	=	this.getPosition();	
console.log(“long:	“	+	pos[0]	+	“lat:	“	+	pos[1]);	
},	
getPosition:	function()	{	
throw	new	Error(“No	position	available");	
}	
};
Which
implementation
to call?
[Cardozo et al. Context Slices: Lightweight discovery of behavioral adaptations. COP’15]
Run-time behavior adaptation10
GPSAntennaOperations	=	Trait({	
getPosition:	function()	{	
var	posx	=	gps.getX();	
var	posy	=	gps.getY();	
return	[posx,	posy];	
}	
});
[Gonzalez, S., et al. ContextTraits: Dynamic Behaviour AdaptationThrough Run-TimeTrait Recomposition. Modularity’13]
GalileoOperations	=	Trait({	
getPosition:	function()	{	
return	{		
posx:	galileo.latitude(),	
posy:	galileo.longitude()}	
};	
});
GPSAntenna.activate();
PositioningService	=	{	
		displayPosition:	function()	{	
var	pos	=	this.getPosition();	
console.log(“long:	“	+	pos[0]	+	“lat:	“	+	pos[1]);	
},	
getPosition:	function()	{	
throw	new	Error(“No	position	available");	
}	
};
Which
implementation
to call?
[Cardozo et al. Context Slices: Lightweight discovery of behavioral adaptations. COP’15]
Run-time behavior adaptation10
GPSAntennaOperations	=	Trait({	
getPosition:	function()	{	
var	posx	=	gps.getX();	
var	posy	=	gps.getY();	
return	[posx,	posy];	
}	
});
[Gonzalez, S., et al. ContextTraits: Dynamic Behaviour AdaptationThrough Run-TimeTrait Recomposition. Modularity’13]
GalileoOperations	=	Trait({	
getPosition:	function()	{	
return	{		
posx:	galileo.latitude(),	
posy:	galileo.longitude()}	
};	
});
PositioningService	=	{	
		displayPosition:	function()	{	
var	pos	=	this.getPosition();	
console.log(“long:	“	+	pos[0]	+	“lat:	“	+	pos[1]);	
},	
getPosition:	function()	{	
throw	new	Error(“No	position	available");	
}	
};
Which
implementation
to call?
GPSAntenna.deactivate();
[Cardozo et al. Context Slices: Lightweight discovery of behavioral adaptations. COP’15]
Run-time behavior adaptation10
GPSAntennaOperations	=	Trait({	
getPosition:	function()	{	
var	posx	=	gps.getX();	
var	posy	=	gps.getY();	
return	[posx,	posy];	
}	
});
[Gonzalez, S., et al. ContextTraits: Dynamic Behaviour AdaptationThrough Run-TimeTrait Recomposition. Modularity’13]
GalileoOperations	=	Trait({	
getPosition:	function()	{	
return	{		
posx:	galileo.latitude(),	
posy:	galileo.longitude()}	
};	
});
PositioningService	=	{	
		displayPosition:	function()	{	
var	pos	=	this.getPosition();	
console.log(“long:	“	+	pos[0]	+	“lat:	“	+	pos[1]);	
},	
getPosition:	function()	{	
throw	new	Error(“No	position	available");	
}	
};
Which
implementation
to call?
Galileo.activate();GPSAntenna.deactivate();
[Cardozo et al. Context Slices: Lightweight discovery of behavioral adaptations. COP’15]
A brief history of COP11
Flute’12
Ambience’07
ContextS’07
ContextJS’11
JCop’08-10
Lambic’10
ContextErlang’10
Congolo’15
[symmetric	multimethods]	
[method	roles]	
[globally	scoped	contexts]
[layers]	
[dynamic	lexical	scoping]
[aspects]
ContextTraits’13
CoPN’12
Subjective-C’10 [composition]
Phenomenal Gem’12
EventCJ’12-ServalCJ’14
ContextL’05
[predicate	dispatch]	
[group	behavior]	
[distribution]
[reactive	behavior]
[invokedynamic]
[distribution]
[dependency	relations]
[features]
[consistency]
[tailored	activation]
[event-based	activation]	
[local	scoping]
Anyone can adapt any part of an
executing program at any moment in
time
12
Anyone can adapt any part of an
executing program at any moment in
time
12
, so a running application can break
in all and any unthinkable ways
Assurances:
13
CoherenceConsistency
14
Consistency
Managing interactions between defined
contexts
Consistency15
Implication
Brussels Belgium
Causality
Summer AirCo
Requirement
HDVideo HighBattery
Exclusion
AirCo Heating
[Gonzalez S. et al. Subjective-C: Bringing Context to Mobile Platform Programming. SLE’10]
Management
Context Petri nets16
context
definition
context
activation
execution
engine
GPSAntenna	=	cop.Context({	
		name:	“GPS”,	
		slice:	“localization”	
});
[Cardozo, N., et al. Modeling and Analyzing Self-Adaptive Systems with Context Petri Nets. TASE’13]
Galileo	=	cop.Context({	
		name:	“Galileo”,	
		slice:	“localization”	
});
exclusion(GPSAntenna,	Galileo);
Management
(Active)
Representation
Context Petri nets16
G
req(G)
act(G) Pr(¬G)
deac(G)
req(¬G)
Pr(G)
GPS
req(GPS)
act(GPS) Pr(¬GPS)
deac(GPS)
req(¬GPS)
Pr(GPS)
context
definition
context
activation
execution
engine
GPSAntenna	=	cop.Context({	
		name:	“GPS”,	
		slice:	“localization”	
});
[Cardozo, N., et al. Modeling and Analyzing Self-Adaptive Systems with Context Petri Nets. TASE’13]
Galileo	=	cop.Context({	
		name:	“Galileo”,	
		slice:	“localization”	
});
exclusion(GPSAntenna,	Galileo);
Management
(Active)
Representation
Context Petri nets16
G
req(G)
act(G) Pr(¬G)
deac(G)
req(¬G)
Pr(G)
GPS
req(GPS)
act(GPS) Pr(¬GPS)
deac(GPS)
req(¬GPS)
Pr(GPS)
@activate(GPS)
context
definition
context
activation
execution
engine
GPSAntenna	=	cop.Context({	
		name:	“GPS”,	
		slice:	“localization”	
});
[Cardozo, N., et al. Modeling and Analyzing Self-Adaptive Systems with Context Petri Nets. TASE’13]
Galileo	=	cop.Context({	
		name:	“Galileo”,	
		slice:	“localization”	
});
exclusion(GPSAntenna,	Galileo);
Management
(Active)
Representation
Context Petri nets16
G
req(G)
act(G) Pr(¬G)
deac(G)
req(¬G)
Pr(G)
GPS
req(GPS)
act(GPS) Pr(¬GPS)
deac(GPS)
req(¬GPS)
Pr(GPS)
@activate(GPS)
context
definition
context
activation
execution
engine
GPSAntenna	=	cop.Context({	
		name:	“GPS”,	
		slice:	“localization”	
});
[Cardozo, N., et al. Modeling and Analyzing Self-Adaptive Systems with Context Petri Nets. TASE’13]
Galileo	=	cop.Context({	
		name:	“Galileo”,	
		slice:	“localization”	
});
exclusion(GPSAntenna,	Galileo);
Management
(Active)
Representation
Context Petri nets16
G
req(G)
act(G) Pr(¬G)
deac(G)
req(¬G)
Pr(G)
GPS
req(GPS)
act(GPS) Pr(¬GPS)
deac(GPS)
req(¬GPS)
Pr(GPS)
@activate(GPS)
context
definition
context
activation
execution
engine
GPSAntenna	=	cop.Context({	
		name:	“GPS”,	
		slice:	“localization”	
});
[Cardozo, N., et al. Modeling and Analyzing Self-Adaptive Systems with Context Petri Nets. TASE’13]
Galileo	=	cop.Context({	
		name:	“Galileo”,	
		slice:	“localization”	
});
exclusion(GPSAntenna,	Galileo);
Management
(Active)
Representation
Context Petri nets16
G
req(G)
act(G) Pr(¬G)
deac(G)
req(¬G)
Pr(G)
GPS
req(GPS)
act(GPS) Pr(¬GPS)
deac(GPS)
req(¬GPS)
Pr(GPS)
@activate(GPS)
context
definition
context
activation
execution
engine
GPSAntenna	=	cop.Context({	
		name:	“GPS”,	
		slice:	“localization”	
});
[Cardozo, N., et al. Modeling and Analyzing Self-Adaptive Systems with Context Petri Nets. TASE’13]
Galileo	=	cop.Context({	
		name:	“Galileo”,	
		slice:	“localization”	
});
exclusion(GPSAntenna,	Galileo);
Management
(Active)
Representation
Context Petri nets16
G
req(G)
act(G) Pr(¬G)
deac(G)
req(¬G)
Pr(G)
GPS
req(GPS)
act(GPS) Pr(¬GPS)
deac(GPS)
req(¬GPS)
Pr(GPS)
@activate(GPS) @activate(G)
context
definition
context
activation
execution
engine
GPSAntenna	=	cop.Context({	
		name:	“GPS”,	
		slice:	“localization”	
});
[Cardozo, N., et al. Modeling and Analyzing Self-Adaptive Systems with Context Petri Nets. TASE’13]
Galileo	=	cop.Context({	
		name:	“Galileo”,	
		slice:	“localization”	
});
exclusion(GPSAntenna,	Galileo);
Management
(Active)
Representation
Context Petri nets16
G
req(G)
act(G) Pr(¬G)
deac(G)
req(¬G)
Pr(G)
GPS
req(GPS)
act(GPS) Pr(¬GPS)
deac(GPS)
req(¬GPS)
Pr(GPS)
@activate(GPS) @activate(G)
context
definition
context
activation
execution
engine
GPSAntenna	=	cop.Context({	
		name:	“GPS”,	
		slice:	“localization”	
});
[Cardozo, N., et al. Modeling and Analyzing Self-Adaptive Systems with Context Petri Nets. TASE’13]
Galileo	=	cop.Context({	
		name:	“Galileo”,	
		slice:	“localization”	
});
exclusion(GPSAntenna,	Galileo);
Management
(Active)
Representation
Context Petri nets16
G
req(G)
act(G) Pr(¬G)
deac(G)
req(¬G)
Pr(G)
GPS
req(GPS)
act(GPS) Pr(¬GPS)
deac(GPS)
req(¬GPS)
Pr(GPS)
@activate(GPS) @activate(G)
context
definition
context
activation
execution
engine
GPSAntenna	=	cop.Context({	
		name:	“GPS”,	
		slice:	“localization”	
});
[Cardozo, N., et al. Modeling and Analyzing Self-Adaptive Systems with Context Petri Nets. TASE’13]
Galileo	=	cop.Context({	
		name:	“Galileo”,	
		slice:	“localization”	
});
@deactivate(GPS)
exclusion(GPSAntenna,	Galileo);
Management
(Active)
Representation
Context Petri nets16
G
req(G)
act(G) Pr(¬G)
deac(G)
req(¬G)
Pr(G)
GPS
req(GPS)
act(GPS) Pr(¬GPS)
deac(GPS)
req(¬GPS)
Pr(GPS)
@activate(GPS) @activate(G)
context
definition
context
activation
execution
engine
GPSAntenna	=	cop.Context({	
		name:	“GPS”,	
		slice:	“localization”	
});
@activate(G)
[Cardozo, N., et al. Modeling and Analyzing Self-Adaptive Systems with Context Petri Nets. TASE’13]
Galileo	=	cop.Context({	
		name:	“Galileo”,	
		slice:	“localization”	
});
@deactivate(GPS)
exclusion(GPSAntenna,	Galileo);
Management
(Active)
Representation
Consistency17
B
req(B)
act(B) Pr(¬B) deac(B)
req(¬B)
Pr(B)
A
req(A)
act(A) Pr(¬A) deac(A)
req(¬A)
Pr(A)
deac(B)
deac(A)
causality(A,	B);	
causality(B,	A);
[Cardozo, N., et al. Semantics for Consistent Activation in Context-Oriented Systems. JIST (58). 2015]
Management
Consistency17
B
req(B)
act(B) Pr(¬B) deac(B)
req(¬B)
Pr(B)
A
req(A)
act(A) Pr(¬A) deac(A)
req(¬A)
Pr(A)
deac(B)
deac(A)
causality(A,	B);	
causality(B,	A);
[Cardozo, N., et al. Semantics for Consistent Activation in Context-Oriented Systems. JIST (58). 2015]
Management
18
Coherence
Validating adaptations make sense
together
Base	behavior
displayPosition:	function()	{	
		catch(NoPosition)	{	
			console.log(“No	position	available”);	
		}	
		var	pos	=	this.getPosition();	
		console.log(“long:	“	+	pos[0]	+	“lat:	“	+	pos[1]);	
}
Galileo	adaptation
Coherence19
GalileoOps	=	Trait({	
		getPosition:	function()	{	
				return	{		
						posx:	galileo.latitude(),		
						posy:	galileo.longitude()}	
				};	
});	
Galileo.adapt(PositionningService,	GalileoOps);
(										)
Vendor1
Management
Base	behavior
displayPosition:	function()	{	
		catch(NoPosition)	{	
			console.log(“No	position	available”);	
		}	
		var	pos	=	this.getPosition();	
		console.log(“long:	“	+	pos[0]	+	“lat:	“	+	pos[1]);	
}
Galileo	adaptation
Coherence19
GalileoOps	=	Trait({	
		getPosition:	function()	{	
				return	{		
						posx:	galileo.latitude(),		
						posy:	galileo.longitude()}	
				};	
});	
Galileo.adapt(PositionningService,	GalileoOps);
(										)
Vendor1
Management
Base	behavior
displayPosition:	function()	{	
		catch(NoPosition)	{	
			console.log(“No	position	available”);	
		}	
		var	pos	=	this.getPosition();	
		console.log(“long:	“	+	pos[0]	+	“lat:	“	+	pos[1]);	
}
Galileo	adaptation
Coherence19
GalileoOps	=	Trait({	
		getPosition:	function()	{	
				return	{		
						posx:	galileo.latitude(),		
						posy:	galileo.longitude()}	
				};	
});	
Galileo.adapt(PositionningService,	GalileoOps);
(										)
Vendor1
Wrong	API	usage
Management
Base	behavior
displayPosition:	function()	{	
		catch(NoPosition)	{	
			console.log(“No	position	available”);	
		}	
		var	pos	=	this.getPosition();	
		console.log(“long:	“	+	pos[0]	+	“lat:	“	+	pos[1]);	
}
GPSAntenna	adaptation
Galileo	adaptation Privacy	adaptation
Coherence19
PrivateOps	=	Trait({	
		displayPosition:	function()	{	
				this.proceed();	
				throw	new	Error(“Position	undisclosed");	
});	
Privacy.adapt(PositionningService,	PrivateOps);
GalileoOps	=	Trait({	
		getPosition:	function()	{	
				return	{		
						posx:	galileo.latitude(),		
						posy:	galileo.longitude()}	
				};	
});	
Galileo.adapt(PositionningService,	GalileoOps);
(										) (					)
GPSAntennaOps	=	Trait({	
				getPosition:	function()	{	
				var	posx	=	gps.getX();	
				var	posy	=	gps.getY();	
				return	[posx,	posy];	
		}	
});	
GPSAntenna.adapt(PositioningService,	GPSAntennaOps);
Vendor1 Vendor3
Wrong	API	usage
Management
Base	behavior
displayPosition:	function()	{	
		catch(NoPosition)	{	
			console.log(“No	position	available”);	
		}	
		var	pos	=	this.getPosition();	
		console.log(“long:	“	+	pos[0]	+	“lat:	“	+	pos[1]);	
}
GPSAntenna	adaptation
Galileo	adaptation Privacy	adaptation
Coherence19
PrivateOps	=	Trait({	
		displayPosition:	function()	{	
				this.proceed();	
				throw	new	Error(“Position	undisclosed");	
});	
Privacy.adapt(PositionningService,	PrivateOps);
GalileoOps	=	Trait({	
		getPosition:	function()	{	
				return	{		
						posx:	galileo.latitude(),		
						posy:	galileo.longitude()}	
				};	
});	
Galileo.adapt(PositionningService,	GalileoOps);
(										) (					)
GPSAntennaOps	=	Trait({	
				getPosition:	function()	{	
				var	posx	=	gps.getX();	
				var	posy	=	gps.getY();	
				return	[posx,	posy];	
		}	
});	
GPSAntenna.adapt(PositioningService,	GPSAntennaOps);
Vendor1 Vendor3
Wrong	API	usage
Management
Base	behavior
displayPosition:	function()	{	
		catch(NoPosition)	{	
			console.log(“No	position	available”);	
		}	
		var	pos	=	this.getPosition();	
		console.log(“long:	“	+	pos[0]	+	“lat:	“	+	pos[1]);	
}
GPSAntenna	adaptation
Galileo	adaptation Privacy	adaptation
Coherence19
PrivateOps	=	Trait({	
		displayPosition:	function()	{	
				this.proceed();	
				throw	new	Error(“Position	undisclosed");	
});	
Privacy.adapt(PositionningService,	PrivateOps);
GalileoOps	=	Trait({	
		getPosition:	function()	{	
				return	{		
						posx:	galileo.latitude(),		
						posy:	galileo.longitude()}	
				};	
});	
Galileo.adapt(PositionningService,	GalileoOps);
Security	break
(										) (					)
GPSAntennaOps	=	Trait({	
				getPosition:	function()	{	
				var	posx	=	gps.getX();	
				var	posy	=	gps.getY();	
				return	[posx,	posy];	
		}	
});	
GPSAntenna.adapt(PositioningService,	GPSAntennaOps);
Vendor1 Vendor3
Wrong	API	usage
Management
Coherence20
function	main()	{	
	 .	.	.		 	 //	get	user	info	and	configuration	
	 Galileo.activate([GPSAntenna],	‘strict);	
	 console.log(“Display	position?	[y/n]”);	
	 if(readLine()	==	“yes”)	{	
	 	 var	pos	=	this.getPosition();	
	 	 this.displayPosition(pos);	
}
[Cardozo et al. Runtime validation of behavioral adaptations. COP’14]
Management
Coherence20
(format "Display position? [y/n]")
(equal (read) "y")
(defvar pos
(get-position *user*))
(display-position pos)
!!! car called on object
(format "Display position? [y/n]")
(equal (read) "y")
(defvar pos
(get-position *user*))
(display-position pos)
function	main()	{	
	 .	.	.		 	 //	get	user	info	and	configuration	
	 Galileo.activate([GPSAntenna],	‘strict);	
	 console.log(“Display	position?	[y/n]”);	
	 if(readLine()	==	“yes”)	{	
	 	 var	pos	=	this.getPosition();	
	 	 this.displayPosition(pos);	
}
[Cardozo et al. Runtime validation of behavioral adaptations. COP’14]
Management
Coherence20
(format "Display position? [y/n]")
(equal (read) "y")
(defvar pos
(get-position *user*))
(display-position pos)
!!! car called on object
(format "Display position? [y/n]")
(equal (read) "y")
(defvar pos
(get-position *user*))
(display-position pos)
function	main()	{	
	 .	.	.		 	 //	get	user	info	and	configuration	
	 Galileo.activate([GPSAntenna],	‘strict);	
	 console.log(“Display	position?	[y/n]”);	
	 if(readLine()	==	“yes”)	{	
	 	 var	pos	=	this.getPosition();	
	 	 this.displayPosition(pos);	
}
(format "Display position? [y/n]")
(equal (read) "y")
(defvar pos
(get-position *user*))
(display-position pos)
!!! car called on object
(format "Display position? [y/n]")
(equal (read) "y")
(defvar pos
(get-position *user*))
(display-position pos)
[Cardozo et al. Runtime validation of behavioral adaptations. COP’14]
Management
Measuring adaptivity
21
Diversity22
PrivateOps	=	Trait({	
		displayPosition:	function()	{	
				this.proceed();	
				throw	new	Error(“Position	undisclosed");	
});	
Privacy.adapt(PositionningService,	PrivateOps);
GalileoOps	=	Trait({	
		getPosition:	function()	{	
				return	{		
						posx:	galileo.latitude(),		
						posy:	galileo.longitude()};	
				};	
});	
Galileo.adapt(PositionningService,	GalileoOps);
(with-context	(@galileo+europe)	
	 (defmethod	get-position	((user	@person))	
	 	 (setf	(x-pos	loc)	(lat	*galileo*	user))		
	 	 (setf	(y-pos	loc)	(long	*galileo*	user))		
	 	 loc))
• How to use multiple
implementations to get the best
QoS for an adapting system?
• How different are adaptation
implementations?
[Lewis et al. It's Good to Be Different: Diversity, Heterogeneity, and Dynamics in Collective Systems. SASOW’14]
Diversity22
PrivateOps	=	Trait({	
		displayPosition:	function()	{	
				this.proceed();	
				throw	new	Error(“Position	undisclosed");	
});	
Privacy.adapt(PositionningService,	PrivateOps);
GalileoOps	=	Trait({	
		getPosition:	function()	{	
				return	{		
						posx:	galileo.latitude(),		
						posy:	galileo.longitude()};	
				};	
});	
Galileo.adapt(PositionningService,	GalileoOps);
(with-context	(@galileo+europe)	
	 (defmethod	get-position	((user	@person))	
	 	 (setf	(x-pos	loc)	(lat	*galileo*	user))		
	 	 (setf	(y-pos	loc)	(long	*galileo*	user))		
	 	 loc))
• How to use multiple
implementations to get the best
QoS for an adapting system?
• How different are adaptation
implementations?
[Lewis et al. It's Good to Be Different: Diversity, Heterogeneity, and Dynamics in Collective Systems. SASOW’14]
d(AST1,	AST2)
Using adaptations
23
Learning services24
compose(Service1,	Service2,	Service3,	Service4)
Learning services24
compose(Service1,	Service2,	Service3,	Service4)
Knowledge about services in the
network is required
What if components disappear
Learning services25
Service1Service2
Spontaneous
discovery of services
Discovery
Learning services25
Service1Service2
Spontaneous
discovery of services
Type2	
Outputs:	{	
		O21,	
O22,	
…	
}	
Inputs:	{	
		I21,	
I22,	
…	
}
Type1	
Outputs:	{	
		O11,	
O12,	
…	
}	
Inputs:	{	
		I11,	
I12,	
…	
}
Discovery
Learning services25
Service1Service2
Spontaneous
discovery of services
Type2	
Outputs:	{	
		O21,	
O22,	
…	
}	
Inputs:	{	
		I21,	
I22,	
…	
}
Type1	
Outputs:	{	
		O11,	
O12,	
…	
}	
Inputs:	{	
		I11,	
I12,	
…	
}
if(Outputs1	<	Inputs2)	then	compose(Service1,	Service2)
Discovery
Learning services25
Service1Service2
Spontaneous
discovery of services
Type2	
Outputs:	{	
		O21,	
O22,	
…	
}	
Inputs:	{	
		I21,	
I22,	
…	
}
Type1	
Outputs:	{	
		O11,	
O12,	
…	
}	
Inputs:	{	
		I11,	
I12,	
…	
}
if(Outputs1	<	Inputs2)	then	compose(Service1,	Service2)
when(Service3	of	Type2)	then	compose(Service1,	Service3)
Discovery
Learning services25
Service1Service2
Spontaneous
discovery of services
Type2	
Outputs:	{	
		O21,	
O22,	
…	
}	
Inputs:	{	
		I21,	
I22,	
…	
}
Type1	
Outputs:	{	
		O11,	
O12,	
…	
}	
Inputs:	{	
		I11,	
I12,	
…	
}
if(Outputs1	<	Inputs2)	then	compose(Service1,	Service2)
when(Service3	of	Type2)	then	compose(Service1,	Service3)
Discovery
push	Service1+Service2	
push	Service1+Service3
Learning services26
Mordor
Available Services:
1. Walking route
2. Sight impaired navigation
Home automation servicesResource servicesUser preference servicesNavigation services
3. Step free route
4. Guider tour
@ncardoz
What I do…27
✓ Programming model for adaptive systems
✓ Modularity, smartness, extensibility, conciseness, …
✓ Manage the increasing complexity
✓ Open and distributed systems
✓ Responsive to the environment
✓ Interact and influence each other
✓ Adaptation to unknown situations
✓ “Safe”
@ncardoz
What I do…27
Questions?
✓ Programming model for adaptive systems
✓ Modularity, smartness, extensibility, conciseness, …
✓ Manage the increasing complexity
✓ Open and distributed systems
✓ Responsive to the environment
✓ Interact and influence each other
✓ Adaptation to unknown situations
✓ “Safe”

More Related Content

Similar to Programming language techniques for adaptive software

Tamir Dresher - DotNet 7 What's new.pptx
Tamir Dresher - DotNet 7 What's new.pptxTamir Dresher - DotNet 7 What's new.pptx
Tamir Dresher - DotNet 7 What's new.pptx
Tamir Dresher
 
Reflected intelligence evolving self-learning data systems
Reflected intelligence  evolving self-learning data systemsReflected intelligence  evolving self-learning data systems
Reflected intelligence evolving self-learning data systems
Trey Grainger
 
Jump Start into Apache® Spark™ and Databricks
Jump Start into Apache® Spark™ and DatabricksJump Start into Apache® Spark™ and Databricks
Jump Start into Apache® Spark™ and Databricks
Databricks
 
The Flow of TensorFlow
The Flow of TensorFlowThe Flow of TensorFlow
The Flow of TensorFlow
Jeongkyu Shin
 
Deep learning with TensorFlow
Deep learning with TensorFlowDeep learning with TensorFlow
Deep learning with TensorFlow
Ndjido Ardo BAR
 
Data Science und Machine Learning im Kubernetes-Ökosystem
Data Science und Machine Learning im Kubernetes-ÖkosystemData Science und Machine Learning im Kubernetes-Ökosystem
Data Science und Machine Learning im Kubernetes-Ökosystem
inovex GmbH
 
CPaaS.io Y1 Review Meeting - Use Cases
CPaaS.io Y1 Review Meeting - Use CasesCPaaS.io Y1 Review Meeting - Use Cases
CPaaS.io Y1 Review Meeting - Use Cases
Stephan Haller
 
Xuedong Huang - Deep Learning and Intelligent Applications
Xuedong Huang - Deep Learning and Intelligent ApplicationsXuedong Huang - Deep Learning and Intelligent Applications
Xuedong Huang - Deep Learning and Intelligent Applications
Machine Learning Prague
 
Application Mapping & Techniques
Application Mapping & TechniquesApplication Mapping & Techniques
Application Mapping & Techniques
Steffi Li
 
The Most-Awaited Data Science Career Track Is Here!.pptx
The Most-Awaited Data Science Career Track Is Here!.pptxThe Most-Awaited Data Science Career Track Is Here!.pptx
The Most-Awaited Data Science Career Track Is Here!.pptx
SynergisticIT
 
TensorFrames: Google Tensorflow on Apache Spark
TensorFrames: Google Tensorflow on Apache SparkTensorFrames: Google Tensorflow on Apache Spark
TensorFrames: Google Tensorflow on Apache Spark
Databricks
 
Activeeon - Scale Beyond Limits
Activeeon - Scale Beyond LimitsActiveeon - Scale Beyond Limits
Activeeon - Scale Beyond Limits
Activeeon
 
What is TensorFlow? | Introduction to TensorFlow | TensorFlow Tutorial For Be...
What is TensorFlow? | Introduction to TensorFlow | TensorFlow Tutorial For Be...What is TensorFlow? | Introduction to TensorFlow | TensorFlow Tutorial For Be...
What is TensorFlow? | Introduction to TensorFlow | TensorFlow Tutorial For Be...
Simplilearn
 
Simplify Distributed TensorFlow Training for Fast Image Categorization at Sta...
Simplify Distributed TensorFlow Training for Fast Image Categorization at Sta...Simplify Distributed TensorFlow Training for Fast Image Categorization at Sta...
Simplify Distributed TensorFlow Training for Fast Image Categorization at Sta...
Databricks
 
LarKC Tutorial at ISWC 2009 - Introduction
LarKC Tutorial at ISWC 2009 - IntroductionLarKC Tutorial at ISWC 2009 - Introduction
LarKC Tutorial at ISWC 2009 - Introduction
LarKC
 
ML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.js
C4Media
 
A Practical Road to SaaS in Python
A Practical Road to SaaS in PythonA Practical Road to SaaS in Python
A Practical Road to SaaS in Python
C4Media
 
Tour de France Azure PaaS 6/7 Ajouter de l'intelligence
Tour de France Azure PaaS 6/7 Ajouter de l'intelligenceTour de France Azure PaaS 6/7 Ajouter de l'intelligence
Tour de France Azure PaaS 6/7 Ajouter de l'intelligence
Alex Danvy
 
Deep Dive into Apache MXNet on AWS
Deep Dive into Apache MXNet on AWSDeep Dive into Apache MXNet on AWS
Deep Dive into Apache MXNet on AWS
Kristana Kane
 
2015 03-28-eb-final
2015 03-28-eb-final2015 03-28-eb-final
2015 03-28-eb-final
Christopher Wilson
 

Similar to Programming language techniques for adaptive software (20)

Tamir Dresher - DotNet 7 What's new.pptx
Tamir Dresher - DotNet 7 What's new.pptxTamir Dresher - DotNet 7 What's new.pptx
Tamir Dresher - DotNet 7 What's new.pptx
 
Reflected intelligence evolving self-learning data systems
Reflected intelligence  evolving self-learning data systemsReflected intelligence  evolving self-learning data systems
Reflected intelligence evolving self-learning data systems
 
Jump Start into Apache® Spark™ and Databricks
Jump Start into Apache® Spark™ and DatabricksJump Start into Apache® Spark™ and Databricks
Jump Start into Apache® Spark™ and Databricks
 
The Flow of TensorFlow
The Flow of TensorFlowThe Flow of TensorFlow
The Flow of TensorFlow
 
Deep learning with TensorFlow
Deep learning with TensorFlowDeep learning with TensorFlow
Deep learning with TensorFlow
 
Data Science und Machine Learning im Kubernetes-Ökosystem
Data Science und Machine Learning im Kubernetes-ÖkosystemData Science und Machine Learning im Kubernetes-Ökosystem
Data Science und Machine Learning im Kubernetes-Ökosystem
 
CPaaS.io Y1 Review Meeting - Use Cases
CPaaS.io Y1 Review Meeting - Use CasesCPaaS.io Y1 Review Meeting - Use Cases
CPaaS.io Y1 Review Meeting - Use Cases
 
Xuedong Huang - Deep Learning and Intelligent Applications
Xuedong Huang - Deep Learning and Intelligent ApplicationsXuedong Huang - Deep Learning and Intelligent Applications
Xuedong Huang - Deep Learning and Intelligent Applications
 
Application Mapping & Techniques
Application Mapping & TechniquesApplication Mapping & Techniques
Application Mapping & Techniques
 
The Most-Awaited Data Science Career Track Is Here!.pptx
The Most-Awaited Data Science Career Track Is Here!.pptxThe Most-Awaited Data Science Career Track Is Here!.pptx
The Most-Awaited Data Science Career Track Is Here!.pptx
 
TensorFrames: Google Tensorflow on Apache Spark
TensorFrames: Google Tensorflow on Apache SparkTensorFrames: Google Tensorflow on Apache Spark
TensorFrames: Google Tensorflow on Apache Spark
 
Activeeon - Scale Beyond Limits
Activeeon - Scale Beyond LimitsActiveeon - Scale Beyond Limits
Activeeon - Scale Beyond Limits
 
What is TensorFlow? | Introduction to TensorFlow | TensorFlow Tutorial For Be...
What is TensorFlow? | Introduction to TensorFlow | TensorFlow Tutorial For Be...What is TensorFlow? | Introduction to TensorFlow | TensorFlow Tutorial For Be...
What is TensorFlow? | Introduction to TensorFlow | TensorFlow Tutorial For Be...
 
Simplify Distributed TensorFlow Training for Fast Image Categorization at Sta...
Simplify Distributed TensorFlow Training for Fast Image Categorization at Sta...Simplify Distributed TensorFlow Training for Fast Image Categorization at Sta...
Simplify Distributed TensorFlow Training for Fast Image Categorization at Sta...
 
LarKC Tutorial at ISWC 2009 - Introduction
LarKC Tutorial at ISWC 2009 - IntroductionLarKC Tutorial at ISWC 2009 - Introduction
LarKC Tutorial at ISWC 2009 - Introduction
 
ML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.js
 
A Practical Road to SaaS in Python
A Practical Road to SaaS in PythonA Practical Road to SaaS in Python
A Practical Road to SaaS in Python
 
Tour de France Azure PaaS 6/7 Ajouter de l'intelligence
Tour de France Azure PaaS 6/7 Ajouter de l'intelligenceTour de France Azure PaaS 6/7 Ajouter de l'intelligence
Tour de France Azure PaaS 6/7 Ajouter de l'intelligence
 
Deep Dive into Apache MXNet on AWS
Deep Dive into Apache MXNet on AWSDeep Dive into Apache MXNet on AWS
Deep Dive into Apache MXNet on AWS
 
2015 03-28-eb-final
2015 03-28-eb-final2015 03-28-eb-final
2015 03-28-eb-final
 

More from Universidad de los Andes

An expressive and modular layer activation mechanism for Context-Oriented Pro...
An expressive and modular layer activation mechanism for Context-Oriented Pro...An expressive and modular layer activation mechanism for Context-Oriented Pro...
An expressive and modular layer activation mechanism for Context-Oriented Pro...
Universidad de los Andes
 
[FTfJP23] Points-to Analysis for Context-oriented Javascript Programs
[FTfJP23] Points-to Analysis for Context-oriented Javascript Programs[FTfJP23] Points-to Analysis for Context-oriented Javascript Programs
[FTfJP23] Points-to Analysis for Context-oriented Javascript Programs
Universidad de los Andes
 
[JIST] Programming language implementations for context-oriented self-adaptiv...
[JIST] Programming language implementations for context-oriented self-adaptiv...[JIST] Programming language implementations for context-oriented self-adaptiv...
[JIST] Programming language implementations for context-oriented self-adaptiv...
Universidad de los Andes
 
[CAIN'23] Prevalence of Code Smells in Reinforcement Learning Projects
[CAIN'23] Prevalence of Code Smells in Reinforcement Learning Projects[CAIN'23] Prevalence of Code Smells in Reinforcement Learning Projects
[CAIN'23] Prevalence of Code Smells in Reinforcement Learning Projects
Universidad de los Andes
 
[CIbSE2023] Cross-language clone detection for Mobile Apps
[CIbSE2023] Cross-language clone detection for Mobile Apps[CIbSE2023] Cross-language clone detection for Mobile Apps
[CIbSE2023] Cross-language clone detection for Mobile Apps
Universidad de los Andes
 
Keeping Up! with LaTeX
Keeping Up! with LaTeXKeeping Up! with LaTeX
Keeping Up! with LaTeX
Universidad de los Andes
 
[JPDC,JCC@LMN22] Ad hoc systems Management and specification with distributed...
[JPDC,JCC@LMN22] Ad hoc systems Management and specification with distributed...[JPDC,JCC@LMN22] Ad hoc systems Management and specification with distributed...
[JPDC,JCC@LMN22] Ad hoc systems Management and specification with distributed...
Universidad de los Andes
 
[CCC'21] Evaluation of Work Stealing Algorithms
[CCC'21] Evaluation of Work Stealing Algorithms[CCC'21] Evaluation of Work Stealing Algorithms
[CCC'21] Evaluation of Work Stealing Algorithms
Universidad de los Andes
 
Generating Adaptations from the System Execution using Reinforcement Learning...
Generating Adaptations from the System Execution using Reinforcement Learning...Generating Adaptations from the System Execution using Reinforcement Learning...
Generating Adaptations from the System Execution using Reinforcement Learning...
Universidad de los Andes
 
Language Abstractions and Techniques for Developing Collective Adaptive Syste...
Language Abstractions and Techniques for Developing Collective Adaptive Syste...Language Abstractions and Techniques for Developing Collective Adaptive Syste...
Language Abstractions and Techniques for Developing Collective Adaptive Syste...
Universidad de los Andes
 
Does Neuron Coverage Matter for Deep Reinforcement Learning? A preliminary study
Does Neuron Coverage Matter for Deep Reinforcement Learning? A preliminary studyDoes Neuron Coverage Matter for Deep Reinforcement Learning? A preliminary study
Does Neuron Coverage Matter for Deep Reinforcement Learning? A preliminary study
Universidad de los Andes
 
Learning run-time composition of interacting adaptations
Learning run-time composition of interacting adaptationsLearning run-time composition of interacting adaptations
Learning run-time composition of interacting adaptations
Universidad de los Andes
 
Distributed context Petri nets
Distributed context Petri netsDistributed context Petri nets
Distributed context Petri nets
Universidad de los Andes
 
CQL: declarative language for context activation
CQL: declarative language for context activationCQL: declarative language for context activation
CQL: declarative language for context activation
Universidad de los Andes
 
Generating software adaptations using machine learning
Generating software adaptations using machine learningGenerating software adaptations using machine learning
Generating software adaptations using machine learning
Universidad de los Andes
 
[Bachelor_project] Asignación de exámenes finales
[Bachelor_project] Asignación de exámenes finales[Bachelor_project] Asignación de exámenes finales
[Bachelor_project] Asignación de exámenes finales
Universidad de los Andes
 
Peace COrP: Learning to solve conflicts between contexts
Peace COrP: Learning to solve conflicts between contextsPeace COrP: Learning to solve conflicts between contexts
Peace COrP: Learning to solve conflicts between contexts
Universidad de los Andes
 
Emergent Software Services
Emergent Software ServicesEmergent Software Services
Emergent Software Services
Universidad de los Andes
 

More from Universidad de los Andes (18)

An expressive and modular layer activation mechanism for Context-Oriented Pro...
An expressive and modular layer activation mechanism for Context-Oriented Pro...An expressive and modular layer activation mechanism for Context-Oriented Pro...
An expressive and modular layer activation mechanism for Context-Oriented Pro...
 
[FTfJP23] Points-to Analysis for Context-oriented Javascript Programs
[FTfJP23] Points-to Analysis for Context-oriented Javascript Programs[FTfJP23] Points-to Analysis for Context-oriented Javascript Programs
[FTfJP23] Points-to Analysis for Context-oriented Javascript Programs
 
[JIST] Programming language implementations for context-oriented self-adaptiv...
[JIST] Programming language implementations for context-oriented self-adaptiv...[JIST] Programming language implementations for context-oriented self-adaptiv...
[JIST] Programming language implementations for context-oriented self-adaptiv...
 
[CAIN'23] Prevalence of Code Smells in Reinforcement Learning Projects
[CAIN'23] Prevalence of Code Smells in Reinforcement Learning Projects[CAIN'23] Prevalence of Code Smells in Reinforcement Learning Projects
[CAIN'23] Prevalence of Code Smells in Reinforcement Learning Projects
 
[CIbSE2023] Cross-language clone detection for Mobile Apps
[CIbSE2023] Cross-language clone detection for Mobile Apps[CIbSE2023] Cross-language clone detection for Mobile Apps
[CIbSE2023] Cross-language clone detection for Mobile Apps
 
Keeping Up! with LaTeX
Keeping Up! with LaTeXKeeping Up! with LaTeX
Keeping Up! with LaTeX
 
[JPDC,JCC@LMN22] Ad hoc systems Management and specification with distributed...
[JPDC,JCC@LMN22] Ad hoc systems Management and specification with distributed...[JPDC,JCC@LMN22] Ad hoc systems Management and specification with distributed...
[JPDC,JCC@LMN22] Ad hoc systems Management and specification with distributed...
 
[CCC'21] Evaluation of Work Stealing Algorithms
[CCC'21] Evaluation of Work Stealing Algorithms[CCC'21] Evaluation of Work Stealing Algorithms
[CCC'21] Evaluation of Work Stealing Algorithms
 
Generating Adaptations from the System Execution using Reinforcement Learning...
Generating Adaptations from the System Execution using Reinforcement Learning...Generating Adaptations from the System Execution using Reinforcement Learning...
Generating Adaptations from the System Execution using Reinforcement Learning...
 
Language Abstractions and Techniques for Developing Collective Adaptive Syste...
Language Abstractions and Techniques for Developing Collective Adaptive Syste...Language Abstractions and Techniques for Developing Collective Adaptive Syste...
Language Abstractions and Techniques for Developing Collective Adaptive Syste...
 
Does Neuron Coverage Matter for Deep Reinforcement Learning? A preliminary study
Does Neuron Coverage Matter for Deep Reinforcement Learning? A preliminary studyDoes Neuron Coverage Matter for Deep Reinforcement Learning? A preliminary study
Does Neuron Coverage Matter for Deep Reinforcement Learning? A preliminary study
 
Learning run-time composition of interacting adaptations
Learning run-time composition of interacting adaptationsLearning run-time composition of interacting adaptations
Learning run-time composition of interacting adaptations
 
Distributed context Petri nets
Distributed context Petri netsDistributed context Petri nets
Distributed context Petri nets
 
CQL: declarative language for context activation
CQL: declarative language for context activationCQL: declarative language for context activation
CQL: declarative language for context activation
 
Generating software adaptations using machine learning
Generating software adaptations using machine learningGenerating software adaptations using machine learning
Generating software adaptations using machine learning
 
[Bachelor_project] Asignación de exámenes finales
[Bachelor_project] Asignación de exámenes finales[Bachelor_project] Asignación de exámenes finales
[Bachelor_project] Asignación de exámenes finales
 
Peace COrP: Learning to solve conflicts between contexts
Peace COrP: Learning to solve conflicts between contextsPeace COrP: Learning to solve conflicts between contexts
Peace COrP: Learning to solve conflicts between contexts
 
Emergent Software Services
Emergent Software ServicesEmergent Software Services
Emergent Software Services
 

Recently uploaded

Supporting (UKRI) OA monographs at Salford.pptx
Supporting (UKRI) OA monographs at Salford.pptxSupporting (UKRI) OA monographs at Salford.pptx
Supporting (UKRI) OA monographs at Salford.pptx
Jisc
 
South African Journal of Science: Writing with integrity workshop (2024)
South African Journal of Science: Writing with integrity workshop (2024)South African Journal of Science: Writing with integrity workshop (2024)
South African Journal of Science: Writing with integrity workshop (2024)
Academy of Science of South Africa
 
Model Attribute Check Company Auto Property
Model Attribute  Check Company Auto PropertyModel Attribute  Check Company Auto Property
Model Attribute Check Company Auto Property
Celine George
 
CACJapan - GROUP Presentation 1- Wk 4.pdf
CACJapan - GROUP Presentation 1- Wk 4.pdfCACJapan - GROUP Presentation 1- Wk 4.pdf
CACJapan - GROUP Presentation 1- Wk 4.pdf
camakaiclarkmusic
 
Chapter 4 - Islamic Financial Institutions in Malaysia.pptx
Chapter 4 - Islamic Financial Institutions in Malaysia.pptxChapter 4 - Islamic Financial Institutions in Malaysia.pptx
Chapter 4 - Islamic Financial Institutions in Malaysia.pptx
Mohd Adib Abd Muin, Senior Lecturer at Universiti Utara Malaysia
 
Pride Month Slides 2024 David Douglas School District
Pride Month Slides 2024 David Douglas School DistrictPride Month Slides 2024 David Douglas School District
Pride Month Slides 2024 David Douglas School District
David Douglas School District
 
Francesca Gottschalk - How can education support child empowerment.pptx
Francesca Gottschalk - How can education support child empowerment.pptxFrancesca Gottschalk - How can education support child empowerment.pptx
Francesca Gottschalk - How can education support child empowerment.pptx
EduSkills OECD
 
"Protectable subject matters, Protection in biotechnology, Protection of othe...
"Protectable subject matters, Protection in biotechnology, Protection of othe..."Protectable subject matters, Protection in biotechnology, Protection of othe...
"Protectable subject matters, Protection in biotechnology, Protection of othe...
SACHIN R KONDAGURI
 
2024.06.01 Introducing a competency framework for languag learning materials ...
2024.06.01 Introducing a competency framework for languag learning materials ...2024.06.01 Introducing a competency framework for languag learning materials ...
2024.06.01 Introducing a competency framework for languag learning materials ...
Sandy Millin
 
BÀI TẬP BỔ TRỢ TIẾNG ANH GLOBAL SUCCESS LỚP 3 - CẢ NĂM (CÓ FILE NGHE VÀ ĐÁP Á...
BÀI TẬP BỔ TRỢ TIẾNG ANH GLOBAL SUCCESS LỚP 3 - CẢ NĂM (CÓ FILE NGHE VÀ ĐÁP Á...BÀI TẬP BỔ TRỢ TIẾNG ANH GLOBAL SUCCESS LỚP 3 - CẢ NĂM (CÓ FILE NGHE VÀ ĐÁP Á...
BÀI TẬP BỔ TRỢ TIẾNG ANH GLOBAL SUCCESS LỚP 3 - CẢ NĂM (CÓ FILE NGHE VÀ ĐÁP Á...
Nguyen Thanh Tu Collection
 
The Diamond Necklace by Guy De Maupassant.pptx
The Diamond Necklace by Guy De Maupassant.pptxThe Diamond Necklace by Guy De Maupassant.pptx
The Diamond Necklace by Guy De Maupassant.pptx
DhatriParmar
 
The basics of sentences session 5pptx.pptx
The basics of sentences session 5pptx.pptxThe basics of sentences session 5pptx.pptx
The basics of sentences session 5pptx.pptx
heathfieldcps1
 
Best Digital Marketing Institute In NOIDA
Best Digital Marketing Institute In NOIDABest Digital Marketing Institute In NOIDA
Best Digital Marketing Institute In NOIDA
deeptiverma2406
 
S1-Introduction-Biopesticides in ICM.pptx
S1-Introduction-Biopesticides in ICM.pptxS1-Introduction-Biopesticides in ICM.pptx
S1-Introduction-Biopesticides in ICM.pptx
tarandeep35
 
Natural birth techniques - Mrs.Akanksha Trivedi Rama University
Natural birth techniques - Mrs.Akanksha Trivedi Rama UniversityNatural birth techniques - Mrs.Akanksha Trivedi Rama University
Natural birth techniques - Mrs.Akanksha Trivedi Rama University
Akanksha trivedi rama nursing college kanpur.
 
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
MysoreMuleSoftMeetup
 
Executive Directors Chat Leveraging AI for Diversity, Equity, and Inclusion
Executive Directors Chat  Leveraging AI for Diversity, Equity, and InclusionExecutive Directors Chat  Leveraging AI for Diversity, Equity, and Inclusion
Executive Directors Chat Leveraging AI for Diversity, Equity, and Inclusion
TechSoup
 
June 3, 2024 Anti-Semitism Letter Sent to MIT President Kornbluth and MIT Cor...
June 3, 2024 Anti-Semitism Letter Sent to MIT President Kornbluth and MIT Cor...June 3, 2024 Anti-Semitism Letter Sent to MIT President Kornbluth and MIT Cor...
June 3, 2024 Anti-Semitism Letter Sent to MIT President Kornbluth and MIT Cor...
Levi Shapiro
 
Azure Interview Questions and Answers PDF By ScholarHat
Azure Interview Questions and Answers PDF By ScholarHatAzure Interview Questions and Answers PDF By ScholarHat
Azure Interview Questions and Answers PDF By ScholarHat
Scholarhat
 
Unit 2- Research Aptitude (UGC NET Paper I).pdf
Unit 2- Research Aptitude (UGC NET Paper I).pdfUnit 2- Research Aptitude (UGC NET Paper I).pdf
Unit 2- Research Aptitude (UGC NET Paper I).pdf
Thiyagu K
 

Recently uploaded (20)

Supporting (UKRI) OA monographs at Salford.pptx
Supporting (UKRI) OA monographs at Salford.pptxSupporting (UKRI) OA monographs at Salford.pptx
Supporting (UKRI) OA monographs at Salford.pptx
 
South African Journal of Science: Writing with integrity workshop (2024)
South African Journal of Science: Writing with integrity workshop (2024)South African Journal of Science: Writing with integrity workshop (2024)
South African Journal of Science: Writing with integrity workshop (2024)
 
Model Attribute Check Company Auto Property
Model Attribute  Check Company Auto PropertyModel Attribute  Check Company Auto Property
Model Attribute Check Company Auto Property
 
CACJapan - GROUP Presentation 1- Wk 4.pdf
CACJapan - GROUP Presentation 1- Wk 4.pdfCACJapan - GROUP Presentation 1- Wk 4.pdf
CACJapan - GROUP Presentation 1- Wk 4.pdf
 
Chapter 4 - Islamic Financial Institutions in Malaysia.pptx
Chapter 4 - Islamic Financial Institutions in Malaysia.pptxChapter 4 - Islamic Financial Institutions in Malaysia.pptx
Chapter 4 - Islamic Financial Institutions in Malaysia.pptx
 
Pride Month Slides 2024 David Douglas School District
Pride Month Slides 2024 David Douglas School DistrictPride Month Slides 2024 David Douglas School District
Pride Month Slides 2024 David Douglas School District
 
Francesca Gottschalk - How can education support child empowerment.pptx
Francesca Gottschalk - How can education support child empowerment.pptxFrancesca Gottschalk - How can education support child empowerment.pptx
Francesca Gottschalk - How can education support child empowerment.pptx
 
"Protectable subject matters, Protection in biotechnology, Protection of othe...
"Protectable subject matters, Protection in biotechnology, Protection of othe..."Protectable subject matters, Protection in biotechnology, Protection of othe...
"Protectable subject matters, Protection in biotechnology, Protection of othe...
 
2024.06.01 Introducing a competency framework for languag learning materials ...
2024.06.01 Introducing a competency framework for languag learning materials ...2024.06.01 Introducing a competency framework for languag learning materials ...
2024.06.01 Introducing a competency framework for languag learning materials ...
 
BÀI TẬP BỔ TRỢ TIẾNG ANH GLOBAL SUCCESS LỚP 3 - CẢ NĂM (CÓ FILE NGHE VÀ ĐÁP Á...
BÀI TẬP BỔ TRỢ TIẾNG ANH GLOBAL SUCCESS LỚP 3 - CẢ NĂM (CÓ FILE NGHE VÀ ĐÁP Á...BÀI TẬP BỔ TRỢ TIẾNG ANH GLOBAL SUCCESS LỚP 3 - CẢ NĂM (CÓ FILE NGHE VÀ ĐÁP Á...
BÀI TẬP BỔ TRỢ TIẾNG ANH GLOBAL SUCCESS LỚP 3 - CẢ NĂM (CÓ FILE NGHE VÀ ĐÁP Á...
 
The Diamond Necklace by Guy De Maupassant.pptx
The Diamond Necklace by Guy De Maupassant.pptxThe Diamond Necklace by Guy De Maupassant.pptx
The Diamond Necklace by Guy De Maupassant.pptx
 
The basics of sentences session 5pptx.pptx
The basics of sentences session 5pptx.pptxThe basics of sentences session 5pptx.pptx
The basics of sentences session 5pptx.pptx
 
Best Digital Marketing Institute In NOIDA
Best Digital Marketing Institute In NOIDABest Digital Marketing Institute In NOIDA
Best Digital Marketing Institute In NOIDA
 
S1-Introduction-Biopesticides in ICM.pptx
S1-Introduction-Biopesticides in ICM.pptxS1-Introduction-Biopesticides in ICM.pptx
S1-Introduction-Biopesticides in ICM.pptx
 
Natural birth techniques - Mrs.Akanksha Trivedi Rama University
Natural birth techniques - Mrs.Akanksha Trivedi Rama UniversityNatural birth techniques - Mrs.Akanksha Trivedi Rama University
Natural birth techniques - Mrs.Akanksha Trivedi Rama University
 
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
Mule 4.6 & Java 17 Upgrade | MuleSoft Mysore Meetup #46
 
Executive Directors Chat Leveraging AI for Diversity, Equity, and Inclusion
Executive Directors Chat  Leveraging AI for Diversity, Equity, and InclusionExecutive Directors Chat  Leveraging AI for Diversity, Equity, and Inclusion
Executive Directors Chat Leveraging AI for Diversity, Equity, and Inclusion
 
June 3, 2024 Anti-Semitism Letter Sent to MIT President Kornbluth and MIT Cor...
June 3, 2024 Anti-Semitism Letter Sent to MIT President Kornbluth and MIT Cor...June 3, 2024 Anti-Semitism Letter Sent to MIT President Kornbluth and MIT Cor...
June 3, 2024 Anti-Semitism Letter Sent to MIT President Kornbluth and MIT Cor...
 
Azure Interview Questions and Answers PDF By ScholarHat
Azure Interview Questions and Answers PDF By ScholarHatAzure Interview Questions and Answers PDF By ScholarHat
Azure Interview Questions and Answers PDF By ScholarHat
 
Unit 2- Research Aptitude (UGC NET Paper I).pdf
Unit 2- Research Aptitude (UGC NET Paper I).pdfUnit 2- Research Aptitude (UGC NET Paper I).pdf
Unit 2- Research Aptitude (UGC NET Paper I).pdf
 

Programming language techniques for adaptive software