Tecnologias de distribuição: Web e CORBA

Alunos:
    Christian M. Adriano     Ra 931594 (Relator)
    Alberto B. Raposo        Ra 946152
    Jefferson Blaitt               Ra 973528
    Raquel S. Schulze          Ra 956289
Este documento é o resultado das discussões realizadas nos dias 22.04.98.O assunto consiste em uma revisão da arquitetura de software proposta na reunião de grupos sobre o tema  Programação na Web considerando agora a utilização de objetos distribuídos via CORBA. O material base está disponível nas referências.
 

Tópicos:

1. Introdução

2. Mecanismo distribuído de programação Web

3.Funcionalidades do ambiente proposto

4.Implementação das funcionalidades

5.Conclusão


1. Introdução

Abordaremos neste trabalho o uso da tecnologia de distribuição de recursos/CORBA para implementar o curso sob medida + prova virtual. Forneceremos as mesmas funcionalidades que especificamos utilizando o mecanismo de servlets/CGI no nosso  trabalho  Programação na Web(grupo C5) . Na próxima seção explicaremos como funciona o mecanismo cliente-servidor utilizando applets e a arquitetura CORBA. Na seção 3 temos a relação de funcionalidades para o ambiente proposto. As implementações de cada funcionalidade  estão na seção 4 acompanhadas de uma análise dos benefícios encontrados.
 

 

2. Mecanismo distribuído de programação Web

O mecanismo básico consiste em requisições feitas a métodos de objetos remotos, a partir destas requisições são enviados os dados tanto na direção do cliente como do servidor. No presente mecanismo estes dados serão recebidos por applet em vez serem enviados na forma de uma página HTML como no mecanismo anterior. Para uma explicação passo a passo do desenvolvimento de um aplicativo veja o paper [3] , para visualizar o funcionamento do mecanismo veja em  [4].
Com uso da tecnologia de distribuição de objetos CORBA observamos que teríamos ganhos no processo de desenvolvimento e acréscimo de funcionalidades além de algumas melhorias de desempenho para a aplicação. Ressaltamos os ganhos em transparência no uso de recursos suportados por objetos remotos e  melhoria de interoperabilidade, que entendemos como sendo para o cliente uma visão mais local do aplicativo. Explicando melhor este último ponto, temos que na abordagem anterior através de servlets ficava sempre evidente ao cliente os momentos em que eram realizadas requisições por recursos remotos, as quais se consumavam pela submissão de um form HTML devidamente preenchido e o conseguinte retorno de uma nova página HTML. Utilizando chamadas a métodos de objetos remotos através da infraestrutura definida na especificação CORBA, podemos tornar as requisições transparentes sempre que  necessário.
Outro ponto forte neste novo modelo cliente-servidor é o uso de applets, distribuindo parte do processamento para os clientes. O uso de applets já havia sido proposto no trabalho anterior, porém agora temos a possibilidade de fazer com que estes applets utilizem recursos disponibilizados remotamente.
 

3. Funcionalidades do ambiente proposto

 Aqui temos uma retomada das funcionalidades que foram relatadas no ambiente anterior. Estas funcionalidades vêm a atender os requisitos de personalização do material e prover os recursos necessários ao acompanhamento do estudo tanto por parte do aluno como de seu instrutor.

Podendo assim serem estabelecidas nove funcionalidades para o ambiente:

1. Composição das disciplinas através de material, exercícios, provas, etc. (Processo de co-autoria.)
2. Estabelecimento de perfis para cada curso, definindo diferentes visões.
3. Cadastramento de usuários com diferentes perfis e níveis de acesso (instrutor, monitor, alunos).
4. Disponibilização do material.
5. Acompanhamento do andamento da disciplina.
6. Fornecimento de feed-back para alunos e professores.
7. Aplicação de provas.
8. Correção das provas e cálculo das notas.
9. Disponibilização dos resultados para eventuais consultas.
 

4.Implementação das funcionalidades

 

 1.Composição da disciplina

