Unanticipated Partial Behavioral Reflection

  • David Röthlisberger
  • Marcus Denker
  • Éric Tanter
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4406)


Dynamic, unanticipated adaptation of running systems is of interest in a variety of situations, ranging from functional upgrades to on-the-fly debugging or monitoring of critical applications. In this paper we study a particular form of computational reflection, called unanticipated partial behavioral reflection, which is particularly well-suited for unanticipated adaptation of real-world systems. Our proposal combines the dynamicity of unanticipated reflection, i.e.,  reflection that does not require preparation of the code of any sort, and the selectivity and efficiency of partial behavioral reflection. First, we propose unanticipated partial behavioral reflection which enables the developer to precisely select the required reifications, to flexibly engineer the metalevel and to introduce the meta behavior dynamically. Second, we present a system supporting unanticipated partial behavioral reflection in Squeak Smalltalk, called Geppetto, and illustrate its use with a concrete example of a Seaside web application. Benchmarks validate the applicability of our proposal as an extension to the standard reflective abilities of Smalltalk.


Execution Time Virtual Machine Method Body Method Execution Object Scope 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Gamma, E., et al.: Design patterns: Abstraction and reuse of object-oriented design. In: Nierstrasz, O. (ed.) ECOOP 1993. LNCS, vol. 707, pp. 406–431. Springer, Heidelberg (1993)CrossRefGoogle Scholar
  2. 2.
    Rao, R.: Implementational reflection in Silica. In: America, P. (ed.) ECOOP 1991. LNCS, vol. 512, pp. 251–267. Springer, Heidelberg (1991)CrossRefGoogle Scholar
  3. 3.
    Kiczales, G., et al.: Metaobject protocols: Why we want them and what else they can do. In: Object-Oriented Programming: the CLOS Perspective, pp. 101–118. MIT Press, Cambridge (1993)Google Scholar
  4. 4.
    Redmond, B., Cahill, V.: Supporting unanticipated dynamic adaptation of application behaviour. In: Magnusson, B. (ed.) ECOOP 2002. LNCS, vol. 2374, pp. 205–230. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  5. 5.
    Tarr, P.L., et al.: Workshop on aspects and dimensions of concern: Requirements on, and challenge problems for, advanced separation of concerns. In: Malenfant, J., Moisan, S., Moreira, A.M.D. (eds.) ECOOP 2000 Workshops. LNCS, vol. 1964, pp. 203–240. Springer, Heidelberg (2000)Google Scholar
  6. 6.
    Smith, B.C.: Reflection and semantics in a procedural language. Technical Report TR-272, MIT, Cambridge, MA (1982)Google Scholar
  7. 7.
    Ferber, J.: Computational reflection in class-based object-oriented languages. In: Proceedings OOPSLA ’89. ACM SIGPLAN Notices, vol. 24, pp. 317–326. ACM, New York (1989)CrossRefGoogle Scholar
  8. 8.
    Maes, P.: Computational Reflection. PhD thesis, Laboratory for Artificial Intelligence, Vrije Universiteit Brussel, Brussels Belgium (1987)Google Scholar
  9. 9.
    McAffer, J.: Engineering the meta level. In: Kiczales, G. (ed.) Proceedings of the 1st International Conference on Metalevel Architectures and Reflection (Reflection 96), San Francisco, USA (1996)Google Scholar
  10. 10.
    Tanter, É., et al.: Partial behavioral reflection: Spatial and temporal selection of reification. In: Proceedings of OOPSLA ’03. ACM SIGPLAN Notices, pp. 27–46. ACM Press, New York (2003)CrossRefGoogle Scholar
  11. 11.
    Denker, M., Ducasse, S., Tanter, É.: Runtime bytecode transformation for Smalltalk. Journal of Computer Languages, Systems and Structures 32, 125–139 (2006)zbMATHCrossRefGoogle Scholar
  12. 12.
    Ducasse, S., Lienhard, A., Renggli, L.: Seaside — a multiple control flow web application framework. In: Proceedings of ESUG International Smalltalk Conference 2004, pp. 231–257 (2004)Google Scholar
  13. 13.
    Goldberg, A., Robson, D.: Smalltalk 80: the Language and its Implementation. Addison-Wesley, Reading (1983)zbMATHGoogle Scholar
  14. 14.
    Ingalls, D., et al.: Back to the future: The story of Squeak, A practical Smalltalk written in itself. In: Proceedings OOPSLA ’97. ACM SIGPLAN Notices, pp. 318–326. ACM Press, New York (1997)CrossRefGoogle Scholar
  15. 15.
    Rivard, F.: Smalltalk: a Reflective Language. In: Proceedings of REFLECTION ’96, pp. 21–38 (1996)Google Scholar
  16. 16.
    Ducasse, S.: Evaluating message passing control techniques in Smalltalk. Journal of Object-Oriented Programming (JOOP) 12, 39–44 (1999)Google Scholar
  17. 17.
    Brant, J., et al.: Wrappers to the rescue. In: Jul, E. (ed.) ECOOP 1998. LNCS, vol. 1445, pp. 396–417. Springer, Heidelberg (1998)CrossRefGoogle Scholar
  18. 18.
    Bouraqadi, N.: Un MOP Smalltalk pour l’étude de la composition et de la compatibilité des métaclasses. Application à la programmation par aspects (A Smalltalk MOP for the Study of Metaclass Composition and Compatibility. Application to Aspect-Oriented Programming (In French). Thèse de doctorat, Université de Nantes, Nantes, France (1999)Google Scholar
  19. 19.
    Bouraqadi, N.: Safe metaclass composition using mixin-based inheritance. Journal of Computer Languages, Systems and Structures 30, 49–61 (2004)zbMATHCrossRefGoogle Scholar
  20. 20.
    Bouraqadi, N., Seriai, A., Leblanc, G.: Towards unified aspect-oriented programming. In: Proceedings of ESUG 2005 (13th International Smalltalk Conference) (2005)Google Scholar
  21. 21.
    Tanter, É., Noyé, J.: A versatile kernel for multi-language AOP. In: Glück, R., Lowry, M. (eds.) GPCE 2005. LNCS, vol. 3676, Springer, Heidelberg (2005)CrossRefGoogle Scholar
  22. 22.
    Tanter, É.: Aspects of composition in the reflex aop kernel. In: Löwe, W., Südholt, M. (eds.) SC 2006. LNCS, vol. 4089, pp. 99–114. Springer, Heidelberg (2006)Google Scholar
  23. 23.
    Bouraqadi, N.: Concern oriented programming using reflection. In: Workshop on Advanced Separation of Concerns – OOPSLA (2000)Google Scholar
  24. 24.
    Röthlisberger, D.: Geppetto: Enhancing Smalltalk’s reflective capabilities with unanticipated reflection. Master’s thesis, University of Bern (2006)Google Scholar
  25. 25.
    Lewis, B.: Debugging backwards in time. In: Proceedings of the Fifth International Workshop on Automated Debugging (AADEBUG 2003) (2003)Google Scholar
  26. 26.
    Denker, M., Greevy, O., Lanza, M.: Higher abstractions for dynamic analysis. In: 2nd International Workshop on Program Comprehension through Dynamic Analysis (PCODA 2006), pp. 32–38 (2006)Google Scholar
  27. 27.
    Tanter, É., Noyé, J.: Motivation and requirements for a versatile AOP kernel. In: 1st European Interactive Workshop on Aspects in Software (EIWAS 2004), Berlin, Germany (2004)Google Scholar
  28. 28.
    Bergel, A.: FacetS: First class entities for an open dynamic AOP language. In: Proceedings of the Open and Dynamic Aspect Languages Workshop (2006)Google Scholar
  29. 29.
    Hirschfeld, R.: AspectS – aspect-oriented programming with Squeak. In: Aksit, M., Mezini, M., Unland, R. (eds.) NODe 2002. LNCS, vol. 2591, pp. 216–232. Springer, Heidelberg (2003)CrossRefGoogle Scholar

Copyright information

© Springer Berlin Heidelberg 2007

Authors and Affiliations

  • David Röthlisberger
    • 1
  • Marcus Denker
    • 1
  • Éric Tanter
    • 2
  1. 1.Software Composition Group, University of BernSwitzerland
  2. 2.Center for Web Research/DCC, University of Chile, SantiagoChile

Personalised recommendations