withDevelopers
withDevelopers withDevelopers withDevelopers

Separation of Control of Functionality and Implementation

To design an open implementation, we propose a revised abstraction principle, based jointly on two contributions:

By blending these two, together with a study of a number of systems that have tackled these problems, we propose the notion of a reflective module, which is one that not only provides its primary functionality but also provides functionality for negotiating the way in which it provides the primary functionality. We call those two functionalities the base- and meta-functionalities, and the interfaces that provide them the base- and meta-interfaces. We suggest that access to mapping decisions be localized in the meta-interface of systems. This design is illustrated below

A reflective module presents two kinds of interfaces. The base-interface provides the primary functionality, the meta-interface allows the client to negotiate aspects of how the primary functionality is provided that are normally hidden by (or implicit in) the base interface.

Such a design makes a clear separation between the base- and meta-functionalities. This makes it easy for the client programmer to focus on just the base functionality, independent of the implementation when that is appropriate. It thus supports independent readings of the program, as a way for the client to cope with its total complexity.

Return to the Open Implementation Site Guide
Return to the Open Implementation Home Page