next up previous
Next: Reflective Languages Up: Computational Reflection Previous: Reification

  
Reflective Architectures

In this Section we briefly summarize some of the drawbacks of existent reflective architectures, that have motivated the creation of Guaranį. Open C++ [7,8] and CLOS [16] collapse all the meta-level processing in a single monolithic meta-object. However, there are situations where several mechanisms related to independent requirements have to be combined to serve a single object. The systems above encourage the all-in-one approach for the implementation of these mechanisms in the meta-level, creating objects that are complex and hard to adapt. Ideally, we would like to have a reflective architecture that would allow developers to create several smaller and very coherent objects linked by simple couplings. MetaXa [17] (formerly known as MetaJava), for example, allows multiple meta-objects to form of a linked list whose tail is the base-level object, but it lacks a coordination mechanism for allowing them to cooperate.

Apertos [40], MMRF [24,25], CodA [23] and Iguana [12] base their reflective architecture upon fine-grained coordinated meta-level objects. However, their meta-objects present different interfaces and interaction patterns, with tight coupling (interdependency). We believe this architecture complicates usage and composition of meta-objects. The drawback due to multiple interfaces can be weakened through the provision of a single narrow yet powerful meta-object interface. In this paper, we are going to present such a narrow interface that is easy to learn and simple to use, yet it supports mechanisms for easy composition and reconfiguration of meta-objects through the provision of a loosely coupling pattern.


next up previous
Next: Reflective Languages Up: Computational Reflection Previous: Reification
contact the authors