DESENVOLVIMENTO DE UM AMBIENTE DE AGENTES MÓVEIS PARA REPRESENTAÇÃO DE ESTUDANTES EM ATIVIDADES DE EDUCAÇÃO A DISTÂNCIA VIA INTERNET

 

 

Rafael  T. de Sousa Jr, Joriver R. Canêdo, Joilson Reis Brito, Eduardo José Nogueira

Universidade de Brasília – Departamento de Engenharia elétricaLaboratório de engenharia de redes (UnB/ENR/LabRedes)

Av. L3 Norte – FT – ENE – LabRedes- SalaB1-01 – Asa Norte – CEP: 70910-900 – Brasília-DF - Brasil

desousa@redes.unb.br,  joriver@cultura.com.br, joilson@brasiltelecom.com.br, ejn@cefetgo.br

 

 

 

RESUMO

A crescente demanda por aprendizado, aliada às facilidades advindas com os atuais sistemas de comunicação e tecnologias da informação, faz com que cientistas da educação e técnicos da teleinformática se unam no intuito de disponibilizar ferramentas que facilitem a implementação de cursos descentralizados e assíncronos, em que a interação entre professores e alunos se realize através de recursos como:  televisão, rádio, telefonia, e as tecnologias da informação integradas, como a Internet. Agentes móveis constituem mais uma dessas tecnologias e sua aplicação na EAD ainda não foi muito explorada. Neste trabalho temos uma proposta para criação de agentes que representem os estudantes em reuniões via internet. Para implementar esta solução usamos o sistema de agente Móveis AGLETS, o ambiente de programação JAVA e o sistema de banco de dados Mysql.

 

KEYWORDS

Educação a Distância, agentes móveis, aplicação de agentes móveis em EAD, Aglets, Chat com agentes móveis.

 

 

1.     INTRODUÇÃO

 

Num sistema de ensino a distância vários são as barreiras enfrentadas pelos alunos para participarem ativamente de seus cursos.

Uma ferramenta muito usada neste sistema de ensino, para discussão em grupo de alunos e professores, é o chat. Esta ferramenta exige, contudo, que os alunos estejam conectados à rede em um horário determinado e o tempo todo de duração do chat.

O que fazer se um aluno não tem esta disponibilidade de tempo?

Uma  solução aqui proposta é  utilizar a tecnologia de agentes móveis para criar agentes capazes de  representar alunos, como ouvinte, trazendo para o aluno todo o conteúdo da conversa, quando e onde este o desejar. Estes agentes podem inclusive apresentar durante o chat alguma idéia, sugestão ou mesmo questionamento que  o aluno queira fazer.

Para implementar esta proposta usamos o ambiente java  e o sistema de agentes móveis da IBM – AGLETS.

Este artigo tem a seguinte organização: na seção 2 mostramos as características e vantagens dos AGLETS; na seção 3 apresentamos o modelo proposto; na seção 4 a implementação do modelo e na seção 5 a conclusão e proposta para trabalhos futuros.

 

 

2.     AGENTES MÓVEIS - CARACTERÍSTICAS E ARQUITETURA

 

Agentes Móveis (AM) constituem uma tecnologia computacional que vem chamando a atenção de pesquisadores, haja visto suas características e vantagens em suas aplicações.

“Agentes Móveis são programas cujo código de execução possui recursos capazes de armazenar dados, transferir-se de um local para outro da rede e reiniciar sua execução sem interferência externa, isto é, por decisão própria” [9].

As principais características dos AM são:

§         Autonomia - esta característica especifica que as ações tomadas pelos agentes dependem exclusivamente das informações por eles obtidas e seus padrões de “raciocínio”.

§         Mobilidade - principal característica dos AM,  define como os agentes irão "migrar" de um ponto a outro da rede. A migração consiste em transferir os dados, o programa e estado de execução de um agente para um outro local;

§         Colaboração -  é capacidade relacionamento entre agentes que possibilita a Criação, Clonagem, Ativação /  desativação, Despacho, Retração, Destruição

§         Comunicação - AM comunicam com outros AM estando eles no mesmo contexto (mesmo sistema de agentes) e no mesmo computador ou não. A comunicação pode ser síncrona ou assíncrona

