Grupo A5

     Subject: Grupo a5 - Programao na Web
        Date: Wed, 15 Apr 1998 14:36:19 -0300
        From: "Luiz Gonzaga da Silveira Jr." 
Organization: Faculdade de Engenharia Eletrica e da Computacao - UNICAMP
  Newsgroups: feec.posgrad.IA368F

Disciplina: Tópicos em Engenharia da Computação V

Tema: Programação na Web

Grupo - A5          RA

   Adriana Delfino    958105       

   Armando Delgado    845253

   Marcos Chaim       876091

   Luis Gonzaga       935398  (relator)

   Sílvio Medeiros    875647


1. Introdução


Existe uma grande variedade de mecanismos para incorporação de
interatividade na Web, dentre as quais JavaScript, ActiveX, CGI e Java
Applets.  CGI e Applets são as mais populares e fornecem
diferentes possibilidades no que se refere principalmente ao
processamento, se ocorre em sua maioria no servidor ou no cliente.

CGI (Common Gateway Interface) é uma espécie de intermediário entre
entre o servidor Web e um repositório de informação ou simplesmente um
programa aplicativo(programa/script). Assim, quando um cliente
seleciona uma URL que referencia um programa/script CGI:

           1. o servidor recebe a requisição e identifica a
           necessidade de rodar um programa/script através da extensão
           do arquivo (.cgi) ou sua localização no servidor (cgi-bin/).

           2. o servidor "inicia" o programa/script e envia para ele
           as informações em forma de variáveis de ambiente e entrada
           padrão.

           3. o programa/script processa as informações, incluindo
           acesso a repositórios de informação ou quaisquer sistema de
           informação e produz uma saída, incluindo um "header" para
           informar ao servidor o tipo de informação que está sendo
           produzida.

           3. o "header" e os dados são enviados diretamente ao
           servidor, que repassa as informações para o cliente em
           formato interpretável por "browsers" Web.

Este canal entre o servidor Web e o programa/script é o que chamamos
CGI. Seu principal benefício é possibilitar ao cliente acesso a
informação de forma transparente e uniforme através da Web.

Um Java Applet é um programa em linguagem Java que pode ser incluído
em uma página HTML, assim como é feito com uma imagem. Quando o
cliente utiliza-se de um "browser" Java-compatível para visualizar
aquela página que contém o Java Applet, o código do Applet é
transferido para o seu sistema e executado no seu browser. Se houver
necessidade, as informações processadas pelo Applet podem ser enviadas
ao "host" de onde foram obtidas, através de mecanismos de manipulação
de URL e comunicação via "socket" oferecidos pela linguagem Java.

Vimos que CGI e Applets oferecem mecanismos para promover a
interatividade entre cliente e servidor na Web. No caso do CGI, quase
a totalidade do processamento ocorre no servidor, enquanto que no
Applet a concentração do processamento dá-se no lado do cliente. Desta
forma, aplicações podem ser projetadas para utilizar de maneira
racional ambos os recursos.

Novas tecnologias tem surgido como alternativas ao CGI, para suprir
problemas de ineficiências ocasionados pelo alto "overhead" em
servidores com muito acesso, já que neste caso para cada requisição
uma cópia do programa/script é lançada e disparada. A JavaSoft tem
proposto o Java Servlets como padrão alternativo e eficiente ao CGI. A
API Servlet é uma classe Java que implementa uma interface para
análise (coleta de valores dos campos) e execução (por exemplo,
pesquisa em base de dados, execução de aplicativos) de informação e
prepara uma resposta para o cliente. Os servlets são escritos em Java
e com, isso podem fazer uso dos recursos (acesso aos packages e
JavaBeans) e características de segurança da linguagem, são portáveis
pela própria natureza da linguagem e apresentam melhor desempenho do
que o CGI (uso de threads para processamento de requisições simultâneas
e a exclusão de linguagens puramente interpretadas).

Apesar de simplificar aspectos relacionados a administração e
distribuição (entrega) de software, a implementação de aplicações
usando Applets coloca restrições na forma e tamanho dos programas.
Marimba Castanet é um produto realizar para entrega eficiente de
programas e armazenamento persistente pelo cliente das informações
colhidas, bem como atualização incremental das informações modificadas
no servidor através de sondagens periódicas originadas no cliente.

