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étrica – Laborató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
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.
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 agents – http://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. |
[10] |
Danny b.
Lange, Mitsuru Oshima – Progamming 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 Ono – Aglets Specification 1.1 drft - 1998 |
[13] |
F.T. Tschang and T. Della Senta
Access to Knowledge – New
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. |