This document discusses enabling runtime change through explicit meta-objects. It proposes a system called Albedo that makes meta-objects explicit to allow runtime reflection and change. Albedo supports both structural and behavioral meta-objects to intercept and modify execution events like method calls and object creation. These meta-objects can be composed and extended to provide flexible and reusable runtime reflection.
1. Run-Time Evolution
through Explicit
Meta-Objects
Jorge Ressia, Lukas Renggli, Tudor Gîrba,
Oscar Nierstrasz
Tuesday, October 5, 2010
To enable change at run-time, a system must be self-aware and be able to fully reflect on
itself.
2. Tuesday, October 5, 2010
To enable change at run-time, a system must be self-aware and be able to fully reflect on
itself.
8. Dynamic
Representation
Tuesday, October 5, 2010
We need to reflect on the dynamic representation of a program, that is, the operational
execution.
This is called Behavioral Reflection pioneered by Smith in the context of Lisp
9. Behavioral Reflection
Tuesday, October 5, 2010
Behavioral reflection provides a way to intercept and change the execution of a program. It is concerned with execution
events, i.e., method execution, message sends, or variable assignments.
10. Behavioral Reflection
S mith
1982
Tuesday, October 5, 2010
Behavioral reflection provides a way to intercept and change the execution of a program. It is concerned with execution
events, i.e., method execution, message sends, or variable assignments.
11. Message Send
Message Receive
Method Lookup
Object Creation
State Read/Write
Tuesday, October 5, 2010
14. Is that all?
Tuesday, October 5, 2010
It is not possible to foresee all potential reification that might be required at runtime.
15. What if we need a
new reification?
Tuesday, October 5, 2010
It is not possible to foresee all potential reification that might be required at runtime.
16. Thesis
To e n a b l e r u n t i m e
change we must reify
Meta-objects explicitely
Tuesday, October 5, 2010