On the Integration of Configuration and Meta-level Programming Approaches

  • Orlando Loques
  • Alexandre Sztajnberg
  • Julius Leite
  • Marcelo Lobosco
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1826)


Configuration Programming, based on Architecture Description Languages, and Meta-Level Programming are considered promising approaches in the software engineering field. This paper shows that there is an immediate correspondence between some key concepts of Configuration and Meta-Level Programming approaches and that some of the main issues to be solved for their deployment in real systems are quite similar. The main result is that the integration of both approaches in a single configuration programming framework can assist in employing meta-level programming in order to achieve separation of concerns and improve software reuse. In addition, the capability of supporting dynamic configuration and flexibility on component programming language choice are potentially improved. A prototype of a configuration programming centered environment and some application examples are presented in order to demonstrate the useful features of the combined approach.


Software Architecture Method Invocation Generic Connector Connector Type Architecture Description Language 
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.
    Robert Allen and David Garlan. A Formal Basis for Architectural Connection. ACM Transactions on Software Engineering and Methodology, July 1997.Google Scholar
  2. 2.
    Mark Astley and Gul A. Agha. Customization and Composition of Distributed Objects: Middleware Abstractions for Policy Management. ACM Software Engineering Notes, 23(6):1–9, 1998.CrossRefGoogle Scholar
  3. 3.
    Lodewijk Bergmans. Composing Concurrent Objects-Applying Composition Filters for the Development And Reuse of Concurrent Object-Oriented Programming. PhD thesis, Department of Computer Science, University of Twente, The Netherlands, 1994.Google Scholar
  4. 4.
    S. T. Carvalho. Integrating Design Patterns in Software Architectures. Research report, IC/UFF, Brazil, 1999. In Portuguese.Google Scholar
  5. 5.
    Walter Cazzola, Andrea Savigni, Andrea Sosio, and Francesco Tisato. Architectural Reflection: Concepts, Design, and Evaluation. Technical Report RIDSI 234-99, DSI, University degli Studi di Milano, May 1999. Available at
  6. 6.
    Shigeru Chiba. A Meta-Object Protocol for C++. In Proceedings of the 10th Annual Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA’95), volume 30 of Sigplan Notices, pages 285–299, Austin, Texas, USA, October 1995. ACM.CrossRefGoogle Scholar
  7. 7.
    Jean-Charles Fabre, Vincent Nicomette, Tanguy Pérennou, Robert J. Stroud, and Zhixue Wu. Implementing Fault Tolerant Applications Using Reflective Object-Oriented Programming. In Proceedings of FTCS-25 “Silver Jubilee”, Pasadena, CA USA, June 1995. IEEE.Google Scholar
  8. 8.
    Joni Fraga, Carlos A. Maziero, Lau Cheuk Lung, and Orlando G. Loques. Implementing Replicated Services in Open Systems Using a Reflective Approach. In Proceedings of the Third International Symposium on Autonomous Decentralized Systems, pages 273–280, Berlin, Germany, 1997.Google Scholar
  9. 9.
    Svend Frølund and Jari Koistinen. Quality-of-Service Specification in Distributed Object Systems. Distributed Systems Engineering Journal, 5:179–202, 1998.CrossRefGoogle Scholar
  10. 10.
    Eric Gamma, Richard Helm, Ralph Johnson, and Richard Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley. Reading, MA, 1994.Google Scholar
  11. 11.
    Michael Gölm. Design and Implementation of a Meta Architecture for Java. Master’s thesis, University of Erlangen-Nurnberg, Germany, January 1997.Google Scholar
  12. 12.
    Richard Helm, Ian Holland, and Dipayan Gangopadhyay. Contracts: Specifying Behavioral Compositions in Object-Oriented Systems. In Proceedings of OOPSLA’90, pages 303–311, October 1990.Google Scholar
  13. 13.
    Gregor Kiczales and Cristina Videira Lopes. Aspect-Oriented Programming with AspectJ. Xerox Parc, 1998.
  14. 14.
    Fabio Kon and Roy H. Campbell. Supporting Automatic Configuration of Component-Based Distributed Systems. In Proceedings of the 5th USENIX Conference on Object-Oriented Technologies and Systems, San Diego, CA, USA, 1999.Google Scholar
  15. 15.
    Jeff Kramer and Jeff Magee. The Evolving Philosophers Problem: Dynamic Change Management. IEEE Transactions on Software Engineering, 16(11):1293–1306, 1991.CrossRefGoogle Scholar
  16. 16.
    Jeff Kramer and Jeff Magee. Dynamic Structure in Software Architectures. In Proceedings of the Fourth ACM Sigsoft Symposium On Foundations of Software Engineering, California, USA, October 1996.Google Scholar
  17. 17.
    Jeff Kramer and Jeff Magee. Exposing the Skeleton in the Coordination Closet. In Proceedings of Coordination’97, Berlin, Germany, 1997.Google Scholar
  18. 18.
    John Lamping. The Interaction of Components and Aspects. In Cristina Videira Lopes, Kim Mens, Bedir Tekinerdogan, and Gregor Kiczales, editors, Proceedings of ECOOP Aspect-Oriented Programming Workshop, page June, Finland, 1997.Google Scholar
  19. 19.
    Marcelo Lobosco. R-RIO: A Java Environment for Supporting Evolving Distributed Systems. dissertation, IC/UFF, Brazil, 1999.Google Scholar
  20. 20.
    Cristina Videira Lopes. D: A Language Framework for Distributed Programming. PhD thesis, College of Computer Science, Northeastern University, November 1997.Google Scholar
  21. 21.
    Cristina Videira Lopes, Kim Mens, Bedir Tekinerdogan, and Gregor Kiczales. Proceedings of ECOOP Aspect-Oriented Programming Workshop. Finland, June 1997.Google Scholar
  22. 22.
    Orlando Loques, Rodrigo A. Botafogo, and Julius Leite. A Configuration Approach for Distributed Object-Oriented System Customization. In Proceedings of the Third International IEEE Workshop on Object-Oriented Real-Time Dependable Systems, pages 185–189, Newport Beach, USA, 1997.Google Scholar
  23. 23.
    Orlando Loques, Julius Leite, and Vinicio E. Carrera. Parallel-Programming Environment. IEEE Concurrency, 6(1):47–56, 1998.CrossRefGoogle Scholar
  24. 24.
    David C. Luckham, Larry M. Augustin, John J. Kenney, James Veera, Doug Bryan, and Walter Mann. Specification and Analysis of System Architecture Using Rapide. IEEE Transactions on Software Engineering, SE-21:336–355, April 1995. Special Issue on Software Architecture.CrossRefGoogle Scholar
  25. 25.
    V. V. Malucelli. Babel-Building Applications by Evolution. dissertation (in portuguese), DEE / PUC-RJ, Rio de Janeiro, Brazil, 1996.Google Scholar
  26. 26.
    Frank Matthijs, Wouter Joosen, Bart Vanhaute, Bert Robben, and Pierre Verbaeten. Aspects Should Not Die. In Cristina Videira Lopes, Kim Mens, Bedir Tekinerdogan, and Gregor Kiczales, editors, Proceedings of ECOOP Aspect-Oriented Programming Workshop, page June, Finland, 1997.Google Scholar
  27. 27.
    Nenad Medvidovic. Architecture-Based Specification-Time Software Evolution. PhD thesis, University of California, Irvine, 1999.Google Scholar
  28. 28.
    Alexandre Oliva and Luiz Eduardo Buzato. Composition of Meta-Objects in Guaraná. In Shigeru Chiba and Jean-Charles Fabre, editors, Proceedings of OOPSLA Workshop on Reflective Programming in C++ and Java, pages 86–90, Vancouver, Canada, November 1998.Google Scholar
  29. 29.
    Pierre-Guillaume Raverdy, Robert Le Van Gong, and Rodger Lea. DART: A Reflective Middleware for Adaptive Application. In Shigeru Chiba and Jean-Charles Fabre, editors, Proceedings of OOPSLA Workshop on Reflective Programming in C++ and Java, pages 37–45, Vancouver, Canada, November 1998.Google Scholar
  30. 30.
    Jerome H. Saltzer, David P. Reed, and David D. Clark. End-to-End Arguments in System Design. In Proceedings of 2nd Int’l Conference on Distributed Computing Systems, pages 509–512, Paris, France, April 1981.Google Scholar
  31. 31.
    Mary Shaw, Robert DeLine, Daniel V. Klein, Theodore L. Ross, David M. Young, and Gregory Zelesnik. Abstractions for Software Architecture and Tools to Support Them. Transaction on Software Engineering, 21(4):314–335, 1995.CrossRefGoogle Scholar
  32. 32.
    Alexandre Sztajnberg. Flexibility and Separation of Concerns in Distributed Systems. PhD thesis, COPPE/UFRJ, Rio de Janeiro, Brazil, 1999.Google Scholar
  33. 33.
    Robbert van Renesse, Kenneth P. Birman, and Silvano Maffeis. Horus: A Flexible Group Communication System. Communications of the ACM, 39(4):76–83, April 1996.CrossRefGoogle Scholar
  34. 34.
    Peter Wegner. Interoperability. ACM Computing Surveys, 28(1):285–287, 1996.CrossRefGoogle Scholar
  35. 35.
    Ian Welch and Robert J. Stroud. Dalang-A Reflective Java Extension. In Shigeru Chiba and Jean-Charles Fabre, editors, Proceedings of OOPSLA Workshop on Reflective Programming in C++ and Java, pages 11–15, Vancouver, Canada, November 1998.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2000

Authors and Affiliations

  • Orlando Loques
    • 1
  • Alexandre Sztajnberg
    • 2
    • 3
  • Julius Leite
    • 1
  • Marcelo Lobosco
    • 1
  1. 1.Instituto de ComputaçãoUniversidade Federal FluminenseNiterói, RJBrazil
  2. 2.Instituto de Matemática e Estatística/UERJ, RJBrazil
  3. 3.Grupo de Teleinformática e Automaçcão/COPPE/UFRJ, RJBrazil

Personalised recommendations