next up previous
Next: The Meta-level Protocol of Up: Computational Reflection Previous: Reflective Languages

  
Transparency

In a reflective application, the base level implements the main functionality of an application, while the meta level is usually reserved for the implementation of management requirements, such as persistence [28,34], location transparency [26], replication [8,18], fault tolerance [1,2,9,10] and atomic actions [35,37]. Reflection has also been shown to be useful in the development of distributed systems [6,20,36,40,41] and for simplifying library protocols [38].

Persistence [28,34], for example, can be implemented through the interception of update operations sent to an object. The intercepted operations are sent to the meta-level where the object responsible for the persistence mechanism guarantees that changes made to the object are kept in stable storage. Transparency of locality [26] may be achieved by intercepting operations addressed to proxies of objects in other address spaces: meta-level objects in the caller's address space would forward operations to meta-level objects located in the callee's address space. Finally, the operation is performed and its result is sent back to the caller.

Reflective architectures can be used to create applications that attend to certain requirements and later evolve to comply with new requirements, added to or removed from its specification, depending on how their environment evolves. As an example, consider the case of an application whose objects are persistent but not replicated. Later, due to the requirement of availability, some of its objects have to become replicated. Persistence and replication, in a reflective architecture, can be implemented at the meta level of the architecture. The addition of these mechanisms can be attained with varied degrees of transparency, depending on the coupling and interception mechanisms offered by the architecture.

Being able to dynamically associate non-functional requirements to groups of objects of an application, independently of the types of these objects, favors transparency and adaptability, but may be costly in terms of performance.


next up previous
Next: The Meta-level Protocol of Up: Computational Reflection Previous: Reflective Languages
contact the authors