Informações Principais
     Resumo
     Abstract
     Introdução
     Conclusão
     Download
  
  
  
 
Introduçã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
 
Introdução:
Sistemas modernos requerem um alto grau de confiabilidade, disponibilidade, performance e tolerância a falhas, como por exemplo, centrais telefônicas, controle de trens, banco de dados e sistemas distribuídos. À medida que estes sistemas vão evoluindo, o seu grau de complexidade evolui proporcionalmente, exigindo, dos desenvolvedores, o conhecimento de novas metodologias, conceitos e técnicas que possam suprir as dificuldades e simplificar o desenvolvimento. Em busca de novas soluções, [KIC1991] propõe que, a separação dos aspectos funcionais dos não funcionais, em sistemas complexos, pode trazer aos desenvolvedores uma maior facilidade ao modelar e implementar tais sistemas. Aspectos funcionais de um sistema são todas as tarefas que levam a conclusão do objetivo principal do problema, enquanto que aspectos não funcionais são todas as tarefas que servem como suporte para que as tarefas principais cumpram seus objetivos. Para dividir os aspectos funcionais dos não funcionais pode-se utilizar como padrão a arquitetura de meta níveis. Esta arquitetura detêm, em seus níveis inferiores, os objetos base (funcionais) e em seus níveis superiores, os metaobjetos (não funcionais), que têm o controle dos objetos base podendo modificar a sua estrutura e comportamento. Tal atividade só é possível utilizando o conceito de reflexão computacional, que segundo [LIS1997] é toda a atividade de um sistema computacional realizada sobre si mesmo, e de forma separada das computações em curso, com o objetivo de resolver seus próprios problemas e obter informações sobre suas computações em tempo real. Já [STE1994], define como sendo a capacidade de um sistema computacional de interromper o processo de execução (por exemplo, quando ocorre um erro), realizar computações ou fazer deduções no meta-nível e retornar ao nível de execução traduzindo o impacto das decisões, para então retornar o processo de execução. Para alcançar tal capacidade, o conceito de reflexão computacional se utiliza de objetos abertos (que através de uma meta interface permitem acessar, invocar e alterar um objeto sem estar delimitada a interface do mesmo) e de uma arquitetura composta por vários níveis, chamada de arquitetura de meta níveis. Os objetos abertos possibilitam ao programador, não só ter acesso apenas à interface pública do objeto, mas também à interface privada, sua estrutura de dados e o comportamento interno. Esta capacidade torna possível que o programador ajuste o objeto da forma que desejar, tendo uma maior reusabilidade e poder de adaptabilidade do objeto. Uma arquitetura de meta níveis é composta por vários níveis interligados através de um protocolo de comunicação entre os objetos. A utilização de uma arquitetura de meta níveis traz, como vantagens, a redução de complexidade, separação conceitual, reutilização e um maior grau de adaptabilidade para o sistema. Para poder estudar e implementar tais conceitos escolheu-se um gerenciador de arquivos distribuídos [POS2000], que fornece, de forma transparente ao usuário, a localização física dos arquivos que deseja armazenar e recuperar, e permite a organização dos arquivos em estruturas de diretórios. Porém não trata de conceitos, como replicação, detecção de falhas no ambiente e gerenciamento de performance, conceitos estes que podem ser tratados como conceitos não funcionais deste sistema. Atribuiu-se ao sistema descrito em [POS2000], através do conceito de reflexão computacional, conceitos não funcionais a um sistema gerenciador de arquivos distribuídos. Durante o trabalho também foram estudadas as ferramentas OpenJava [TAT2000] e Javassist [CHI2000], ferramentas estas que permitem implementar conceitos de reflexão computacional sobre a linguagem Java em tempo de compilação e execução, respectivamente. Assim, este trabalho permite a visualização, em grande parte, das características, vantagens e conceitos de reflexão computacional e das ferramentas OpenJava e Javassist, aplicados a um problema de adaptação de requisitos não funcionais em um sistema gerenciador de arquivos distribuídos. Com isto, foi possível realizar um levantamento dos vários modelos, técnicas e ferramentas do conceito de reflexão computacional, verificando a real aplicabilidade do conceito com exemplos reais e validar as vantagens levantadas, como: redução de complexidade, adaptabilidade e reutilização.