--------------------------------

2. Curso sob Medida e Prova Virtual

--------------------------------
   

2.1. Composição da disciplina (exercícios, provas, aulas) e
     estabelecimento do perfil do curso

O ambiente de composição da disciplina pode utilizar-se do Castanet no
servidor para facilitar a "entrega" ferramentas de edição (texto,
figura) aos autores do material. Assim, ferramentas com grande
quantidade de recursos e portanto, de grande porte (tamanho), não
precisam ser carregadas em todas as sessões de trabalho.

A possibilidade de armazenamento persistente local do Castanet é
extremamente útil para a retenção pelo cliente do material gerado no
servidor, com a possibilidade de atualização periódica das
modificações feitas no servidor. Pode-se também controlar a
atualização do material gerado pelo autores no servidor. Além disso, o
autor gera o material localmente, enviando os dados ao servidor
posteriormente.

No processo de composição cada disciplina terá um ou mais módulos
(material, exame, exercício) e cada módulo terá várias instâncias de
informação:

     - material expositivo:modulo básico (obrigatório), módulo F1H1
     (para alunos com histórico H1 e formação F1), modulo F2H2 (para
     alunos com histórico H2 e formação F2), e assim por diante.

     - exame: questões básicas (obrigatório), questões para F1H1 (para
     alunos com histórico H1 e formação F1), questões para F2H2 (para
     alunos com histórico H2 e formação F2), e assim por diante.

     - exercícios: questões básicas, questões para F1H1 (para alunos
     com histórico H1 e formação F1), questões para F2H2 (para alunos
     com histórico H2 e formação F2), e assim por diante.

Neste caso, cada disciplina terá um conjunto de informações organizadas
em uma espécie de árvore, de modo a abranger todo o assunto com diversos
níveis de profundidade e destinadas a diferentes perfis.


2.2. Cadastro de atores com diferentes perfis e nível de acesso

O cadastramento de atores pode ser realizado através de CGI, pois
esta atividade não ocorre com muita frequência. Neste caso um
formulário é disponibilizado e após preenchido é enviado ao servidor
para ser armazenado em uma base de dados.

Dentre outras informações, o usuário deve fornecer uma senha, com a qual
será permitido o seu acesso ao curso (material, prova,etc).

2.3. Disponibilização e acompanhamento da disciplina/aula


A disponibilização da disciplina depende do perfil do aluno. Este
perfil é recuperado quando o aluno realiza o acesso ao servidor.
Para tal, a "página" principal do curso terá a indicação de um "link"
para o material.

O acesso ao material será permitido através do uso da senha, fornecida
no cadastramento do aluno. Com isto, o servidor obtém o perfil do
aluno e recupera a aula de acordo com esta informação. Por exemplo,
para um determinado aluno é recuperado o perfil F2H2 para a disciplina
de Cálculo I. Assim, o material relativo a disciplina Cálculo I é
recuperado para o perfil F2H2.


Como teremos vários alunos para o acesso ao curso, o uso de CGI pode
sobrecarregar o servidor. O ideal seria utilizar Servlets para
obtenção de melhor desempenho. O uso do Castanet é interessante para
diminuir o "overhead" no servidor e possibilitar um acesso mais rápido
à informação por parte do aluno, já que o material completo pode ser
carregado uma única vez e atualizado incrementalmente em "leituras"
subsequentes.

O instrutor acompanha o aluno através do seu histórico (dinamicamente
alimentado com os acesso do aluno ao material) armazenado
persitentemente no servidor, pode recuperado através de aplicações
locais (no servidor) quando o aluno estiver na "aula". Esta
recuperação é realizada através dos mesmos mecanismos de recuperação
de perfil do aluno, neste caso importando apenas os aspectos
históricos do mesmo.

2.4. "Feedback" para aluno e professores

