Abstract
Metaprogramming and computational reflection are two related techniques that allow the programmer to change the semantics of a program in a modular fashion. Although the concepts have been explored by researchers for some time, a form of metaprogramming, namely aspect-oriented programming, is now being used by some practitioners. This paper is an attempt to understand the limitations of different forms of computational reflection in concurrent and distributed computing. It specifically studies the use of aspect-oriented programming and reflective actor libraries, and their relation to full reflection. We choose distributed monitoring as the primary example application because its requirements nicely fit the abilities of the two systems as well as illustrate their limitations.
This research has been supported in part by NSF under grant CNS 05-09321 and by ONR under DoD MURI award N0014-02-1-0715.
Access provided by Autonomous University of Puebla. Download to read the full chapter text
Chapter PDF
Similar content being viewed by others
Keywords
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.
References
Agha, G.: Actors: a model of concurrent computation in distributed systems. MIT Press, Cambridge, MA (1986)
Aksit, M., Wakita, K., Bosch, J., Bergmans, L., Yonezawa, A.: Abstracting Object Interactions Using Composition Filters. In: Nierstrasz, O. (ed.) ECOOP 1993. LNCS, vol. 707, pp. 152–184. Springer, Heidelberg (1993)
Arbab, F.: Reo: a channel-based coordination model for component composition. Mathematical Structures in Computer Science 14(03), 329–366 (2004)
Astley, M. Customization and Composition of Distributed Objects: Policy Management in Distributed Software Architectures. PhD thesis, University of Illinois at Urbana-Champaign (1999)
Astley, M., Agha, G.: Customization and composition of distributed objects: Middleware abstractions for policy management. In: Sixth International Symposium on the Foundations of Software Engineering, ACM SIGSOFT (1998)
Astley, M., Sturman, D., Agha, G.: Customizable middleware for modular distributed software. Communications of the ACM 44, 99–107 (2001)
Bandinelli, S., Fuggetta, A.: Computational reflection in software process modeling: The SLANG approach. In: Proceedings of 15th International Conference on Software Engineering, pp. 144–154 (1993)
Bawden, A.: Reification without evaluation. In: LFP ’88: Proceedings of the 1988, ACM conference on LISP and functional programming, pp. 342–349 (1988)
Brant, J., Foote, B., Johnson, R.E., Roberts, D.: Wrappers to the Rescue. In: Jul, E. (ed.) ECOOP 1998. LNCS, vol. 1445, pp. 396–417. Springer, Heidelberg (1998)
Cameron, R., Ito, M.: Grammar-Based Definition of Metaprogramming Systems. ACM Transactions on Programming Languages and Systems 6, 1 (1984)
Caromel, D., Vayssiere, J.: Reflections on MOPs, Components, and Java Security. In: Knudsen, J.L. (ed.) ECOOP 2001. LNCS, vol. 2072, pp. 256–274. Springer, Heidelberg (2001)
Chen, F., Rosu, G.: Java-MOP: A monitoring oriented programming environment for Java. In: Proceedings of the 11th International Conference on Tools and Algorithms for the Construction and Analysis of Systems (2005)
Cointe, P., Amiot, A., Denier, S.: From (meta) objects to aspects: from Java to AspectJ. In: de Boer, F.S., Bonsangue, M.M., Graf, S., de Roever, W.-P. (eds.) FMCO 2004. LNCS, vol. 3657, pp. 70–94. Springer, Heidelberg (2005)
Czarnecki, K., Eisenecker, U.W.: Generative programming. Springer, Heidelberg (2000)
Czarnecki, K., Eisenecker, U.W.: Components and generative programming. In: Proceedings of 7th European software engineering conference and 7th ACM SIGSOFT symposium on Foundations of software engineering, pp. 2–19 (1999)
Denker, G., Meseguer, J., Talcott, C.: Rewriting semantics of meta-objects and composable distributed services. Futatsugi [139], 407–427 (1999)
Deutsch, L., Schiffman, A.: Efficient implementation of the smalltalk-80 system. In: Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on Principles of programming languages, pp. 297–302 (1984)
Fabre, J.C., Perennou, T.: A metaobject architecture for fault-tolerant distributed systems: the FRIENDS approach. IEEE Transactions on Computers 47(1), 78–95 (1998)
Foote, B., Johnson, R.E.: Reflective facilities in Smalltalk-80. ACM SIGPLAN Notices 24(10), 327–335 (1989)
Friedman, D., Wand, M.: Reification: Reflection without metaphysics. In: Proceedings of the 1984 ACM Symposium on LISP and functional programming (1984)
Frølund, S.: Inheritance of Synchronization Constraints in Concurrent Object-Oriented Programming Languages. In: Madsen, O.L. (ed.) ECOOP 1992. LNCS, vol. 615, pp. 185–196. Springer, Heidelberg (1992)
Frølund, S., Agha, G.: A language framework for multi-object coordination. In: Nierstrasz, O. (ed.) ECOOP 1993. LNCS, vol. 707, pp. 346–360. Springer, Heidelberg (1993)
Green, D.: Trail: The Reflection API. In: The Java Tutorial Continued: The Rest of the JDK (TM). Addison-Wesley Pub. Co., Reading (1998)
Hennessy, J.: Symbolic Debugging of Optimized Code. ACM Transactions on Programming Languages and Systems (TOPLAS) 4(3), 323–344 (1982)
Hutto, P., Ahamad, M.: Slow memory: weakening consistency to enhance concurrency indistributed shared memories. In: Proceedings of 10th International Conference on Distributed Computing Systems, pp. 302–309 (1990)
Jang, M.: The Actor Architecture Manual (2004)
Kim, W., Agha, G.: Compilation of a highly parallel actor-based language. In: The Fifth International Workshop on Languages and Compilers for Parallel Computing, pp. 1–12 (1992)
Lea, R., Yokote, Y., Itoh, J.-I.: Adaptive operating system design using reflection. In: HOTOS ’95: Proceedings of the Fifth Workshop on Hot Topics in Operating Systems (HotOS-V), p. 95 (1995)
Maes, P.: Computational Reflection. Springer, London (1987)
Mason, I.A., Talcott, C.: A semantically sound actor translation. In: Degano, P., Gorrieri, R., Marchetti-Spaccamela, A. (eds.) ICALP 1997. LNCS, vol. 1256, Springer, Heidelberg (1997)
Meseguer, J., Talcott, C.L.: Semantic Models for Distributed Object Reflection. In: Magnusson, B. (ed.) ECOOP 2002. LNCS, vol. 2374, pp. 1–36. Springer, Heidelberg (2002)
Rivard, F.: Smalltalk: a Reflective Language. In: Proceedings of Reflection, pp. 21–38 (1996)
Sen, K., Rosu, G., Agha, G.: Runtime safety analysis of multithreaded programs. In: Proceedings of the 9th European software engineering and 11th ACM SIGSOFT symposium on Foundations of software engineering, pp. 337–346 (2003)
Sen, K., Vardhan, A., Agha, G., Rosu, G.: Efficient Decentralized Monitoring of Safety in Distributed Systems. In: Proceedings of the 26th International Conference on Software Engineering, pp. 418–427 (2004)
Smith, B.C.: Reflection and semantics in LISP. ACM Press, New York (1984)
Sturman, D.: Fault-adaptation for systems in unpredictable environments. Master’s thesis, University of Illinois at Urbana-Champaign (1994)
Sturman, D.: Modular Specification of Interaction Policies in Distributed Computing. PhD thesis, University of Illinois at Urbana-Champaign (1996)
Sturman, D., Agha, G.: A protocol description language for customizing failure semantics. In: Proceedings of the 13th Symposium on Reliable Distributed Systems, pp. 148–157 (1994)
Talcott, C., Venkatasubramarian, N.: A Semantic Framework for Specifying and Reasoning about Composable Distributed Middleware Services (2001)
Venkatasubramanian, N., Talcott, C.: Reasoning about meta level activities in open distributed systems. In: Proceedings of the 14th annual ACM symposium on Principles of distributed computing, pp. 144–152 (1995)
Venkatasubramanian, N., Talcott, C., Agha, G.: A formal model for reasoning about adaptive QoS-enabled middleware. ACM Transactions on Software Engineering and Methodology (TOSEM) 13(1), 86–147 (2004)
Watanabe, T., Yonezawa, A.: An Actor-Based Metalevel Architecture for Group-Wide Reflection. In: Proceedings of the REX School/Workshop on Foundations of Object-Oriented Languages, pp. 405–425 (1990)
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 2007 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Donkervoet, B., Agha, G. (2007). Reflecting on Aspect-Oriented Programming, Metaprogramming, and Adaptive Distributed Monitoring. In: de Boer, F.S., Bonsangue, M.M., Graf, S., de Roever, WP. (eds) Formal Methods for Components and Objects. FMCO 2006. Lecture Notes in Computer Science, vol 4709. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-74792-5_11
Download citation
DOI: https://doi.org/10.1007/978-3-540-74792-5_11
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-74791-8
Online ISBN: 978-3-540-74792-5
eBook Packages: Computer ScienceComputer Science (R0)