§         Execução de serviços - AM têm a capacidade de executar vários tipos de tarefas (funções) ao longo do seu ciclo de vida, e durante sua viagem pela rede. Estas tarefas podem ser: Funções Proprietárias -Pertencem ao próprio agente; Funções Carregadas - Obtidas ao longo da navegação, através de mensagens enviadas por outro agente; Funções Nativas - Pertencentes ao sistema operacional local.

As vantagens oferecidas pelos AM em aplicações são:

§         Redução do tráfego da rede – funcionam segundo o principio "Mover o processamento para os dados ao invés de mover os dados para o local de processamento".

§         Oculta a latência da rede - podem ser despachados pelo controlador central para realizarem suas tarefas localmente, em outra máquina.

§         Encapsulamento de protocolo – ao mover-se para máquinas remotas  estabelecem canais de comunicação baseados em protocolos proprietários locais. O protocolo de comunicação dos agentes móveis é embutido neste protocolos proprietários.

§         Execução assíncrona e autônoma - Tarefas podem ser embutidas em agentes móveis que podem ser despachados pela rede. Após serem despachados, os agentes são autônomos e independentes da criação de processo, podendo executar assincronamente. Este recurso é útil principalmente porque um dispositivo móvel (ex. laptops) pode  reconectar-se à rede para coletar o agente mais tarde.

§         Adaptação dinâmica - Agentes móveis possuem a habilidade de perceber mudanças no ambiente de execução e reagir autonomamente.

§         Independência de plataforma - Agentes móveis são independentes da máquina e também da rede, sendo dependentes somente do seu ambiente de execução

§         Robustez e tolerância a falhas - A habilidade dos agentes móveis de reagirem dinamicamente a situações e eventos desfavoráveis torna fácil a construção de sistemas distribuídos robustos e tolerantes a falhas. Se uma máquina está para ser desligada, todos os agentes em execução na máquina podem ser advertidos para que possam ser despachados e continuar suas tarefas em outra máquina da rede.

 

A arquitetura do sistema de Agentes Móveis AGLETS está mostrada na figura abaixo.

 

Figura 2.1  -Arquitetura dos sistemas de Agentes Móveis

 

 

3.     MODELO PROPOSTO 

 

Na figura 3.1 apresentamos o modelo ambiental proposto, onde o nosso sistema de agentes estará atuando.

Figura 3.1 – Esquema geral do sistema

 

O ambiente envolve as workstation dos alunos e uma máquina que funcionará como central informações do sistema, onde ficará a base de dados dos cursos oferecidos, a qual damos o nome AGENTE_SERVER. Todas as máquinas ligadas à internet.

A arquitetura para a solução proposta, figura 3.2,  é formada por uma camada de aplicação onde ficam as classes de AM: AgenteChat, agente estacionário, responsável pela implementação da rotina de chat; O AM BuscaParticipaChat que é um AM responsável por desobrir e controlar os elementos participantes do chat; o AM Curioso que será o representante do aluno no chat; o AM RecolheCurioso cujo papel será buscar um arquivo texto com as mensagens trocadas durante o chat e que foram recolhidas pelo AM Curioso. Este arquivo texto fica residente no AGENTE_SERVER.

 

Figura 3.2 – Arquitetura da solução proposta

 

As figuras 3.3 e 3.4  mostram a diferença, em termos de tráfego na rede, entre duas soluções possíveis: a primeira seria com o agente que representa o aluno no chat, ficando residente no AGENTE_SERVER todo o tempo de realização do chat; a segunda o agente representante do aluno migra para as máquinas dos participantes do chat.

 

Figura  3.3 -  Modelo esquemático do  Chat com AM Curioso no AGENTESERVER

Figura 3.4 -  Modelo esquemático do chat com AM Curioso na Máquina do aluno

 

 

 

4.     IMPLEMENTAÇÃO DO MODELO PROPOSTO

 

Nesta seção descreveremos como foi implementado o sistema proposto.

