Introducing distribution into applications: a reflective approach for transparency and dynamic fine-grained object allocation

Developing distributed software systems is a complex activity that involves facing not only the problems of a specific application, but also those typical of distribution. Computational reflection supplies a means to handle different concerns with distinct components and a framework in which the latter can interact smoothly. We propose a reflective software architecture that encapsulates distribution concerns within components that are separated from and independent of those addressing functional concerns. The proposed architecture achieves a thorough management of distribution and in particular provides a means to dynamically adapt allocation policies to the characteristics of application objects, available hosts and changes of the distributed environment. The proposed approach is helpful for achieving the incremental development of easy to evolve software systems. In particular, we discuss the benefits of applying it to existing Web and e-commerce applications.

[1]  J. V. Gurp,et al.  Separation of Concerns : A Case Study , 2001 .

[2]  Yutaka Ishikawa,et al.  Object Location Control Using Meta-level Programming , 1994, ECOOP.

[3]  J. McAffer,et al.  Meta-level architecture support for distributed objects , 1995, Proceedings of International Workshop on Object Orientation in Operating Systems.

[4]  Ian Welch,et al.  Kava - A Reflective Java Based on Bytecode Rewriting , 1999, Reflection and Software Engineering.

[5]  Shigeru Chiba,et al.  Load-Time Structural Reflection in Java , 2000, ECOOP.

[6]  Mark Nuttall,et al.  A brief survey of systems providing process or object migration facilities , 1994, OPSR.

[7]  Shigeru Chiba,et al.  OpenJava: A Class-Based Macro System for Java , 1999, Reflection and Software Engineering.

[8]  Vaidy S. Sunderam,et al.  PVM: A Framework for Parallel Distributed Computing , 1990, Concurr. Pract. Exp..

[9]  Wouter Joosen,et al.  A Metaobject Protocol for Correlate , 1998, ECOOP Workshops.

[10]  Franco Zambonelli,et al.  High-level directives to drive the allocation of parallel object-oriented applications , 1997, Proceedings Second International Workshop on High-Level Parallel Programming Models and Supportive Environments.

[11]  Pattie Maes,et al.  Concepts and experiments in computational reflection , 1987, OOPSLA '87.

[12]  Jacques Ferber,et al.  Computational reflection in class based object-oriented languages , 1989, OOPSLA '89.

[13]  Emiliano Tramontana,et al.  Managing Evolution Using Cooperative Designs and a Reflective Architecture , 1999, Reflection and Software Engineering.

[14]  Lucia Lo Bello,et al.  Factors affecting the design of load balancing algorithms in distributed systems , 1999, J. Syst. Softw..

[15]  Shigeru Chiba,et al.  A metaobject protocol for C++ , 1995, OOPSLA.