Informações Principais
     Resumo
     Abstract
     Introdução
     Conclusão
     Download
  
  
  
 
Conclusão
 
 
Acadêmico(a): Fabrício Jailson Barth
Título: Utilização de Reflexão Computacional para Implementação de Aspectos Não Funcionais em um Gerenciador de Arquivos Distribuído
 
Conclusão:
Durante este trabalho foram apresentados conceitos e ferramentas que possibilitam implementar sistemas reflexivos. No decorrer do trabalho foi possível destacar as características, vantagens e desvantagens dos diversos modelos e protocolos. Este trabalho pode ser utilizado por pessoas que queiram ter um fundamento básico sobre reflexão computacional, serviu para adicionar novas funcionalidades ao gerenciador de arquivos, que proporcionam uma melhor performance, e alguns serviços extras para um melhor controle do sistema. Através do protótipo implementado e dos exemplos listados, pode-se perceber que são verdadeiras as vantagens sobre a utilização de reflexão computacional em sistemas orientados a objetos, listadas no capítulo 2, como: alto poder de adaptação, alto grau de reusabilidade e redução de complexidade. Em teoria, o modelo reflexivo, aliado a arquitetura de meta-níveis, visa facilitar o trabalho do desenvolvedor, porém o conjunto de modelos teóricos, não é totalmente correspondido na prática. Pôde-se perceber, durante o trabalho, que, devido ao conceito de reflexão computacional ser algo novo, as ferramentas disponíveis não satisfazem de forma completa a teoria descrita. Linguagens de programação não correspondem totalmente aos modelos, e ferramentas, como o Javassist, possuem um conjunto de facilidades e um metaprotocolo que vem a atender de forma restrita algumas necessidades de sistemas reflexivos. Outro aspecto que deve ser levado em consideração é em que momento realizar a reflexão, se em tempo de compilação, ou em tempo de execução. Neste trabalho utilizou-se o pré-processador OpenJava, que realiza reflexão em tempo de compilação, e a ferramenta Javassist que realiza reflexão em tempo de execução. Pôde-se verificar que a utilização de um metaprotocolo reflexivo em tempo de compilação é mais adequado para adaptar e reutilizar sistemas, enquanto que, um metaprotocolo em tempo de execução é mais adequado para auxiliar na implementação de sistemas que exigem uma certa tolerância a falhas. Ainda sobre as ferramentas utilizadas, pode-se notar que o pré-processador OpenJava fornece um conjunto extenso de classes e métodos na sua API, mas por outro lado a sua utilização é de certa forma complexa, enquanto que a API da ferramenta Javassist é simples de se utilizar, mas ao mesmo tempo muito limitada. A respeito do protótipo implementado, os objetivos propostos foram atingidos. Conseguiu-se implementar aspectos não-funcionais ao gerenciador, conseguiu-se listar conceitos e formas de implementação sobre reflexão computacional e também avaliar o funcionamento do pré-processador OpenJava e da ferramenta Javassist. Como restrições deste trabalho, tem-se o módulo de tratamento de erros que não trata todos os erros e também não fornece a possibilidade de restaurar o sistema após uma falha grave. Sugestões para trabalhos futuros são: estudar e avaliar mais profundamente o pré-processador OpenJava, assim como outras metaprotocolos, linguagens e ferramentas reflexivas. Pode-se, também, visar a implementação de objetos persistentes, réplicas de servidores, armazenamento de transações e recuperação de estados utilizando reflexão computacional sobre a implementação do gerenciador de arquivos, além da implementação de sistemas tolerantes a falhas ou de tempo real que utilizem um modelo reflexivo. Pode-se também adicionar ao módulo de tratamento de erros, além da capacidade de introspecção, a capacidade de intercessão, com o objetivo de possibilitar que o módulo possa realmente tratar o erro e permitir com que o sistema continue executando sem atingir a integridade dos dados.