A estrutura tecnológica necessária para suportar o sistema, nas workstation, é composta de: uma máquina virtual java  (JVM)que suporte JDK 1.3 ou superior; sistema AGLETS, internet; e as classes de agentes e auxiliares contidas no pacote do sistema.

O AGENTESERVER deve ser uma máquina com estas mesmas características e recursos, contudo deve permanecer ligada  full-time, e funcionará como controladora dos AM e ainda como servidora de banco de dados, com as informações sobre o curso.

Todo o gerenciamento  de agentes será suportado pelo TAHITI, oferecido juntamente com o sistema de AM AGLETS.

As interfaces do sistema estão todas baseadas na API javax.swing, do java 2.

 

4.1 - AgenteChat  

 

 Agente estacionário que interage com o usuário por meio da interface da figura 4.1. Este agente aciona o agente BuscaParticipaChat, que tem a função de contactar os outros agentes AgenteChat´s da rede e avisá-los da presença do novo participante.

 

Figura 4.1 – AgenteChat no TAHITI-viewer

Figura 4.2 – Interface do AgenteChat

 

            A lista de URL dos possíveis participantes do chat é obtida pelo AM BuscaParticipaChat no banco de dados residente no AGENTESERVER. A figura 4.3 mostra o pedaço de código JAVA onde é criado e despachado o AM BuscaParticipaChat e a figura 4.4 mostra o pedaço de código JAVA onde o AM BuscaParticipaChat  manda para o AgenteChat os dados (URL e ID) do AgenteChat que está ativo em outra máquina.

 

public void despahaCloneBusca (URL[] urldest,String tp_servico){

         AgletProxy p = null;       

         for (int i=0;i < urldest.length ; i++) {

             try{

                if (urldest[i] == null){break;}

                if (urldest[i].toString().equals(home.toString())) {

                }else {

                    Object args[] = new Object[] {home, meuid,meuname,tp_servico};

                    p = getAgletContext().createAglet(getCodeBase(),

                                               "amead.BuscaParticipaChat",

                                               args);                  

                    try {

                            Thread.sleep(1000);

                    }catch (InterruptedException e){   }

                    p.dispatch((URL)urldest[i]);

                }

              } catch (Exception e){

                          System.out.println("AgenteChat ==> nao despachou Busca" + e.getMessage());

                try{

                     p.dispose();

                    winchat1.removeAll();

                } catch (Exception ex){

                          System.out.println("AgenteChat ==> nao fechou  clone Busca" + ex.getMessage());

                }

              }

            }

}

