Skip to content

Reflection

Fábio Nogueira edited this page Dec 7, 2016 · 5 revisions

Home -> Basic Concepts

Reflexão

A reflexão em um sistema computacional está associada a capacidade deste sistema de possuir uma representação interna do próprio sistema que pode ser inspecionada ou modificada com a finalidade de promover uma adaptação no sistema em execução. Nesse contexto, o processo de representação dos elementos do sistema é chamado de reificação. A relação entre a representação e o próprio sistema de forma que as alterações em um sejam refletidas no outro é chamada de conexão causal. Em geral, a representação exposta pelos sistemas reflexivos incluem tanto aspectos referentes ao seu estado quanto ao comportamento. Estas características particulares tornam o mecanismo de reflexão fundamental no projeto de sistemas adaptativos.

A arquitetura dos sistemas reflexivos é normalmente estruturada em níveis. O nível mais baixo na hierarquia é o nível base que é composto por um conjunto de entidades responsáveis por realizar as funcionalidades do ponto de vista do negócio. Do ponto de vista conceitual, o nível base pode ser visto como sendo composto pelas computações de negócio e por um modelo do domínio.

O acima do base é refenciado como nível meta e é responsável por prover a capacidade reflectiva do sistema. De forma similar ao nível base, o nível meta também pode ser visto como sendo composto por (meta-)computações e (meta-)modelo. Neste contexto, o meta-modelo reifica o nível base, ou seja, ele consiste em uma representação dos elementos estruturais e comportamentais do nível base que são considerados relevantes para fins de adaptação. As meta-computações correspondem ao conjunto de operações que são realizadas no meta-modelo. Estas informações podem ter a finalidade de inspecionar, nesse contexto fala-se em introspecção, ou de modificar a representação (e, consequentemente, o próprio sistema), correspondendo ao conceito de intersecção. Outros níveis meta podem ser adicionados de forma a montar uma torre de reflexão.

Acesso ao nível meta

O acesso aos meta-objetos que compõem o nível meta pode ocorrer de forma implícita ou explícita. O mecanismo de acesso implícito permite que invocações no nível base sejam reificadas de forma que o controle da sua execução é transferido para o nível meta. Normalmente este tipo de acesso é implementado através da utilização de interceptadores.

A disponibilização de um mecanismo de acesso explícito é responsável por possibilitar a meta-programação, ou seja, é através dele que são expostas as meta-interfaces realizadas pelos meta-objetos. Estas interfaces são normalmente organizadas em meta-espaços que, em conjunto, compõem o que se chama de protocolo de meta-objetos, ou seja, uma API para acesso às funcionalidades do nível meta que pode ser utilizada para fins de instrospecção ou intersecção.

#Modelos e meta-modelos Do ponto de vista dos sistemas reflexivos, um modelo representa uma estruturação das meta-informações que representam os elementos que compõem uma aplicação em execução e as relações existentes entre estes elementos. De outro lado, os meta-modelos definem os tipos dos elementos que podem ser utilizados na construção de modelos assim como as possíveis relações entre os diferentes tipos de elementos. Neste sentido, pode-se dizer que os meta-modelos definem linguagens de modelagem (na verdade, as sintaxes abstratas destas linguagens, uma vez que a definição de uma linguagem também envolve a definição de uma sintaxe concreta e semântica).

References

  1. Patie Maes. Concepts and experiments in computational reflection. In ACM Conference on Object- Oriented Programming, Systems, Languages and Ap- plications (OOPSLA’87), Orlando, FL USA, 1987. American ComputerMachinery, ACMPress.
  2. Costa, F. M., & Santos, S. (2004). Structuring Reflective Middleware using Meta-Information Management : The Meta-ORB Approach and Prototypes.
  3. Jesper Andersson, Rogerio de Lemos, Sam Malek, Danny Weyns. Reflecting on Self-Adaptive Software Systems Jesper

Clone this wiki locally