Enabling Technology

REFLECTION is a concept by which a component provides observation and control features of its own internal structure and behavior to the outside world. This means that a reflective component provides a metamodel of itself, including structural and behavioral aspects that can be customized by an external component. This metainformation is used as an input to perform appropriate actions for implementing non-functional properties (e.g. concerning fault-tolerance and security strategies), but also for the customisation of communication protocols. Reflective systems indeed distinguish the base-level in charge of the execution of the application software and the metalevel responsible for the implementation of observation and control software.

In object-oriented terms, the base-level is composed of objects, the metalevel is composed of metaobjects. The interaction between object and metaobject is performed by a MetaObject Protocol (MOP). The MOP implements reification (and introspection) features, but also intercession features to adapt the base-level behavior according to system requirements.

 

FRIENDS

The FRIENDS system is a distributed architecture based on MetaObject Protocols that enables non-functional mechanisms to be implemented at the metalevel. The use of reflective concepts is recursively used to address various non-functional requirements: fault tolerance by mean of several replication strategies, security by means of ciphering and authentication protocols, communication using atomic multicast protocols. Thank to its reflective architecture, FRIENDS provides separation of concerns between applications and mechanisms, but also between different mechanisms.

In the last version of the FRIENDS system, a specialized MOP was developed using open-compilers. This MOP enables interaction between CORBA objects to be intercepted and state information to be obtained at the metalevel for objects in both C++ and Java.

The advanced features of this MOP have been used to develop fault tolerance replication techniques as CORBA (meta)objects. The later can be reused dynamically and adapted according to the evolution of the system configuration and its environment. This approach is a significant step forward in the design and the implementation of fault tolerant systems with long life-time and changing dependability constraints.

The prototype runs on a network of Unix workstation on top of Orbacus.

 

 

Slides of the presentation at SRDS’2000,

The Symposium on Reliable Distributed Systems, 

Nürnberg, Germany — October 16-18, 2000