Figura 4.3 – Código do AgenteChat que despacha BuscaParticipaChat

 

 Na figura acima, o  comando “p = getAgletContext().createAglet(getCodeBase(), "amead.BuscaParticipaChat,  args);“ cria o AM BuscaparticipaChat e o comando  p.dispatch((URL)urldest[i]); “ o encaminha para a URL dstino, onde esta previsto encontrar um participante do chat.

 

public void run() {

switch (local){

   case VISITADO: {

           urlhostatual = getAgletContext().getHostingURL();

           participaOK();

           Message msg = new Message("BuscaParticipaChat");

           if (achou) {

               Object[] argspai = null;

//enviar mensagem para origem

              try {

                 String str1 = "ENCONTRADO";

                 msg.setArg("TIPO", str1);

                 msg.setArg("URL", (Object) urlhostatual);

                 msg.setArg("AGLETID", localid);

                 String str = (String) getAgletContext().getProperty("LoginCurso.");

                 msg.setArg("LOGINNAME", str.substring(4, str.length()));

             }  catch (Exception e) {

                          System.out.println("BuscaPart==>onArrival---errrro---proxy inv" +

                                                         e.toString());

             }

             try {

                 pai.sendMessage(msg);

             } catch (Exception e) {

                          System.out.println("BuscaPart==>onArrival---errrro---mens pai" +

                                                         e.toString());

             }

             try {           

                msg.setArg("TIPO", "ENCONTRADO");

                msg.setArg("URL", (Object) urlorigem);

                msg.setArg("AGLETID", idorigem);

                msg.setArg("LOGINNAME", meuname);

              } catch (Exception e) {

                            System.out.println("BuscaPart==>onArrival---errrro---args pai" +

                                                            e.toString());

              }

              try {    

                 if (!pai.getAgletID().equals(proxy.getAgletID()))

                   proxy.sendMessage(msg);

              } catch (Exception e) {

                          System.out.println(  "BuscaPart==>onArrival---errrro---mens proxy local" +

                                                             e.toString());

              }

            } else {

                     try {

                        msg.setArg("TIPO", "NAO ENCONTRADO");

                        msg.setArg("URL", (Object) urlhostatual);

                        pai.sendMessage(msg);

                      } catch (Exception e) {

                                     System.out.println("onArrival----errrro----nao participa CHAT" +

                                                                    e.toString());

                       }

                 }

             dispose();

             break;

           }

Figura 4.4 – Código do AM BuscaParticipaChat  envia dados ao AgentreChat

 

            Na figura 4.4, acima, o trecho de comando sublinhado é responsável por enviar ao AgenteChat origem, via mensagem, o endereço do participante encontrado:

            Para cada aluno participante do chat é enviado um AM BuscaParticipanteChat para certificar que o aluno ainda está participando (pode ser que ele esteja desconectado e o banco de dados no AGENTESERVER esteja desatualizado) atualizar a lista de participantes deste aluno com o novo membro do chat.

 

4.2 - Curioso

 

            Este AM tem como objetivo  representar um aluno durante o chat. 

            O AM Curioso ao ser criado solicita ao aluno a data e a hora do chat, em que ele vai atuar. De posse destes dados ele migrará para o AGENTESERVER  onde ficará, em estado de dormência (loop deactivate(), reactivate()), até a hora do chat. Ver código JAVA a seguir:

int qttempo = quantoTempo(datadochat + horadochat) * 1000;

              try {

                deactivate(qttempo );

              } catch (Exception e){

                System.out.println("CURIOSO==> nao desativou ");

              }

O método quantoTempo() calcula , em segundos, a duração de tempo que o AM Curioso vai esperar até começar suas atividades no AGENTESERVER.

Após a sua ativação o AM Curioso procura no banco de dados a relação de novos membros do chat, cria um auto_clone e o despacha para cada máquina de aluno já conectada no chat, onde começa a ouvir e gravar  em arquivo texto as mensagens emitidas pelo aluno.

Ao final do Chat, isto é, quando o aluno ouvido fechar o chat, o Curioso retornará para o AGENTESERVER onde gravará um arquivo texto juntamente com os demais Curiosos do representantes do mesmo aluno.

 

4.3 – RecolheCurioso

           

            Quando o aluno desejar  e de onde ele estiver  pode acionar o AM RecolheCurioso.

Este AM cria um auto-clone eo despacha para o AGENTESERVER, onde lê o arquivo texto gerado pelos AM Curiosos e o envia, em forma de mensagem, ao AM RecolheCurioso que ficou na máquina do aluno. As figuras 4.5,  4.6, 4.7, 4.8 a seguir mostra as telas do chat de dois alunos, o arquivo texto no AGENTESERVER e o mesmo arquivo texto na máquina do aluno.

 

Figura 4.5 – tela de chat 1

Figura 4.6 – tela de chat 2

Figura 4.7 – Arq texto no AGENTESERVER

Figura 4.8 – Arq texto na máquina do aluno

 

A numeração que aparece antes de cada mensagem é o tempo obtido pelo método getTime() da classe java.util.Date. Pode ser usado para ordenar as mensagens na ordem cronológica que foram geradas.

 

5.     CONCLUSÃO E TRABALHOS FUTUROS  

 

            O presente trabalho é na verdade uma aplicação prática da nova tecnologia da computação, chamada Agentes Móveis (AM), para auxilio a estudantes de cursos a distância. Com esta aplicação podemos ver como um AM pode representar um indivíduo em suas tarefas diárias. No caso apresentado, um ambiente de chat para cursos em EAD, o aluno pode participar pelo menos como ouvinte. É claro, que o  ganho não é a mesma coisa que se ele pudesse participar mais interativamente, mas pelo menos ele não ficou alheio ao que foi discutido.

            Da forma como foi projetado esta aplicação a intenção é que o tráfego na rede seja menor que as aplicações de chat tradicionais, via internet, contudo nenhuma medição foi feita neste sentido.

            Existe alguns inconvenientes nesta tecnologia, uma delas é a necessidade de haver um ambiente de AM instalado em todas as  máquinas. È importante salientar apesar de cada sistema de agentes Móveis ter o seu próprio protocolo, estes são encapsulados no protocolo HTTP da Internet, logo toda tramitação de mensagens e AM se dá via internet. Não há a necessidade de haver um Browser na máquinas, mas aplicações suportadas pela WEB são mais amigáveis e podem perfeitamente ser implementadas em associação a AM.

            Outras aplicações para AM em EAD manipulação de um banco, distribuído e integrado, de questões avaliativas e trabalhos par alunos a distância, sendo que AM poderiam auxiliar tanto professores na eliminação de questões duplicadas e também aos alunos propiciando um universo maior de exercícios e trabalhos de pesquisa. Uma outra carência detectada em sistemas de AM é o gerenciamento dos AM assíncronos, que estão fora do host original. Não há como o proprietário gerenciar AM gerados por AM durante sua viagem pela rede.

 

6.     REFERÊNCIAS BIBLIOGRÁFICAS

 

[1]

Margarita, Victória Gomes -  Avaliação Formativa e Continuada da educação a Distância – http://www.abed.org.br  (Acessado em 20/08/2002)

[2]

 Hack, Luciano Emilio(1999). Mecanismos complementares para avaliação do aluno na Educação a Distância. http://www.ufrgs.br/ufrgs/ (acessado em 20/04/2002).

[3]

TAROUCO, L. (2002) O Processo de Avaliação na Educação a Distância. Consultado em 06/05/2002. Disponível em:  http://www.pgie.ufrgs.br/ webfolioead/biblioteca/artigo6/artigo6.html.

[4]

Cavalli, Maria Lúcia  Neder(2001) – Avaliação na Educação a Distância – Significações para Definição de Percursos.  http://www.nead.ufmt.br/ documentos/AVALIArtf.rtf  - Acessado  em 07/08/2002.

[5]

HACK, Josias Ricardo (2000) -  Avaliação em educação a distância (EAD) e Cursos Em Modalidade Alternativa. http://www.unoescjba.edu.br/~hack/ producoes/producoes.htm – Acessado em 12/06/2002 .

[6]

Danny B. Lange and Mitsuru Ashima. "Seven Good Reasons for Mobile Agents" in Communications of the ACM, March, 1999. Vol. 42, No. 3.

[7]

Bill Venners, Solve real problems with aglets, a type of mobile agentshttp://www.javaworld.com/javaworld/jw-05-1997

[8]

New pedagogical tools for Mobile Learning groups - 

[9]

Braga, André Luis  - Utilização de agentes Móveis em Recuperação e Troca de Dados - tese de doutorado – 2000, acessado em 15/10/2002.

http://www.cos.ufrj.br/~andre/Download/AgentesMoveis/eq.pdf

[10]

Danny b. Lange, Mitsuru OshimaProgamming and Deploying Java Mobily Agents With Aglets – 1998

[11]

UML – Guia do Usuário , Gady Booch,  James Rumbaugh,  Ivair Jacobsom – Editora Campus – 2000

[12]

Mitsuru Oshima , Guenter Krjoth e Kouichi OnoAglets Specification 1.1 drft - 1998

[13]

F.T. Tschang and T. Della Senta   Access to KnowledgeNew Information Technologies and  the Emergence of the Virtual University,– 2001

[14]

Http://banners.noticiasdot.com/termometro/boletines/autor/docs/elearning-brasil/2001/elarning-brasil_Diciembre_2001.pdf – acessado em 10/12/2002.

[15]

Deitel, H.M, Deitel P.J -  Java 2 como programar. Bookmam Porto Alegre 2001

[16]

Lemay, Laura – Java 2 Aprenda em 21 Dias. Campus 2001

[17]

Silberschatz, Abraham, Korth, Henry f.- Sistemas de Banco de Dados. Makrom Books , 1999.