Escolar Documentos
Profissional Documentos
Cultura Documentos
JxAula - Proposta de um Arcabouo para a Construo de Servios P2P no contexto de Sistemas de Ensino Distncia
Orientador
Prof. Dr. Jos Neuman de Souza
Universidade Federal do Cear Centro de Tecnologia Departamento de Engenharia de Teleinformtica Programa de Ps Graduao em Engenharia de Teleinformtica
JxAula - Proposta de um Arcabouo para a Construo de Servios P2P no contexto de Sistemas de Ensino Distncia
Autor Andr Pontes Sampaio Orientador
Prof. Dr. Jos Neuman de Souza
Dissertao de Mestrado apresentada Coordenao em da do Curso de de Ps-Graduao Teleinformtica requisitos para Engenharia
Universidade do grau
em Engenharia de Teleinformtica.
Fortaleza Cear Agosto 2008
JxAula - Proposta de um Arcabouo para a Construo de Servios P2P no contexto de Sistemas de Ensino Distncia
Esta dissertao foi julgada adequada para a obteno do ttulo de Mestre em Engenharia de Teleinformtica e aprovada em sua forma nal pelo programa de Ps-Graduao em Engenharia de Teleinformtica da Universidade Federal do Cear.
Prof. Dr. Antnio de Barros Serra Centro Federal de Educao Tecnolgica do Cear
Prof. Dr. Danielo Gonalves Gomes Universidade Federal do Cear Fortaleza, 19 de agosto de 2008
Resumo
s arquiteturas peer-to-peer (P2P) tm sido cada vez mais utilizadas para dar suporte ao desenvolvimento de sistemas distribudos, permitindo a
interoperabilidade entre aplicaes e o compartilhamento de recursos e servios computacionais atravs de redes cooperativas auto-organizveis. Destacam-se como um importante cenrio da atuao de solues P2P as aplicaes colaborativas de ensino a distncia (EaD), uma vez que so formadas por um conjunto de participantes distribudos que realizam atividades de cooperao. Visando minimizar o esforo realizado entre a concepo e o desenvolvimento de aplicaes distribudas, este trabalho apresenta uma arquitetura reutilizvel, adaptvel e apropriada para a criao de aplicaes de ensino-aprendizagem, no com o objetivo de substituir as plataformas existentes, mas com o objetivo de complement-las com funcionalidades que tratem adequadamente o contexto de sistemas para ensino a distncia. Assim, o trabalho dene um arcabouo com funcionalidades relacionadas criao de um ambiente colaborativo capaz de organizar seus participantes em salas virtuais, possibilitando, por exemplo, o envio de mensagens e o compartilhamento de arquivos. Os middlewares desenvolvidos a partir do modelo apresentado neste trabalho podem ser congurados e implementadas atravs de qualquer plataforma bsica P2P, por exemplo: JXTA, Pastry e Windows P2P Networking. Como forma de ilustrar a utilizao do arcabouo, denominado JxAula, desenvolveu-se o middleware JXTAula baseado na plataforma JXTA. Avalia-se o trabalho desenvolvido em relao aos requisitos funcionais e no funcionais atravs de mtricas e processos de qualidade. Alm disso, um estudo de caso apresentado ao utilizar este trabalho em um sistema real de ensino a distncia, destacando-se as principais atividades necessrias para utilizar este trabalho no desenvolvido de outros sistemas aplicativos.
Abstract
eer -to-peer (P2P) architectures have been increasingly used to support the development of distributed systems, allowing interoperability between
applications and sharing resources and services through cooperatives computer networks. E-learning environments takes an important place for P2P solutions, since they are formed by a number of distributed participants that acts in a cooperative manner. To minimize the eort between the design and development of distributed applications, this work presents a reusable and adaptable architecture, suitable for the creation of applications for teaching and learning environments, not to replace the existing platforms, but to supplement them with features that address adequately the context of e-learning systems. Thus, this work establishes a framework with features related to the creation of a collaborative environment capable of organizing its participants in virtual rooms, allowing, for example, them to send messages and share le. Middlewares developed from the presented model can be congured and implemented through any basic P2P platform, for example: JXTA, Pastry and Windows P2P Networking. In order to illustrate the use of framework, called JxAula, it has been developed the middleware JXTAula based on JXTA platform. The evaluation of this work is done for functional and non-functional requirements, through metrics and processes of quality. Moreover, a case of study is presented by using this work in a real e-learning system, identifying the main activities required to use this work in other systems.
Dedico este trabalho aos meus pais, a minha irm e principalmente a Deus.
Sumrio
viii ix x xi 1
1 3 3 4
2 Reviso Bibliogrca
2.2
Estado da arte em Ensino Distncia . . . . . . . . . . . . . . . . . . 2.1.1 Modalidades dos sistemas de EaD . . . . . . . . . . . . . . . . 2.1.2 Caractersticas dos ambientes para aprendizagem cooperativa . 2.1.3 Enquadramento deste trabalho e funcionalidades fornecidas . . Estado da arte em plataformas P2P . . . . . . . . . . . . . . . . . . . 2.2.1 JXTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.2 Pastry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.3 Windows P2P Networking . . . . . . . . . . . . . . . . . . . . 2.2.4 Groove Development Kit . . . . . . . . . . . . . . . . . . . . . 2.2.5 Tabela comparativa entre as arquiteturas apresentadas . . . . 2.2.6 Por que o JXTA? . . . . . . . . . . . . . . . . . . . . . . . . . Descrio geral da arquitetura JxAula . . . . . Arquitetura proposta . . . . . . . . . . . . . . 3.2.1 Arquitetura em Camadas . . . . . . . . 3.2.2 Camadas da Arquitetura do Arcabouo Caractersticas do arcabouo proposto . . . . iv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6 7 8 10 13 13 16 18 23 27 29
32
32 34 34 34 35
3.4
3.3.1 Requisitos funcionais . . . . . 3.3.2 Requisitos no funcionais . . . Funcionalidades do JxAula . . . . . . 3.4.1 Gesto do Ambiente . . . . . 3.4.2 Gesto de Salas . . . . . . . . 3.4.3 Gesto de Participante . . . . 3.4.4 Gesto de Comunicao . . . 3.4.5 Gesto de Localizao . . . . 3.4.6 Gesto de Compartilhamento 3.4.7 Gesto de Desempenho . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
36 37 39 40 44 47 48 50 52 53
4.3 5.1
Viso geral sobre o JXTAula . . . . . . . . . . . . . . . . . . Funcionamento do middleware . . . . . . . . . . . . . . . . . 4.2.1 Iniciando o uso de uma aplicao . . . . . . . . . . . 4.2.2 Ingressando no mundo P2P e no grupo Escola . . . . 4.2.3 Descobrindos as salas e os participantes do ambiente 4.2.4 Estabelecendo comunicaes entre os participantes do Um paralelo entre o JXTA e o JXTAula . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . ambiente . . . . . . . . . . . . .
55
55 55 56 58 59 60 63 65 65 66 68 68 69 72 72
5.2 5.3
Arquitetura do COGEST . . . . . . . . . . . . . . . . . . . . . . . . 5.1.1 Descrio geral sobre o projeto . . . . . . . . . . . . . . . . 5.1.2 Arquitetura centralizada do COGEST . . . . . . . . . . . . Proposta de nova arquitetura ao COGEST . . . . . . . . . . . . . . 5.2.1 Descrio geral sobre as vantagens da nova arquitetura . . . 5.2.2 Arquitetura descentralizada do COGEST . . . . . . . . . . . Passos para a integrao do COGEST ao JXTAula . . . . . . . . . 5.3.1 Adaptaes de interfaces grcas (GUI) . . . . . . . . . . . . 5.3.2 Adaptaes do cliente para incorporar funes providas anteriormente pelo servidor . . . . . . . . . . . . . . . . . . 5.3.3 Adaptaes no mtodo de envio e recepo de mensagens . . Requisitos da avaliao . . . . . . . . . . . . . . . . . . 6.1.1 Propsito da avaliao e produto a ser avaliado 6.1.2 Modelo de qualidade a ser utilizado . . . . . . . Especicao da avaliao . . . . . . . . . . . . . . . . 6.2.1 Mtricas utilizadas e seus nveis de pontuao . 6.2.2 Critrios para julgamento . . . . . . . . . . . . Planejamento e Execuo da avaliao . . . . . . . . . 6.3.1 Avaliao dos requisitos funcionais . . . . . . . . 6.3.2 Avaliao dos requisitos no funcionais . . . . . Avaliao nal . . . . . . . . . . . . . . . . . . . . . . . 6.4.1 Resultado nal . . . . . . . . . . . . . . . . . . 6.4.2 Avaliao dos resultado obtidos . . . . . . . . . v . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
65
. 74 . 74 . . . . . . . . . . . .
76
76 76 77 78 79 79 79 80 84 90 91 91
Concluso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Trabalhos futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 . . . . . . . . . . JxAula . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 98 99 99 99 101 103 104 106 108 109
94
A.1 Utilizao de padres de projeto no arcabouo JxAula . . A.1.1 Padres de Projeto . . . . . . . . . . . . . . . . . A.1.2 Utilizao de Padres de Projeto nas Camadas do A.2 Mdulos do JxAula . . . . . . . . . . . . . . . . . . . . . A.2.1 Gesto do Ambiente . . . . . . . . . . . . . . . . A.2.2 Gesto de Salas . . . . . . . . . . . . . . . . . . . A.2.3 Gesto de Participante . . . . . . . . . . . . . . . A.2.4 Gesto de Comunicao . . . . . . . . . . . . . . A.2.5 Gesto de Localizao . . . . . . . . . . . . . . . A.2.6 Gesto de Compartilhamento . . . . . . . . . . . A.2.7 Gesto de Desempenho . . . . . . . . . . . . . . . B.1 Relacionamento entre as classes do JXTAula e JXTA B.2 Classe Boot . . . . . . . . . . . . . . . . . . . . . . . B.2.1 Conguraes do peer . . . . . . . . . . . . . B.2.2 Ingresso no grupo principal . . . . . . . . . . B.3 Classe Group . . . . . . . . . . . . . . . . . . . . . . B.3.1 Manuteno de salas . . . . . . . . . . . . . . B.3.2 Grupos no ambiente P2P . . . . . . . . . . . . B.4 Classe Find . . . . . . . . . . . . . . . . . . . . . . . B.4.1 Buscas baseadas no protocolo PDP do JXTA B.5 Classe Peer . . . . . . . . . . . . . . . . . . . . . . . B.5.1 A criao do canal de entrada . . . . . . . . . B.5.2 O estabelecimento da comunicao . . . . . . B.5.3 Recebendo mensagens de outros participantes . . . . . . . . . . . . . . . . . . . . . . . . . .
98
110
110 110 110 113 114 114 116 117 117 121 122 123 125
C.1 Adaptaes no mtodo de envio e recepo de mensagens . . . . . . . 127 C.1.1 Modelo Centralizado - Classe TCPConnectionManager . . . . 127 C.1.2 Modelo P2P - Classe P2PConnector . . . . . . . . . . . . . . . 130
127
Referncias Bibliogrcas
139
vi
Lista de Figuras
2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 2.12 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 4.1 4.2 4.3 5.1
Funcionalidades de um ambiente virtual de aprendizagem cooperativa Arquitetura do JXTA . . . . . . . . . . . . . . . . . . . . . . . . . . . Protocolos da especicao do JXTA . . . . . . . . . . . . . . . . . . Mecanismo de localizao do Pastry . . . . . . . . . . . . . . . . . . . Arquitetura do Windows Peer-to-Peer Networking . . . . . . . . . . . Identicadores PNRP (PNRP IDs ) . . . . . . . . . . . . . . . . . . . Cenrio para localizao atravs do PNRP . . . . . . . . . . . . . . . Processo de localizao atravs do PNRP . . . . . . . . . . . . . . . . Espao de trabalho do Groove . . . . . . . . . . . . . . . . . . . . . . Comunicao atravs de Firewalls pelo Servidor Relay . . . . . . . . . Integrao dos dados armazenados no Groove com outros aplicativos . Quadrante com as principais caractersticas das plataformas P2P . . Diviso da arquitetura em arcabouo, middleware e plataforma Arquitetura do arcabouo JxAula em camadas . . . . . . . . . Casos de Uso do Arcabouo JxAula . . . . . . . . . . . . . . . Mdulo de Gesto do Ambiente . . . . . . . . . . . . . . . . . Congurao do JxAula . . . . . . . . . . . . . . . . . . . . . Representao das salas e dos participantes na Escola . . . . . Mdulo de Gesto de Salas . . . . . . . . . . . . . . . . . . . . Representao da Escola e Salas Virtuais do ambiente . . . . . Mdulo de Gesto de Participantes . . . . . . . . . . . . . . . Mdulo de Gesto de Comunicao . . . . . . . . . . . . . . . Desmembramento e serializao de mensagens . . . . . . . . . Mdulo de Gesto de Localizao . . . . . . . . . . . . . . . . Mdulo de Gesto de Compartilhamento . . . . . . . . . . . . Mdulo de Gesto de Desempenho . . . . . . . . . . . . . . . P2P . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10 15 16 18 19 22 23 24 25 27 28 31 33 36 38 41 43 44 44 46 47 48 49 50 52 53
Componentes do Middleware JXTAula . . . . . . . . . . . . . . . . . 56 Aba avanada do JXTA Congurator . . . . . . . . . . . . . . . . . . 57 Protocolo de controle para as descobertas de participantes nos grupos 61 Interface grca do COGEST . . . . . . . . . . . . . . . . . . . . . . 67 vii
Arquitetura centralizada . . . . . . . . . . . . . . . . . . . . . . . . . Distribuio e balanceamento de carga entre os participantes da rede Arquitetura descentralizada proposta ao COGEST . . . . . . . . . . . Escolha da arquitetura de comunicao . . . . . . . . . . . . . . . . . Tela das funcionalidades providas pelo JXTAula . . . . . . . . . . . .
67 70 71 73 73
Viso geral do processo de avaliao de avaliao de qualidade de software - ISO/IEC 14598 . . . . . . . . . . . . . . . . . . . . . . . 6.2 Caractersticas e sub-caractersticas denidas pela norma ISO/IEC 9126 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3 Aplicativo de avaliao dos requisitos funcionais . . . . . . . . . . . 6.4 Questionrio utilizado na avaliao dos requisitos funcionais . . . . 6.5 Resultado da avaliao dos requisitos funcionais . . . . . . . . . . . 6.6 Questionrio utilizado na avaliao dos requisitos no funcionais . . 6.7 Resultado da avaliao dos requisitos no funcionais . . . . . . . . . 6.8 Latncia de transmisso no cenrio cliente-servidor . . . . . . . . . 6.9 Latncia de transmisso no cenrio P2P . . . . . . . . . . . . . . . 6.10 Comparao entre o tempo mdio de recebimento . . . . . . . . . . A.1 Criao de gestores do ambiente . . . . . . . . . . . . . . . . . A.2 Encontrar as salas e os participantes da Escola . . . . . . . . . A.3 Processo de criao de Sala . . . . . . . . . . . . . . . . . . . A.4 Processo de entrar em uma determinada Sala . . . . . . . . . A.5 Processo de trocar e sair de uma determinada Sala . . . . . . A.6 Processo de criao do participante . . . . . . . . . . . . . . . A.7 Processo de criao da comunicao do participante . . . . . . A.8 Processo de iniciao de comunicao com participante remoto A.9 Herana e Composio das comunicaes . . . . . . . . . . . . A.10 Localizao das salas e dos participantes do ambiente . . . . . A.11 Herana e Composio dos anncios do ambiente . . . . . . . B.1 Diagrama de classes do Middleware JXTAula . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. 77 . . . . . . . . . . . . . . . . . . . . 78 82 83 84 85 86 90 91 92 100 101 102 102 103 104 105 105 106 107 108
. . . . . . . . . . . . . 111
viii
Lista de Tabelas
2.1 3.1 4.1 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 6.10 6.11
Tabela comparativa entre as arquiteturas peer-to-peer . . . . . . . . . 30 Mtricas de avaliao dos requisitos no funcionais . . . . . . . . . . 40
Anlise comparativa entre a plataforma JXTA e o middleware JXTAula 64 Caractersticas selecionadas e mtricas da avaliao . . . . Plano de testes para os requisitos funcionais . . . . . . . . Resultado da avaliao para as mtricas funcionais . . . . Resultado da avaliao para as mtricas no funcionais . . Conguraes das mquinas utilizadas nos testes . . . . . . Quantidade de mensagens no cenrio cliente-servidor . . . Quantidade de mensagens no cenrio P2P . . . . . . . . . Tempo de transmisso no cenrio cliente-servidor . . . . . Tempo de transmisso no cenrio P2P . . . . . . . . . . . Resultados obtidos para os cenrios cliente-servidor e P2P Resultados obtidos na avaliao nal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 81 83 86 87 88 89 89 89 91 92
ix
Lista de Cdigos
B.1 B.2 B.3 B.4 B.5 B.6 B.7 B.8 B.9 C.1
Utilizao da classe NetworkCongurator . . . . . . . . . . . . . . . . Entrar no grupo principal do JXTA (NetPeerGroup) . . . . . . . . . Criao, remoo, entrada e sada em grupos . . . . . . . . . . . . . . Grupos do JXTAula baseado em PeerGroups . . . . . . . . . . . . . . Buscas por grupos e participantes do ambiente . . . . . . . . . . . . . Criao do canal de comunicao de entrada do participantes . . . . . Criao do canal de comunicao de sada com participantes remotos Recebimento e tratamento das mensagens recebidas . . . . . . . . . . Interface utilizada para comunicao com a aplicao . . . . . . . . . Classe que prov as funcionalidades de conexo entre o cliente e o servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.2 Classe que utiliza as funcionalidades do JXTAula . . . . . . . . . . .
110 113 114 116 117 122 123 125 126 127 130
Lista de Siglas
API CPU DNS EAD IM IP IPv4 IPv6 ISO J2EE JVM JXTA GDK GMC GUID GRC NTP P2P PBP PDP PEP PIP PNRP PRP RAM
Application Programming Interface Central Processing Unit Domain Name Server Ensino Distncia Instant Messaging Internet Protocol Internet Protocol verso 4 Internet Protocol verso 6 International Organization for Standarization Java 2 Platform, Enterprise Edition (J2EE) Java Virtual Machine Juxtapose Groove Development Kit Group Membership Certicate Global Unique Identier Group Root Certicate Network Time Protocol Peer to Peer Pipe Binding Protocol Peer Discovery Protocol Peer Endpoint Protocol Peer Information Protocol Peer Name Resolution Protocol Peer Resolver Protocol Random Access Memory xi
Lista de Cdigos
xii
Remote Method Invocation Round Trip Time Transmission Control Protocol Virtual Network Computing Virtual Private Network Time To Live eXtensible Markup Language
Captulo
Introduo
Neste captulo so apresentadas as principais motivaes para o desenvolvimento deste trabalho, estabelecendo-se a problemtica e seus principais objetivos.
1.1 Motivao
A educao a Distncia (EaD) cresceu de forma forte e signicativa. uma rea de grande interesse, tanto em pesquisa quanto em desenvolvimento. Dentre os principais desaos dos sistemas atuais de EaD est a construo de ambientes colaborativos capazes de propiciar servios que supram as necessidades dos participantes, oferecendo alta interatividade e facilidade de uso. Novas arquiteturas e tecnologias tm sido utilizadas para suportar o desenvolvimento deste tipo de sistemas distribudos, visando uma possvel interoperabilidade entre aplicaes criadas por equipes distintas, atravs de modelos bem denidos e exveis. Dentre essas arquiteturas, destacam-se os modelos cliente-servidor e peer-to-peer (P2P ). O modelo cliente-servidor o mais usado atualmente na Internet e no desenvolvimento de muitas aplicaes. Por este modelo ser baseado em uma arquitetura centralizada, ele requer que os servidores suportem uma alta taxa de requisio, e se o servidor no estiver preparado para responder muitas requisies, isto pode ser um gargalo, degradando o desempenho do sistema. Alm disso, existe um ponto nico de falha, pois caso um servidor que no possua contingncia deixe de funcionar, os servios disponibilizados por ele caro indisponveis. Portanto, pode-se perceber que ele no explora a real capacidade da rede, nem
1.1. Motivao
o potencial uso de processamento distribudo. J a arquitetura P2P, baseada em um modelo descentralizado, permite que os recursos e servios computacionais sejam compartilhados, podendo ser utilizada em uma ampla gama de solues de comunicao, onde os dispositivos (peers ) podem construir redes cooperativas auto-organizveis (ROCHA et al., 2004). Entre diferenas notveis de aplicaes cliente-servidor para aplicaes P2P, podem-se destacar como sendo caractersticas exclusivas das arquiteturas P2P :
iii. No-conabilidade da comunicao entre os participantes; iv. Heterogeneidade de plataformas e de poder computacional;
Dentre as tecnologias de desenvolvimento de aplicaes que utilizam o modelo cliente-servidor, algumas das plataformas j consagradas no desenvolvimento de aplicativos com suporte arquitetura centralizada so: Java , Delphi e Visual Basic. Com relao ao Java, o J2EE com certeza a principal referncia, possuindo suporte a criao de um ambiente capaz de fornecer diversas funcionalidades a inmeros usurios remotos, geralmente disponibilizadas atravs do uso de portais (pginas virtuais) hospedados em servidores WEB ou em componentes denominados Beans. Dentre as funcionalidades que podem ser utilizadas pelo desenvolvedor da aplicao, destacam-se a utilizao de componentes de interface com o usurio, mecanismos para manipular imagens grcas, funcionalidades relacionadas com a criao de aplicaes multimdia (streams ), manipulao de documentos XML, funcionalidade de comunicao (sockets ), chamadas remotas de mtodos (RMI ) e mecanismos de persistncia de objetos, dentre outros. (JOHNSON et al., 2004). J o modelo P2P adota uma abordagem onde qualquer dispositivo pode funcionar como cliente ou como servidor, permitindo que recursos e servios computacionais sejam compartilhados. Possibilita-se, com isso, a utilizao deste tipo de arquitetura para que os dispositivos (peers ) possam construir redes cooperativas auto-organizveis. Dentro desta perspectiva, destacam-se como um
importante cenrio da atuao de solues P2P as aplicaes de ensino, uma vez que so formadas por um conjunto de participantes distribudos que realizaam atividades de cooperao. Algumas das plataformas para desenvolvimento de aplicaes Peer-to-Peer (P2P) mais populares so: JXTA (JXTA, 2008), Windows
vi. Denir um arcabouo que possa ser instanciado para diversas plataformas P2P,
garantindo a possibilidade de denio de novos servios, e a escalabilidade de componentes j desenvolvidos;
sobre os servios do middleware e sua relao com as funcionalidades providas pela plataforma JXTA, escolhida dentre as plataformas apresentadas no captulo 2. No captulo 5, aborda-se a integrao do middleware JXTAula a um sistema real de ensino a distncia atualmente em desenvolvimento no Departamento de Engenharia de Teleinformtica da Universidade Federal do Cear, denominado COGEST (Comunicao Gestual com Humanides Virtuais). A arquitetura do sistema COGEST baseada no modelo cliente-servidor ser explicada, e em seguida ser proposta a utilizao de uma nova arquitetura peer-to-peer atravs do JXTAula, demonstrando-se como pode ser realizada a integrao de aplicativos ao JXTAula No captulo 6, so avaliados os resultados obtidos com a arquitetura proposta ao utilizar o middleware JXTAula no sistema COGEST. Dessa forma, fundamenta-se a importncia desse trabalho e enfatiza-se a sua contribuio atravs da avaliao dos requisitos funcionais e no funcionais. No captulo 7, apresentada a concluso deste trabalho com as principais contribuies desta dissertao, alm de serem apresentados os trabalhos futuros.
Captulo
Reviso Bibliogrca
Este captulo apresenta um levantamento do estado da arte em ensino distncia e das principais plataformas P2P. Atravs dessa pesquisa, so denidos os principais servios que podem ser fornecidos pelo arcabouo JxAula. Finalmente, este captulo possui uma tabela comparativa entre as arquiteturas P2P apresentadas.
sosticados meios que incluem esquemas interativos de comunicao no presencial atravs de redes de comunicao avanadas, como por exemplo, atravs de satlites. Essas novas tecnologias tm sido incorporadas ao longo do tempo e visam melhorar a comunicao entre professor e alunos, permitindo a troca de experincia, vivncia e, conseqentemente, otimizao no tempo de resposta de forma a facilitar o aprendizado. Com a Internet, as fronteiras para a educao distncia se expandiram, possibilitando reunir em um s meio de comunicao as vantagens de compartilhar informaes e idias. Assim, inmeros trabalhos foram surgindo com o objetivo de utilizar a Internet na educao presencial e a distncia. Atravs da Internet, pode-se trocar informaes de forma rpida; acessar especialistas em inmeras reas; manter-se atualizado sobre inmeros tpicos de interesse; formar equipes para trabalho cooperativo independentemente de distncias geogrcas e acessar vrias formas de arquivos e repositrios de informaes, por exemplo, trabalhos publicados, textos e artigos. Dessa forma, as informaes disponveis tornam-se fonte de pesquisa, permitindo o acesso fcil e rpido por pessoas de qualquer parte do mundo conectadas Internet.
identicar quais so as caractersticas que esse tipo de ambiente deve ter para suportar ecientemente o processo de ensino-aprendizagem virtual. Dentre essas caractersticas (HARASIN, 1998) destaca as seguintes:
Aprendizagem Ativa :
apenas sobre as discusses ocorridas nas conferncias, mas tambm escrevendo mensagens aos demais participantes. Essa atividade oferece aos participantes uma oportunidade de analisar suas aes no ambiente, possibilitando ainda o registro dessas interaes no sistema. Assim, estatsticas podem ser geradas sobre a quantia de participao de cada estudante do ambiente. Isso pode ser utilizado para vericar e controlar as aes dos participantes, estimulando a participao daqueles menos ativos, ou seja, que interagiram pouco com os demais. A participao ativa cria um ambiente rico de informao, uma vez que proporciona mltiplas perspectivas de idias ou temas do processo colaborativo.
Aprendizagem Interativa :
mas tambm interativa.
participantes do ambiente exploram assuntos, examinam os argumentos de um e de outro, concordam, discordam e questionam posies. Aqueles que estiverem exercendo um papel de instrutor podem requerer aos demais que enviem comentrios e leituras para os temas abordados, ou ainda, os demais participantes podem enviar informaes de maneira espontnea. Uma outra perspectiva fornecida por (MARTINS, 2000), onde se observa que um ambiente virtual de aprendizagem cooperativa deve gerar um espao para a criao de "comunidades de aprendizagem", em que os participantes podem publicar contedo, gerar cooperao, colaborao e promover interatividade, de forma que os outros participantes do ambiente virtual possam ser capazes de acessar o contedo
10
disponibilizado, produzir novos contedos em co-autoria a partir da discusso, debate, interao, anlise e avaliao do contedo disponibilizado. (MARTINS, 2000) ainda acrescenta que tais ambientes poderiam usar metforas fsicas da escola, com espaos para a pesquisa e produo de conhecimento. Dessa forma, nesse tipo de ambiente deve existir:
i. Um ambiente para criao de cursos em salas virtuais; ii. Um espao de publicao de contedos e atividades; iii. Um conjunto de ferramentas de interao sncrona e assncrona; iv. Recursos para avaliao do aprendizado; v. Recursos para administrao e gerncia do sistema.
A gura 2.1 resume as principais funcionalidades que devem ser consideradas na construo de um ambiente virtual de aprendizagem cooperativa.
11
ii. O sistema deve prover funcionalidades para localizar as salas criadas pelos
participantes e para criar novas salas;
iii. Os participantes devem ser capazes de localizar uns aos outros, bem como
comunicarem-se entre si visando a cooperao e o aprendizado colaborativo;
P2P a melhor opo? Essa uma pergunta difcil de ser respondida, pois, na
verdade, o que este trabalho pretende disponibilizar uma alternativa para que os desenvolvedores de sistemas de EaD possam utilizar uma abordagem diferente do modelo centralizado. Para isso, ser comparado e avaliado esta perspectiva no captulo 6, e neste momento, suciente esclarecer que se espera que a arquitetura desenvolvida tenha um desempenho equivalente ou superior ao modelo centralizado. Contudo, vale observar as principais motivaes que determinaram a escolha de uma arquitetura P2P :
softwares para todos os participantes de um grupo. Processamento distribudo : possibilita o uso de recursos compartilhados,
tais como o uso de processamento distribudo. Dessa forma, um processo que levaria muito tempo para ser executado, devido ao seu alto custo de
12
processamento, poderia ser dividido em tarefas menores, de forma que cada parte da tarefa pudesse ser executada em um peer do grupo. Assim, todas as tarefas estariam executando em paralelo, reduzindo signicativamente o tempo total de nalizao do processo. Vale ressaltar ainda que no est no escopo deste trabalho denir o mecanismo de persistncia a ser utilizado pelas aplicaes. Est uma caractersticas bastante peculiar do sistema de EaD, o qual normalmente utilizar uma das seguintes abordagens:
participante pode possuir uma cpia dos dados do ambiente, como forma de garantir que as informaes estejam sempre disponveis, pois no h dependncia de uma nica mquina. Porm, esta arquitetura necessita de alguma forma de controle ou autoridade para sincronismo das informaes, onde somente o coordenador pode atualizar as informaes do ambiente.
semelhante anterior, porm, no existe um controle de autoridade, de forma que qualquer participante pode atualizar as informaes do ambiente. Deve existir um mecanismo de controle de concorrncia, uma vez que diversos participante podem tentar atualizar a mesma informao ao mesmo tempo, o que poderia deixar o sistema em um estado inconsistente.
13
atualizar ou requisitar alguma informao, este dever faz-lo atravs de uma requisio mquina que est responsvel por quele segmento de informao do ambiente.
14
Portanto, a plataforma JXTA formada por um conjunto de peers que so descobertos na rede atravs de seus anncios. Os peers podem ser reunidos em grupos (denominado peer group ), de forma que pipes (canais de comunicao) podem ser criados entre dois peers (unicast pipe ) ou para um determinado grupo de peers (propagate pipe ). Quando um pipe criado para um grupo de peers, qualquer mensagem enviada atravs deste pipe recebida por todos os peers que fazem parte deste grupo. Tanto as mensagens, quanto os anncios de peers, de grupos ou de pipes, so armazenados e transmitidos atravs da linguagem XML. Assim, os pipes no esto associados nenhum dispositivo especco, pois no possuem informaes tais como um endereo IP, sendo descobertos e mapeados para um determinado dispositivo de maneira dinmica, atravs de mecanismos de resoluo de anncios. Estes mecanismos de resoluo so normalmente providos atravs dos super-peers (rendezvous ), que agregam a funo de armazenadores de ndices que referenciam os diversos anncios da rede P2P.
Caractersticas da Arquitetura
O JXTA foi projetado para ser independente de linguagens de programao (atualmente existem implementaes em C, Perl, Python e Java), de plataformas (por exemplo, Microsoft Windows e Unix), e dos protocolos de rede (por exemplo, TCP/IP e Bluetooth). Desta maneira, o JXTA abrange PCs, laptops, PDAs, sensores, eletrnicos, roteadores, servidores de data-centers e sistemas de armazenamento (JUNIOR, 2005). Conforme (GRADECKI, 2002), a arquitetura do JXTA composta por trs camadas, demonstrado na gura 2.2:
15
funcionalidades para os peers, grupos, segurana, mecanismos de localizao, troca de mensagens, etc.
Peer Discovery Protocol (PDP) : peers utilizam este protocolo para descobrir
recursos do JXTA dinamicamente. Em uma rede IP, a implementao deste protocolo consiste de duas tarefas: o envio de uma mensagem multicast atravs da rede local e do envio de uma mensagem ao rendezvous para a descoberta de
16
17
para um dispositivo (peer ) do anel, baseado na proximidade dos valores nmericos atribudos s chaves dos recursos e dos dispositivos. Esta topologia utilizada para localizar os recursos da rede de forma eciente, onde a pesquisa feita a partir de uma determinada chave, e possvel localizar o dispositivo que ter uma copia do recurso procurado.
Caractersticas da Arquitetura
Um sistema Pastry constitudo por ns e objetos que se encontram distribudos em um anel e podem ser encontrados atravs de identicadores (chaves). O dispositivo que possui o identicador numericamente mais prximo da chave de um determinado objeto responsvel por ele, ou seja, para acessar o objeto, ser necessrio se comunicar com este dispositivo. Os dispositivos conectados ao Pastry possuem uma chave de 128 bits denominada
NodeID (MICROSOFT, 2008b). Sempre que um novo peer entra no sistema, este
nmero escolhido de forma nica e aleatoriamente. Os peers que possuem NodeID prximos esto distribudos prximos uns dos outros na topologia em anel. Da mesma forma, cada chave (key ), que representa os recursos compartilhados (object ), mapeada pela rede P2P para um dispositivo (peer ). O FreePastry (FREEPASTRY, 2008), por exemplo, fornece o armazenamento e localizao de objetos baseada no Past (DRUSCHEL; ROWSTRON, 2001). Os comandos disponveis pelo componente so: put(key, object) que insere um objeto para ser compartilhado na rede e o atribui uma chave; remove(key) que remove a associao de uma chave a um determinado objeto e get(key) que retorna o objeto associado a uma certa chave. Para realizar a busca na rede P2P de maneira estruturada, as mensagens so encaminhadas para o peer que possua identicador (NodeID ) mais prximo da chave. A gura 2.4 ilustra este mecanismo. Neste modelo, cada peer mantm uma tabela de roteamento, um conjunto de vizinhos e um conjunto de ns folhas. A tabela de roteamento formada pelos prexos dos peers, de forma que os registro contenham os endereos IPs dos peers que esto mais prximos entre si. O conjunto de vizinhana contm os NodeIDs dos peers que esto mais prximos e so normalmente utilizado no roteamento das mensagens. O conjunto de folhas formado pelos peers sucessores e peers predecessores do n. Para fornecer as funcionalidade de comunicao em grupo, o FreePastry utiliza o Scribe (CASTRO et al., 2002), componente que permite que os participantes possam
18
19
Caractersticas da Arquitetura
A arquitetura do Windows P2P Networking baseada em um mecanismo de comunicao puramente P2P, propiciando as funcionalidades de descoberta de peers, grafos, grupos, armazenamento replicado e mecanismos de localizao. A gura 2.5 representa a sua arquitetura.
Grafos (Graphing)
Um grafo usado para representar a idia de uma relao entre objetos. Aparecem representados por uma gura com ns ou vrtices unidos por um trao denominado aresta que representa a relao entre esse ns. Para o conceito de comunicao em redes P2P, os vrtices so representaes dos peers, e as arestas das conexes entre esses peers. Dessa forma, o grafo nada mais que um conjunto de ns interconectados, propiciando a transferncia de dados atravs de mecanismos de inundao (denominado ooding ) com o estabelecimento de uma conexo TCP. Cada informao encaminhada pela rede identicada atravs de um GUID (Global Unique Identier ), representado por um nmero de verso e o tempo de emisso, propiciando a vericao de informaes mais recente. Alm disso, este identicador utilizado pelo processo de sincronizao de informaes (que utiliza
20
o ooding para propagao das atualizaes), responsvel por manter consistentes todas as informaes existentes nos participantes que fazem parte do grafo. Cada peer possui um identicador denominado NodeID, que criado atravs de uma funo aleatria quando ele entra em um grafo. Cada grafo possui seu identicador, o qual o menor NodeID de seus integrantes, que utilizado para detectar participaes de grafos, evitando que existam partes da rede que no possam ser alcanadas. Se um determinado grafo for particionado, cada partio vai possuir um identicador distinto, propiciando que se detecte tal fenmeno e haja um processo de conexo do grafo original para solucionar o problema. Quando um peer deseja se conectar a um grafo, ele deve inicialmente utilizar os servios de localizao, por exemplo o PNRP, para se conectar a outro n que j pertena ao grafo. Os peer que j pertencem ao grafo esto limitados a se conectar a um nmero mximo de outros peers, e caso este peer ainda no tenha atingido este limite, ele envia uma mensagem de aceitao ao peer que est desejando entrar no grafo. Caso o limite j tenha sido atingido, o peer envia uma mensagem de negao ao peer que est desejando entrar no grafo, porm esta mesma mensagem informa uma lista de outros peers que pertencem ao grafo para que se possa tentar estabelecer a comunicao com eles. J no processo de desconectar-se de um grafo, o peer envia uma mensagem com a informao que est saindo da rede, e neste caso, deve-se observar que esse processo pode ocasionar uma partio na rede. Essa mensagem contm uma lista dos vizinhos do n que est se desconectando, de forma que quando outro peer recebe a mensagem, ele tenta se conectar a um n da lista, como forma de minimizar a probabilidade de partio no grafo.
Grupos (Grouping)
Diferentemente dos grafos que so meras associaes entre peers e que no provem nenhum mecanismo de segurana, os grupos so responsveis tanto por gerenciar as credenciais dos membros do grupo (fornecendo mecanismos de autenticao e autorizao), bem como pela publicao de registros no grupo de forma segura, garantindo a condencialidade nas conexes estabelecidas. Cada grupo possui um identicado denominado GroupID, que usado pelos membros para identicar grupos formados entre diferentes peers. Cada membro do grupo possui
21
credenciais para comprovar que ele realmente pertence ao grupo e para garantir a autenticidade das informaes enviadas. Quando um grupo criado, as chaves criptogrcas (pblica e privada) so criadas para o grupo. O participante que armazena a chave privada do grupo denominado de dono do grupo (owner ). Quando um peer decide criar um novo grupo, o primeiro passo a criao de um certicado raiz para o grupo (Group
22
Uma diferena notvel entre as arquiteturas centralizadas e descentralizadas que as primeiras utilizam um servio de localizao de nomes baseado em servidores DNS, os quais registram os nomes dos computadores servidores, de forma que os mesmos possam ser consultados pelos clientes. J no ambiente distribudo das redes
A (cujo PNRP ID 200 ), B (cujo PNRP ID 450 ), C (cujo PNRP ID 500 ), D (cujo PNRP ID 350 ) e E (cujo PNRP ID 800 ). As setas representam os
participantes que um determinado peer conhece, por exemplo, o participante A tem em sua base os peers B e C. Dessa forma, quando o participante A deseja localizar o PNRP ID 800, ocorre o seguinte processo:
i. J que o PNRP ID 500 o mais prximo do PNRP ID 800, o peer A faz uma
pesquisa neste n (Peer C) - seta 1 da gura 2.8.
23
ii. O Peer C no possui em sua base o PNRP ID 800, nem to pouco, nenhum
PNRP ID que seja mais prximo do PNRP ID 800. Dessa forma, ele responde de volta ao Peer A indicando que no foi possvel localizar nenhuma informao mais prximo do PNRP ID procurado - seta 2 da gura 2.8.
iv. Uma vez que o Peer B possui em sua base o PNRP ID 800, ele responde de
volta ao Peer A indicando o endereo IPv6 do PNRP ID procurado - seta 4 da gura 2.8.
v. Com isso, o Peer A capaz de localizar o Peer E (PNRP ID 800) e, com isso,
estabelecer uma comunicao com o mesmo - setas 5 e 6 da gura 2.8.
24
25
um participante faa prpria base local do espao de trabalho, tais como adicionar ou alterar um arquivo ou tpico de discusso, ser propagado de modo automtico e seguro para todos os demais participantes que estiverem conectados a este grupo de trabalho. A gura 2.9 mostra o espao de trabalho da ferramente Groove, com suas principais funcionalidades.
Caractersticas da Arquitetura
O Groove tem uma arquitetura P2P hbrida, baseada em clientes e servidores. A plataforma armazena todos os dados nos participantes, em vez de armazen-los em um servidor central. Alm disso, os dados so sempre criptografados, tanto os armazenados em discos locais dos usurios, quanto as mensagens de comunicao enviadas pela rede. Dessa forma, pode-se utilizar uma conexo pblica pela Internet, sem a necessidade de congurar e utilizar conexes VPN (rede virtual privada) para sincronizar alteraes, pois a sincronizao automtica j utiliza mecanismos de criptograa. Outra caracterstica importante da arquitetura que somente as partes alteradas do espao de trabalho so efetivamente sincronizadas atravs dos
26
participantes do grupo, em vez de enviar todo o espao de trabalho, de forma a otimizar a utilizao dos recursos de rede. Esta uma funcionalidade importante quando se leva em considerao que os participantes do ambiente podem estar espalhados por uma rede distribuda de baixa velocidade. As comunicaes entre os participantes da rede utilizam mensagens XML, as quais so enviadas de maneira criptografada. Se um participante est desconectado da rede, ele continua tendo acesso aos dados e quaisquer alteraes no espao de trabalho so armazenadas de forma local, para que quando o mesmo se conecte rede, estas alteraes sejam enviadas aos outros participantes, atualizando e sincronizando os dados. Assim, os partipantes de um grupo de trabalho se comunicam entre si de forma individual e direta, mantendo uma topologia puramente
27
28
Figura 2.11: Integrao dos dados armazenados no Groove com outros aplicativos
participantes da rede, geralmente baseadas em linguagem de marcao (XML) ou chamada de mtodos em objetos remotos (RMI);
iv. Identicao das entidades da rede : verica como a plataforma P2P identica
os recursos da rede, podendo tais recursos serem: peer, canais de comunicao,
29
30
e protocolos abertos.
uso da plataforma Windows P2P Networking, embora a mesma fornea diversas funcionalidades para facilitar o desenvolvimento de aplicativos. descartado o uso do Groove, pois o mesmo tambm possui uma arquitetura proprietria. Finalmente, as plataformas mais indicadas para serem utilizadas no desenvolvimento do trabalho proposto seriam JXTA ou FreePastry. Escolheu-se o JXTA como base para desenvolvimento do middleware proposto no captulo 4 devido ao suporte de comunicaes em grupos, especicao aberta e mantida pela comunidade open-source com a possibilidade de estudo do cdigo fonte da plataforma, suporte dispositivos mveis, utilizao de mensagens XML que possibilitam interoperabilidade de dados, suporte diversas linguagens de
31
Captulo
33
implementados atravs de qualquer plataforma bsica P2P que dena uma estrutura baseada em troca de mensagens, tais como as arquiteturas demonstradas no captulo 2. Como forma de ilustrar a utilizao do arcabouo JxAula, desenvolveu-se o
34
iii. Reduzem dependncia e acoplamento, uma vez que utilizam interfaces bem
denidas e evitam dependncias diretas entre os componentes de camadas diferentes;
35
36
37
ii. Permitir ao participante criar novas salas. iii. Permitir ao participante entrar e sair de salas. iv. Permitir ao participante trocar de sala, dentre as quais ele j pertence. v. Permitir ao participante consultar quais as salas em que ele est, bem como,
listar os participantes de uma determinada sala.
vi. Permitir ao participante listar todas as salas do ambiente, bem como, listar
todos os participantes do ambiente.
38
Funcionalidade :
se propem fazer, englobando ainda as caractersticas de segurana com mecanismos de criptograa e autenticao de forma que o trfego trocado entre os dispositivos seja condencial, garantindo a autenticidade das informaes trafegadas;
39
aprendizado intuitivo, atravs de poucas funes e extrema abstrao das complexidades envolvidas no desenvolvimento dos elementos internos;
40
41
ii. Controle centralizado das funcionalidades providas pelo arcabouo; iii. Congurao dos parmetros do arcabouo, tais como: middleware que ser
utilizado (exemplo: JXTAula), tempo de timeout (exemplo: 2 segundos) e nomenclaturas utilizadas pelo servio de localizao do arcabouo.
Caractersticas Tcnicas
Fachada do JxAula
O ponto de entrada para os desenvolvedores que estejam utilizando esse arcabouo atravs da fachada do JxAula. Este componente fornece uma entrada unicada para o conjunto de funcionalidades do arcabouo atravs de uma interface abstrata de alto nvel que tem como objetivo tornar o uso do subsistema mais fcil. Pelo uso desse componente, objetiva-se alcanar maior desacoplamento entre os componentes do arcabouo, reduzindo assim a interdependncia entre os mdulos. Desacoplar signica minimizar tanto a quantidade quanto a qualidade das dependncias. A qualidade de uma dependncia medida levando-se em conta quanta informao est na especicao de uma classe em relao a outra, ou seja, quanta informao est trafegando na mensagem de uma classe outra. Quanto menos informao, menor a dependncia. No caso extremo, no h informao
42
alguma na dependncia, e temos um caso de dependncia fraca na qual uma classe depende apenas da existncia de outra. A maneira mais efetiva de se reduzir o acoplamento projetando as partes de maneira que sejam simples e bem denidas, unindo aspectos do sistema que sejam relacionados e separando aspectos que no o sejam. Portanto, a fachada do ambiente responsvel por representar todas as funcionalidades do arcabouo (e apenas isso), e por apresentar estas funcionalidades para a camada de aplicao atravs de mtodos de nvel mais alto. Esta interface menos dependente dos mdulos internos se comparada a chamadas diretamente aos mtodos dos componentes do arcabouo pela camada de aplicao. Dessa forma, possvel alterar os componentes que esto encapsulados, enquanto se mantm a especicao de fachada inalterada, de forma que nenhuma parte da camada de aplicao seja afetada.
Gestor do Ambiente
A classe de Gesto do Ambiente responsvel por criar os demais gestores: Gestor de Salas, de Participantes, de Localizao, de Comunicao, de Desempenho e de Compartilhamento, onde cada gestor responsvel por atender determinado tipo de solicitao. A responsabilidade de garantir que exista somente uma instncia de cada gestor desta classe, pois o gestor do ambiente o nico responsvel por criar os demais gestores. Esse procedimento feito uma nica vez, quando o mtodo
Congurao do JxAula
O componente de Congurao do JxAula o responsvel por conter os mtodos de adequao do arcabouo JxAula ao middleware escolhido e a ser implementado. Por exemplo, quando da utilizao do middleware JXTAula, esta classe responsvel por conter as caractersticas e conguraes especcas. utilizao da classe de Congurao do JxAula. A gura 3.5 ilustra a
Grupo Escola
43
44
Funcionalidades do Mdulo i. Possibilita que o ambiente colaborativo seja capaz de organizar seus
participantes em salas virtuais com a criao de grupos de participantes que possuem interesses semelhantes e que propicia a otimizao do trfego de mensagens enviadas e recebidas dentro desses grupos;
45
ii. Possibilita que o participante possa criar novas salas. iii. Possibilita que o participante possa entrar e sair de salas. iv. Possibilita que o participante possa trocar de sala, dentre as quais ele j
pertence.
v. Possibilita que o participante possa consultar quais as salas em que ele est
e a descrio de uma determinada sala, bem como listar os participantes de uma sala.
Caractersticas Tcnicas
Gestor de Salas
A classe de Gesto de Salas responsvel por fornecer ao ambiente todas as funcionalidades relacionadas s salas, dentre as quais destacam-se a criao de salas e o processo de entrar e sair de uma determinada sala. No processo de criao de sala, a fachada do arcabouo JxAula envia uma mensagem ao Gestor de Salas para a criao de uma nova sala. A primeira ao que o gestor toma, vericar se a sala j existe no ambiente, atravs do Gestor de Localizao, para que caso a sala j exista, seja lanada uma exceo para avisar a camada de aplicao sobre este fato. Caso contrrio, a sala ainda no existe e o Gestor de Salas cria uma nova sala na
Escola.
Outra funcionalidade fornecida por esse componente o processo de entrar em uma determinada sala. Para entrar na sala, o Gestor de Salas verica se a sala j foi criada. Caso no exista essa sala, uma exceo lanada para avisar camada de aplicao sobre este fato, porm, caso a sala exista, o participante ingressa na Sala. Para fornecer as funcionalidade de trocar e sair de uma sala, o Gestor de Salas verica as salas que o participante pertence. Cada participante possui uma nica sala ativa, denominada Sala Atual, que uma das salas que o participante ingressou anteriormente.
Sala
46
As salas funcionam como um meio de se agrupar participantes que tenham interesse em comum, onde os recursos compartilhados dentro de uma sala provavelmente interessam a todos que pertencem quela sala, e somente a estes. A gura 3.8 ilustra o conceito de Escola e de Salas Virtuais, considerando que um participante pode estar em mais de uma sala ao mesmo tempo:
envio de uma informao a todos os participantes de uma rede envio de uma informao para um grupo de participantes de uma rede
47
Funcionalidades do Mdulo i. Criao de um participante (peer ) na rede P2P com suas conguraes
especcas (por exemplo: seu nome) sem se preocupar com as complexidades envolvidas nesta atividade;
ii. Publicar o anncio do participante na rede para que o mesmo possa ser
localizados por outros participantes que esto na Escola.
Caractersticas Tcnicas
Gestor de Participantes
A classe de Gesto do Participante responsvel pelas funcionalidades relacionadas com iniciao do participante no ambiente P2P e neste processo de iniciao do participante que ocorre a vericao do login e da senha do usurio. Caso o usurio esteja tentando entrar com credenciais invlidas, lanada uma exceo para a camada de aplicao, porm, caso as credencias estejam corretas, o Gestor de Participante cria o participante na escola e publica o anncio do participante na rede P2P.
Participante
48
Cada participante responsvel por armazenar suas informaes em um objeto da classe AnuncioParticipante, pois atravs desse anuncio que o Gestor de
Escola.
49
Caractersticas Tcnicas
Gestor de Comunicao
As funcionalidades desse gestor esto relacionadas com a criao do canal de comunicao do participante; com o estabelecimento e nalizao de uma comunicao entre dois participantes; com o envio e recepo de mensagens em uma comunicao j estabelecida e com o envio e recepo de uma mensagem dentro da sala ou na Escola. Outra funcionalidade provida por este mdulo a fragmentao de mensagens longas. Objetos ou arquivos que ultrapassem o tamanho mximo permitido, devem ser fragmentados para que possam ser enviados. Dessa forma, permite-se o envio de fragmentos de mensagens longas que no poderiam ser enviadas pela rede em sua forma original, de forma que quando todos os fragmentos chegarem ao destinatrio, a mensagem original reconstruda e entregue para a aplicao, garantindo, inclusive, a integridade dos dados. A gura 3.11 ilustra o processo descrito.
Comunicao
Muitas aplicaes de ensino a distncia necessitam que um determinado usurio possa enviar uma informao para um conjunto de outros usurios ao mesmo tempo. Fazendo uma aluso com a sala de aula real, quando um aluno levanta o brao e indaga o professor sobre uma questo, ele ao mesmo tempo est enviando a mesma questo a todos os outros alunos que estejam presentes na sala. Da mesma forma, quando uma aplicao necessita enviar a mesma informao a todos os participantes
50
de uma sala, pode-se utilizar a funcionalidade do canal de comunicao da sala, em vez de criar um canal de comunicao de sada com cada participante da sala. O canal de comunicao da sala criado assim que o participante ingressa em uma sala, sendo mantida enquanto o participante continuar na mesma. J para os casos em que uma informao tem de ser compartilhada somente entre dois participantes, outra forma de comunicao que fornecida por esse mdulo a comunicao unicast, responsvel pelo estabelecimento de uma comunicao privativa entre dois participantes. Quando um usurio entra no ambiente, ele cria o canal de comunicao de entrada do participante, sendo em seguida publicado na rede para que outros participantes sejam capazes de encontr-lo. atravs desse canal que outro participante consegue estabelecer uma comunicao de sada com esse participante.
Funcionalidades do Mdulo i. Possibilita que os participantes do ambiente possam localizar as salas criadas
por outros;
51
ii. Nessas salas, possibilita que os participantes possam ser capazes de localizar
uns aos outros;
iii. Possibilita que os participantes possam localizar os arquivos que esto sendo
compartilhados em uma determinada sala ou em toda a Escola.
Caractersticas Tcnicas
Gestor de Localizao
Ao entrar no ambiente, geralmente o participante deseja conhecer esse ambiente para que possa comear a interagir e essa descoberta feita atravs desse mdulo do arcabouo. O gestor de localizao o responsvel por procurar na rede P2P os anncios referentes s salas virtuais, aos participantes e aos arquivos que estejam sendo compartilhados. Dependendo do tipo de anuncio, o contexto da busca pode ser diferente. Por exemplo, quando o usurio deseja localizar todas as salas da escola, a busca enviada dentro do grupo escola. Por outro lado, quando o usurio deseja vericar quais so os arquivos que esto sendo compartilhados por um determinado participante, a busca enviada somente para esse participante. inundaes. Quando um participante deseja descobrir um recurso, ele envia uma solicitao e aguarda um determinado tempo para que as mensagens de resposta possam ser recebidas. Mltiplas respostas solicitao podem ser recebidas, embora tambm possa ocorrer do participante no receber nenhuma resposta, devido ao fato de redes P2P serem imprevisveis e no conveis. Pode ocorrer, por exemplo, o caso em que os participantes que conheciam determinado recurso no estarem mais na rede P2P. Com isso, as mensagens que trafegam na rede so enviadas de forma controlada, no ocasionando
Anncios do Ambiente
Os seguintes anncios fazem parte do arcabouo e so utilizados para localizar os recursos no ambiente:
i. Anncio de Sala: O anncio de sala representa uma sala que j foi criada
anteriormente, e seu anuncio foi publicado na rede P2P. Quando um usurio deseja entrar em uma sala, ele verica se a sala j existe atravs da localizao do anncio dessa determinada sala na rede P2P, e caso exista esse anuncio, o participante entra na sala.
52
Caractersticas Tcnicas
Gestor de Compartilhamento
53
Algumas pessoas consideram o termo P2P sinnimo de compartilhamento de arquivos. Isso se deve ao fato da maioria de sistemas P2P serem utilizados com a nalidade de transmisso de arquivos, tais como msicas e lmes, tornando este tipo de aplicao a mais popular da tecnologia P2P. Mesmo que as aplicaes que utilizem a arquitetura P2P no precisem estar limitadas s funcionalidades de compartilhamento de arquivos, deve-se admitir que tal funcionalidade uma das mais importantes em um ambiente distribudo. No contexto de educao distncia, tal necessidade se demonstra no fato da troca de conhecimento e compartilhamento de informaes atravs de apresentaes, livros, documentos tcnicos, dentre outros. Desenvolveu-se um mecanismo simples de compartilhamento e envio de arquivos entre os participantes do ambiente, na perspectiva que arquivos compartilhados na Escola devam estar disponveis a todos os participantes do ambiente, enquanto que arquivos compartilhados em uma determinada sala virtual estaro restritos aos participantes da sala. Este servio levou em considerao o uso de funcionalidade de compresso das mensagens enviadas, visando diminuir a utilizao da rede e minimizar o retardo da transmisso.
54
iii. Verica que um usurio no est mais no ambiente, tratando esta sada
de maneira adequada - por exemplo: nalizao da comunicao com o participante e interrupo do envio de um arquivo;
Caractersticas Tcnicas
Gestor de Desempenho
Na maioria das aplicaes que funcionam em um ambiente distribudo, desejvel que exista um mecanismo capaz de gerenciar e monitorar as atividades dos dispositivos remotos. Estas funcionalidades vo desde a obteno de informaes sobre o participante remoto - tais como a quantidade de mensagens enviadas e recebidas - at o controle avanado de recursos que estejam disponveis aos demais membros da rede - tais como o compartilhamento de processamento e de memria para armazenamento de arquivos de forma distribuda. Este mdulo visa possibilitar a vericao da latncia entre dois participantes remotos atravs do envio de mensagens ping/pong para o clculo do RTT (round
necessitam determinar quais participantes possuem maior poder de processamento, por exemplo, para assumir um papel de coordenador da sala ou desempenhar uma funo especial.
Captulo
56
57
i. Congurar o nome do participante, sua senha e descrio; ii. Congurar o n como sendo: ADHOC ; EDGE ; RENDEZVOUS ; RELAY ou
PROXY, dependendo do papel desempenhado pelo peer na rede JXTA.
aconselhvel que cada aplicao tenha pelo menos um Rendezvous, e pode-se utilizar a classe RendezvousListener para capturar o evento que indica que o participante se conectou a um Rendezvous ;
58
v. Possibilitar o armazenamento das conguraes no arquivo PlatformCong ; vi. Possibilitar que as conguraes armazenadas anteriormente no arquivo
PlatformCong sejam carregadas.
Assim, essa classe possibilita a congurao dos mesmos campos exibidos na janela da gura 4.2, porm de forma transparente aplicao. No JXTAula, estas funcionalidades so utilizadas a partir da classe Boot, que a responsvel por criar as conguraes do participante caso estas ainda no existam, ou carreg-las caso j existam. Aps a criao da congurao do peer, o prximo passo efetivamente entrar na plataforma JXTA atravs da instanciao do grupo principal
59
A classe Group responsvel pelo mecanismo de ingresso nos grupos. Os grupos podem ser criados de duas maneiras: grupos pblicos (os quais no necessitam de
login /senha para que os participantes possam ingressar) e grupos privados (os quais
exigem uma validao dessas credenciais). Para garantir que no haver duplicidade de salas com o mesmo nome, utiliza-se uma funo Hash do nome da sala no momento em que se est criando o ID do PeerGroup.
60
participante, para que os mesmos possam ser localizados atravs da busca local. H tambm a possibilidade de se utilizar a classe DiscoveryListener para capturar um evento de retorno de uma busca remota. Os anncios podem descrever uma variedade de recursos, e para que um recurso possa ser descoberto na rede, ele deve ter um anncio associado si publicado anteriormente em um grupo. O JXTAula utiliza este mecanismo para descobrir as salas criadas na Escola e os participantes da Escola, pois nestes casos necessrio guardar os anncios dessas entidades na
cache local.
61
(PBP).
O JXTA possui trs tipos de Pipes: Unicast Pipe (utilizado para conectar um peer a outro), Propagate Pipe (utilizado para conectar um peer a diversos outros) e Secure Pipe (utilizado para conectar um peer a outro de maneira segura, ou seja, com o envio de mensagens criptografadas) (GONG; OAKS; TRAVERSAT, 2002). O JXTAula utiliza os Pipes Unicast e Secure para fornecer a comunicao privativa entre dois participantes (dependendo da necessidade de criptograa ou no) e o Propagate Pipe para fornecer a funcionalidade do envio de uma mensagem
62
i. Cria-se o anncio de entrada do participante; ii. Cria-se o listener que vai escutar os eventos ocorridos neste pipe de entrada,
por exemplo, recebimento de mensagens;
iii. Cria-se o pipe de entrada; iv. Publica-se o anncio do pipe de entrada do participante.
Maiores detalhes sobre o processo acima so dados no Apndice B.
i. feita uma pesquisa pelos canais de comunicao de todos os participantes; ii. Verica se o anncio do canal de comunicao do participante procurado foi
encontrado;
iii. Caso o mesmo tenha sido encontrado, cria-se uma comunicao com o canal
de comunicao do participante remoto.
63
64
JXTAula
Utiliza uma interface intuitiva e com poucos mtodos, baseada em conceitos de EaD que abstrai do desenvolvedor o seu funcionamento interno Possui estruturas de dados simples, manipuladas a partir de Strings
Captulo
66
professor exercendo uma atividade de coordenao em um trabalho colaborativo, determinante saber quem est executando uma operao sobre um objeto compartilhado e o que exatamente ele est fazendo. atravs dos elementos perceptivos que os membros do grupo conseguem identicar inconsistncias em seu raciocnio e interagir de maneira a trocar informaes e referncias para auxiliar na resoluo de problemas. Assim, uma maneira bastante intuitiva de perceber quem est fazendo o qu atravs da observao dos gestos dos avatares. (SOARES et al., 2006), (SOARES, 2004) A interface grca compreende um espao aplicativo e um espao perceptivo. O espao aplicativo corresponde aplicao ou documento compartilhado que mapeado como textura em um quadro virtual. J o espao perceptivo um mundo 3D habitado, onde cada usurio representado por um humanide 3D articulado que representa as aes de movimento dos usurios, denido segundo a norma H-ANIM (H-ANIM/ISO/IEC, 2008). Uma sala de aula ou de reunio contendo um quadro virtual, onde os usurios podem interagir e colaborar, utilizada como metfora na interface grca do sistema, conforme ilustra a gura 5.1. Ao conectar-se, o usurio tem seu avatar inserido em um dos lados do quadro virtual, e ao se desconectar, seu avatar retirado do ambiente. Tem-se assim a percepo visual da chegada ou partida de um usurio do ambiente, bem como de sua permanncia. A comunicao gestual se d atravs de movimentos corporais dos avatares, associados de maneira coerente s aes dos respectivos usurios, por exemplo, movimentao do cursor do mouse. O ambiente desenvolvido permite ainda o compartilhamento de aplicaes imersas no mundo virtual tridimensional atravs da adaptao de um cliente VNC (Virtual Network Computing ) (REALVNC, 2008), conforme apresentado em (SOARES;
HORAIN; BIDEAU, 2003). Sempre que o usurio executa alguma funo na aplicao
2D, so gerados e enviados eventos a um servidor que se encarrega de atualizar a posio do avatar no mundo virtual tri-dimensional.
67
ii. Servidor VNC : Mantm a aplicao que est sendo compartilhada no quadro
virtual. O cliente que est interagindo com o quadro virtual, envia os
68
eventos para o servidor VNC, para que estes sejam realizados na aplicao compartilhada;
iii. Cliente Ativo : Usurio que est interagindo com o quadro virtual; iv. Cliente Inativo : Usurio que no est interagindo com o quadro virtual.
iii. Existe um servidor nico de VNC que responsvel por fornecer o servio
para compartilhamento de aplicaes aos participantes do ambiente. Caso este servidor que inoperante, a funcionalidade de compartilhamento de aplicativos para de funcionar; Com a utilizao do JXTAula, tem-se a possibilidade de criar diversas salas de aula virtuais, garantindo assim maior escalabilidade do sistema. Como cada sala mantm um canal de comunicao separado, as mensagens de difuso de eventos so enviadas diretamente aos participantes da sala, sem necessidade de serem encaminhadas por um servidor. Este trfego de mensagens feito de maneira controlada, uma vez que os demais participantes do ambiente, que no estejam nesta sala, no recebero tais mensagens. Para evitar que o sistema tenha um ponto nico de falha, que o servidor de eventos, cada sala passa a ser mantida por um de seus participantes, denominado coordenador da sala, escolhido dentre os membros da sala atravs de um mecanismo
69
de eleio. O coordenador da sala o responsvel por enviar o estado atual do sistema aos novos usurios que ingressem no ambiente e, caso este coordenador se torne inoperante, uma nova eleio poder ser realizada, possibilitando que o sistema continue funcionando com tolerncia falha. Assim, embora o coordenador da sala desempenhe algumas das funes do servidor de eventos, este coordenador eleito dinamicamente, dentre os participantes que esto na sala virtual. A funcionalidade de eleio do coordenador da sala no est no escopo do middleware JXTAula, e portanto deve ser implementada na camada de aplicao. Finalmente, para prover redundncia no fornecimento do servio VNC, em vez de se ter somente uma mquina que possui o servio VNC, pode-se disponibilizar este servio em diversas mquinas da rede, por exemplo, atravs da criao de mquinas virtuais utilizando um dos seguintes aplicativos: VMWare (VMWARE, 2008); VirtualBox (VIRTUALBOX, 2008); Qemu (QEMU, 2008). Com isso, deve haver pelo menos um servio VNC ativo em cada sala de aula virtual, de forma que uma mquina seja eleita para ser utilizada como provedor do servio VNC na sala. Caso a mquina provedora do servio VNC pare de funcionar, pode-se eleger uma das mquinas restantes para ser utilizada, garantindo a continuidade do servio VNC com tolerncia falha, embora a aplicao que estivesse sendo compartilhada no seja disponibilizada no mesmo estado em que estava no peer que falhou. A funcionalidade de eleio do provedor do servio VNC no est no escopo do middleware JXTAula, e portanto deve ser implementada na camada de aplicao.
70
utilizao de um conjunto de mquinas que possuem o servio VNC, funcionando como um cluster 1 para o servio VNC. A gura 5.3 ilustra esta topologia, onde possvel a distribuio de processamento entre os usurios do ambiente, bem como o balanceamento de carga entre diversos servidores VNC. Na gura, tem-se que as salas so mantidas por usurios distintos, de forma que nenhum deles sobrecarregado para manter mais de uma sala do ambiente. Da mesma forma, caso haja mais de um servidor VNC no ambiente, poder haver balanceamento de carga entre os mesmos, para que nenhum que sobrecarregado no fornecimento do servio VNC para todas as salas do ambiente.
71
ii. Provedor do servio VNC : Mantm a aplicao que est sendo compartilhada
no quadro virtual. O cliente que est interagindo com o quadro virtual, envia os eventos para o servidor VNC, para que estes sejam realizados na aplicao compartilhada;
iii. Cliente Ativo : Usurio que est interagindo com o quadro virtual; iv. Cliente Inativo : Usurio que no est interagindo com o quadro virtual.
A arquitetura proposta ao COGEST considera que as comunicaes entre os usurios podem ser feitas de maneira descentralizada, pois as mensagens so enviadas diretamente de um usurio a outro, sem envolver um servidor para repasse das mensagens. Porm, quanto ao servio VNC, h a necessidade de se ter pelo menos um servidor capaz de prover este servio para os usurios do ambiente, uma vez que a mquina que est provendo o servio VNC no pode ser um dos usurios do sistema. Tal caracterstica se deve ao fato de que uma mquina VNC no pode ser cliente dela mesma, pois a rea de trabalho compartilhada com os demais usurios, para que os mesmos possam interagir e realizar o compartilhamento das aplicaes. Portanto, a rea de trabalho da mquina que estiver provendo o servio VNC deve estar dedicada para tal m. O que se prope para o servio VNC que o mesmo no esteja disponvel em uma nica mquina, mas em um cluster de mquinas para
72
que haja um certo nvel de redundncia visando suportar um mnimo de tolerncia falha dos servidores VNC. Tal servio poderia ser disponibilizado a partir de ferramentas de virtualizao (utilizando, por exemplo, um dos seguintes aplicativos: VMWare (VMWARE, 2008); VirtualBox (VIRTUALBOX, 2008); Qemu (QEMU, 2008)) nas mquinas dos participantes do ambiente, para no fosse necessrio dispor de outras mquinas fsicas.
i. Entrar no ambiente. ii. Criar, excluir, entrar e sair das salas. iii. Listar todas as salas do ambiente, bem como, listar todos os participantes do
ambiente.
73
v. Compartilhar arquivos nas salas ou em toda a escola. vi. Vericar o tempo de resposta de determinado participante do ambiente (ping ).
74
incorporar
funes
providas
Ao migrar de uma soluo cliente-servidor para uma P2P, os desenvolvedores devem ter em mente que a principal caracterstica de um peer que ele pode desempenhar papis tanto de cliente como de servidor, dependendo do momento. Dessa forma, deve ser identicado quais so as principais funcionalidades providas pelo servidor, para que as mesmas passem a ser desempenhadas pelos peers do sistema. Com relao ao COGEST, foram mapeadas as seguintes atividades como sendo de responsabilidade do servidor de eventos:
i. Processo de inicializao e manuteno do estado do ambiente. ii. Encaminhamento de mensagens entre os clientes.
Conforme j discutido, o processo de inicializao do ambiente passa a ser fornecido pelo Coordenador da Sala, uma vez que o estado do ambiente replicado por todos os participantes. Assim, todos tem as mesmas informaes e a mesma viso do ambiente, de forma que caso o peer responsvel por inicializar novos usurios deixe de funcionar, outro peer, determinado atravs de uma eleio dinmica, possa desempenhar esta funo de forma transparente aos demais participantes da rede. Com relao ao envio de mensagens de forma independente do servidor de eventos, foram feitas as adaptaes descritas no prximo item.
TCPConnectionManager.
Essa classe foi substituda pela classe P2PConnector, funcionalidades do JXTAula para prover o envio e recepo de mensagens baseado
75
em um modelo de comunicao descentralizado. Neste novo cenrio, em vez das mensagens serem enviadas ao servidor de eventos atravs do socket fornecido pela classe TCPConnectionManager, elas passam a ser enviadas para a sala atravs da funcionalidade enviarMensagemSala() fornecida pelo JXTAula. Maiores detalhes sobre o processo acima so dados no Apndice C
Captulo
6
O arcabouo desenvolvido ser
77
Figura 6.1: Viso geral do processo de avaliao de avaliao de qualidade de software ISO/IEC 14598
e processos amplamente utilizados no processo de desenvolvimento de sistemas, objetiva-se demonstrar a qualidade do produto gerado, e com isso, estimular a utilizao deste trabalho por desenvolvedores de sistemas de EaD, ou ainda, por outros desenvolvedores que desejem construir suas aplicaes baseada em uma arquitetura P2P. Um outro propsito deste captulo adaptar e documentar os procedimento de avaliao de softwares baseado em normas reconhecidas e utilizadas mundialmente, para que essses processos possam ser utilizados em outros projetos do grupo de pesquisa do Departamento de Engenharia de Tele-informtica da Universidade Federal do Cear.
78
79
80
denidos. As sees a seguir avaliam os requisitos funcionais (mais especicamente, a primeira caracterstica da tabela 6.1: funcionalidade ) e os requisitos no funcionais (as demais caractersticas da tabela 6.1: usabilidade, ecincia, manutenibilidade e
portabilidade ).
81
requisitos de segurana, o que estar sendo avaliado a possibilidade do arcabouo enviar mensagens com mecanismos de criptograa e autenticao de forma que o trfego trocado entre os dispositivos seja condencial, embora no esteja no escopo do Plano de Teste a captura de trfego na rede (por exemplo, atravs de ferramentas de snier 1 ). Para avaliar as caractersticas de Funcionalidade, foi denido o Plano
82
Resultados obtidos
Os resultados foram obtidos aps cada um dos alunos responder o questionrio de avaliao. Para calcular a nota obtida nas sub-caractersticas do questionrio da gura 6.4, utilizou-se um valor ponderado, considerando que as respostas recebem
0 (zero) ; 1 (um) e 2 (dois) correspondentes aos nveis de aceitao ruim ; regular e satisfatrio, respectivamente, da tabela 6.1. Por exemplo, para avaliar o requisito
83
Resultado
Satisfatrio Satisfatrio Satisfatrio Satisfatrio
84
no, onde as perguntas que tiverem respostas sim obtero uma melhor nota para a
caracterstica. Assim, caractersticas de usabilidade e manutenabilidade esto relacionadas aos requisitos subjetivos e sero avaliados atravs de questionrios, enquanto que as caractersticas ecincia e portabilidade esto relacionadas aos requisitos objetivos e sero mensuradas atravs da descrio e execuo de experimentos em laboratrio.
Usabilidade e Manutenibilidade
85
possuir uma interface (API) consistente e fcil de utilizar, com aprendizado intuitivo atravs de poucas funes e extrema abstrao das complexidades envolvidas no desenvolvimento dos elementos internos. J a manutenibilidade est relacionada ao processo de vericao e facilidade de realizao dos testes durante o desenvolvimento de aplicativos que utilizam o JXTAula, facilitando o controle atravs de logs do sistemas que garantam a rastreabilidade dos mtodos que foram executados.
Resultados obtidos
86
Os resultados coletados a partir do questionrio de avaliao dos requisitos no funcionais foram consolidados na gura 6.7.
Resultado
Satisfatrio Satisfatrio Satisfatrio Regular
Ecincia e Portabilidade
Para avaliar as caractersticas relacionadas a ecincia e portabilidade, foram feitos os testes em laboratrios atravs do COGEST, cujos detalhes sero descritos a seguir. A caracterstica ecincia diz respeito quantidade de recursos que estar sendo utilizado durante a execuo das funcionalidades do componente, bem como com a quantidade de mensagens e o tempo de propagao dessas mensagens enviadas e recebidas pela rede. Os resultados obtidos sero comparados ao modelo cliente-servidor utilizado anteriormente pelo COGEST. J a portabilidade est relacionada ao fato da plataforma poder ser utilizada em diversos sistemas operacionais (Windows, Linux, etc ). Para garantir a portabilidade, utilizou-se a tecnologia Java, pois essa possui independncia do sistema operacional que o sistema esteja sendo utilizado. Alm disso, para garantir que o middleware est de acordo
87
com protocolos abertos, foi escolhido a plataforma JXTA, que baseado em uma especicao aberta e utiliza padres abertos, tais como o XML, alm de ser um projeto open-source, cujo cdigo fonte est disponvel para estudo pela comunidade. Finalmente, adotou-se a utilizao de padres de projeto (demonstrados no Apndice A) no desenvolvimento dos componentes interno do middleware JXTAula para garantir que o mesmo esteja de acordo com as principais convenes utilizadas no desenvolvimento de sistemas.
arquitetura P2P atravs do JXTAula e utilizao de uma arquitetura cliente-servidor atravs da utilizao de sockets da linguagem Java. Para o cenrio P2P, foram utilizadas quatro mquinas (peers ) interconectadas por uma rede ethernet com largura de banda de 100 Mbps; enquanto que para o cenrio cliente-servidor, alm destas quatro mquinas (clientes), foi utilizada mais uma mquina para atuar na funo de servidor, atravs da rede ethernet com as mesmas caractersticas do cenrio anterior. Para garantir o requisito de portabilidade, sistemas operacionais diferentes foram utilizados nessas mquinas. As conguraes de cada mquina esto descrita na tabela 6.5.
Mquina 4
Pentium 4 3 GHz 1 GB Microsoft Windows Vista
Servidor Mquina 5
Intel Centrino Duo 1.73 GHz 2 GB Linux Slackware
Enquanto no cenrio P2P cada mensagem enviada diretamente aos participantes de uma determinada sala, no cenrio cliente-servidor, cada mensagem enviada ao servidor e este o responsvel por replicar as mensagens aos demais participantes. Para garantir que os testes fossem feitos de forma homognea, uma seqncia de movimentos predeterminada foi gravada em um arquivo, de forma que ao executar esta seqncia de movimentos, o participante envia pela rede um total
88
de 51 (cinqenta e uma) mensagens. Na avaliao da ecincia do middleware, sero analisadas duas de suas sub-caractersticas:
Mquina 4
0 51
Servidor Mquina 5
3*(51) 51
J no cenrio P2P, por se tratar de um ambiente no centralizado, no existe a gura do servidor. Cada peer se conectou ao ambiente e em seguida, aps a criao da sala Teste, todos os participantes entraram na sala. Utilizou-se a mesma mquina do cenrio anterior para ser a responsvel pelo envio das mensagens. A tabela 6.7 resume o quantitativo no envio e recepo de mensagens trafegada pela rede para cada mquina do cenrio. O prximo item descreve o teste realizado para medir o tempo de propagao de mensagens enviadas/recebidas pela rede.
89
Mquina 4
0 51
Mquina 1
0 3125
Mquina 4
219 3281
Servidor Mquina 5
123 3192
4062
Mquina 4
281 3531
4078
Para se obter o tempo de transmisso mdio de cada mensagem nos testes, calculou-se a mdia do tempo de recepo para cada uma das mensagens. Por exemplo, para calcular o tempo mdio de recepo da primeira mensagem,
90
calculou-se a mdia dos tempos de recepo das Mquinas 2, 3 e 4 para a primeira mensagem. Essa mesma lgica foi utilizada para as demais mensagens de forma a se obter o tempo mdio de cada mensagem. Os grcos das guras 6.8 e 6.10 representam o tempo de envio e o tempo mdio de recepo para cada um dos cenrios dos testes:
Resultados obtidos
Essa seo analisou os cenrios de comunicao baseados nas arquiteturas cliente-servidor e peer-to-peer (P2P) para se avaliar a ecincia do middleware JXTAula. Fez-se um comparativo entre a quantidade de mensagens enviadas; tempo de transmisso total e tempo mdio de transmisso de cada mensagem para os cenrios descritos. Finalmente, os resultados so sumarizados tabela 6.10. A gura ilustra o comparativo entre o tempo mdio de recebimento das mensagens para o cenrio cliente-servidor e P2P.
91
Figura 6.9: Latncia de transmisso no cenrio P2P Tabela 6.10: Resultados obtidos para os cenrios cliente-servidor e P2P
(expressos em milissegundos)
Cliente-Servidor
4*(51) 4062 546
P2P
3*(51) 4078 562
Resultado
Satisfatrio (Menos mensagens no modelo P2P) Regular (P2P equivalente ao Cliente-Servidor) Regular (P2P equivalente ao Cliente-Servidor)
Quantidade de mensagens enviadas pela rede Tempo de transmisso total Tempo mdio de transmisso de cada mensagem
92
Figura 6.10: Comparao entre o tempo mdio de recebimento Tabela 6.11: Resultados obtidos na avaliao nal
avaliaram de forma satisfatria a sub-caracterstica de interopebilidade. Finalmente, aproveitando-se do uso de Secure Pipe do JXTA, conforme explicado no captulo 4, o
93
JXTAula forneceu a funcionalidade de enviar mensagens criptografadas, garantindo o requisito de segurana. Em seguida, os mesmos alunos avaliaram o arcabouo com relao a sua usabilidade e manutenibilidade. Foi constatado o fato do middleware possuir uma interface (API) consistente e fcil de utilizar, com aprendizado intuitivo atravs de poucas funes e extrema abstrao das complexidades envolvidas no desenvolvimento dos elementos internos. Entretanto, detectou-se a possibilidade de melhorar as mensagens de log utilizadas na rastreabilidade dos mtodos para facilitar o desenvolvimento dos aplicativos, melhorando-se o requisito de manutenibilidade. Com relao a ecincia, foi comparado o desempenho do envio de mensagens utilizando uma arquitetura P2P (atravs de pipes do JXTA) e uma arquitetura cliente-servidor (atravs de sockets do Java). O trabalho no pretende demonstrar que o modelo proposto (baseado em P2P) melhor que o modelo cliente-servidor, e sim que existe uma alternativa a esse modelo centralizado, com desempenho equivalente e baseada em uma arquitetura sem um ponto central de falha. Assim, conclui-se que o modelo P2P possui desempenho bastante semelhante, o que conrma a possibilidade de se utilizar esta arquitetura no centralizada no desenvolvimento de aplicativos. Finalmente, para atender a caracterstica de portabilidade, escolheu-se a utilizao da linguagem Java, pois ela possui independncia de sistemas operacionais, pois executada pela mquina virtual java (JVM) que fornece uma abstrao do sistema operacional que esteja sendo utilizado. Para garantir que o middleware utilize protocolos abertos, foi escolhido a plataforma JXTA, baseado em uma especicao aberta que mantido pela comunidade open-source.
Captulo
7.1. Concluso
95
aplicativo. Para o caso da plataforma JXTA, a falta de bibliograa atualizada sobre a plataforma dicultou ainda mais a compreenso e sua utilizao durante o desenvolvimento do middleware JXTAula, principalmente devido a falta de livros atualizados, pois os ltimos livros especcos sobre a plataforma datam de 2002: (GONG; OAKS; TRAVERSAT, 2002), (GRADECKI, 2002) e (BROOKSHIER et al., 2002). Portanto, foram consumidos vrios meses de estudos e testes com exemplos disponibilizados pela plataforma para que houvesse o entendimento correto de seu funcionamento, sendo necessrio um esforo adicional no estudo do cdigo fonte da plataforma para que houvesse o entendimento dos elementos envolvidos na utilizao de suas funcionalidades. Baseado nessa experincia, considerada de certo modo negativa, uma vez que esse esforo desnecessrio para o desenvolvedor e diculta o desenvolvimento e utilizao da plataforma, teve-se a preocupao com que o middleware JXTAula conseguisse abstrair do desenvolvedor toda essa complexidade, sendo a facilidade de uso uma das principais motivaes para a sua utilizao. As funcionalidades providas pelo middleware foram avaliadas atravs da execuo de um plano de testes, que buscou cobrir os requisitos denidos. Alm disso, avaliou-se a usabilidade, que est relacionada ao fato de se ter um aprendizado intuitivo, e a manutenibilidade, que est relacionada a facilidade de realizao dos testes durante o desenvolvimento de aplicativos que utilizam o JXTAula. Outra caracterstica explorada no desenvolvimento deste trabalho foi a portabilidade, garantindo-se que o middleware pudesse ser utilizados em diversos sistemas operacionais. Abordou-se tambm a integrao do middleware JXTAula, a principal contribuio deste trabalho, a um ambiente virtual colaborativo para aplicaes de ensino distncia, que est em fase de desenvolvimento no Departamento de Engenharia de Teleinformtica da Universidade Federal do Cear no contexto do projeto COGEST (Comunicao Gestual com Humanides Virtuais). Demonstra-se, com isso, um caso real da utilizao do trabalho desenvolvido, destacando-se as principais atividades necessrias para utilizar este trabalho no desenvolvido de outros sistemas aplicativos durante a migrao de uma arquitetura centralizada para descentralizada. A arquitetura do ambiente virtual COGEST, baseada no modelo cliente-servidor, foi substituda por uma nova arquitetura peer-to-peer atravs do JXTAula. Neste
96
estudo de caso, foi comparado o desempenho do envio de mensagens utilizando uma arquitetura P2P (atravs de pipes do JXTA) e uma arquitetura cliente-servidor (atravs de sockets do Java). A comparao entre cliente-servidor e P2P tem como propsito vericar a viabilidade de aplicaes que usem arquiteturas centralizadas poderem migrar para descentralizadas. Durante a avaliao desses dois modelos, foi constatada tal possibilidade, baseada no fato de se ter desempenhos equivalentes entre as duas plataformas, e que no foi necessria nenhuma modicao signicativa no sistema original para integr-lo ao middleware JXTAula. Assim, acredita-se que embora este trabalho tenha sido concebido para as necessidades dos desenvolvedores de sistemas de ensino distncia, acredita-se que o mesmo possa ser utilizado por desenvolvedores de qualquer sistemas que deseje migrar para uma arquitetura distribuda, eliminando-se possvel ponto nico de falha. O trabalho no pretende demonstrar que o modelo proposto (baseado em P2P) melhor que o modelo cliente-servidor, mas que existe uma alternativa ao modelo centralizado, com desempenho equivalente e baseada em uma arquitetura sem um ponto central de falha. A partir dos testes realizados em laboratrio, concluiu-se que o modelo P2P possui desempenho bastante semelhante, conrmando a possibilidade de se utilizar esta arquitetura no centralizada no desenvolvimento de aplicativos colaborativos.
97
sincronismo de informaes entre os participantes do ambiente reside no fato de que em um ambiente distribudo, normalmente um objeto compartilhado pode ser acessado por mais de um participante ao mesmo tempo, da a necessidade de se implementar mecanismos de controle de concorrncia. Outra caracterstica bastante importante o fornecimento de persistncia aos objetos do ambiente, para que os mesmos possam ser recuperados em um momento posterior, mesmo que o participante tenha sado do ambiente. Finalmente, outro tema desaador o desenvolvimento de um mdulo para tentar diminuir a imprevisibilidade associada aos ambiente P2P, atravs de mensagens de controle e mecanismos de tolerncia a falha que abstraiam das camadas superiores os eventos de falhas ocorridos nos participantes da rede P2P, garantindo maior conabilidade ao ambiente. Dessa forma, quando um participante sair da rede P2P, seja por motivo de falha no peer, ou pelo simples fato do mesmo ter sado sem avisar aos demais, este mdulo detectaria o ocorrido e seria responsvel por vericar qualquer interao que estivesse ocorrendo com o peer que falhou - tais como compartilhamento de aplicaes, comunicao ou envio de arquivos em andamento - para que os recursos fossem desalocados de maneira adequada e transparente s camadas superiores.
Apndice
99
um arcabouo cujas classes fornecem as diversas funcionalidades necessrias s aplicaes colaborativas de EaD, deixando claro que diversos padres trabalham junto, denindo os papis e responsabilidades para cada mdulo do arcabouo.
A.1.2 Utilizao de Padres de Projeto nas Camadas do JxAula i. Layers : divises lgicas de componentes agrupados por responsabilidades em
comum;
ii. Faade : utilizao de interfaces bem denidas que evitam dependncias diretas
entre os componentes de camadas diferentes;
iii. Bridge :
iv. Adapter : cria uma implementao para uma arquitetura P2P particular; v. Component : utiliza-se a plataforma JXTA como o componente bsico da
infra-estrutura, fornecendo seus servios atravs de componentes reutilizveis;
Factory Method (GAMMA et al., 1995), conforme demonstra a gura A.1. Esse
procedimento feito uma nica vez, quando o mtodo inicializar chamado pela aplicao atravs da fachada do arcabouo descrita no item anterior.
100
Utilizao de Padres de Projeto i. Faade : oferece uma interface nica para um conjunto de funcionalidades de
nvel mais elevado, tornando o subsistema mais fcil de ser utilizado;
101
ii. Singleton : garante a existncia de uma nica instncia da classe; iii. Factory Method : responsvel por construir objetos individuais para um
propsito especco, neste caso, responsvel pela instanciao dos demais gestores, uma nica vez;
102
103
A.5 representa o uxo para trocar a sala atual do participante e para sair de uma determinada sala.
Utilizao de Padres de Projeto i. Singleton : garante a existncia de uma nica instncia do Gestor; ii. Factory Method : responsvel por construir objetos individuais para um
propsito especco, neste caso, responsvel pela instanciao das salas do ambiente;
104
Utilizao de Padres de Projeto i. Singleton : garante a existncia de uma nica instncia do Gestor; ii. Factory Method : responsvel por construir objetos individuais para um
propsito especco, neste caso, responsvel pela instanciao dos participantes do ambiente;
105
106
Utilizao de Padres de Projeto i. Singleton : garante a existncia de uma nica instncia do Gestor; ii. Factory Method :
comunicaes; responsvel por construir objetos individuais para um propsito especco, neste caso, responsvel pela instanciao de
107
Dependendo do tipo de anuncio, o contexto da busca pode
compartilhados.
ser diferente. A gura A.10 ilustra a funcionalidade de atualizar as salas e os participantes da Escola, que efetuada atravs de uma busca de anncios de participantes ou salas no grupo Escola.
Localizao.
A idia que quando novos recursos sejam adicionados ao arcabouo, estes possam ser facilmente integrado ao gestor de localizao atravs da denio de uma nova categoria de anncio, atravs da utilizao do padro Composite, conforme ilustra a gura A.11.
Utilizao de Padres de Projeto i. Singleton : garante a existncia de uma nica instncia do Gestor; ii. Factory Method : responsvel por construir objetos individuais para um
propsito especco, neste caso, responsvel pela instanciao de anncios;
108
Utilizao de Padres de Projeto i. Singleton : garante a existncia de uma nica instncia do Gestor; ii. Factory Method : responsvel por construir objetos individuais para um
propsito especco, neste caso, responsvel pela instanciao de arquivos que estejam sendo compartilhados no ambiente;
109
Utilizao de Padres de Projeto i. Singleton : garante a existncia de uma nica instncia do Gestor;
Apndice
middleware
JXTAula:
ServicoP2PAbstrato ; AdaptadorJXTA; Boot ; Find ; GrupoP2P ; Group ; Peer ; ComunicacaoP2P ; ComunicacaoEntradaP2P ; ComunicacaoSaidaP2P.
Foram utilizadas as seguintes classes do JXTA: NetworkCongurator ;
111
112
10
throws E x c e p t i o n { try {
// Fazer c o n f i g u r a e s
c o n f i g = new N e t w o r k C o n f i g u r a t o r ( ) ; instanceHome = new F i l e ( home , l o g i n ) ;
15
c o n f i g . setHome ( instanceHome ) ;
if (! config . exists () ) {
System . out . p r i n t l n ( "No existe arquivo de configurao , criando ... HOME = "+home ) ; c o n f i g . s e t P e e r I D ( IDFactory . newPeerID ( PeerGroupID . defaultNetPeerGroupID ) ) ; c o n f i g . setName ( l o g i n ) ; c o n f i g . s e t D e s c r i p t i o n ( "Nome do Participante : "+l o g i n ) ; c o n f i g . setMode ( N e t w o r k C o n f i g u r a t o r .EDGE_NODE) ; config . setPrincipal ( login ) ; c o n f i g . s e t P a s s w o r d ( senha ) ; try { c o n f i g . addRdvSeedingURI ( new URI ( "http :// rdv. jxtahosts .net/cgi -bin/ rendezvous .cgi ?2" ) ) ; c o n f i g . addRelaySeedingURI ( new URI ( "http :// rdv. jxtahosts .net/cgi -bin/relays.cgi ?2" ) ) ; } catch ( j a v a . n e t . URISyntaxException u s e ) { use . printStackTrace ( ) ; } try { c o n f i g . save ( ) ; System . out . p r i n t l n ( "Arquivo de configurao criado" ) ; } catch ( IOException i o ) { io . printStackTrace () ; } } els e { config . load () ; } } catch ( E x c e p t i o n e ) { throw new E x c e p t i o n ( " criarConfiguracaoP2P - No foi possvel criar as configuraes do JXTA" ) ; } } }
20
25
30
35
40
45
50
113
10
r e n d e z v o u s . a d d L i s t e n e r ( this ) ;
CONECTADO " ) ;
25
c o m L i s t e n e r . conectadoSuperNo ( ) ; } } }
114
throws E x c e p t i o n { try {
ModuleImplAdvertisement implAdv = parentpg . getAllPurposePeerGroupImplAdvertisement ( ) ;
// Cria p e e r g r o u p
10
// P u b l i c a r anuncio
publicarNoGrupo ( parentpg , grupopg . getPeerGroupAdvertisement () ) ;
15
20
"+grupopg . getPeerGroupName ( )+" "+grupopg . getPeerGroupID ( ) ) ; return grupopg ; } catch ( E x c e p t i o n e ) { throw new E x c e p t i o n ( "Erro ao criar Grupo: "+grupo ) ; } }
( ) . f l u s h A d v e r t i s e m e n t ( grupopg . getPeerGroupAdvertisement ( ) ) ; }
try {
S t r i n g A u t h e n t i c a t o r auth = null ; MembershipService membership = group . g e t M e m b e r s h i p S e r v i c e ( ) ;
115
C r e d e n t i a l c r e d = membership . g e t D e f a u l t C r e d e n t i a l ( ) ;
35
i f ( c r e d == null ) {
A u t h e n t i c a t i o n C r e d e n t i a l authCred = new A u t h e n t i c a t i o n C r e d e n t i a l ( group , " StringAuthentication " , null ) ;
try {
auth = ( S t r i n g A u t h e n t i c a t o r ) membership . apply
40
( authCred ) ; } catch ( E x c e p t i o n f a i l e d ) { } // c o n t i n u a
i f ( auth != null ) {
auth . setAuth1_KeyStorePassword ( password . toCharArray
45
50
i f ( auth . i s R e a d y F o r J o i n ( ) ) {
membership . j o i n ( auth ) ; } els e {
60
"+group . getPeerGroupName ( )+ " com credencial "+l o g i n ) ; } } } } catch ( E x c e p t i o n e ) { throw new E x c e p t i o n ( "Erro ao entrar na sala "+group . getPeerGroupName ( )+ " com credencial "+l o g i n ) ; } }
65
try {
MembershipService membership = group . g e t M e m b e r s h i p S e r v i c e ( ) ;
70
membership . r e s i g n ( ) ; } catch ( E x c e p t i o n e ) {
75
116
try {
M e s s a g e D i g e s t md = M e s s a g e D i g e s t . g e t I n s t a n c e ( "MD5" ) ;
80
byte [ ] t e x t = md. d i g e s t ( grupo . g e t B y t e s ( ) ) ; return ( PeerGroupID ) IDFactory . newPeerGroupID ( t e x t ) ; } catch ( E x c e p t i o n ns ) { throw new E x c e p t i o n ( "Erro ao criar o ID do grupo "+grupo ) ;
} }
85
10
117
20
public S t r i n g g e t D e s c ( ) { return d e s c ;
25
} }
int count = 3 ;
5
Enumeration ae = null ;
a consulta
118
try {
Thread . s l e e p ( P2PConfig . t i m e o u t ) ; } catch ( I n t e r r u p t e d E x c e p t i o n i e ) {} } catch ( E x c e p t i o n e ) {
20
localizao : "+grupo ) ; } }
25
30
= grupopg . newGroup
} } }
40
consulta
try {
Thread . s l e e p ( P2PConfig . t i m e o u t ) ; } catch ( I n t e r r u p t e d E x c e p t i o n i e ) {} ae = l o c a l i z a r G r u p o C a c h e ( grupopg ) ;
50
119
Vector<AnuncioSala> g r u p o s = new Vector<AnuncioSala>
() ;
60
while ( ae . hasMoreElements ( ) ) {
PeerGroupAdvertisement grupoAdv = ( PeerGroupAdvertisement ) ae . nextElement ( ) ; PeerGroup gpg ( grupoAdv . getPeerGroupID ( ) ) ; = grupopg . newGroup
65
escola" ) ;
} } }
75
80
85
90
"+grupopg . getPeerGroupID ( ) . t o S t r i n g ( ) ) ; l o c a l i z a r P e e r R e m o t o ( grupopg ) ; // Espera um tempo para p e r m i t i r que os p e e r s respondam a consulta try { Thread . s l e e p ( P2PConfig . t i m e o u t ) ; } catch ( I n t e r r u p t e d E x c e p t i o n i e ) {} ae = l o c a l i z a r P e e r C a c h e ( grupopg ) ; } catch ( E x c e p t i o n e ) { System . out . p r i n t l n ( "Erro ao enviar o comando de localizao : Todos os participantes da escola" ) ; }
95
while ( ae . hasMoreElements ( ) ) {
P e e r A d v e r t i s e m e n t peerAdv =
120
100
null ) ; i f ( p a r t i c i p a n t e s . c o n t a i n s ( ap ) == f a l s e )
105
p a r t i c i p a n t e s . add ( ap ) ;
} }
participantes da escola" ) ; } } }
// Funes a u x i l i a r e s
Enumeration l o c a l i z a r G r u p o C a c h e ( PeerGroup grupopg , S t r i n g grupo )
120
getRemoteAdvertisements ( null , D i s c o v e r y S e r v i c e .GROUP, "Name" , grupo , 5 0 , null ) ; } Enumeration l o c a l i z a r G r u p o C a c h e ( PeerGroup grupopg ) throws
135
IOException {
return grupopg . g e t D i s c o v e r y S e r v i c e ( ) .
g e t L o c a l A d v e r t i s e m e n t ( D i s c o v e r y S e r v i c e .GROUP, "Name" , P2PConfig . g e t N o m e S e r v i c o A b s t r a t o ( )+":*" ) ; }
140
121
grupopg . g e t D i s c o v e r y S e r v i c e ( ) .
return grupopg . g e t D i s c o v e r y S e r v i c e ( ) .
150
grupopg . g e t D i s c o v e r y S e r v i c e ( ) . f l u s h A d v e r t i s e m e n t ( peerAdv ) ; }
null , 5 0 , null ) ;
}
165
null , 5 0 , null ) ;
175
} }
122
relacionadas criao de pipes de entrada e de sada, alm da criao das mensagens (objetos) que podem ser enviadas atravs dos pipes de sada e recebidas nos pipes de entrada.
ii. Cria-se o listener que vai escutar os eventos ocorridos neste pipe de entrada,
por exemplo, recebimento de mensagens - no trecho de cdigo abaixo o objeto: ComunicacaoEntradaP2P ce ;
comunicacao ) throws E x c e p t i o n {
try {
P i p e A d v e r t i s e m e n t meuAnuncio = ( P i p e A d v e r t i s e m e n t ) A d v e r t i s e m e n t F a c t o r y . newAdvertisement ( P i p e A d v e r t i s e m e n t . getAdvertisementType ( ) ) ;
10
meuAnuncio . s e t P i p e I D ( Boot . pipeID ( pg . getPeerGroupID ( ) , comunicacao ) ) ; meuAnuncio . setName ( comunicacao ) ; meuAnuncio . setType ( P i p e S e r v i c e . UnicastType ) ;
15
123
c e . s e t C a n a l ( meuCanal ) ; Group . publicarNoGrupo ( pg , meuAnuncio ) ;
20
25
30
i. feita uma pesquisa pelos canais de comunicao de todos os participantes; ii. Verica se o anncio do canal de comunicao do participante procurado foi
encontrado;
iii. Caso o mesmo tenha sido encontrado, cria-se uma comunicao com o canal
de comunicao do participante remoto.
try {
f i n d . l o c a l i z a r C o m u n i c a c a o R e m o t a ( grupopg ) ;
consulta
try {
Thread . s l e e p ( P2PConfig . t i m e o u t ) ;
124
} catch ( I n t e r r u p t e d E x c e p t i o n i e ) {} ae = f i n d . l o c a l i z a r C o m u n i c a c a o C a c h e ( grupopg ) ;
15
try {
adv = ( P i p e A d v e r t i s e m e n t ) A d v e r t i s e m e n t F a c t o r y . newAdvertisement (
// V e r i f i c a s e o c a n a l de e n t r a d a o do p a r t i c i p a n t e procurado
( n o m e P a r t i c i p a n t e . toLowerCase ( ) ) ) == 0 ) {
try {
// Cria c a n a l de s a i d a com o u t r o P a r t i c i p a n t e
ComunicacaoSaidaP2P comsaida = new ComunicacaoSaidaP2P ( c l , n o m e P a r t i c i p a n t e , adv ) ;
40
50
125
getMessage().
Os cdigos responsveis por essa funcionalidade so demonstrados a seguir:
10
// P r o c e s s a r Mensagens i n t e r n a s :
15
// Evento e n v i a d a para a a p l i c a o
20
} } catch ( E x c e p t i o n e ) { e . printStackTrace () ;
return ;
}
25
// E x t r a i mensagem r e c e b i d a
126
return o i s . r e a d O b j e c t ( ) ;
40
public s t a t i c InputStream getInputStreamFromMessage ( Message message , S t r i n g nameSpace , S t r i n g elemName ) throws IOException { InputStream r e s u l t = null ;
45
r e s u l t = e l e m e n t . getStream ( ) ; }
return r e s u l t ;
}
55
Assim, para que as aplicaes possam receber as mensagens enviadas atravs do JXTAula, foi criada a interface callback denominada JXTAulaListener. Atravs dessa interface, quando da ocorrncia de eventos, uma mensagem recebida direcionada aplicao para que a mesma possa trat-la da forma adequada.
Apndice
Cdigo C.1: Classe que prov as funcionalidades de conexo entre o cliente e o servidor
public c l a s s TCPConnectionManager
{
boolean waitForMessage = f a l s e ;
10
128
throws IOException {
20
this . r e c e i v e r = r e c e i v e r ; this . s o c k e t = s o c k e t ;
initStreams () ; }
25
public void s t a r t A u t o R e c e i v e ( )
{ Thread r e c e i v e T h r e a d =
new Thread (
30
run ( ) { r e c e i v e ( ) ; } }
);
receiveThread . s t a r t () ; }
35
private void i n i t S t r e a m s ( ) throws IOException { out = new ObjectOutputStream ( new BufferedOutputStream ( s o c k e t . getOutputStream ( ) ) ) ;
out . f l u s h ( ) ;
40
i n = new ObjectInputStream (
new B u f f e r e d I n p u t S t r e a m (
socket . getInputStream ( ) ) ) ; }
45
catch ( IOException e ) {
r e c e i v e r . errorReport ( e ) ; }
129
}
55
return i n . r e a d O b j e c t ( ) ;
}
private void r e c e i v e ( )
{
65
waitForMessage = true ;
while ( waitForMessage )
{
70
try {
re c e i v e r . receiveMessage ( receiveMessage (3000) ) ; }
75
catch ( E x c e p t i o n e ) {
re c e i v e r . errorReport ( e ) ;
break ;
80
} } closeConnection () ; }
85
public void d i s c o n n e c t ( )
{
i f ( waitForMessage )
waitForMessage = f a l s e ;
els e
90
closeConnection () ; }
private void c l o s e C o n n e c t i o n ( )
{
95
try {
130
catch ( IOException e ) {
r e c e i v e r . errorReport ( e ) ; } }
105
public S o c k e t g e t S o c k e t ( )
{
return s o c k e t ;
}
110
{ j x t a u l a . i n i c i a l i z a r ( l o g i n , password , this ) ; }
131
15
return j x t a u l a . g e t S a l a s E s c o l a ( ) ;
}
20
public S t r i n g g e t D e s c r i c a o D a S a l a ( S t r i n g roomName )
{
return e . getMessage ( ) ;
} }
30
35
40
i f ( c o o r d e n a d o r . e q u a l s ( C l i e n t . s e t t i n g s . userName )
{
// s i g n i f i c a que a s a l a e s t a v a v a z i a
e o usurio atual
45
els e
50
construir
132
55
o ambiente l o c a l m e n t e . /
enviarMensagem ( coordenador , Client . getInformation () ) ; }
60
/
Envia a mensagem msg para o c l i e n t e userName . /
65
try
{
i f ( ! activeConn . c o n t a i n s ( userName ) )
70
75
catch ( E x c e p t i o n e1 ) {
80
e1 . p r i n t S t a c k T r a c e ( ) ; } }
85
try {
j x t a u l a . enviarMensagemSala ( j x t a u l a . g e t S a l a A t u a l ( ) , msg ) ;
90
} catch ( E x c e p t i o n e ) { e . printStackTrace () ; } }
95
public void s a i r D a E s c o l a ( )
{
133
jxtaula . sairEscola () ; }
100
115
case 0 : case 1 :
125
break ;
C l i e n t . manager . processCCM ( msg ) ;
N" ) ;
}
135
134
140
erro: "+s t r ) ; }
145
150
Referncias Bibliogrcas
AUSTIN, C.; PAWLAN, M. Advanced Programming for the Java 2 Platform, chapter
BOTELLA, P.; BURGUES, X.; FRANCH, X.; HUERTA, M.; SALAZAR, G. Modeling Non-Functional Requirements. 2001. Web. Disponvel em:
<http://citeseer.ist.psu.edu/botella01modeling.html>.
BROOKSHIER, D.; GOVONI, D.; KRISHNAN, N.; SOTO, J. C. JXTA: Java P2P
JOURNAL, 2002.
CHRISTENSEN, H. B. Frameworks: Putting design patterns into perspective.
9th Annual SIGCSE Conference on Innovation and Technology in Computer Science Education, p. 142145, 2004.
135
Referncias Bibliogrcas
136
self-organizing and fault-tolerant substrate for peer-to-peer applications. GAMMA, E.; HELM, R.; JOHNSON, R.; VLISSIDES, J. Design Patterns:
FCD19774:200x,
Web3D
Consortium.
2008.
Web.
Disponvel
em:
<http://h-anim.org>.
HARASIN, L. On-line education: A new domain. Mindweave: Communication,
Referncias Bibliogrcas
137
Referncias Bibliogrcas
138
virtuels
collaboratifs.
Tese
(Doutorado)
Instituto
Nacional
de
Telecomunicaes da Frana, Setembro 2004. Tese apresentada para a obteno do grau de Doutor no Instituto Nacional de Telecomunicao. SOARES, J. M.; ANSELMO, F. J. M.; MATTOS, C. M. J.; MARCELINO, P. A. M.; BARROSO, G. C.; CORTEZ, P. C. Uma infra-estrutura para a colaborao distncia com suporte comunicao gestual. SEMISH - XXXIII Seminrio
Integrado de Software e Hardware, XXVI Congresso da Sociedade Brasileira de Computao, p. 418-432, 2006.
SOARES, J. M.; HORAIN, P.; BIDEAU, A. Sharing and immersing applications in a 3d virtual inhabited world. Laval Virtual 5th virtual reality international
Referncias Bibliogrcas
139