Informações Principais
     Resumo
     Abstract
     Introdução
     Conclusão
     Download
  
  
  
 
Introdução
 
 
Acadêmico(a): Fabio Cordova de Sousa
Título: Utilização da Reflexão Computacional para Implementação de um Monitor de Software Orientado a Objetos em Java
 
Introdução:
Com o aprimoramento de técnicas, conceitos e metodologias, surgem também novos paradigmas no desenvolvimento de software. Um desses paradigmas é a Orientação a Objetos que, cada dia mais, vem sendo utilizada e difundida. Segundo Winblad (1993), num futuro não muito distante, a Orientação a Objetos (OO) oferecerá grandes benefícios para três categorias de programadores: usuários, programadores comerciais e desenvolvedores em nível de sistemas. O mais dramático desses benefícios será para os criadores de sistemas, que precisarão adotar esta técnica de desenvolvimento, e suas ferramentas, a fim de tratar o aumento da complexidade e potencialidade dos softwares. Conforme Winblad (1993), os desenvolvedores precisam fazer mudanças substanciais na maneira de analisar problemas e traduzi-los em programas. O paradigma da Orientação a Objetos é bastante diferente. Os mais experientes neste paradigma declaram: “Os programas orientados ao objeto são mais fáceis de escrever”. Dizem ainda que os conceitos são mais abstratos do que os tradicionais e podem ser difíceis de entender, a princípio. Com freqüência, quando alguns novatos fazem alterações em comandos, dizem: “Ele funciona, mas eu não sei porquê”. Existe uma curva de aprendizado inicialmente lenta, porém com um “ahá” ocorrendo no momento certo. Considerando este fato, há a necessidade de ferramentas para o apoio do aprendizado dessa técnica. Esse suporte seria dado, por exemplo, por softwares que mostrassem como e quando objetos fossem instanciados, métodos utilizados e atributos acessados. Neste ponto, inclui-se a Reflexão Computacional, que serve como uma ferramenta para demonstrar, e até mesmo alterar, o conteúdo de softwares, usados como exemplos. Segundo Lisboa (1997), Reflexão Computacional é 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, podendo ser esta resolução tanto estrutural como comportamental. Já Steel (1994) 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, retomar o processo de execução. Para tal, a reflexão computacional utiliza-se de objetos abertos (permitindo acessar, invocar e alterar um objeto sem estar delimitada à interface do mesmo) e de uma arquitetura de meta-níveis (composta por vários níveis). A Reflexão Computacional segundo Barth (2000) pode ser dividida em duas partes distintas: a estrutural, que permite que o programa tenha a sua estrutura – tipo e número de componentes – alterada durante o processo de execução e/ou de compilação, e a comportamental, que atua indiretamente sobre aspectos de comportamento de um objeto, mantendo inalterada a estrutura do mesmo. A linguagem de programação Java provê uma estrutura que suporta a reflexão computacional, não em todo o seu contexto, mas abrangendo um tipo de reflexão, a reflexão estrutural. Extensões para Java têm sido desenvolvidas para utilizar todos os recursos da reflexão computacional. A proposta deste trabalho é desenvolver um software de apoio ao aprendizado de OO, utilizando a técnica de Reflexão Computacional para monitorar os objetos, métodos e atributos, através de uma interface gráfica. Um software de apoio como este será de muita utilidade na disciplina de Programação II (OO) do curso de Ciências da Computação da FURB ao permitir que os acadêmicos, após construírem seus exercícios e exemplos em Java, possam visualizar a execução dos objetos que construíram.