Architectural Reflection: Bridging the Gap Between a Running System and its Architectural Specification

As the size and complexity of software systems increase, a relevant part of the system overall functionality shifts from the applicative domain to run-time system management activities, i.e., management activities which cannot be performed off-line. These range from monitoring to dynamic reconfiguration and, for non-stopping systems, also include evolution, i.e., addition or replacement of components or entire subsystems. In current practice, run-time system management is impeded by the fact that the knowledge of the overall structure and functioning of the system (i.e., its software architecture) is confined in design specification documents, while it is only implicit in running systems. In this paper we introduce, provide rationale for, and briefly demonstrate an approach to system management where the system maintains, and operates on, an architectural description of itself. This description is causally connected to the system’s concrete structure and state, i.e., any change of the system architecture affects the description, and vice versa. This model can be said to extend the principles of computational reflection from the realm of programming-in-the-small to that of programming-in-thelarge.

[1]  Robert J. Stroud Transparency and reflection in distributed systems , 1993, OPSR.

[2]  Satoshi Matsuoka,et al.  Object-Oriented Concurrent Reflective Languages can be Implemented Efficiently , 1992, OOPSLA.

[3]  Wolfgang Pree,et al.  Design Patterns for Object-Oriented Software Development , 1994, Proceedings of the (19th) International Conference on Software Engineering.

[4]  MaesPattie Concepts and experiments in computational reflection , 1987 .

[5]  B. Achiriloaie,et al.  VI REFERENCES , 1961 .

[6]  Walter Cazzola,et al.  Channel reification: a reflective model for distributed computation , 1998, 1998 IEEE International Performance, Computing and Communications Conference. Proceedings (Cat. No.98CH36191).

[7]  Hans H. Kron,et al.  Programming-in-the-Large Versus Programming-in-the-Small , 1975 .

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

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

[10]  Walter Mann,et al.  Correction to "Specification and Analysis of System Architecture Using Rapide" , 1995, IEEE Trans. Software Eng..

[11]  Mary Shaw,et al.  Software architecture - perspectives on an emerging discipline , 1996 .

[12]  C LuckhamDavid,et al.  Specification and Analysis of System Architecture Using Rapide , 1995 .

[13]  Daniel G. Bobrow,et al.  Book review: The Art of the MetaObject Protocol By Gregor Kiczales, Jim des Rivieres, Daniel G. and Bobrow(MIT Press, 1991) , 1991, SGAR.

[14]  Siegfried Fischer,et al.  Verification in process algebra of the distributed control of track vehicles—A case study , 1994, Formal Methods Syst. Des..

[15]  G. G. Stokes "J." , 1890, The New Yale Book of Quotations.

[16]  Jacques Malenfant,et al.  Reflection in logic, functional and object-oriented programming: a Short Comparative Study , 1995 .

[17]  Hans H. Kron,et al.  Programming-in-the-Large Versus Programming-in-the-Small , 1976, IEEE Trans. Software Eng..