Architectural Reflection: Realising Software Architectures via Reflective Activities

Architectural reflection is the computation performed by a software system about its own software architecture. Building on previous research and on practical experience in industrial projects, in this paper we expand the approach and show a practical (albeit very simple) example ofa pplication of architectural reflection. The example shows how one can express, thanks to reflection, both functional and nonfunctional requirements in terms ofob ject-oriented concepts, and how a clean separation ofcon cerns between application domain level and architectural level activities can be enforced.

[1]  Farhad Arbab,et al.  An overview of manifold and its implementation , 1993, Concurr. Pract. Exp..

[2]  Akinori Yonezawa,et al.  Abstracting Object Interactions Using Composition Filters , 1993, ECOOP Workshop.

[3]  Francesco Tisato,et al.  ON THE DUALITY BETWEEN EVENT-DRIVEN AND TIME-DRIVEN MODELS , 1995 .

[4]  Rachid Guerraoui,et al.  OO distributed programming is not distributed OO programming , 1999, CACM.

[5]  Francesco Tisato,et al.  Kaleidoscope: A Reference Architecture for Monitoring and Control Systems , 1999, WICSA.

[6]  Marcelo Lobosco,et al.  On the Integration of Configuration and Meta-level Programming Approaches , 1999, Reflection and Software Engineering.

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

[8]  Daniela Micucci,et al.  ESCORT: Towards Integration in Intersection Control , 2000 .

[9]  Francesco Tisato,et al.  Real-time programming-in-the-large. The case of monitoring and control systems , 2000, Proceedings Third IEEE International Symposium on Object-Oriented Real-Time Distributed Computing (ISORC 2000) (Cat. No. PR00607).

[10]  Francesco Tisato,et al.  ESCORT: lessons from an integration project , 2000, OOPSLA '00.

[11]  David Notkin,et al.  Evaluating The Mediator Method: Prism as a Case Study , 1996, IEEE Trans. Software Eng..

[12]  Francesco Tisato,et al.  A fresh look at programming-in-the-large , 1998, Proceedings. The Twenty-Second Annual International Computer Software and Applications Conference (Compsac '98) (Cat. No.98CB 36241).

[13]  Farhad Arbab,et al.  Coordination Models and Languages , 1998, Adv. Comput..

[14]  Jeff Magee,et al.  The Evolving Philosophers Problem: Dynamic Change Management , 1990, IEEE Trans. Software Eng..

[15]  Gail C. Murphy,et al.  Architecture for evolution , 1996, ISAW '96.

[16]  Anneke Kleppe,et al.  The object constraint language: precise modeling with UML , 1998 .

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

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

[19]  Hans H. Kron,et al.  Programming-in-the-Large Versus Programming-in-the-Small , 1975, IEEE Transactions on Software Engineering.

[20]  Rachid Guerraoui,et al.  Thinking objectively: object-oriented abstractions for distributed programming , 1999, CACM.

[21]  Ivar Jacobson,et al.  The Unified Modeling Language User Guide , 1998, J. Database Manag..

[22]  宮尾 淳一,et al.  The 1st IEEE International Symposium on Object-Oriented Real-Time Distributed Computingの参加報告 , 1998 .

[23]  Francesco Tisato,et al.  Rule-based strategic reflection: observing and modifying behaviour at the architectural level , 1999, 14th IEEE International Conference on Automated Software Engineering.

[24]  Francesco Tisato,et al.  Designing Traffic Control Systems , 2000 .

[25]  David Garlan,et al.  Architectural Mismatch or Why it's hard to build systems out of existing parts , 1995, 1995 17th International Conference on Software Engineering.

[26]  Stéphane Ducasse,et al.  Executable connectors: towards reusable design elements , 1997, ESEC '97/FSE-5.

[27]  Xavier Pintado,et al.  Gluons: a Support for Software Component Cooperation , 1993, ISOTAS.

[28]  Peyman Oreizy,et al.  Architecture-based runtime software evolution , 1998, Proceedings of the 20th International Conference on Software Engineering.