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. Our approach helps understanding the development and the maintenance of the class of software systems that cannot tolerate downtime or frequent shutdown-revise-startup cycles.
We have designed and implemented a class library for programming with reflective designs in Squeak/Smalltalk. Our library employs reflection and dynamic aspect-oriented programming. In addition to that, we have implemented tool support for versatile navigation in a system that is adapted continuously at runtime.
@article{HL04:IEE,
author = "R.~Hirschfeld and R.~L{\"a}mmel",
title = "{Reflective Designs}",
journal = "{IEE Proceedings Software}",
year = 2004,
note = "Special Issue on Reusable Software Libraries. To appear."
}
@inproceedings{HL04:SETra04,
author = "R.~Hirschfeld and R.~L{\"a}mmel",
title = "{Reflective Designs~---~An Overview}",
booktitle = "{Proc.\ of SETra 2004}",
year = 2004,
note = "4 pages"
}