O autor entraria primeiramente em uma página de autoria. Esta página viria acompanhada de  um applet de suporte a autoria, o qual teria as seguintes atribuições:
 
  • Autenticar o autor;
  • Fornecer uma estrutura visual de um índice de todo o material disponível;
  • Permitir selecionar qual tópico será editado;
  • Permitir definir qual a visão que se terá sobre este tópico (i.e.: com/sem as anotações, penúltima versão, com/sem referências, visão de terminado perfil,etc) ;
  • Envia pedido e recebe este material em uma ferramenta de edição.
  • Edita o material, logo este applet poderia ter todas as ferramentas necessárias a edição, ou este poderia chamar um aplicativo local de edição.

  •  
    Para tentar contornar o peso em carregar e enviar um applet muito grande, podemos ter este applet repartido em vários, sendo os maiores instalados previamente na área do cliente. Outra solução que pode ser usada em conjunto é o caching feito pelo CASTANET.

    Vemos que com esta solução não teríamos mais as trocas de páginas do mecanismo servlet/CGI. Isto torna a aplicação mais transparente para o cliente, dando-lhe uma visão do ambiente mais  de "desktop" que se aproxima das aplicações locais.
     

    2. Estabelecimento de perfis

    Aqui teríamos benefícios em interface, pois devido ao uso de um applet a definição de um perfil e posterior envio estariam integradas dentro da mesma aplicação. Dependendo da complexidade de caracterização deste perfi, teríamos justificado um mecanismo mais rebuscado a partir de ferramentas visuais de um applet.
     Exemplo: No momento de definir quais tópicos de uma matéria envolveriam determinado perfil, o applet faz uma análise do perfil que está sendo construído, sugerindo tópicos e apontando possíveis falhas, como falta de determinado tópico pré-requisito.

    O applet teria as seguintes atribuições:
     

  • Autenticar o usuário;
  • Recebimento da estrutura completa do curso;
  • Ferramenta de seleção de tópicos e visualização dos já selecionados (como um shopping basket);
  • Análise concorrente da atividade;
  • Envio do perfil para armazenamento no servidor.
  • Em comparação com o mecanismo servlet/CGI, não seria viável prover as funcionalidades de acompanhamento da
    confecção do perfil sem a  possibilidade de ser realizado um processamento local em conjunto com chamadas a métodos em objetos remotos.
     

    3.Cadastro de Usuários

    Como temos afirmado que entre os benefícios que justificariam o uso da tecnologia de distribuição está o grau de complexidade da aplicação, neste caso de cadastro de usuários não seria necessário um mecanismo tão rebuscado. Portanto, de modo a manter o padrão de desenvolvimento, utilizariamos também um applet como interface para envio dos dados de um novo usuário ou alteração de dados já existentes. Os ganhos estariam talvez em uma melhor interface, porém seria pefeitamente e talvez até mais eficiente o uso do mecanismo de servlet/CGI para esta funcionalidade.
     

    4 e 5.  Disponibilização do Material e Acompanhamento da Disciplina

    Estas duas funcionalidades estariam dentro de um mesmo applet. Isto se deve a eliminação da necessidade de troca sucessivas de páginas a cada requisição feita ao servidor.
    Teríamos aqui um applet que mostraria graficamente o conteúdo já percorrido. Poderíamos ter também um mecanismo de tutor inteligente, veja paper [7], informando conteúdos correlatos, tópicos já alterados pelo autor como modificação de links e conteúdos.

    O applet teria as seguintes atribuições:
     

  • Autenticar o usuário;
  • Visualização do material em um ambiente próprio (browser);
  • Visualização dos trechos já percorridos;
  • Tutor inteligente;
  • Buscas sobre o material.
  • A ferramenta de acompanhamento do material para o professor seria semelhante, expandida para o monitoramento de qualquer aluno. Seria necessário o acréscimo de algumas funcionalidades, como saber em que ponto do material encontra-se determinado aluno ou  a turma em média.
     

    6. Feedback

    Seria composto pelo já especificado monitoramento das atividades dos alunos e pelo acréscimo de ferramentas de comunicação. Estas estariam na própria interface do applet anterior em forma de ícones ou botões, que ativariam as ferramentas de comunicação já existentes (e_mail, news, chat, etc).
     

    7 e 8. Prova

    Seria suportado por um único applet. A correção poderia ser feita no cliente para o caso de uma prova de múltipla escolha. Teríamos mais uma vez um ganho na interface com o usuário. Quanto ao mecanismo de segurança utilizaríamos o mecanismo de autenticação do JDK1.1, ver paper[2].
    O applet teria as seguintes atribuições:
  • Autenticação do usuário;
  • Visualização da prova;
  • Marcação de tempo;
  • Correção local se for prova de múltipla escolha;
  • Envio das resposta;
  • Recebimento de uma certificação de realização da prova.
  • Para o professor teríamos um applet "escaninho",  que mostraria ao professor as provas a serem corrigidas (caso elas não sejam de múltipla escolha).
     

    9. Disponibilização dos resultados

     Aqui teríamos um applet gráfico que consulta objetos remotos, os quais fornecem os resultados através de consulta a um banco de dados.
    Justificamos aqui o uso do mecanismo applet/CORBA pelo fato de termos que receber as repostas via applet e não na forma de uma página HTML, de modo a realizar processamentos locais sobre estes dados, como mostrar em formatos diferentes, selecionar um sub-conjunto dos mesmos e alterá-los para posterior envio.
     

    5.Conclusão

    Aqui tomamos uma posição radical de implementar todas as funcionalidades utilizando o novo mecanismo java applets/CORBA, a intenção foi com isso mostrar os grandes benefícios proporcionados e bem como questionar os pontos onde o peso e inadequação da tecnologia sugeririam um integração com o mecanismo de servlets/CGI visto no trabalho anterior. Pensamos que questões de modelamento e implementação de um "curso sob medida"  e "prova virtual"  realimentarão decisões acerca de qual tecnologia deve ser utilizada em cada funcionalidade. Procurando definir os compromissos que devem ser seguidos, vemos primeiramente a complexidade das atividades a serem realizadas localmente, a eficiência na transmissão de volumes grandes de códigos e por conseguinte o peso da interpretação deste código localmente.
     

    Referências

    [1] David Curtis: "Java, RMI and CORBA", Object Management Group, 1997

    [2] Eric Evans, Daniel Rogers: "Using Java applets and CORBA for multi-user distributed applications" , IEEE Internet Computing 1(3):43-55, May-June 1997

    [3] Morgan. B :"CORBA meets Java ", JavaWorld 2(10), October 1997
     
    [4] Orfali, R.; Harkey, D. : "Client/server, CORBA/Java-Style em Client/server programming with Java and CORBA", John Wiley and Sons,1997

    [5] Sean Baker, Vinny Cahill, Paddy Nixon : "Bridging boundaries: CORBA in perspective ", IEEE Internet Computing, 1(5):52-57, September/October 1997

    [6] Jeremy Rosenberg ," When to use CORBA ", Javology 2(3), April-May 1997

    [7] Marcelo Miranda Coelho, "Definição de um módulo hipermídia adaptativo para integrar sistemas tutores inteligentes", Instituto Tecnológico da Aeronáutica, http://www.comp.ita.cta.br/~coelho/paper.html


    Página atualizada em 27. 04. 98