Para o instrutor o "feedback" é dado pelo histórico do aluno e os
resultados do exames, isto é, o instrutor pode acompanhar o aluno
verificando o acesso do mesmo ao material, exercícios e eventualmente
pelo seu desempenho nos exames. Neste caso, a retenção local da informação
sobre cada aluno é mantida e incrementalmente atualizada através do
recurso de persistência do Castanet. O Servlet é utilizado para recuperar
estas informações no servidor e disponibilizá-la para o cliente com o
auxílio do Castanet.

O aluno pode receber um "feedback" consultando os resultados obtidos
nos exames (descrito no item posterior) disponibilizados através de
página gerada através de CGI, a partir de resultados colocados na base
de dados da disciplina. Este processo pode ser efetivado via CGI,
devido a pouca quantidade de informação  disponibilizada e o pouco
acesso a esta informação, já que as notas serão apenas
disponibilizadas após aplicação e correção de cada exame.

2.5. Aplicação e correção  de provas e disponibilização de resultados

A aplicação de prova, assim como a disponibilização do material, está
fortemente relacionada ao perfil da disciplina para um determinado
aluno. Assim, os mecanismos de aplicação de provas são os mesmos da
disponibilização do material. Applets são utilizados na elaboração das
questões da prova, que deve contemplar:
        (1) campos de textos - questões dissertativas
        (2) lista de ítens - questões de múltipla escolha
        (3) processo de aferição de tempo de prova
Com a grande quantidade de informação (tamanho e quantidade de applets)
para questões do exames. O Castanet oferece  um mecanismo mais
eficiente para entrega, assim como o Servlet provê mecanismos para
a recuperação do exame baseando-se no perfil da disciplina e os
dados do aluno (formação + histórico).

As questões  de múltipla escolha serão corrigidas automaticamente
pelo próprio Applet. Assim quando enviada resposta daquela questão
ao servidor, o seu resultado já é computado e atualizado em
base de dados com referência àquele aluno. Enquanto, as questões
dissertativas são colocadas em repositório de pendências para esperar
a correção por um instrutor. Quando o instrutor efetiva a correção
de uma determinada questão, o resultado é atualizado na base de dados
da mesma, juntamente com os resultados das questões de múltipla escolha.
A nota somente será disponibilizada quando todas as questões estiverem
sido corrigidas, juntamente com um gabarito para averigação dos resultados.

3. Considerações finais

De um modo geral, devido ao aspecto essencial da aplicação em
disponibilizar recursos e dados a inúmeros clientes, é mais
conveniente que tais recursos e dados sejam transferidos para o
cliente e lá processados, tirando do servidor o ônus de tal
processamento.

Neste sentido, a utilização dos mecanismos Castanet e Servlets (e, em
última análise, Java applets) é o mais adequado. Tais mecanismos
otimizam o processamento no servidor (servlet) quando este tem que
fazê-lo, permitindo deixar para o cliente o processamento local de
dados (Castanet), mantendo a consistência de dados e recursos
(applets) entre servidor e cliente. Somente em casos muito simples
(poucos dados e baixo processamento) resolvemos utilizar CGI, por
exemplo, cadastro e verificação de permissão de acesso à disciplina.



4. Referências bibliográficas

[1] CGI: The Common Gateway Interface for Server-side Processing
    The Web Developer's Virtual Library, 1997 

[2] Prelude to CGI
    in Introduction to CGI/Perl, Chapter 1
    Steven E. Brenner, Edwin Aoki
    M&T Books, 1996 

[3] Overview of Applets in The Java Tutorial:
    Object-Oriented Programming for the Internet, 2nd Ed.
    Mary Campione, Kathy Walrath
    http://java.soft.com, March 1998

[4] Dynamic WebPages in Java: Servlets
    Benoît Marchal
    Digital Cat's Java Resource Center, Nov. 1997

[5] Java beyond the browser: The channel metaphor
    Bill Venners, JavaWorld 1(10), December 1996

[6] APPLETS in http://www.javasoft.com/applets/index.html

[7] Java in a Nutshell: Desktop Quick Reference
    David Flanagan, 2nd. edition, ed. O'Reilly, 1997

[8] CGI Tutorial in http://library.advanced.org/10258/cgi/cgi.htm

ricarte@dca.fee.unicamp.br

Last modified: Wed Apr 29 16:59:42 BRA 1998