Open Implementation (OI) + Adaptive Programming (AP) = Adaptive Open Implementation ---------------------------------------------------- The Demeter project (http://www.ccs.neu.edu/research/demeter) at the Adaptive Software Laboratory at Northeastern University works on a technique which helps to open implementations in a useful way. An adaptive program is a program written in an OI style as follows: It is a behaviors family (primary program) which is customized by a meta-level object. Each primary behaviors family refers to partial information in the meta-level object. The partial information allows us to flexibly write the application program we want, yet we can make many changes to the meta-level customizer without having to update the primary program, leading to adaptiveness. One specific kind of adaptive programs are programs which are written in terms of succinct traversal specifications and the meta-level customizers are class graphs. The succinct traversal specifications reveal the important parts of the implementation structure which needs to exist in any use of the program. The implementation is opened for the purpose of using the program in a wide range of new, even unexpected, contexts. AP from an OI point of view: The architecture of AOI ------------------------------------------- primary meta meta-meta b_p b_m behaviors family o_p o_m objects family o_m includes s_p s_m structure i_p i_m i_m_m ------------------------------------------- Legend: b: behaviors family o: objects family s: structure i: interface _p: primary _m: meta Differences between OI and Adaptive OI (AOI): With AOI, oppenness is built in. Each primary behaviors family proclaims an ``invariant'' and the program can adjust aspects of the program provided the invariant holds. In AOI we only use partial information about structural meta objects while in ordinary OI the details of the structural meta objects is encoded into the primary program. In AOI, primary is incomplete without meta and meta-meta. meta is incomplete without meta-meta. Reason: each primary behaviors family refers to relevant, but partial information in meta. In AOI, there is a need for a concept called adaptive introspection. It is a form of intercession, but once the meta-object customizer has been updated and remains constant, we have introspection only. ================================== Example (for Demeter users) Prefix expression evaluator ------------------------------------------- primary meta meta-meta eval.pp g_print.pp exp exp.cd dem.cd ------------------------------------------- Legend: eval.pp evaluator exp prefix expression g_print.pp printing of objects exp.cd class dictionary for prefix expressions (the only meta object) dem.cd Demeter's heart