The Iguana Project
Distributed Systems Group
Department of Computer Science
Trinity College Dublin


The Iguana project is investigating the use of object-orientation, computational reflection, and metaobject protocols (MOPs) to support dynamic customisation of (system) software.

Keywords: reflection, metaobject protocol (MOP), open implementation, aspect-oriented programming, distributed object computing, CORBA, IIOP, TMA

Motivation

The goal of Iguana is to provide support for the construction of (system) software that can be dynamically (i.e., at runtime) customised to meet changing non-functional requirements (e.g., to implement different performance trade-offs or support different levels of fault tolerance or security.)

This kind of dynamic customisation is particularly important in the context of middleware such as database management systems, on-line transaction processing monitors, and distributed object request brokers. These systems are characterised by the need to support a range of end-user applications, each with different requirements, simultaneously and on behalf of different users. Dynamic customisation provides a means of tailoring the behaviour of the system to the needs of the current mix of applications and users at runtime.

One approach to achieving this kind of customisation is based on the use of computational reflection and, in the context of object-oriented programming, metaobject protocols.

Our research is proceeding along two fronts. On the one hand, we are developing the Iguana reflective programming model and implementing it for both C++ (Iguana/C++) and Java (Iguana/J). On the other hand, we are conducting a number of case studies concerning the use of reflection to support dynamic customisation of distributed object systems and telecommunications management applications.

Top of page

The Iguana reflective programming model

Iguana is a language-independent reflective programming model designed with support for dynamic customisation of system software as one of its main goals. Key features of the original Iguana model include:

  • Multiple, fine-grained MOPs: objects within a single program can use different object models;
  • Reification categories: programs can choose which object model features are to be reified;
  • MOP declaration: Iguana defines syntax for defining MOPs consisting of meta-level class and reification category declarations;
  • MOP selection: Iguana defines mechanisms for associating application objects with one or more MOPs;

For more details see [Gowing96].

Current work within the Iguana project is addressing:

  • the design of a revised (and somewhat simplified) model;
  • investigation of the semantics of subtyping and inheritance in the presence of reflection - especially when selective reification is used;
  • investigation of techniques to reduce the overheads associated with supporting dynamic customisation - especially the use of partial evaluation and dynamic code generation;
  • the implementation of the revised Iguana model for C++ and Java.

Top of page

Case Studies

In parallel to the development of Iguana, we are exploring the use of reflection in a number of case studies designed both to identify requirements on Iguana and, eventually, to serve as a test-bed for evaluating Iguana technology.

Dynamic customisation of distributed object systems

Of particular interest is the use of reflection to support dynamic customisation of distributed object systems. In particular, we are investigating the use of reflection to construct an Object Request Broker that can be dynamically adapted to meet different application requirements. Our first step in this direction is an implementation of IIOP that can be dynamically configured to support disconnected operation for mobile computing.

Telecommunications management applications

Another area of interest is the use of reflection in telecommunications management applications.

Aspect-oriented programming

Finally, we are exploring the use of reflection as a means of integrating different, and logically orthogonal, aspects of distributed programming - distribution model, persistence, synchronisation, atomicity - with application code. See [Dempsey97] for an overview.

Top of page

Acknowledgements

The Iguana project is partly supported by:

under Basic Research Grant SC/97/618

Top of page