We render runtime system adaptations by design-level concepts such that running systems can be adapted and examined at a higher level of abstraction. The overall idea is to express design decisions as applications of design operators to be carried out at runtime. Applications of design operators are made explicit as design elements in the running system such that they can be traced, reconfigured, and made undone. This approach enables reflective designs: on one side, design operators employ reflection to perform runtime adaptations; on the other side, design elements provide an additional reflection protocol to examine and configure performed adaptations.
(Joint work with Ralf Lämmel, http://homepages.cwi.nl/~ralf)