Computational Reflection

I am actively working on computational reflection, and in its application to software engineering, distribution, security and compiler design.

I have been involved in most of the recent events related to reflection: Reflection 2001, WERS'01, EWRMA'00, OORaSE99.

In the sequel of the page I will describe in detail the projects currently under development.

Reflective Middleware

The main objective of RMI- and object-based middleware is to provide a convenient environment for the realization of distributed computations. In most cases, unfortunately, interaction policies in these middleware platforms are hardwired into the platform itself.
In this way, distributed algorithms must be exclusively embedded in the application code, breaking any separation of concerns between functional and nonfunctional code.
We can summarize these kinds of problems with current middleware platforms as follows:

  1. interaction policies are hidden from the programmer who cannot customize them (lack of adaptability)
  2. communication, synchronization, and tuning code is intertwined with application code (lack of separation of concerns);
  3. algorithms are scattered among several objects, thus forcing the programmer to explicitly coordinate their work (lack of global view).
A reflective approach can be considered as the glue to join together distributed and object-based programming and to fill gaps in their integration. Reflection provides a programming environment that exposes the implementation details of a system and allows the programmer to manipulate it. Moreover, a reflective approach permits one to easily separate interaction management from application code.
To address the above problems we have designed from scratch a novel reflective approach, called multi-channel reification model, that reifies and reflects directly on communications. This is a reflective model whose domain is not base-objects but rather communication among base-objects. This model has been realized by mChaRM, a reflective middleware written in Java. mChaRM is able to dynamically reify and modify multicast RMI with a minimal loss of performance with respect standard Java RMI.

Key Words: Reflection, Distributed Middleware, Reflective Middleware, Multicast Communication.

Collaboration:
Tokyo Institute of Technology, Prof. Shigeru Chiba.

Selected Publications

Developed Software

mChaRM: Home Page
Java Multicast RMI: Package

Security and Reflection

The main objective of this application of reflection consists of separating the security aspect from the rest of a system. Such an idea is based on the fact that the security is a non-functional feature with respect to the application behavior. The advantages due to such a separation are:

Computational reflection thanks to its properties (separation of concerns, transparency, and layerization) is the perfect glue to integrate a security module into an existing application.

At the moment we studied several different reflective approaches to security, and prototyped some different authorization policies with our reflective model (mChaRM).

Key Words: Reflection, Security, Authorization Policy.

Collaboration:
Florida Atlantic University, Prof. Eduardo B. Fernandez.

Selected Publications

Developed Software

At the moment, the authorization policies we have developed are part of the mChaRM project and distributed with it. However, you can download our first attempt of using reflection to separate them from the functional aspect of the application from this web-page.

Architectural Reflection

We have developed a new type of reflection whose domain is no more the computation but rather its high-level description. Architectural reflection is thought to allow in a simple way dynamic reconfiguration of computational system. The idea is to use at run-time the software architecture of the system, and by modifying the architecture dynamically, it is possible to reconfigure the entire system. Passing through the software architecture grants the validity and the soundness of each modification.

Key Words: Reflection, Software Architecture, Dynamic Reconfiguration.

Collaborations:
Università di Milano Bicocca, Prof. Francesco Tisato.
Department of Computer Science, University College London, Dr. Andrea Savigni.

Selected Publications

Analysis of Reflective Systems

The main objective consists of designing a methodology which applies to the standard object-oriented development approach (e.g., UML) some concepts from the reflection area, as the separation of concerns. This approach to the software development will allow to model reflective systems, separating functional from nonfunctional aspect and improving reuse and design quality as well as to design standard object-oriented systems.

Key Words: Reflection, Software Engineering, UML.

Collaborations:
Università di Milano Bicocca, Prof. Francesco Tisato.
Otto-von-Guericke-Universität Magdeburg, Prof. Gunter Saake and Dr. Ahmed Ghoneim.

Selected Publications

Reflective Paradigm and Compilers

Reflection has been around for several year and many researchers have pointed out its potential and promises. However, its has never penetrated the programming realm at a level that we consider adequate for its capabilities. In our opinion, this is due to the absence of a characterization of the real essence of reflection that may lead to a very simple (i.e., minimal) and orthogonal (i.e., independent of the programming language) implementation.
Reflective programming paradigm covers a programming abstraction which is not considered by other paradigms, like the functional, the procedural, the logic, and the object-oriented one. It aggregates unrelated behaviors to achieve a composite component playing the behavior represented by the composition of the basic behaviors. Such a composition is performed through the causality relation existing among software components of a system.
The basic idea consists of shifting up reflective concepts from the programming to system level: a) reflection has a minimal impact on the programming language clauses. b) changes needed to support reflection are moved in the compiler's back-end. To validate our ideas, we developed from scratch a simple programming system, named Io, which embeds reflection from its early design stage.

Key Words: Reflection, Programming Language, Programming Paradigm, Compiler Design.

Selected Publications


All the cited paper and many others about these and past projects can be download from my bibliography page.