SlideShare a Scribd company logo
1 of 77
Download to read offline
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.pptxTamir 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 systemsTrey 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 DatabricksDatabricks
 
The Flow of TensorFlow
The Flow of TensorFlowThe Flow of TensorFlow
The Flow of TensorFlowJeongkyu Shin
 
Deep learning with TensorFlow
Deep learning with TensorFlowDeep learning with TensorFlow
Deep learning with TensorFlowNdjido 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-Ökosysteminovex 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 CasesStephan 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 ApplicationsMachine Learning Prague
 
Application Mapping & Techniques
Application Mapping & TechniquesApplication Mapping & Techniques
Application Mapping & TechniquesSteffi 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!.pptxSynergisticIT
 
TensorFrames: Google Tensorflow on Apache Spark
TensorFrames: Google Tensorflow on Apache SparkTensorFrames: Google Tensorflow on Apache Spark
TensorFrames: Google Tensorflow on Apache SparkDatabricks
 
Activeeon - Scale Beyond Limits
Activeeon - Scale Beyond LimitsActiveeon - Scale Beyond Limits
Activeeon - Scale Beyond LimitsActiveeon
 
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 - IntroductionLarKC
 
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.jsC4Media
 
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 PythonC4Media
 
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'intelligenceAlex 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 AWSKristana Kane
 

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 ProgramsUniversidad 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 ProjectsUniversidad 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 AppsUniversidad 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 AlgorithmsUniversidad 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 studyUniversidad 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 adaptationsUniversidad 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 activationUniversidad 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 learningUniversidad 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 finalesUniversidad 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 contextsUniversidad 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

Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingTechSoup
 
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdfQucHHunhnh
 
Key note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfKey note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfAdmir Softic
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxheathfieldcps1
 
Food Chain and Food Web (Ecosystem) EVS, B. Pharmacy 1st Year, Sem-II
Food Chain and Food Web (Ecosystem) EVS, B. Pharmacy 1st Year, Sem-IIFood Chain and Food Web (Ecosystem) EVS, B. Pharmacy 1st Year, Sem-II
Food Chain and Food Web (Ecosystem) EVS, B. Pharmacy 1st Year, Sem-IIShubhangi Sonawane
 
Python Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docxPython Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docxRamakrishna Reddy Bijjam
 
Z Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphZ Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphThiyagu K
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.pptRamjanShidvankar
 
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in DelhiRussian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhikauryashika82
 
Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibitjbellavia9
 
On National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsOn National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsMebane Rash
 
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptxMaritesTamaniVerdade
 
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactBeyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactPECB
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfciinovamais
 
ComPTIA Overview | Comptia Security+ Book SY0-701
ComPTIA Overview | Comptia Security+ Book SY0-701ComPTIA Overview | Comptia Security+ Book SY0-701
ComPTIA Overview | Comptia Security+ Book SY0-701bronxfugly43
 
Micro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfMicro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfPoh-Sun Goh
 
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...EduSkills OECD
 
Role Of Transgenic Animal In Target Validation-1.pptx
Role Of Transgenic Animal In Target Validation-1.pptxRole Of Transgenic Animal In Target Validation-1.pptx
Role Of Transgenic Animal In Target Validation-1.pptxNikitaBankoti2
 

Recently uploaded (20)

INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptxINDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy Consulting
 
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdf
 
Key note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfKey note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdf
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
 
Food Chain and Food Web (Ecosystem) EVS, B. Pharmacy 1st Year, Sem-II
Food Chain and Food Web (Ecosystem) EVS, B. Pharmacy 1st Year, Sem-IIFood Chain and Food Web (Ecosystem) EVS, B. Pharmacy 1st Year, Sem-II
Food Chain and Food Web (Ecosystem) EVS, B. Pharmacy 1st Year, Sem-II
 
Python Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docxPython Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docx
 
Z Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphZ Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot Graph
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.ppt
 
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in DelhiRussian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
 
Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024
 
Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibit
 
On National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsOn National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan Fellows
 
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
 
Beyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global ImpactBeyond the EU: DORA and NIS 2 Directive's Global Impact
Beyond the EU: DORA and NIS 2 Directive's Global Impact
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdf
 
ComPTIA Overview | Comptia Security+ Book SY0-701
ComPTIA Overview | Comptia Security+ Book SY0-701ComPTIA Overview | Comptia Security+ Book SY0-701
ComPTIA Overview | Comptia Security+ Book SY0-701
 
Micro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfMicro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdf
 
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
Presentation by Andreas Schleicher Tackling the School Absenteeism Crisis 30 ...
 
Role Of Transgenic Animal In Target Validation-1.pptx
Role Of Transgenic Animal In Target Validation-1.pptxRole Of Transgenic Animal In Target Validation-1.pptx
Role Of Transgenic Animal In Target Validation-1.pptx
 

Programming language techniques for adaptive software