175

Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

  • Upload
    lamque

  • View
    220

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D
Page 2: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D
Page 3: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ii

Ficha Catalográfica elaborada pela BibliotecáriaChristiane Maria Montenegro Sá Lins CRB/3 - 952

E56aENCONTRO UNIFICADO DE COMPUTAÇÃO EM

PARNAÍBA. (5: 2012: Parnaíba, PI).

Anais do V ENUCOMP 2012, Parnaíba, PI, 12 a 14 denovembro de 2012: [recurso eletrônico]/ Organização [de]Thiago C. de Sousa e Rodrigo Augusto R. S. Baluz. -Parnaíba: FUESPI, 2012.

194 p.: Il.ISBN: 978-85-61946-80-7

1. Ciência da Computação. 2. Congressos. I. Sousa,Thiago C. de (org.) II. Baluz, Rodrigo Augusto R. S. (org.)III. Título. CDD 001.642

Page 4: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

PREFÁCIO

Em 2008, as instituições parnaibanas que atuam no ensino superior, técnico e profissional de informática sentiram a necessidade de criar um evento de computação maior e mais completo para a cidade. Assim, surgiu o projeto ENUCOMP (Encontro Unificado de Computação em Parnaíba), criado numa parceria do CEEP, FAP, IFPI e UESPI, cujas propostas foram pautadas na contribuição para a troca de experiências, buscando a união dos acadêmicos; no fortalecimento da parceria no desenvolvimento da educação e da informática; e no incentivo à produção de trabalhos científicos ligados à tecnologia. Mantendo estes mesmos ideais, o evento vem alcançando um crescimento consistente ano após ano e ganhando envergadura. Em sua quinta edição, com cerca de 300 participantes vindos de diversos Estados brasileiros, o ENUCOMP já é uma referência regional no Norte-Nordeste do Brasil na área de computação.

Por último, gostaríamos de agradecer enormemente aos palestrantes, aos ministrantes de mini-cursos e aos membros da equipe de apoio e do comitê de programa, por acreditarem em nosso evento. O trabalho voluntário realizado por vocês de foi fundamental importância para o sucesso do ENUCOMP. Desejamos que o evento possa trazer frutos para o trabalho de todos.

Até a próxima!

Thiago Carvalho de Sousa Coordenação Geral

ENUCOMP 2012

iii

A edição deste ano, que ocorre nos dias 12, 13 e 14 de novembro, inclui cinco palestras, com temas sobre inovação, acessibilidade, métodos ágeis, computação ubíqua e educação à distância, bem como seis mini-cursos com assuntos relativos à criação jogos 2D e para Facebook, simulação e segurança de redes, desenvolvimento web e sistemas embarcados. Além disso, a programação do ENUCOMP 2012 também fortaleceu a sua vertente científica ao montar um excelente Comitê de Programa, composto por quase quarenta pesquisadores e professores de renomadas universidades e empresas de todas as cinco regiões brasileiras, para realizar a arbitragem de artigos por pares. Como consequência, foram recebidos trabalhos provenientes de 1/3 dos Estados da Federação, sendo selecionados apenas nove para apresentação no evento, o que significou um taxa de aceitação de 26%, nível dos melhores congressos nacionais da área. Os artigos versam sobre três grandes áreas da computação: Inteligência Artificial, com trabalhos sobre agentes inteligentes, testes de agentes e algoritmos genéticos para estimação de sistemas de potência; Sistemas Distribuídos, com temas relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento de download; e Visão Computacional, com assuntos referentes à aplicação de realidade aumentada, análise de imagens via séries temporais e conversão de dados em RDF. Assim, este volume dos Anais Eletrônicos do ENUCOMP 2012 é composto por 12 capítulos: 6 relacionados aos mini-cursos trabalhados durante o encontro, e outros 6 formados pelos artigos científicos selecionados pelo Comitê de Programa para apresentação mas não premiados.

Page 5: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

COMISSÃO ORGANIZADORA

Coordenação Geral:

Athânio de S. Silveira, Instituto Federal do Piauí (IFPI)Francisco das Chagas C. do Nascimento, Centro Estadual de Educação Profissional (CEEP)Rodrigo Augusto R. S. Baluz, Faculdade Piauiense (FAP)Thiago C. de Sousa, Universidade Estadual do Piauí (UESPI)

Equipe de Apoio:

Antônio S. de Sousa, Instituto Federal do Piauí (IFPI)Átila R. Lopes, Universidade Estadual do Piauí (UESPI)Francisco das Chagas Rocha, Universidade Estadual do Piauí (UESPI)José Flávio G. Barros, Faculdade Piauiense (FAP)Mayllon V. da Silva, Faculdade Piauiense (FAP)Nécio de L. Veras, Instituto Federal do Ceará (IFCE)Régis P. Magalhães, Instituto Federal do Piauí (IFPI)

Comitê de Programa:

André Fujita, Universidade de São Paulo (USP)Aryldo Russo Júnior, Grupo AeSAtila Lopes, Universidade Estadual do Piauí (UESPI)Carlos Giovanni Nunes, Universidade Estadual do Piauí (UESPI)Celina Takemura, Embrapa Christian Paz-Trillo, Centro Universitário SENAC-SP Claudia Melo, Thought WorksDavid Pereira, Banco Central do Brasil (BCB)Eduardo Guerra, Universidade Federal do Pará (UFPA)Eduardo Ueda, PetrobrasEsdras Bispo Júnior, Universidade Federal de Goiás (UFG)Eyder Rios, Universidade Estadual do Piauí (UESPI)Fábio Kepler, Universidade Federal do Pampa (UNIPAMPA)Fábio Siqueira, Programa de Educação Continuada da Escola Politécnica da USP (PECE)Flávio Coutinho, Universidade de São Paulo (USP)Harilton Araújo, Centro de Ensino Unificado de Teresina (CEUT)José Flávio Barros, Faculdade Piauiense (FAP)Francisco das Chagas Rocha, Universidade Estadual do Piauí (UESPI)Haniel Barbosa, Universidade Federal do Rio Grande do Norte (UFRN)Jaclason Machado, Universidade Federal do Piauí (UFPI)Jesus Mena, Universidade Federal do ABC (UFABC)José Bringel Filho, Universidade Estadual do Piauí (UESPI)Karina Valdivia, Universidade de São Paulo (USP)Márcio Monteiro, IBM do BrasilMarcos Couto, Oracle do BrasilMayllon Silva, Faculdade Piauiense (FAP)

iv

Page 6: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

Comitê de Programa (cont.):

Mehran Misaghi, Sociedade Educacional de Santa Catarina (SOCIESC)Nécio Lima, Instituto Federal do Ceará (IFCE)Pedro Alcântara Neto, Universidade Federal do Piauí (UFPI)Raphael Cobé, Instituto Federal do Rio Grande do Norte (IFRN)Régis Magalhães, Instituto Federal do Piauí (IFPI)Raimundo Barreto, Universidade Federal do Amazonas (UFAM)Ricardo Lira, Universidade Estadual do Piauí (UESPI)Ricardo Sekeff, Centro Internacional de Pesquisas A.C. CamargoRodrigo Baluz, Faculdade Piauiense (FAP)Rodrigo Veras, Universidade Federal do Piauí (UFPI)Sérgio Barros, Universidade Estadual do Piauí (UESPI)Thiago Carvalho, Universidade Estadual do Piauí (UESPI)Vladimir Rocha, Infomobile

v

Page 7: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

SUMÁRIO

vi

Marina
Typewritten text
1. Introdução ao Desenvolvimento de Jogos para Facebook......................... 1 2. Criação de jogos 2D com técnicas 3D utilizando Python/C...................... 13 3. Fundamentos em Segurança e Hardening em Servidores Linux baseado na Norma ISO 27002..................................................................... 27 4. Desenvolvimento Web com Framework Primefaces................................. 67 5. Introdução à simulação de redes de computadores com o NS-2 (Network Simulator) - Teoria e Prática.......................................................... 78 6. Desenvolvimento de Aplicações para Plataforma Google Android......... 103 7. Desenvolvimento de um Museu Virtual 3D Utilizando Agentes Inteligentes.................................................................................................. 130 8. Transmission of Images Captured in Real Time through Wireless Network using the Python Language: A possible way of Wireless Transmission............................................................................................... 140 9. Project OurDown: Collaborative System for Download Management in Overlay....................................................................................................... 144 10. SenseRDF: Uma Ferramenta para Conversão de Dados em RDF seguindo os Princípios Linked Data........................................................... 152 11. Utilização de Realidade Aumentada e Dispositivos Móveis para Auxiliar na Manutenção de Instrumentos de Medição de Barragens......... 159 12. QoSTVApp:Uma Aplicação Semântica para o SBTVD........................ 165
Marina
Typewritten text
Page 8: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

1

Introdução ao Desenvolvimento de Jogos paraFacebook

Erick Baptista Passos

Resumo

Nesse capítulo, mostramos um pouco da história dos jogos eletrônicos, conceitos de gamedesign, e um tutorial inicial sobre a criação de jogos para Facebook usando ferramentassimples, tais como HTML dinâmico e Javascript.

1.1 - Introdução

Jogos eletrônicos são uma das áreas de trabalho mais interessantes da atualidade. Os motivos sãodiversos, desde a atração que as pessoas tem pelo produto desse trabalho, até o fato de ser umaprodução com base em criatividade, competência, sendo uma mistura de arte e ciência.

Nesse capítulo, apresentaremos um breve histórico dos jogos eletrônicos, faremos umaapresentação sobre game design, o principal conceito por trás de jogos, sejam eles eletrônicos ounão, e discutiremos sobre algumas ferramentas para o desenvolvimento de jogos simples para arede social Facebook. Nas seções principais do texto, serão mostrados todos os passos para acriação de um jogo web simples para Facebook.

1.2 - Histórico

Os primeiros jogos eletrônicos de que se tem notícia, Tennis for Two e Spacewar, foramdesenvolvidos como um experimento pessoal, e como uma demonstração do poder gráfico de umnovo modelo de computador do MIT, respectivamente. Na Figura 1.1 podemos ver o jogo Tennisfor Two, que consiste de um osciloscópio onde você move a onda de um lado para o outro comose fosse uma bola de tenis.

Page 9: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

2

Figura 1.1 - O jogo Tennis for Two

Comercialmente, a história dos jogos eletrônicos se inicia com o advento das máquinas arcades,uma evolução das máquinas mecânicas de pinball, adotando botões, circuitos eletrônicos e ummonitor de TV para exibir as imagens. Os arcades obtiveram muito sucesso, e várias empresasproeminentes surgiram nessa época, entre elas a Atari. A Figura 1.2 mostra o jogo Atari NightDriver.

Figura 1.2 - Atari Night Driver, um jogo arcade que também fez bastante sucesso nos consoles.

Os consoles surgiram após o sucesso dos arcades, e visavam expandir o mercado para o ambientedoméstico, no que sucederam. Os principais exemplos dessa primeira geração são o Odissey e o

ANAIS ELETRÔNICOS V ENUCOMP

2

Figura 1.1 - O jogo Tennis for Two

Comercialmente, a história dos jogos eletrônicos se inicia com o advento das máquinas arcades,uma evolução das máquinas mecânicas de pinball, adotando botões, circuitos eletrônicos e ummonitor de TV para exibir as imagens. Os arcades obtiveram muito sucesso, e várias empresasproeminentes surgiram nessa época, entre elas a Atari. A Figura 1.2 mostra o jogo Atari NightDriver.

Figura 1.2 - Atari Night Driver, um jogo arcade que também fez bastante sucesso nos consoles.

Os consoles surgiram após o sucesso dos arcades, e visavam expandir o mercado para o ambientedoméstico, no que sucederam. Os principais exemplos dessa primeira geração são o Odissey e o

ANAIS ELETRÔNICOS V ENUCOMP

2

Figura 1.1 - O jogo Tennis for Two

Comercialmente, a história dos jogos eletrônicos se inicia com o advento das máquinas arcades,uma evolução das máquinas mecânicas de pinball, adotando botões, circuitos eletrônicos e ummonitor de TV para exibir as imagens. Os arcades obtiveram muito sucesso, e várias empresasproeminentes surgiram nessa época, entre elas a Atari. A Figura 1.2 mostra o jogo Atari NightDriver.

Figura 1.2 - Atari Night Driver, um jogo arcade que também fez bastante sucesso nos consoles.

Os consoles surgiram após o sucesso dos arcades, e visavam expandir o mercado para o ambientedoméstico, no que sucederam. Os principais exemplos dessa primeira geração são o Odissey e o

Page 10: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

3

Atari, mostrado na Figura 1.3, je um de seus maiores sucessos, o jogo Space Invaders, tambémlançado originalmente como um arcade, mostrado na Figura 1.4.

Figura 1.3 - O Atari VGS 2600, de 1978, o primeiro console de grande sucesso.

Figura 1.4 - O jogo Space Invaders

O aquecimento do mercado de jogos levou a uma expansão muito rápida das empresas dedesenvolvimento, o que gerou uma grave crise de conteúdo entre 1983 e 1984, que culminoucom a falência e dissolvição da Atari original. Muitos jogos de baixa qualidade, e cópias baratasde produtos de sucesso foram a principal causa dessa crise. Muitos previram o fim dos jogoseletrônicos, mas o advento dos consoles NES, da Nintendo (Figura 1.5), e Master System daSega, em 1985 e 1986 respectivamente, mostraram que o mercado estava apenas no seu início.

ANAIS ELETRÔNICOS V ENUCOMP

3

Atari, mostrado na Figura 1.3, je um de seus maiores sucessos, o jogo Space Invaders, tambémlançado originalmente como um arcade, mostrado na Figura 1.4.

Figura 1.3 - O Atari VGS 2600, de 1978, o primeiro console de grande sucesso.

Figura 1.4 - O jogo Space Invaders

O aquecimento do mercado de jogos levou a uma expansão muito rápida das empresas dedesenvolvimento, o que gerou uma grave crise de conteúdo entre 1983 e 1984, que culminoucom a falência e dissolvição da Atari original. Muitos jogos de baixa qualidade, e cópias baratasde produtos de sucesso foram a principal causa dessa crise. Muitos previram o fim dos jogoseletrônicos, mas o advento dos consoles NES, da Nintendo (Figura 1.5), e Master System daSega, em 1985 e 1986 respectivamente, mostraram que o mercado estava apenas no seu início.

ANAIS ELETRÔNICOS V ENUCOMP

3

Atari, mostrado na Figura 1.3, je um de seus maiores sucessos, o jogo Space Invaders, tambémlançado originalmente como um arcade, mostrado na Figura 1.4.

Figura 1.3 - O Atari VGS 2600, de 1978, o primeiro console de grande sucesso.

Figura 1.4 - O jogo Space Invaders

O aquecimento do mercado de jogos levou a uma expansão muito rápida das empresas dedesenvolvimento, o que gerou uma grave crise de conteúdo entre 1983 e 1984, que culminoucom a falência e dissolvição da Atari original. Muitos jogos de baixa qualidade, e cópias baratasde produtos de sucesso foram a principal causa dessa crise. Muitos previram o fim dos jogoseletrônicos, mas o advento dos consoles NES, da Nintendo (Figura 1.5), e Master System daSega, em 1985 e 1986 respectivamente, mostraram que o mercado estava apenas no seu início.

Page 11: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

4

Figura 1.5 - NES, Nintendo Entertainment System

O lançamento das séries Super Mario (Figura 1.6) e Zelda para NES, mostraram o quanto o usode personagens carismáticos pode alavancar as vendas desse tipo de produto. Desde essa segundageração, todos os consoles e produtoras buscam a criação de séries e personagens marcantes.

Figura 1.6 - O jogo Super Mario 1, para NES

ANAIS ELETRÔNICOS V ENUCOMP

4

Figura 1.5 - NES, Nintendo Entertainment System

O lançamento das séries Super Mario (Figura 1.6) e Zelda para NES, mostraram o quanto o usode personagens carismáticos pode alavancar as vendas desse tipo de produto. Desde essa segundageração, todos os consoles e produtoras buscam a criação de séries e personagens marcantes.

Figura 1.6 - O jogo Super Mario 1, para NES

ANAIS ELETRÔNICOS V ENUCOMP

4

Figura 1.5 - NES, Nintendo Entertainment System

O lançamento das séries Super Mario (Figura 1.6) e Zelda para NES, mostraram o quanto o usode personagens carismáticos pode alavancar as vendas desse tipo de produto. Desde essa segundageração, todos os consoles e produtoras buscam a criação de séries e personagens marcantes.

Figura 1.6 - O jogo Super Mario 1, para NES

Page 12: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

5

No final dos anos 1980, o mercado de jogos eletrônicos para computador se iniciou através deempresas de garagem, principalmente na Inglaterra. Em meados da década de 1990, começarama surgir jogos com o uso de ponto de vista de primeira pessoa, onde a imagem aparenta ser avisão do personagem. Exemplos desses jogos são o Wolfenstein 3D, Doom e Duke Nukem.Entretanto, o advento dos jogos em perspectiva 3D real (três dimensões) só ocorreu realmentecom o lançamento do jogo Quake (Figura 1.7), de 1996. Desde então, muitos jogos de sucessousam essa técnica de visualização.

Figura 1.7 - O jogo Quake, desenvolvido em 1996 pela ID Software

1.3 - Game Design

Antes de se começar a desenvolver um jogo, é importante se trabalhar os conceitos que irãocompor essa experiência de entretenimento. Esse é o assunto abordado numa área doconhecimento milenar chamada de game design, ou projeto de jogos. Game design trata de comose projetam as mecânicas de jogos, ou seja, as regras que definem como o jogo funciona, sejaele eletrônico, de tabuleiro, ou um esporte.

Todos nós jogamos, mesmo que não concientemente, já que jogos basicamente exploraminstintos que estão presentes nos nossos cérebros. Um game designer precisa conhecer um poucodesses instintos para poder criar experiências interessantes para o jogador.

Os principais instintos que são explorados em game design são os seguintes:

ANAIS ELETRÔNICOS V ENUCOMP

5

No final dos anos 1980, o mercado de jogos eletrônicos para computador se iniciou através deempresas de garagem, principalmente na Inglaterra. Em meados da década de 1990, começarama surgir jogos com o uso de ponto de vista de primeira pessoa, onde a imagem aparenta ser avisão do personagem. Exemplos desses jogos são o Wolfenstein 3D, Doom e Duke Nukem.Entretanto, o advento dos jogos em perspectiva 3D real (três dimensões) só ocorreu realmentecom o lançamento do jogo Quake (Figura 1.7), de 1996. Desde então, muitos jogos de sucessousam essa técnica de visualização.

Figura 1.7 - O jogo Quake, desenvolvido em 1996 pela ID Software

1.3 - Game Design

Antes de se começar a desenvolver um jogo, é importante se trabalhar os conceitos que irãocompor essa experiência de entretenimento. Esse é o assunto abordado numa área doconhecimento milenar chamada de game design, ou projeto de jogos. Game design trata de comose projetam as mecânicas de jogos, ou seja, as regras que definem como o jogo funciona, sejaele eletrônico, de tabuleiro, ou um esporte.

Todos nós jogamos, mesmo que não concientemente, já que jogos basicamente exploraminstintos que estão presentes nos nossos cérebros. Um game designer precisa conhecer um poucodesses instintos para poder criar experiências interessantes para o jogador.

Os principais instintos que são explorados em game design são os seguintes:

ANAIS ELETRÔNICOS V ENUCOMP

5

No final dos anos 1980, o mercado de jogos eletrônicos para computador se iniciou através deempresas de garagem, principalmente na Inglaterra. Em meados da década de 1990, começarama surgir jogos com o uso de ponto de vista de primeira pessoa, onde a imagem aparenta ser avisão do personagem. Exemplos desses jogos são o Wolfenstein 3D, Doom e Duke Nukem.Entretanto, o advento dos jogos em perspectiva 3D real (três dimensões) só ocorreu realmentecom o lançamento do jogo Quake (Figura 1.7), de 1996. Desde então, muitos jogos de sucessousam essa técnica de visualização.

Figura 1.7 - O jogo Quake, desenvolvido em 1996 pela ID Software

1.3 - Game Design

Antes de se começar a desenvolver um jogo, é importante se trabalhar os conceitos que irãocompor essa experiência de entretenimento. Esse é o assunto abordado numa área doconhecimento milenar chamada de game design, ou projeto de jogos. Game design trata de comose projetam as mecânicas de jogos, ou seja, as regras que definem como o jogo funciona, sejaele eletrônico, de tabuleiro, ou um esporte.

Todos nós jogamos, mesmo que não concientemente, já que jogos basicamente exploraminstintos que estão presentes nos nossos cérebros. Um game designer precisa conhecer um poucodesses instintos para poder criar experiências interessantes para o jogador.

Os principais instintos que são explorados em game design são os seguintes:

Page 13: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

6

● Exploração - o ser humano é curioso por natureza, e em jogos isso pode ser exploradoatravés da criação de ambientes interessantes, o que faz o jogador ter vontade decontinuar jogando para descobrir as novas áreas, paisagens e personagens. Essacaracterística é mais marcante nas mulheres, mas muitos homens também gostam deexploração;

● Aprendizado - nós somos recompensados quimicamente quando aprendemos algo novo,quando desenvolvemos uma nova habilidade que antes não tinhamos. Esse instinto éresponsável por grande parte do desenvolvimento técnico da humanidade. Em jogos, éimportante estimular o jogador a aprender novas ações que lhe permitam vencer osdesafios;

● Desafios - vencer desafios em si também é uma atividade recompensadora, especialmentepara os homens, que são normalmente mais competitivos.

Mecânicas de jogo

Mecânicas de jogo são os elementos mais básicos que definem a atividade. Ao se projetar umjogo, são as primeiras decisões a serem tomadas. Para entender o que são as mecânicas, podemosfazer um exercício simples: remova tudo o que puder de um jogo que você conhece, comográficos, música, estória, personagens. Substitua tudo por elementos visuais simples, comocírculos, caixas, etc. O que sobram são as mecânicas, ou seja, a coordenação entre os controles, ovisual e o tempo (para atingir alvos, pular em plataformas, evitar obstáculos, tudo no momentoexato).

Em alguns jogos, as mecânicas podem envolver áudio, como em jogos musicais de ritmo, masmesmo nesses casos, podemos substituir as músicas em questão por batidas ritmadas,coordeanadas com o visual da tela, onde o jogador deve apertar a tecla de cor correspondente nomomento exato para ganhar os pontos.

Na Figura 1.8 temos uma visão simplificada do que poderia ser o protótipo de um jogo deplataforma usando apenas elementos visuais simples. Um protótipo desses permite que se testemas mecânicas rapidamente, antes de se comprometer com o design visual. Se o jogo for divertidoapenas com caixas simples, será também divertido com visual apurado. Entretanto, se o jogo nãofor divertido dessa forma, dificilmente será após a adição da arte.

Page 14: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

7

Figura 1.8 - Um protótipo de jogo de plataforma usando apenas elementos visuais simples.

Um outro conceito importante de game design é o loop de desafio, que ajuda a se projetar comose apresentam as regras para o jogador. Todo jogo é uma repetição da seguinte sequência:apresenta-se um desafio ao jogador; o jogador realiza uma ação; através das regras, se verifica seo jogador venceu o desafio; caso afirmativo, o jogador é recompensado (usando os instintocitados anteriormente), caso negativo, o jogador é punido; volta-se ao passo de apresentar umdesafio. A Figura 1.9 mostra um desenho esquemático desse conceito.

Figura 1.8 - O loop de desafio, um conceito de game design.

1.4 - O Jogo Exemplo

Page 15: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

8

Agora iremos apresentar o jogo que será usado como exemplo. Será um jogo simples, para umúnico jogador, onde o seu desafio é atravessar uma sala até uma porta do lado oposto ao que eleinicia. Como o jogo é em turnos, a sala é composta por um conjunto de casas (células quadradas)em um tabuleiro, e o jogador deve usar o mínimo de movimentos possíveis para chegar aodestino final.

O problema é que a sala está infestada de monstros que o jogador não pode ver. Se o jogadorparar numa casa que possui um monstro, ele perde a partida. Felizmente, ele pode perceber apresença de um monstro em uma casa adjacente, quando isso ocorrer. A estratégia então é recuare buscar outro caminho, ou então arriscar para tentar não perder movimentos. A Figura 1.9mostra uma imagem do protótipo desenvolvido em HTML dinâmico.

Figura 1.9 - Protótipo do jogo. A casa verde é a saída, a casa amarela é onde o jogador está, e ascasas pretas mostram onde ele já passou. Ao chegar numa casa próxima a um monstro, um aviso

é emitido.

1.5 - Implementação de Mecânicas

Page 16: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

9

O protótipo do jogo foi todo criado em HTML 4 dinâmico, usando a linguagem Javascript, semnecessidade de uso de tecnologias de servidor, como PhP, Ruby ou Java. Na Figura 1.10podemos ver o código base HTML que carrega a página do jogo. Observe que apenas fazemoscarga da biblioteca jQuery, para facilitar o trabalho em HTML dinâmico, e dos arquivosJavascript criados especialmente para o jogo.

Figura 1.10 - Arquivo HTML básico do jogo. O elemento DIV chamado “container” servirácomo tabuleiro, e seu conteúdo será criado dinamicamente com Javascript.

A criação das casas do tabuleiro é feita através da inserção de elementos DIV diretamente noHTML através de Javascript. Cada uma das 100 casas (tabuleiro 10x10) é representada por umaDIV de fundo cinza, a qual é associada uma função ligada ao evento clique. A Figura 1.11mostra o trecho de código Javascript que cria as DIVs para representar as casas do tabuleiro.

Figura 1.11 - Trecho de código Javascript que cria as casas do tabuleiro. Cada casa é uma DIV,que é posicionada proceduralmente, e tem uma função associada ao evento clique.

A função associada ao evento clique é responsável pela lógica do jogo. Os seguintes passos sãoverificados sempre que o jogador clica em uma casa do tabuleiro:

Page 17: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

10

● O jogador pode se mover para essa casa? A função só continua em caso afirmativo;● Move o jogador para a nova casa e conta o movimento;● A nova casa contém um monstro? Caso afirmativo, o jogador perde a partida;● A nova casa é o destino final? Caso afirmativo, o jogador vence a partida;● Existe um monstro em casa adjacente? Caso afirmativo, emitir alerta.

Para implementar essa lógica, o tabuleiro é representado por uma matriz 10x10 de númerosinteiros, onde o valor zero (0) representa uma casa livre, e o valor um (1) representa a presençade um monstro. As funções de checagem de derrota e presença de monstro usam essa matriz,enquanto a função de checagem de movimentação possível apenas verifica se a casa clicada éadjacente à atual. Na Figura 1.12 podemos ver o código da função que checa a validade domovimento.

Figura 1.12 - Função que checa se a casa clicada é adjacente àquela ocupada pelo personagem, oque indica um movimento válido.

O restante do código fonte para as mecânicas está incluído no DVD de anais do evento, numarquivo chamado “jogo.js”. O arquivo zipado incluído no DVD contém esse e os demaisarquivos que fazem parte do jogo desenvolvido.

1.6 - Integração com o Facebook

Ao se criar um jogo para Facebook, ao contrário do que muitos imaginam, não se está criandoum aplicativo web que irá rodar nos servidores dessa rede social. O que o Facebook permite é aautenticação, e o acesso remoto (via serviços web) a vários dados do perfil dos jogadores, seugrafo de amigos, entre outras informações.

Esses serviços remotos podem ser acessados diretamente através de requisições em protocoloHTTP, mas é mais produtivo se utilizar uma das SDKs disponibilizadas, seja ela oficial, oumantida por uma comunidade. Existem SDKs para as linguagens mais populares, tais como PhP,Objective C (iOS), Android/Java e Javascript, entre outras. Para isso, basta que você registre asua aplicação no endereço http://developers.facebook.com/ e baixe uma das SDKs oficiais para

Page 18: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

11

iniciar a programação.

Para o nosso exemplo, usaremos a SDK oficial Javascript para fazer a integração diretamente dobrowser. Iremos apenas fazer a autenticação/autorização do jogador via Facebook, para, em casode vitória numa partida do jogo, publicar uma mensagem no mural do jogador. O arquivo“facebook-utils.js” inclui todo o código de acesso à rede social, e é bastante simples, sendobaseado no exemplo incial de autenticação da documentação oficial.

A função de inicialização contida no arquivo verifica se o jogador está logado no Facebook, e sejá autorizou o uso do aplicativo. Caso contrário, o código abre uma pequena janela para que ojogador possa fazer isso. A função mais interessante, mostrada na Figura 1.13, usa a API degrafos do Facebook para postar a mensagem de vitória no mural do jogador.

Figura 1.13 - Função que publica uma mensagem no mural do usuário logado no Facebook.

1.7 - Conclusão e Outras Idéias

Nesse capítulo, mostramos alguns conceitos básicos sobre o projeto de jogos, e um exemplosimples, feito como um protótipo em HTML4 dinâmico, de um jogo com elementos de redesocial. A tendência que tem-se observado é o uso cada vez mais acentuado dessas tecnologiasabertas que permitem a criação de jogos para diversos dispositivos diferentes (PC, Android, iOS,Mac, Linux), especialmente com o novo padrão HTML5.

Nesse exemplo preferimos utilizar HTML4 por ser uma tecnologia que funciona em browsersantigos, como o IE 8 e inferior. Uma atualização interessante seria desenvolver os gráficos dojogo para uso da tag CANVAS de HTML5, permitindo um melhor uso de animações e efeitos.Para tanto, recomenda-se o uso de alguma biblioteca que facilite o trabalho, tal como a CreateJS.

Também é possível se utilizar animações e efeitos interessantes com HTML4. No jogo Cangaço,da Sertão Games, utilizamos apenas HTML4 com a biblioteca Spritely, com resultados bastanteinteressantes.

Page 19: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

12

Outro aspecto que recomendamos explorar é uma maior imersão nas características sociais dosjogos, tal como o uso de desafio multiplayer, ou pelo menos contra um único amigo, comoexplorado nos jogos Song Pop, e Cangaço Wargame.

Referências

Cook, Daniel (2012). What are game mechanics? http://www.lostgarden.com/2006/10/what-are-game-mechanics.html. Acessado em 09/11/2012.

CreateJS (2012). A suite of Javascript libraries and tools for building rich, interactiveexperiences with HTML5. http://www.createjs.com/#!/CreateJS. Acessado em 09/11/2012.

Facebook Inc. (2012). Facebook Developers Portal. http://developers.facebook.com. Acessadoem 07/11/2012.

Sertão Games (2012). Sítio oficial do Cangaço Wargame. http://cangaco.com. acessado em09/11/2012.

W3Schools (2012). Introdução ao padrão HTML5.http://www.w3schools.com/html/html5_intro.asp. Acessado em 09/11/2012.

Page 20: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

13

Criação de jogos 2D com técnicas 3D utilizandoPython/C

Leinylson Fontinele Pereira

AbstractThe game in our context is the electronic game, a simulation and interactive visual displays on ascreen. The interaction is such that the player must have some specific goal or how to go outsomewhere, destroy something, solve a problem, etc. The game developer should be aware of allpossible situations that will be experienced by the player, the knowledge and application ofspecific techniques to create an immersive environment and free of errors typical of computergraphics, as well as all processes that involve the creation of a game / animation, for use bycompanies in disseminating their products through the adoption of "gamification" or forpersonal entertainment.

ResumoO jogo no nosso contexto é o jogo eletrônico, uma simulação visual e interativa exibida numatela. A interação é tal que o jogador deve ter algum objetivo específico como ir ou sair paraalgum lugar, destruir algo, resolver um problema, etc. O desenvolvedor de jogos deve estarciente de todas as situações possíveis que serão sentidas pelo jogador, o conhecimento eaplicação de técnicas específicas para criar um ambiente imersivo e livre de erros típicos dacomputação gráfica, bem como todos os processos que envolvem a criação de umjogo/animação, seja para uso de empresas na difusão de seus produtos por meio da adoção de“gamificação” ou ainda para entretenimento pessoal.

2.1. Do que é feito um jogo?Um jogo nos dá um controle sobre um personagem ou um objeto virtual, de modo que possamos ter umcontrole e uma imersão no ambiente virtual que se aproxime do nosso controle e imersão no ambientereal só que com regras e motivações diferentes.

Page 21: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

14

Figura 2.1 Componentes da criação de um jogo

2.2. O Jogador

O Jogador é um participante do jogo. Um jogador pode ser uma pessoa real ou um jogador controladopelo próprio jogo. Neste artigo, estamos nos referindo a um jogador real, onde a interação do jogo como jogador é feito com dispositivos de entrada e saída do jogo, geralmente a tela e um controle em quena maioria das vezes, o jogador controla o personagem central do jogo.

2.3. PersonagemO personagem de um jogo de videogame é personagem fictício para que o jogador controle. Nosprimeiros jogos o personagem era apenas uma figura sem expressão, dotada de alguma característicaespecial (andar, pular) e não possuíam uma história ou motivação. O primeiro personagem devideogame foi o Mario (ver figura 2.2), criado por Shigeru Miyamoto para a Nintendo. Com o tempo, ospersonagens de videogame foram incorporados à cultura pop. Com Mário surgiu o conceito de mascotedo jogo. Esse tipo de personagem carismático agrega um grande valor por sua importância publicitáriagraças a sua identificação com o público. Muitas ideias vêm dos sonhos, surgem de pequenos conceitosexpandidos em Brainstorm. Grandes ideias poder parecer ridículas no começo.

Figura 2.2 A criação do Mário

Page 22: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

15

2.4. MenusOs menus são interfaces de texto e/ou imagens onde o jogador deve fazer escolhas e ajustes. Antes de ojogo começar, os menus servem para fazer ajuste de preferenciais do jogo, escolha do tipo de jogo,desempenho do hardware, etc. Dentro do jogo eles servem para fazer escolhas e ajustes maiscomplexos. Nem todo jogo precisa de menus dentro do jogo, mas certamente vai precisar de um menuantes do jogo começar .

2.5. HUDSigla para Head Up Display. É um método de representação visual de informações importantes para ojogador. São como menus não interativos. Em geral eles exibem informações como munição, life, armaselecionada, pontuação, dinheiro ou itens. O HUD (ver figura 2.3) é desenhado por último na tela, demodo que ele fique sempre visível para o jogador. Ele não deve se mover muito ou conter palavras paraque não distraia o jogador e sempre que possível ser iconográfico, ou seja, usando imagens querepresentem a informação (ícones).

Figura 2.3 Exemplo de HUD

2.6. Som e MúsicaEmbora não sejam fundamentais no jogo, os sons existem nos jogos desde o primeiro jogo. Os sonsajudam a caracterizar certas ações, aumentar o nível de imersão do jogador e deixa-lo mais concentradono jogo. Os sons podem ser construídos por sonoplastia. Deve-se ter em mente que diferentes sonsprovocam diferentes efeitos sobre o sistema sensorial do jogador. Os sons ligados a uma ação oupersonagem não precisam ser os mesmos sons ligados a estes no mundo real. Pose-se usar sonsdiversos a fim de obter efeitos cômicos, criar tensões, força ou simplesmente obter sensaçõesagradáveis.

A música serve para se criar uma base para as imagens e os outros sons. Com a construção damúsica certa, pode-se criar ambientes agradáveis, tensos, pode-se deixar o jogador mais nervoso comuma música mais rápida e pode-se até usar o recurso do silêncio para criar um clima de suspense. Ésempre bom ter algum repertório de músicas no jogo, e ter músicas de duração razoável, caso contrário,

Page 23: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

16

as músicas podem ficar chatas e repetitivas. As músicas de jogos também criam uma lembrança especialdo jogo nos jogadores e cria um sensação agradável ao se jogar.

2.6. FísicaUm jogo é uma simulação e na maioria das vezes, uma representação do mundo em que vivemos. Essarepresentação, seja por limitações de software e hardware ou por escolha estética, não contém todos osaspectos do mundo real. Porém, um aspecto que quase sempre está presente é o físico.

Esse aspecto se manifesta principalmente na detecção de colisão. Se o objeto A depois que elese mover colide em algo então faz alguma coisa. Essa alguma coisa pode variar de jogo para jogo. Podeser que o objeto A seja um personagem e o algo seja uma parede. Então o "faz alguma coisa” pode sernada, ele bate na parede, portanto não anda, mas pode ser que o personagem tenho batido em algoque o machuque como o fogo, então o "faz alguma coisa" pode ser tirar vida do jogador. Uma técnica decolisão bem simples e que vamos usar aqui é verificar se o retângulo que envolve o sprite toca oretângulo que envolve o outro sprite (ver figura 2.4 e 2.5).

Figura 2.4 Colisão entre retângulos

Figura 2.5 Máquina de Estados Finitos

2.7. Quem participa da criação?

Você que sempre gostou de jogar e decidiu cursar Ciência da Computação para aprender como éque aqueles games são feitos e logo se viu travando uma batalha para passar em Cálculo,Álgebra Linear e Geometria Analítica. O desenvolvimento de um moderno e comercialmente

Page 24: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

17

viável game, envolve uma ampla variedade de habilidades e uma equipe especializada (ver figura2.6).

2.7.1. Game Designer

Elabora os elementos do jogo bem como sua mecânica. Os elementos são os personagens eo cenário, a mecânica são as possibilidades que o jogador tem de interagir com o jogo.Empresas que elaboram jogos de ponta modernos dividem as responsabilidades do gamedesigner com outros profissionais relacionados, sendo os principais, o combat designer e olevel designer.

2.7.2. Roteirista

Descreve como é a trama do jogo, o perfil psicológico dos personagens e a interação entreeles (social e/ou psicológica), a qual não necessariamente corresponde àquela entre ojogador e os personagens do jogo.

2.7.3. Tester

Trabalha na equipe de Q&A (Quality Assurance - Controle de qualidade). Testa diversosaspectos do jogo e relata os pontos falhos ou a serem melhorados.

2.7.4. Programador

Elabora a programação do jogo, desenvolvendo códigos para lidar com AI, música,interação, etc.

2.7.5. Engenheiro de software

Projeta os componentes de software do jogo envolvendo diversos aspectos como acomposição dos objetos, a interface deles, a interrelação existente entre eles, etc.

2.7.6. Programador Web e Programador de redes

Realiza toda a implementação e configuração necessária para a execução do jogo emnavegadores e a disponibilização de interatividade em rede nos jogos multiplayers on-line.

2.7.7. Programador de AI

Responsável por programar os algoritmos de Inteligência Artificial usados no jogo. Dentreestes algoritmos estão o de planejamento estratégico de grupo num atirador de primeirapessoa, a montagem da estratégia do time controlado pela CPU num jogo de esportes, oplanejamento de caminho para levar um personagem NPC (personagens não-jogáveis) deum local ao outro, etc.

2.7.8. Engenheiro de som

Produz os efeitos sonoros e a música tema.

2.7.9. Level designer

Page 25: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

18

Faz o projeto da fase em que o jogador se encontra. Determina quais elementos compõem afase, verifica a presença de alguma característica distintiva no terreno como aclives,declives, montanhas, etc.

2.7.10. Combat Designer

Projeta como será o combate entre o jogador e o computador. Quais são os elementos quedevem estar presentes no combate, qual o papel destes elementos (dano, cobertura, etc).

Figura 2.6. Equipe de desenvolvimento de jogos

2.8. Como é feito um jogo de duas dimensões?

De maneira similar ao modo convencional, a criação de jogos de duas dimensões (2D),utiliza-se da orientação do plano cartesiano (x,y) bastando observar algumas peculiaridadesquanto a orientação do eixo y (ver figura 2.7).

Figura 2.7. Sistema de coordenadas

2.9. O que são engines?

Page 26: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

19

Definição: “É a ferramenta que se encarregará por entender como o hardware gráfico, irácontrolar os modelos para serem renderizados, tratará das entradas de dados do jogador,tratará de todo o processamento de baixo nível e outras coisas que o desenvolvedor de jogosnormalmente não deseja fazer ou não tem tempo para se preocupar” (ver figura 2.8).

Figura 2.8 Estrutura de um Motor de Game (Game Engine)

2.9.1. PyGame

O Pygame é um conjunto de módulos que você importa num código em Python, os quais lhedisponibilizam uma série de funcionalidades auxiliares para criação de aplicativosmultimídia e games.

Segue abaixo algumas características da engine para programadores da linguagempython:

Vários processadores podem ser usados facilmente:O uso de vários núcleos adiciona um desempenho muito maior ao seu jogo.

As funções internas são implementadas em C e Assembly:Código em C costuma ser de 10 a 20 vezes mais rápido que Python. Já

Assembly tem uma performance de mais de 100 vezes maior que Python. Portátil:

Aplicativos programados em Pygame podem rodar tanto em plataformas Windows(ver figura 2.9) quanto em Linux, Solaris, FreeBSD, Mac OS, Android, entre outros. Ocódigo ainda dá suporte a Dreamcast e também pode ser usado em dispositivos móveis. Simples:

O Pygame é usado no projeto OLPC (One Laptop Per Child) para ensinarprogramação a crianças. Ao mesmo tempo, também é a preferência de programadoresexperientes.

Page 27: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

20

Figura 2.9 Janela gráfica do PyGame

2.9.2. Allegro

Allegro é uma biblioteca de funções para jogos 2D feita em C. Apesar de ter algumasfunções para jogos 3D ela não é indicada para isso, sendo no lugar dela uma API3d comoOpenGL ou DirectX. De acordo com a Companhia Oxford de Música, Allegro é o italianopara "rápido, vivo e brilhante". Ele também é um acrônimo recursivo que representa"Allegro Low Level Game Routines" (Rotinas de jogo de baixo nível Allegro).

Segue abaixo algumas características da engine para programadores da linguagem C:

Biblioteca para construção de jogos e aplicações multimídia em geral; Free Source e multi-plataforma (DOS, Windows, Linux, Mac (OS X), BeOS e QNX); Voltada mais especialmente para jogos 2D; Conhecida pela facilidade de adicionar entrada de dados via teclado, mouse e

joystick; Suporta arquivos de configuração e de dados comprimidos (.dat); Temporizadores.

2.10. Inicialização das bibliotecas

Esta é a principal função, e deve obrigatoriamente ser chamada para uma aplicaçãofuncione, a chamada desta função deve ser a primeira a ser feita, antes de qualquer outrafunção.

Allegro: #include <allegro.h>

int allegro_init();

PyGame: import sys, os, pygame

from pygame.locals import*

2.11. Paleta de cores

A especificação de uma paleta (ver figura 2.10) de cores, dar-se através dos parametrosR(Red), G(Green), B(Blue) nas seguintes funções:

Allegro: int makecol( int iRed, int iGreen, int iBlue );

Page 28: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

21

Passando-se os valores dos tons (que variam de 0 a 255), de vermelho, verde e azul,esta função retorna o código da cor. Exemplo de uso: makecol (255, 0, 0 );

PyGame: Realizada de forma similar

Figura 2.10 Paleta de cores

2.12. Temporizadores

Interrompe a execução do programa durante um intervalo de tempo igual ao passadocomo parâmetro, em milisegundos:

Allegro: void rest(unsigned int uiTime);

PyGame: Clock = pygame.time.Clock()

Clock.tick(int Time)

2.13. Pixel a pixel

Colore um pixel do bitmap, nas coordenadas especificadas no segundo parâmetro e terceiroparâmetro, na cor passada no quarto parâmetro:

Allegro: void putpixel(BITMAP *bmp, int iX, int iY, int iColor);

Recupera o valor da cor de um pixel do bitmap, nas coordenadas especificadas no segundoparâmetro e terceiro parâmetro, na cor passada no quarto parâmetro:

Allegro: void getpixel(BITMAP *bmp, int iX, int iY, int iColor);

Preenche um bitmap com a cor especificada, em um espaço fechado, a partir do ponto X eY:

Allegro: void floodfill(BITMAP *bmp, int iX, int iY, int iColor);

2.14. Formas primitivas

A primeira função desenha uma linha vertical, a segunda função desenha uma linhahorizontal e a ultima função desenha uma linha entre 2 pontos quaisquer, respectivamente:

Page 29: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

22

Allegro: void vline(BITMAP *bmp, int iX, int iY1, int iY2, int iColor);

void hline(BITMAP *bmp, int iX1, int iY, int iX2, int iColor);

void line(BITMAP *bmp, int iX1, int iY1, int iX2, int iY2, int iColor);

A primeira função desenha um retângulo sem preenchimento, com o contorno colorido,enquanto a segunda função desenha um retângulo com preenchimento:

Allegro: void rect(BITMAP *bmp, int iX1, int iY1, int iX2, int iY2, int iColor);

void rectfill(BITMAP *bmp, int iX1, int iY1, int iX2, int iY2, int iColor);

A primeira função desenha um círculo sem preenchimento, com o contorno colorido,enquanto a segunda função desenha um círculo com preenchimento:

Allegro: void circle(BITMAP *bmp, int iX, int iY, int iRaio, int iColor);

void circlefill(BITMAP *bmp, int iX, int iY, int iRaio, int iColor);

A primeira função desenha uma elipse sem preenchimento, com o contorno colorido,enquanto a segunda função desenha uma elipse com preenchimento:

Allegro: void ellipse(BITMAP*bmp, int iX, int iY, int iXRaio, int iYRaio, int iColor);

void ellipsefill(BITMAP *bmp, int iX, int iY, int iXRaio, int iYRaio, int iColor);

2.15. Texto

Função para exibir um texto na tela, o sexto parâmetro deve ser -1 para um fundotransparente:

Allegro: void textprintf_ex(BITMAP*bmp,FONT font,int X,int Y, int Color,int CorFundo,char Text);

PyGame: Font = pygame.font.Font("font.ttf",128)

2.16. Modo gráfico

Especificado antes de começar a desenhar:

Allegro: int set_gfx_mode (int card, int w, int h, int v_w, int v_h); Onde:

O valor de card é usualmente GFX_AUTODETECT,GFX_AUTODETECT_FULLSCREEN ou GFX_AUTODETECT_WINDOWED;

w, h largura e altura, respectivamente;

v_w, v_h largura e altura virtual (normalmente, 0), respectivamente.

2.17. Desenhando objetos - BITMAPs

Bitmaps são matrizes de pixels, em que cada valor indica uma cor. Tela é um BITMAPespecial chamado screen, BITMAPs adicionais podem ser criados com:

Allegro: BITMAP *bmp = create_bitmap(int width, int height);

2.18. Periféricos de entrada

2.18.1 Teclado

Page 30: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

23

Para inicializar as rotinas do teclado:

Allegro: install_keyboard();

Váriável global int key[ ], permite ver quais teclas estão pressionadas, através deconstantes definidas para identificar cada tecla (ver tabela 2.1).

PyGame: Realizada de forma similar.

Tabela 2.1. Constantes representativas de cada tecla

2.18.2 Mouse

Para inicializar as rotinas do mouse:

Allegro: install_mouse();

PyGame: Realizada de forma similar

2.19. Som digital (WAV) e música (MID)

Antes de se tocar um som digital ou música deve-se carregá-los da seguinte forma:

Allegro: som1 = load_wav(“arquivo.wav”);

musica = load_midi(“arquivo.mid”);

2.20. Algumas técnicas de programação de jogos

2.20.1. Animação

Dar a impressão de que coisas se movem, pode significar mover um pixel ao longo da telamas, geralmente, significa uma mudança repetitiva da apresentação de algo para que dê aideia de que se move.

Page 31: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

24

A técnica mais simples de animação é quando limpamos a tela, desenhamos osobjetos, limpamos a tela novamente, desenhamos os objetos nas novas posições. O Desafioé como causar a impressão de movimento dos personagens? A solução é utilizarmos sprites,ou seja, um conjunto de dados que definem determinado objeto ou personagem num jogo(ver figura 2.11). Para uma pessoa, por exemplo, podemos ter um sprite que contenha asposições vertical e horizontal dela no mundo, a direção para onde ela está virada e osbitmaps que podem representá-la durante o jogo.

Figura 2.11 Exemplo de sprite

2.20.2. Double Buffering

O Problema:

Quando vamos fazer animações usando o Allegro, surgem alguns problemas relacionadosaos vários métodos que podem ser utilizados. O método mais simples que podemos imaginar éaquele em que limpamos a tela, desenhamos os objetos, limpamos a tela novamente, desenhamosos objetos nas novas posições, e assim por diante. Este método, porém, tem um grave problema:a tela pisca a cada limpeza.

A Solução:

Dispomos de um bitmap auxiliar (chamado de buffer) que, normalmente, possui otamanho da tela (ou o tamanho da região onde ocorre a animação). Desenhamos, neste buffer, osobjetos que devem ser apresentados na tela. Após isso, desenhamos o conteúdo do buffer na tela,fazendo com que os objetos apareçam. Limpamos, então, o buffer, desenhamos os objetosnovamente em suas novas posições, passamos o conteúdo do buffer para a tela, e assim pordiante.

2.20.3. Scrolling

Page 32: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

25

O Problema:

Como dar movimento ao personagem e aos objetos envolvidos?

A Solução:

Movimento de cenário. O scrolling consiste em movimentar o fundo do cenário e,normalmente, deixar o personagem controlado parado, o que causa uma sensação de movimento.O scrolling pode ser horizontal, vertical ou em ambas as direções.

2.20.4. Parallax Scrolling

O Problema:

Como causar a sensação de profundidade presente em jogos 3D?

A Solução:

Utilizar vários fundos que se movimentam em velocidades diferentes.

2.20.5. Detecção de Colisão

O Problema:

Como verificar se dois sprites estão sobrepostos, ou seja, se houve uma colisão?

A Solução:

Existe o método que chamamos de força bruta (checar cada ponto de um sprite com cadaponto de outro sprite) qué é ineficiente, a maior parte dos outros métodos são aproximativos.Veremos o principal deles, que consiste em dividir os sprites em retângulos, de forma quepossamos verificar se cada retângulo está ou não sobreposto a outro. Fazer com queo sprite tenha sua movimentação limitada às bordas do nosso jogo não deixa de ser uma formade detecção de colisão, bem simples, é verdade. Porém, em jogos 2D, geralmente se desejarealizar detecção de colisão entre dois ou mais sprites no jogo.

2.20.5.1 Colisão entre Esferas

O Problema:

Contudo, apesar do sistema de detecção de colisões estar utilizando o algoritmodo bouncing box, depois de alguns testes você perceberá um problema. Se os sprites colidirem

Page 33: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

26

diagonalmente, eles irão colidir antes de atingirem um ao outro de verdade. Isso está ocorrendojustamente por utilizarmos caixas para representar a forma geométrica das esferas, e agora?

A Solução:

Quando queremos testar colisões entre esferas, teremos que verificar se a distância entreos centros delas são menores que a soma dos seus raios. Em caso positivo, então uma colisãoocorreu. Essa é a forma mais eficiente de detectar colisões entre duas esferas. Para detectar acolisão entre duas formas circulares, usamos o teorema de Pitágoras: (r2 = x2 + y2) (ver figura2.12).

Figura 2.12. Teorema de Pitágoras

ReferênciasAndrade, Kleber de Oliveira, “Introdução ao Desenvolvimento de Jogos”,http://pt.scribd.com/doc/79874524/desenvolvimento-de-jogos, Outubro.McGugan, Will, “Beginning Game Development with Python and Pygame”, 2007.“Game Level Design”,http://www.gamasutra.com/view/feature/175950/the_fundamental_pillars_of_a_.php, Outubro.“PyGameLib”, http://www.pygame.org/, Outubro.

Page 34: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

27

Fundamentos em Segurança e Hardening emServidores Linux baseado na Norma ISO 27002

Felipe Santos Barbosa

Abstract

Lack of maturity concept of information security, both as managers from the IT technical staffabout potential problems that may occur due to the lack of correct management of sensitiveinformation of the company and the impacts that may cause the image of the corporation. Manyadministrators with little security experience preparing their servers with a basic installationand after their applications are already in operation they leave the way it is, the adoption ofhardening techniques in the UNIX solutions come with standard ISO27002 controls. Having asits main objective to show how to seek compliance of best practices suggested in the standard.

Resumo

Falta amadurecimento do conceito segurança da informação, tanto de gestores como por parte daequipe técnica de TI sobre possíveis problemas que podem ocorrer pela falta do gerenciamentocorreto das informações sigilosas da empresa e os impactos que possam causar a imagem dacorporação. Muitos Administradores sem muita experiência em segurança preparam seusservidores com uma instalação básica e, depois que suas aplicações já estão em funcionamentoeles deixam da maneira que está, a adoção de técnicas de Hardening em ambientes UNIXprovem soluções de controles com a norma ISO27002. Tendo como seu principal objetivomostrar como buscar a conformidade das boas práticas sugeridas na norma.

3.1.Introdução

A segurança da informação possibilita que o negócio da empresa seja realizado e suamissão alcançada, fazendo com que a informação seja um ativo de grande importância quenecessita ser protegida, independente do formato em que ela se encontra como, por exemplo:impressa ou escrita em papel, armazenada eletronicamente, apresentada em filmes ou através deconversas.

Investir em segurança da informação não é apenas uma questão de investimentotecnológico, mas também de gestão de pessoas, o que faz com que esse aspecto seja um dos maisdifíceis de ser abordado e que merece bastante atenção dos especialistas na tentativa de mitigaros riscos sofridos pelas empresas, pois são as pessoas que executam e suportam os processos deuma organização.

A necessidade do uso das informações e os riscos estão presentes em todos os negóciossendo preciso saber conviver com eles e administrá-los com competência, pois umaindisponibilidade pode causar danos irreparáveis e as pessoas ainda não possuem consciência ou

Page 35: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

28

não é disponibilizada a elas a importância de terem responsabilidade de ajudar a manter aconfidencialidade e a integridade dessa informação.

Uma das estratégias utilizada pela equipe de segurança da informação para ajudar aatingir os seus objetivos é desenvolver um programa de conscientização com a finalidade defazer com que todas as pessoas da organização entendam a necessidade de segurança e passe a sepreocupar com esses aspectos em todas as situações do cotidiano, além de transformar o elo maisfraco da cadeia em um grande aliado na estratégia da segurança corporativa.

3.2.Ambiente OrganizacionalO aumento da competitividade fez com que as empresas buscassem novos modelos de

negócio, com maior rapidez, eficiência e qualidade nos serviços prestados e nos produtos. Ainformação passou a ser o ativo mais valioso da organização, exigindo um controle mais rígido ecomplexo.

Diante desse novo cenário, a segurança da informação, que antes era de conhecimentoapenas de grandes empresas e profissionais especializados, passou a ser conhecida por umnúmero maior de pessoas, porém a maioria das organizações toma uma postura reativa emrelação à segurança, tomando decisões após a ocorrência de um incidente ou até mesmochegando a ignorá-lo dependendo do seu impacto nos negócios.

Devido às constantes mudanças nas organizações e ambientes de TI é comum osurgimento de diferentes formas de ameaças e vulnerabilidades, tornando a sua gestão uma tarefacomplexa e bastante abrangente.

Para auxiliar no processo de implementação e manutenção do sistema de gestão desegurança da informação as empresas utilizam as principais normas série 27000 que são a NBRISO/IEC 27001:2006 - Tecnologia da Informação - Técnicas de Segurança - Sistema de Gestãode Segurança da Informação (SGSI) - requisitos, norma que trata da definição de requisitos paraSGSI, e a NBR ISO/IEC 27002:2005 - Tecnologia da Informação - Técnicas de Segurança -Código de Prática para Gestão de Segurança da Informação, que é o código de melhores práticaspara gerência da segurança da informação.

De acordo com Fontes (2000, p.53), há oito dimensões da segurança da informação (SI)que podem auxiliar em todos os aspectos e facilitar esse processo. São elas:

a) Organizacional: deve abranger as políticas, os termos de compromisso e as auditorias deacordo com a filosofia e a cultura da empresa;

b) Controle de acesso a informação: envolve a identificação e autenticidade dos usuários nossistemas computacionais e como ele deverá ser feito. Também identifica o gestor e o responsávelpelo controle de acesso á informação;

c) Desenvolvimento e a manutenção de sistemas: define os procedimentos, padrões,metodologias e regras de desenvolvimento, aquisição e manutenção de sistemas;

d) Ambiente físico: envolve o controle de acesso e monitoramento do ambiente, além dascondições técnico/ambientais para os equipamentos de informática funcionem corretamente;

e) Ambiente descentralizado: deve levar em consideração a importância que os micros e redeslocais estão ganhando nas empresas;

Page 36: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

29

f) Continuidade do negócio: planejamento de ações que permitem a continuidade do negócio,recuperação ou contingência caso algum desastre ocorra. Deve levar em consideração todos osriscos e ameaças que envolvem o negócio da empresa;

g) Telemática: garante a comunicação da empresa com o mundo exterior. Deve ser monitorada egarantir a proteção das informações internas, assim como a confidencialidade nas comunicaçõesentre cliente/empresa;

h) Recursos Humanos: Fator de grande importância na implementação da SI. Abrange acampanha de conscientização dos usuários e as medidas que deverão ser tomadas para que issoocorra.

A NBR ISO/IEC 27002-2005 cita a conscientização dos usuários como um processo,porém não há um detalhamento ou procedimento de como isso deve ocorrer, permitindo que osgestores desenvolvam planos estratégicos de como isso deve ser feito, levando-se emconsideração a realidade e a cultura da organização e lembrando que é uma estratégia à serrealizada de maneira abrangente, contínua e testada.

Na descrição de acordo com a ABNT NBR ISO/IEC 27001-2006: A organização deveassegurar que todo pessoal que tem responsabilidades atribuídas definidas no SGSI sejacompetente para desempenhar as tarefas requeridas:

a) determinando as competências necessárias para o pessoal que executa trabalhos que afetam oSGSI;

b) fornecendo treinamento ou executando outras ações (por exemplo, contratar pessoalcompetente) para satisfazer essas necessidades;

c) avaliando a eficácia das ações executadas; e mantendo registros de educação, treinamento,habilidades, experiências e qualificações.

A organização deve também assegurar que todo o pessoal pertinente esteja consciente darelevância e importância das suas atividades da informação e como eles contribuem para oalcance dos objetivos do SGSI (FONTES, 2006).

Diante dos dados de pesquisa da Módulo Security na sua 10ª Pesquisa Nacional deSegurança da Informação (2010), a estrutura da área de segurança da informação na maioria dasempresas envolve profissionais que desempenham outras funções na área de TI, como Gerentesde TI/Redes. Somente em um pequeno número de empresas (13%) existe um cargo deCSO/Diretor de segurança (Figura 3.1).

Page 37: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

30

Figura 3.1 Percentuais de Profissionais que desempenham funções na área de TI nasempresas

Fonte: Módulo Security Solutions 10ª Pesquisa Nacional de Segurança da Informação (2006,p.8)

Segundo a Módulo Security (2006), apenas 25% das empresas preferem não terceirizar aárea de Segurança da Informação, enquanto que aquelas que terceirizam dão a preferência aosserviços de administração e suporte a firewall e IDS (16%), help desks (13%) e análise de riscos(9%).

3.3.Segurança da Informação

3.3.1. Uma Visão GeralO conteúdo publicado nas redes sociais nem sempre são relevantes aos negócios da

organização e muitas vezes podem reduzir a produtividade dos profissionais. A disponibilizaçãode informações e a sensação de conforto, gerados pela liberação da utilização dessas ferramentas,pode favorecer o trabalho de pessoas maliciosas que utilizam de estratégias como a deEngenharia Social para obter informações sigilosas.

De acordo com Frank Wazmer, ChiefInformation Officer (CIO) da rede hospitalar norte-americana Health First, explica que a ameaça à imagem das companhias é latente quando seusfuncionários fazem parte de redes sociais. “Esses sites tornam-se plataforma para que elespossam fazer reclamações, comentários impertinentes ou até divulgar dados confidencias deforma maciça”, Tendo como única solução a conscientização dos usuários e a definição dasregras que devem ser aceitas por todos que fazem parte da empresa. “É o único caminhoeficiente que conheço, já que nenhuma ferramenta até agora consegue deter os criminososvirtuais”, conclui (COMPUTERWORLD, 2010, p.55).

Dawel (2005, p.26) acredita que há no mínimo três explicações para que isso ocorra:desconhecimento do perigo que pode estar dentro da empresa, negligência em tratar as ameaças

Page 38: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

31

internas e a imperícia em lidar com assuntos relativos à segurança e tratá-las de forma amadora,achando que está sendo profissional.

Em uma pesquisa realizada pela empresa Módulo Security com Guelman (2006) foipublicado que uma das principais constatações de um estudo realizado pelo "CSI/FBI ComputerCrime and Security Survey" que a segurança da informação é muito mais uma questão gerencialdo que tecnológica, pois de nada adianta investir em tecnologia e proteção física se não temos acolaboração e o comprometimento das pessoas.

A 10ª Pesquisa Nacional de Segurança da Informação, realizada em 2006, pelo MóduloSecurity Solutions, empresa especializada em segurança da informação, com cerca de 600profissionais ligados a área de tecnologia e segurança da informação de diversos segmentos denegócio, revelou que apesar de haver uma maior preocupação com investimentos em SI paraajudarem as empresas a estarem mais bem preparadas pra enfrentar algumas falhas de segurança,ainda é grande o número de empresas (33%) que não sabem quantificar as perdas ou sequeridentificar os responsáveis pelo problema (21%). Porém a maioria das corporações (55%)considera como principal obstáculo para a implementação da segurança da informação a falta deconscientização dos executivos e usuários (Figura 3.2).

Figura 3.2 Principais obstáculos para a implementação da Segurança da Informação

Fonte: Módulo Security Solutions 10ª Pesquisa Nacional de Segurança da Informação

(2006, p.7)

Para ajudar a melhorar esse cenário é fundamental que a alta gerência tenha claro que aconscientização de seus funcionários é um fator crítico de sucesso no plano de segurança dainformação. Para isso é necessário que seja realizada uma avaliação do nível de conhecimentoque a direção da empresa possui sobre o assunto e que seja feito um nivelamento de informaçõesutilizando as recomendações das normas, as melhores práticas e cases de sucesso, tendo comoapoio, caso se faça necessário, uma consultoria especializada no assunto.

Page 39: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

32

O aumento do nível de conscientização dos altos executivos e o crescente número deataques, invasões e vazamento de informações enfrentadas pela empresa, têm incentivado acapacidade dos funcionários que trabalham na área de Segurança da Informação, conformedemonstrado na (Figura 3.3).

Figura 3.3. Nível de capacitação dos profissionais que lidam com a Segurança da Informação na

corporação

Fonte: Módulo Security Solutions 10ª Pesquisa Nacional de Segurança da Informação

(2006, p.14)

3.3.2. Generalidades e ConceitosA preocupação com a segurança da informação e com os conhecimentos que ela

proporciona vem desde o inicio da existência do ser humano, antes mesmo da invenção e uso doscomputadores. As civilizações antigas desenvolveram métodos de segurança da informação,como a cifra, onde cada letra do alfabeto era modificada e somente a pessoa que possuía a chavepara decifrar o manuscrito conseguia ler a informação corrente. Esse método de cifra foiutilizado por muito tempo, inclusive na Segunda Guerra mundial para proteger informaçõesestratégicas de guerra dos exércitos.

Com o avanço tecnológico, o aumento do uso e das facilidades que o computadorproporciona, fez-se necessário o surgimento da segurança da informação e, ao longo do tempo, odesenvolvimento de normas e padrões que servem como guias de melhores práticas e auxiliamna sua estruturação.

Para que a segurança da informação tenha sucesso na sua implementação é necessárioque ela envolva todas as áreas da empresa, ativos e pessoas e a atividade de conscientização douso das políticas de segurança da informação e seja uma cultura da organização (FONTES,2000).

3.3.3. ObjetivosA segurança da informação tem como objetivo a proteção das informações através de um

conjunto de orientações, normas, procedimentos, políticas e demais ações para garantir a sua

Page 40: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

33

preservação contra possíveis danos, perdas, furtos e mau uso, afetando a continuidade do negócioe alcance de seus objetivos.

De acordo com a norma ABNT NBR ISO/IEC 27002:2005 a informação é um ativo ecomo outro qualquer ativo importante, é essencial para os negócios de uma organização e,consequentemente, necessita ser adequadamente protegida. Isto é especialmente importante noambiente dos negócios, cada vez mais interconectado. Como um resultado desde o incrívelaumento da interconectividade, a informação está agora exposta a um crescente número e a umagrande variedade de ameaças e vulnerabilidades (ABNT, 2005).

Um ativo é qualquer coisa que tenha valor para empresa, como serviços, equipamentos,pessoas, conhecimentos, sua imagem e reputação.

Segundo a NBR ISO/IEC 27002-2005 (ABNT, 2005) para que a informação possa estarprotegida é necessário que ela possua os três princípios básicos da segurança, que são:Confidencialidade, Integridade e Disponibilidade.

Confidencialidade: somente indivíduos autorizados possuem acesso a esse ativo,impedindo que a informação acabe sendo acessada por pessoas erradas ou divulgada semautorização prévia. Exemplo: Acesso á folha de pagamento do RH por um funcionário nãoautorizado.

Integridade: o ativo ou a informação devem estar em seu formato original preservando asua exatidão e completeza, ou seja, a informação não pode ter sofrido alteração.

Disponibilidade: o ativo deve estar disponível e acessível para o individuo autorizadosempre que necessário.

Além desses princípios básicos, a proteção também pode ser obtida através daauditabilidade (registro do acesso e uso da informação para posteriores consultas eaveriguações), da legibilidade (de acordo com as leis aplicáveis, regulamentos, licenças econtratos para o negócio), do não repúdio (garantia de que o usuário da informação não possanegar as suas responsabilidades pelo seu uso) (TI EXAMES ISO/27002 FOUNDATION, 2011).

Para que sejam elaboradas as normas e diretrizes, como políticas de segurança dainformação, de acordo com o tipo de negócio da empresa e o seu porte, tendo que haver um totalcomprometimento de toda a organização com nesse processo, desde a alta direção até osestagiários, prestadores de serviço e/ou partes envolvidas.

3.3.4. Políticas de Segurança da InformaçãoA política de segurança da informação (PSI), de acordo com Fontes é um documento que

deve ser elaborado pela equipe técnica, geralmente a equipe de segurança da informação,juntamente com a alta direção visando estabelecer regras, normas e diretrizes de acordo comcada empresa. Ela deve garantir que todas as áreas e recursos da empresa sejam abrangidos e sercoerente com a sua visão, missão e objetivos, além de ser elaborado em uma linguagem de fácilentendimento por todos, evitando utilização de termos técnicos e aspectos de implementação(FONTES, 2000).

Todas as pessoas que fazem parte da empresa devem conhecer e seguir as políticas desegurança, independentemente do seu nível hierárquico ou do seu grau de participação, inclusive

Page 41: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

34

os prestadores de serviço e stakeholders (FONTES, 2000).Segundo Fontes (2000, p.38) a PSIdeve conter os seguintes tópicos:

a) a informação como um bem da empresa;

b) controle do acesso a informação;

c) definição do gestor da informação;

d) responsabilidades do usuário, da gerência e do gestor da informação;

e) preparação para situações de contingência, garantindo a continuidade da execução do negócio;

f) definição do uso profissional da informação da empresa;

g) definição da possibilidade, ou não, da empresa acessar arquivos pessoais do usuário, quandode investigações criminais;

h) definição da identificação do usuário como pessoal e única, bem como a responsabilidade dosigilo da senha;

i) conscientização dos usuários;

j) medidas disciplinares que serão utilizadas caso a política não seja cumprida.

A implantação da PSI tende a ser longa e deve ser realizada de maneira formal eadaptável para que possa se adequar à realidade da empresa. Sua manutenção deve ser constantee seus tópicos revisados e atualizados de acordo com as suas necessidades e importância(FONTES, 2000).

3.3.5. VulnerabilidadesA vulnerabilidade pode ser considerada uma falha no sistema computacional que cria

deficiências na segurança e que pode ser ocasionadas por configurações incorretas docomputador ou de segurança (FONTES, 2000).

Segundo Sêmola (2002) e Moreira (2001) respectivamente, a fragilidade presente ou associada aativos que manipulam e/ou processam informações que, ao ser explorada por ameaças, permitema ocorrência de um incidente de segurança, afetando negativamente um ou mais princípios dasegurança da informação: Confidencialidade, Integridade e Disponibilidade.

A vulnerabilidade é o ponto onde qualquer sistema é suscetível a um ataque, ou seja, éuma condição encontrada em determinados recursos, processos, configurações, etc. Condiçãocausada muitas vezes pela ausência ou ineficiência das medidas de proteção utilizadas com ointuito de salvaguardar os bens da empresa (SÊMOLA, 2002).

As vulnerabilidades podem ser encontradas em praticamente todos os ambientes,podendo ser de vários tipos, como: físicas, naturais, hardware, software, mídias, comunicação ehumana. A identificação dessas vulnerabilidades e a implantação de medidas de segurançadiminuem o grau de ameaça e aumenta a possibilidade da continuidade do negócio (MOREIRA,2001).

Em relação a segurança da informação, a vulnerabilidade humana é um dos pontos maisfrágeis e ela pode ser causada devido a negligência ou não conhecimento das políticas desegurança, falta de treinamento, sabotagens, compartilhamento de informações confidenciais

Page 42: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

35

como senhas e envio de e-mails a pessoa não autorizada, destruição ou roubo de propriedade oudados, entre outros. (SÊMOLA, 2002).

3.6. Ameaças

Para Araújo (2005), as ameaças são muitas das vezes consequências das vulnerabilidadesexistentes, provocando assim perdas de confidencialidade, integridade e disponibilidade.

A perda da confidencialidade ocorre quando há a quebra do sigilo de alguma forma,como o vazamento de informações e a descoberta da senha de um usuário. Quando a informaçãoé acessada por pessoas não autorizadas e há alterações dessas informações ocorre a perda daintegridade. Já a perda de disponibilidade é quando, por exemplo, a informação não estáacessível a quem precisa dela, ou por motivos acidentais, fatores internos ou externos, máintenção ou ainda falha nos equipamentos (ARAUJO, 2005).As ameaças podem ser naturais,quando são causadas devido a fenômenos da natureza e não naturais quando são causadas peloser humano.

O erro humano é a causa mais comum para a perda de dados, que pode ocorrer de formaacidentalmente por apagar ou sobrescrever um arquivo existente na rede. Usuáriosfrequentemente utilizam seus computadores com configurações pré-configuradas sem entender oque elas significam o que pode causar sérios danos. Muitos problemas originados noscomputadores das empresas são causados por atividades executadas por seus própriosfuncionários.

Kevin Mitnick, um dos maiores cyber criminosos dos EUA, que atualmente trabalha emprol da segurança da informação considera as pessoas como o elo mais fraco da segurança,devido à falsa sensação de segurança ocasionada pelo desenvolvimento e utilização de melhorestecnologias de segurança, tornando mais difícil a exploração de vulnerabilidades técnicas. ParaMitnick (2006), a quebra do "firewall humano" quase sempre é fácil, não exige nenhuminvestimento além do custo de uma ligação telefônica e envolve um risco mínimo.

As empresas estão se preocupando cada vez mais com a proteção da informação, poisestão convencidas de que ela é um ativo de grande importância e valor. Um dos pontosrelevantes para que a proteção dessa informação ocorra é a conscientização dos seus funcionáriosquanto à utilização desse ativo.

De acordo com Fontes (2006) conscientização é mais do que um simples conhecimento:estar conscientizado em proteção da informação é internalizar os conceitos e agir comnaturalidade no cumprimento dos regulamentos. Significa que a segurança da informação devefazer parte do dia-a-dia e não ser considerada um peso em nossas responsabilidades profissionaispara a organização. Significa também que os executivos da organização devem avaliar e testarcomprometidos com o nível estabelecido para a proteção.

Fontes (2006, p.32) destaca que vulnerabilidade humana pode ocorrer por diversos tiposde problemas, como descritos a seguir.

Pouco ou nenhum entendimento sobre segurança: segurança não é um instinto e deve serensinada às pessoas.

Page 43: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

36

As ameaças devem ser claramente explicadas: muitas pessoas não acreditam que um problemarealmente exista por nunca terem sofrido ou conhecerem alguém que já tenha sido de algum tipode fraude eletrônica.

Questões culturais: o comportamento das pessoas não muda facilmente. O hábito de usar regrasde segurança não deve ser utilizado apenas dentro da organização. As pessoas também devem terhábitos fora do ambiente empresarial, fazendo com que a segurança seja uma rotina em seu dia-a-dia.

Resistência às medidas de segurança: as pessoas costumam ter a falsa sensação de perda deliberdade ao se submeterem às políticas de segurança, ou ainda, que são pessoas não confiáveisperante a organização.

Necessidades: geradas principalmente pela necessidade financeira.

Oportunidades: os funcionários têm o conhecimento de como a organização funcionadiariamente, consequentemente possuem o conhecimento das fragilidades dos controles internos.

Racionalização: a conduta da pessoa a faz acreditar e a tornar a fraude como algo justo.

O fator humano no desenvolvimento e implantação das políticas de segurança dainformação é o ponto mais problemático para a organização, pois é o único aspecto que não podeser diretamente controlado, como ocorre com os diversos tipos de sistemas e computadores quesão programados a executar com fortes políticas de segurança.

A organização deve desenvolver um plano de conscientização dos usuários, como o objetivo deintroduzir a preocupação com a SI na cultura organizacional. Deve envolver todos osfuncionários da organização e, caso se faça necessário, fornecedores e terceiros.

O processo de seleção dos profissionais também deve ser realizado de maneira criteriosa,levando-se em consideração a importância do ativo pelo qual o colaborador será responsável,além dos seus conhecimentos e da titularidade exigida pela função.

Os riscos considerados ativos podem ser mais bem gerenciados de acordo com asvulnerabilidades humanas se todas as pessoas reconhecerem o seu papel, suas responsabilidadese habilidades, fazendo a diferença na prática e contribuindo para a SI.

A empresa deve estabelecer regras que sejam claras e objetivas, medir a adesão àspolíticas de segurança da informação periodicamente, ter um criterioso processo de seleção,prover treinamento, atualizações e reciclagens, fornecer informações de como se defender deataques tecnológicos e engenharia social além de possuir um conjunto de tecnologias aplicadas aSI.

3.4. Motivos de Ameaça à SegurançaNo começo dos anos 70 poucos eram as ameaças e danos que poderiam ser causados a

informação pela utilização dos computadores, onde a maioria dos perigos era causada pelautilização de disquetes contaminados e, posteriormente, de CDs e jogos que carregavam vírus ecavalos de Tróia.

O aumento do uso de computadores pelas organizações para processar e armazenar informaçõesimportantes e confidenciais sobre o seu negócio, o compartilhamento das informações através darede, o desenvolvimento de novos negócios na internet, a sua facilidade de uso, baixo custo,

Page 44: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

37

anonimato e, consequentemente, impunidade contribuíram exponencialmente para o crescimentodos ataques às informações pessoais e, principalmente empresárias.

Conforme publicado na 10ª Pesquisa Nacional de Segurança da informação há uma grandedificuldade das organizações em conseguir identificar os responsáveis pelas ameaças, fazendocom que elas se dediquem apenas a corrigir as falhas (48%), quando descoberta, ou tomarprovidências internas (25%), acionando por conta própria o causador do problema (MÓDULOSECURITY SOLUTIONS, 2006).

Os danos causados por vários tipos de ameaça podem gerar perdas significantes para asorganizações. O conhecimento das vulnerabilidades dos sistemas e suas ameaças ajudam amitigar os riscos com a implementação de medidas corretivas e custos aceitáveis para aorganização.

Ainda de acordo com a mesma pesquisa, quando as organizações conseguem identificaros responsáveis é verificado que a maioria das falhas de segurança é causado por funcionários(24%) e hackers (20%). As ameaças que mais causam danos financeiros são os vírus (15%),spam (10%) e as fraudes (8%) (Figura 3.4).

Figura 3. 4 Problemas que geraram perdas financeiras

Fonte: Módulo Security Solutions 10ª Pesquisa Nacional de Segurança da Informação

(2006, p.6).

Para Mitnick (2003) não existe um computador 100% seguro, pois um criminoso fará detudo para conseguir a informação desejada.Há um ditado popular que diz que um computadorseguro é aquele que está desligado. Isso é inteligente, mas é falso: o criminoso convence alguém

Page 45: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

38

a entrar no escritório e ligar aquele computador. Tudo é uma questão de tempo, paciência,personalidade e persistência. É nesse ponto que entra a arte da fraude (MITNICK, 2003).

O conhecimento das causas e riscos que as ameaças trazem se faz necessário, pois osusuários repetem seus comportamentos domésticos diários nos ambientes corporativos,comprometendo igualmente a segurança dos computadores utilizados.

3.4.1. Erros e OmissõesTambém chamados de bug's do sistema, os erros e as omissões podem causar ameaças à

integridade dos sistemas devido a problemas que podem ser gerados pela edição das informaçõesdiária, por diversos funcionários e/ou automaticamente pelo próprio sistema, como através deatualizações ou erros de programação, podendo contribuir direta ou indiretamente com asbrechas de segurança. Alguns desses tipos de erros podem causar perdas irreparáveis ou criarvulnerabilidades e podem ocorrer durante todo o ciclo de vida do sistema. Uma pesquisapublicada pelo portal terra em julho de 2007 mostra que uma falha de segurança foi descobertaem um erro de programação bastante comum. O erro era considerado apenas “preguiça deprogramador", no entanto agora ele é considerado um defeito gravíssimo em segurança e estápresente em milhares de programas e sistemas em todo o mundo.

Atualizações de segurança também são frequentemente liberados com frequência pordiversos desenvolvedores de sistemas para correção de vulnerabilidades, descobertas em seusdiversos sistemas para evitar que erros e/ou falhas de programação sejam explorados por pessoasmal intencionadas.

3.4.2. Fraude e RouboPodem ser ações causadas tanto por pessoas externas (conhecidas ou não) como, na

grande maioria das vezes pelos próprios funcionários, utilizando-se de métodos tradicionais,como desvio de dinheiro e falsificação de documentos, ou através de novas formas. Os softwarese hardwares em geral também são alvos vulneráveis de roubo.

De acordo com uma recente comparação feita pelo Centro de Estudos, Respostas eTratamento de Incidentes de Segurança - CERT.br (2011) notificações relacionadas a tentativade fraude apresentam crescimento de 45,8%, em relação ao trimestre anterior e de 23,6% sobre omesmo período de 2010. Houve aumento de 73,4% no número de notificações de páginas falsasde bancos e de sites de comércio eletrônico (Phishing), em relação ao quarto trimestre de 2010 ede 134,4% em relação ao mesmo período de 2010 (Tabela 3.1).

Tabela 3.1 Notificações de ataques classificados por tipo de ataque

Fonte: http://www.cert.br/stats/incidentes/2011-jan-mar/total.html

Page 46: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

39

Os itens apresentados na Tabela 3.1 têm os significados a seguir descritos.

Worm: notificação de atividades maliciosas relacionadas com o processoautomatizado de propagação de códigos maliciosos na rede.

DoS(DoS – Denialof Service): notificação de ataques de negação de serviço, ondeo atacante utiliza um computador ou um conjunto de computadores para tirar de operaçãoum serviço, computador ou rede.

Invasão: um ataque bem sucedido que resulte no acesso não autorizado a umcomputador ou rede.

Web: um caso particular de ataques visando especificamente o comprometimentode servidores Web ou desfiguração de páginas na internet.

Scan: notificações de varreduras em redes de computadores, com o intuito deidentificar quais computadores estão ativos e quais serviços estão sendo disponibilizadospor eles. É amplamente utilizado por atacantes para identificar potenciais alvos, poispermite associar possíveis vulnerabilidades aos serviços habilitados em um computador.

Fraude: segundo Houaiss, é "qualquer ato ardiloso, enganoso, de má-fé, comintuito de lesar ou ludibriar outrem, ou de não cumprir determinado dever, logro”. Estacategoria engloba as notificações de tentativa de fraudes, ou seja, de incidentes em queocorre uma tentativa de obter vantagens.

Outros: notificações de incidentes que não se enquadram nas categoriasanteriores.

3.4.3. Sabotagem dos FuncionáriosOs funcionários têm um amplo conhecimento de como é a estrutura organizacional da

empresa, o funcionamento diário de sistemas e possíveis brechas facilitando a sabotagem. Onúmero de incidentes gerados por esse tipo de ameaça não chega a ser maior do que o número deroubos, porém o custo desses incidentes pode ser significativamente maior. A insatisfação dofuncionário, como a não aprovação constante de seu chefe, a falta de reconhecimento oupromoção de cargo ou salarial, pode levá-lo a esse tipo de ação, ajudando-o a atingir um nívelmaior de insatisfação no seu trabalho.

O site BR-Linux.org publicou em 2008, em uma de suas reportagens, que um problemana rede da telefônica que deixou boa parte de São Paulo off-line pode ter sido causado porsabotagem interna. Segundo os próprios funcionários da companhia, uma semana antes doincidente, foram demitidos cerca de 700 funcionários da Telefônica, por conta de fechamento decontrato de terceirização com fornecedores. Um dos funcionários ainda citou que esse mesmoproblema já havia ocorrido há um ano, porém o incidente não havia sido tão grave.

3.4.4. Hackers MaliciososTambém chamados de crackers, referem-se a pessoas que se aproveitam de brechas e

vulnerabilidades do sistema para invadi-lo. Podem ser tanto pessoas internas quando externas daempresa. Atualmente os danos causados pelos crackers são menores do que os causados pelosroubos e sabotagem de funcionários, porém recebem mais atenção do que as demais ameaças por

Page 47: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

40

não haver o conhecimento do seu objeto e por tomar as pessoas vulneráveis por não conhecer aidentidade dos hackers.

Em dezembro de 2009 um e-mail circulava pela internet oferecendo vacina para antigripeH1N1. Através desse e-mail os hackers maliciosos redirecionavam o usuário para um site falsoque baixava automaticamente programas maliciosos para o computador da vítima. O computadorcontaminado era utilizado para furtar dados cadastrais, atacar outros computadores e transformara máquina em um servidor de "spam" (REUTERS, 2009).

3.4.5. Espionagem IndustrialÉ a ação em que se obtêm informações confidenciais de empresas particulares ou

privadas com o propósito de vendê-las para outras empresas. A espionagem industrial pode serencomendada por empresas para obter informações precisas de empresas concorrentes ou pelopróprio governo para buscar vantagens econômicas ou nos seus negócios industriais. Os trêsmaiores tipos de danos causados pelo roubo de informação são: o custo dessa informação, ainformação do processo de manufatura e a especificação da informação no processo dedesenvolvimento de novos produtos e serviços.

A ABIN (Agência Brasileira de Inteligência) publicou em 2008 no seu site umareportagem realizada por Xavier (2008) sobre espionagem industrial relacionado ao furtoocorrido na Petrobrás de informações sigilosas sobre pesquisas sísmicas que estavamarmazenadas em dois laptops que estavam sendo transportados em um container pela empresanorte-americana Halliburton. Para Advir, diretor e dono da Ormax, uma empresa especializadaem contra-espionagem localizada em São Paulo, “A espionagem industrial é praticada há muitosanos, mas tem crescido a passos largos graças à tecnologia mais barata e ao número dacompetição entre as empresas" (XAVIER, 2008, p.88).

3.4.6. Código MaliciosoRefere-se a vírus, worms, trojans, malwares em geral. Atacam tanto computadores

pessoais quanto outros tipos de plataforma, como celulares. Atuais custos atribuídos à presençade códigos maliciosos podem resultar primeiramente pela parada do serviço para remoção domalware ou o tempo do funcionário envolvido no reparo do sistema, entretanto esses custospodem ser significantes.

Virus: é pequeno programa de computador que se replica propositalmente, algumasvezes em forma alterada. As versões replicadas do vírus original também são vírus.

Worm: programa de computador que se replica propositalmente. O resultado dareplicação são cópias do original que se espalham por outros sistemas fazendo uso dos recursosda rede.

Trojans: programa que propositalmente conduz atividades secundárias, não observadaspelo usuário do computador e que podem causar dano à integridade do sistema infectado. (TIEXAMES ISO/27002 FOUNDATION, 2011).

Em uma entrevista realizada pela Módulo Security com Rob Slade (2006), especialistaem vírus de computador, foi publicado que os vírus de macros surgiram em 1995 e acreditava-seque somente programas eram perigosos. Já em 1998 os criadores de vírus começam a disseminá-

Page 48: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

41

los pela internet infectando um número maior de pessoas e se espalhando pela rede mundialquase que instantaneamente, porém o maior problema surgiu em 2003 quando essesdesenvolvedores perceberam as possibilidades de fazer dinheiro com o uso desses malwares. Orisco passou a aumentar de forma gradativa e a conscientização dos usuários não acompanhouesse processo.

Dessa forma, a conscientização passa novamente a ser um fator importantíssimo para asempresas na mitigação de riscos e vulnerabilidades em seus ativos, conforme Slade (2006)recomenda em um trecho de sua entrevista citando sobre as tendências para o futuro e o que asempresas poderiam fazer para melhor se protegerem.

Nós não podemos saber como as tecnologias perigosas podem ser, mas sabemos queserão como aplicações que colaboram para a "conveniência do usuário". Muito provavelmente,se relacionarão com ferramentas que existam. Em termos de proteção a conscientizaçãocontinuará sendo a melhor defesa. Organize palestras para seus funcionários, ensine o que éperigoso e que todos os atalhos geralmente resultam em infecções. É apontado também queseminários para os usuários em geral são uma das mais efetivas proteções, em termos de custo-benefício: ensinando usuários que não trabalham para você, você ajuda na proteção. Os vírus queatingem usuários infectados enviam cópias e uma destas pode atingir você. (SLADE, 2006, p.2).

3.4.7. SpamÉ um nome coletivo para mensagens indesejadas. O termo é normalmente usado para e-

mail, mas mensagens de publicidade e em web sites também são consideradas como spam.Onúmero de spams reportados para o CERT.br, órgão responsável por receber, analisar eresponder a incidentes de segurança envolvendo redes conectadas à internet, chegou a um totalde 31.367,42 somente entre janeiro e junho de 2011 e esse número vem crescendoexponencialmente a cada ano (Figura 3.5).

Figure 3.5 Spams reportados ao CERT.br por ano

Fonte: http://www.cert.br/stats/spam/

Page 49: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

42

3.4.8. Exploração de VulnerabilidadesVulnerabilidades ocorrem, principalmente, em softwares comerciais ou, até mesmo, nas

ferramentas de segurança como antivírus e firewalls. A Figura 3.6 exibe os incidentes reportadosem 2011 referentes aos tipos de ataque pelos sistemas e usuários de computadores.

Figura 3.6 Tipos de ataques reportados ao CERT.br no ano de 2011

Fonte: http://www.cert.br/stats/incidentes/2011-jan-mar/tipos-ataque.html

De acordo com resultados da 16ª edição do internet Security ThereatReport, divulgadopela Symatec só em 2010 foram descobertos mais de 286 milhões de novas ameaças com ataquesdirecionados às organizações. No universo da mobilidade, as incidências de ameaças subirampara 42%. Com isso, as empresas norte-americanas gastam em média, $7,2 milhões para sanarum vazamento de dados.

Em matéria divulgada pela DecisionReport (2011) Vendramini diretor Comercial daSymantec Brasil cita como tendência de ameaça para os próximos anos ataques direcionadoscomo o Hydraq e o Stuxnet, esse último tem se mostrado uma ameaça crescente em todo omundo pelo fato de ser considerado o maior ataque cibernético da história. O Stuxnet abriu umaporta para os malwares que alteraram a frequência de energia do motor, que ocasionou também acapacidade de produção de uma empresa.

3.4.9. Ameaça à PrivacidadePodem ter várias origens, uma delas é a venda de informações pessoais dos cadastros de

moradores de uma determinada região ou país por funcionários públicos para empresas privadaspara que elas possam disseminar sua marca e promover propagandas de seus produtos e serviços.A divulgação de informação também pode favorecer a engenharia social facilitando o ataque.

As informações também devem ser descartadas de forma adequada, evitando que pessoasmal intencionadas possam conseguir informações valiosas, como contas e senhas de usuários,configurações de computadores, número de contas bancárias, vasculhando o lixo de umaempresa.

3.4.10. A Fragilidade das Senhas FracasNa tentativa de se obter sucesso em um acesso não autorizado o primeiro alvo a ser

atacado são as senhas de usuários, que geralmente não possuem uma complexidade na sua

Page 50: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

43

elaboração, são anotadas e armazenadas em locais com pouca ou sem nenhuma segurança oucompartilhada com demais usuários. Ao obter sucesso na invasão o hacker pode acessarinformações particulares ou confidenciais, instalar ou executar programas, tornar a máquinavulnerável e trazer sérios riscos à organização.

De acordo com a redação do site Correio 24 Horas (2011), o apresentador Luciano Huckteve a sua senha do Twitter roubada e divulgada aos seus seguidores. O hacker dizia que tinhatrocado a sua senha e mandado de forma privada para a mulher do apresentador, Angélica.Poucos minutos depois, Huck brincou escrevendo para os seguidores. "Depois da indelicadeza deser hackeado no twitter... estou de volta! Ah... minha nova senha é: Angélica!", brincou.

3.5. Engenharia SocialUm engenheiro social recebeu a atribuição de obter os planos do seu novo produto que

deve ser lançado em dois meses. O que vai impedi-lo? O seu Firewall? Não. Dispositivosavançados de autenticação? Não. Sistemas detectores de invasão? Não. Criptografia? Não.Acesso limitado aos números de telefone de discagem por modems? Não. Nomes de códigos nosservidores para dificultar que um estranho determine qual servidor podem conter os planos doproduto? Não.

A verdade é que não existe uma tecnologia no mundo que evite o ataque de umengenheiro social (MITNICK, 2003).A ausência das medidas de segurança e a fragilidadehumana podem facilitar o uso da engenharia social, que é uma técnica para obtenção deinformações de uma organização ou pessoal através de métodos para enganá-las ou explorá-las.

Geralmente o infrator se passa por outra pessoa, fingindo ser um profissional ou outrapersonalidade, não utilizando de força bruta ou falhas de equipamentos para explorá-los.SegundoMitnick (2003) a engenharia social usa a influência e a persuasão para enganar as pessoas econvencê-las de que o engenheiro social é alguém que na verdade ele não é, ou pelamanipulação. Como resultado, o engenheiro social pode aproveitar-se das pessoas para obter asinformações com ou sem o uso da tecnologia.

Em uma reportagem exibida pelo programa Fantástico - Globo (2011) nos deparamoscom a notícia de que "No Rio falso tenente-coronel do Exército atuava nas barbas da cúpula daSegurança Pública..." Esta noticia, que muitos devem ter visto ou ouvido, causou um verdadeiroalvoroço tanto na mídia como na alta cúpula de Segurança Pública no Estado do Rio de Janeiro,que foi colocada em uma situação um tanto constrangedora.

Em um dos seus trechos o falso coronel cita "Eu consegui porque entrei e ninguém meperguntou nada e nem pediu nenhuma identificação. “E se já não bastasse” ainda apresentavadocumentos falsos criados por ele próprio e por último em mais uma de suas colocações cita"...que a parte que mais engana as pessoas é tão somente a convicção com que o engenheirosocial se porta, a forma como coloca os assuntos e os resultados apresentados...". Enfim, eleutilizou-se de suas habilidades em convencer as pessoas, para se tornar parte de um projetomaior, que neste caso específico, era estar/atuar na cúpula da Secretária de Segurança Pública doRio de Janeiro.

Algumas das características humanas utilizadas para a aplicação da engenharia social são(MITNICK, 2003, p.8):

Page 51: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

44

a) vaidade pessoal e/ou profissional;

b) autoconfiança;

c) formação profissional;

d) vontade de ser útil;

e) busca por novas amizades;

f) propagação de responsabilidades;

g) persuasão.

Inúmeras ferramentas podem ser utilizadas pelos engenheiros sociais para alcançar osseus objetivos, entre eles podem-se destacadas a utilização do telefone, internet, e-mail, e/oucorrespondências, chats, malwares em geral, espionagem, roubo de informações através dedocumentos descartados incorretamente (MITNICK, 2003).

Geralmente os engenheiros sociais bem-sucedidos têm a habilidade de lidar com aspessoas, são educados e agradam facilmente, o que ajuda no estabelecimento de afinidade econfiança. Utilizam-se de documentos aparentemente sem grande importância, o qual as pessoasda organização não veem nenhum motivo pelo qual ela deva ser protegida e restrita, edesenvolvem um ambiente de credibilidade, além de explorar a confiança da vítima sem levantarqualquer suspeita utilizando-se da crença de que a probabilidade de ser enganado é muito baixa(MITNICK, 2003).

Para que uma empresa ou pessoa evite a trapaça Mitnick (2003, p.32) diz que:

A sua empresa tem a responsabilidade de informar os empregados sobrecomo pode ocorrer um erro sério quando informações não públicas sãotratadas da forma errada. Uma política de segurança bem desenvolvida,combinada a educação e treinamento adequados, aumenta bastante aconsciência do empregado sobre o tratamento correto das informaçõescomerciais corporativas. Uma política de classificação de dados ajudavocê a implementar os controles adequados para divulgação dasinformações. Sem uma política de classificação de dados, todas asinformações internas devem ser consideradas confidenciais, a menos queseja especificado o contrário.

De acordo com Mitnick (2003, p.33) as empresas devem seguir alguns passos que ajudama protegê-la contra a divulgação de informações aparentemente inofensivas:

a) realização de treinamentos e conscientização fornecidos pela equipe de Segurança dainformação sobre os métodos utilizados pelos engenheiros sociais;

b) determinar o método apropriado de autenticação a ser usado quando os empregados interagemcom as pessoas que eles não conhecem pessoalmente ou por telefone.

c) classificação das informações que aparentam ser inofensivas verificando se o acesso a elas nãopoderá levar o engenheiro social a acessar informações sigilosas da empresa;

d) o uso da terminologia interna pode fazer com o que o engenheiro social pareça assumirautoridades e conhecimento;

Page 52: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

45

e)evitar a divulgação dos telefones diretos dos CEOs ou diretos para pessoas desconhecidas.Elaborar uma política de identificação positiva pode auxiliar no fornecimento dessasinformações somente aos colaboradores da empresa;

f) ter uma política escrita e bem divulgada sobre a divulgação de informações de códigocontábeis dos grupos de trabalho e departamentos;

g)verificar sempre a identidade do solicitante juntamente com a necessidade que o requisitantetem que saber;

h) os funcionários deverão ser treinados a negar educadamente alguma informação até que asolicitação possa ser verificada. As políticas e procedimentos da empresa com relação àdivulgação de informação não pública devem ser sempre seguidos.

Portanto, trazendo isso à realidade corporativa, fica evidente que combater umengenheiro social é um dos mais difíceis papéis, até mesmo para os mais experientes CSO, poisdepende da colaboração de todos da empresa. Essa colaboração só é possível de acontecer comum mínimo nível de maturidade em segurança da informação, e para alcançar isso, uma dasações que mais apresenta resultado são as políticas de conscientização de usuários (CORREIA,2011).

3.6. Conscientização e Treinamento em SegurançaUm programa de conscientização e treinamento deve ser desenvolvido de acordo com os

motivos pelo qual as pessoas são vulneráveis aos ataques. Um estudo realizado por Robert B.Cialdini durante 50 anos resumiu seis tendências básicas da natureza humanautilizadas pelosengenheiros sociais (MITNICK, 2003, p.12).

Autoridades: as pessoas têm a tendência de atender solicitações que são feitas por pessoas comautoridades ou que estão autorizados a fazer tal solicitação.

Afabilidade: as pessoas têm a tendência de atender solicitações quando o solicitante se fazpassar por alguém agradável ou com interesses, crenças e atitudes semelhantes aos da vítima.

Reciprocidade: costumamos a atender a solicitações quando acreditamos que recebemos algo devalor como retribuição.

Consistência: após fazer um comprometimento público ou adotar uma causa as pessoas têm atendência de atender as solicitações para não parecem pouco confiáveis ou indesejáveis.

Validação Social: o cooperativismo quando a ação parece estar de acordo com aquilo que aspessoas estão fazendo aparentando estar de forma correta e apropriada.

Escassez: as pessoas costumam cooperar quando o objeto que está sendo procurado está em faltaou disponível por um curtoperíodo de tempo e que outras pessoas estão competindo por ele.

O programa de conscientização e treinamento deve visar à mudança de comportamentodos funcionários motivando-os a querer fazer parte do programa protegendo os ativos daempresa e também as suas próprias informações. Ele deve atingir cada pessoa que tem acesso asinformações confidenciais ou aos sistemas corporativos de computadores. Deve ser realizado deforma contínua e atualizado sobre as novas ameaças e vulnerabilidades e divulgado a todos osfuncionários da corporação fazendo com que eles aprendam que cada colaborador tem um papelimportante na defesa contra tentativa de invasão aos dados confidenciais.

Page 53: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

46

Por definição, a engenharia social envolve algum tipo de interação humana.Comfrequência, um atacante usa vários métodos de comunicação e tecnologias para tentar atingir oseu objetivo. Por esse motivo, um programa de conscientização bem feita tenta abortar alguns outodos estes itens:

a) as políticas de segurança relacionadas com senhas de computador;

b) o procedimento de divulgação de informações ou material confidencial;

c) a política de uso do correio eletrônico, incluindo as medidas para evitar ataques maliciosos decódigo;

d) a responsabilidade de questionar as pessoas que estão nas instalações sem o crachá;

e) como determinar a classificação das informações e as medidas adequadas para proteger asinformações confidenciais;

f) a eliminação adequada de documentos confidenciais e mídia de computador que contenham,ou que já tenham contido material confidencial.

O programa de conscientização deve ser realizado de forma constante, além de ser criativo eutilizar todos os canais disponíveis de comunicação para que todos os colaboradores tenhamacesso às mensagens e possam ter em mente os bons hábitos de segurança. Outra tática que podeser utilizada é a linguagem no qual as mensagens são redigidas evitando que elas tornemfamiliares demais para serem ignoradas (MITNICK; SIMON, 2006).

3.7. O que é Hardening ?Segundo o WikipediaHardening é um processo de mapeamento das ameaças, mitigação

dos riscos e execuçao das atividades corretivas – com foco na infraestrutura e objetivo principalde torná-la preparada para enfrentar tentativas de ataques.

Muitos administradores sem muita experiencia em segurança preparam seus servidorescom uma instalação básica e, depois que suas aplicações já estão funcionando eles a deixam damaneira que está. Eis que muitas vezes surge a seguinte frase “ Ah, já esta funcionando, entãoestá bom!”, e é ai que está o maior problema: achar que está bom.

O Sistema Linux torna-se bastante seguro uma vez devidamente trabalhado. E é por issoque deve ser aperfeiçoado suas configurações padrões. Apesar de ser seguro quandodevidamente configurado é possível torná-lo ainda mais seguro. Adotar técnicas de hardening éter que pensar em três fatores: Segurança, risco e flexibilidade. É necessário saber dosar muitobem esses três fatores para levar o sistema a uma ótima produtividade e segurança.

Sabe-se que não é possível ter 100% de segurança, mas, quanto mais segurança menosrisco mas também pouca flexibilidade, ou seja é uma razão inversa proporcional. Por outro lado,se há grande flexibilidade no servidor, que permita qualquer tipo de programa nele, a segurançaficará baixa e os riscos vão aumentar (MELO, 2006).

Tabela 5.2 para visualizar uma representação gráfica desses cenários.Segurança Risco Flexibilidade

Page 54: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

47

Não há uma regra direta para esses três fatores representados na Tabela 5.2, isso vaidepender de cada situação, de acordo com o tipo de necessidade. Por isso toda implentação deum servidor deve ser bem definida antes de ser feita, nem que ela tenha que ser desenhada nopapel e analisada por várias vezes.

Embora as técnicas de hardening sejam de extrema importância, elas não se aplicam emtodas as situações. Cada caso é um caso. É preciso analisar e descobrir o procedimento que serámais adequado para a necessidade em questão. Outro ponto importante é que ela é focada nacamada de “userland”. Hardening é composto por 4 etapas bem definidas são elas:

1º Mapeamento das ameaças

Ameaças é qualquer evento que possa gerar impacto negativo em nossos ativos. Ex:usúario insatisfeito, incêndio, falata de recurso. Pra uma ameaça poder se concretizar elanecessita de uma vulnerabilidade. Mesmo porque vulnerabilidade sozinha não faz nada. Quandose tem diversas vulnerabilidades e ameaças que possam comprometer nosso ambienteexplrorando essa vulnerabilidade, temos um risco.

Dessa forma, enttão ameaças são circunstância e incidentes que podem gerar impactosnegativo explorando uma vulnerabilidade tornando um potencial risco.

2º Mitigação do Risco

Visa reduzir/eliminar os riscos ao nível aceitável, mas qual é o nivelaceitavel ?aquele quemeu ambiente pode trabalhar adequadamente de forma segura a zelar pelos 3 pilares dasegurança da informação e que esteja proteigo contra ataques.

Há 3 formas de lidar com os riscos:

Evitar o risco: Medidas são tomadas para eliminar a ameaça de tal forma que a ameaçanão leve a um incidente.

Suportar / Aceitar o risco: Considera que certos riscos são aceitos. Isto pode acontecerquando o custo da medida de segurança execede o dano. Nesta estratégia a organização vai optarpor medidas de segurança repressivas. Ex: se houver um incêndio na sala deve-se apagar o fogocom o extintor de incêndio.

Neutralizar o risco – Tomar o risco neutro: Medidas são tomadas mesmo que asameaças já não se manifestam mais, mas se por ventura venham a se concretizar, o resultado dodano é minimizado. Nesta estratégia a organização pode optar pela combinaçao de medidaspreventivas, detectivas e repressivas.

3º Ações corretivas e preventivas

Ações Corretivas e preventivas para os Riscos de TlAs ações corretivas e preventivasfazem parte do dia-a-dia dos técnicos e gerentes operacionais de TI. São inerentes às suasfunções e atreladas aos riscos do negócio sob sua responsabilidade. É recomendável que as açõespreventivas sejam mais utilizadas queascorretivas.

As ações preventivas devem estar previamente orçadas, contratadas, acompanhadas eatuantes. Podem se restringir a uma ação puramente técnica controlada internamente ou poderequerer uma ação externa (fornecedores, terceiros etc). As ações Preventivas estão atuantes pré-

Page 55: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

48

ocorrência do Risco. Por outro lado as ações corretivas são ativadas pós-ocorrência do Risco.Podem ser o último estágio antes do acionamento de um Plano de Contingência.

Ações corretivas em demasia podem ser o resultado de um planejamento ou operaçõesinadequadas ou mesmo a falta deles. Ações corretivas, na maioria das vezes ocorrem de formaemergencial, sem planejamento e dependendo do procedimento e das ferramentas adotadospodem ser mais nocivas para o ambiente de Tl do que benéficas.

Podem ser evitadas caso haja ações Preventivas.Um exemplo clássico é a gestão deservidores: é requerido que este passe por manutenções preventivas de hardware periódicas(disco, memória, capacidade, performanceetc), assim como é requerido também que seuambiente operacional (sistema operacional, software gerenciador de banco de dados etc) sejaatualizado permanentemente de acordo com as orientações do fornecedor. Não havendomanutenções e atualizações preventivas Hardware e Software, riscos de indisponibilidade doambiente são potencializados.

As ações preventivas possibilitam uma gestão de menos risco. No caso citado, contratosde manutenção e suporte técnico junto a fornecedores e terceiros; treinamento técnico ao pessoalinterno e outras ações impedem que haja exposição e perdas financeiras da empresa em funçãode indisponibilidade dos sistemas/serviços (IETEC-Instituto de Educação Tecnológica).

4º Estratégia de Segurança

Antes de decidir implementar um sistema de segurança um firewall por exemplo éimportante ter o conhecimento de algumas estratégias básicas empregadas na construção destes,visando uma maior segurança e confiabilidade no firewall são métodos que podem e devem seranalisados.

Privilégio Mínimo: Garantir que o usuário só tenha acessoaos recursos que ele necessita teracesso. Tomando o cuidado de não atribuir privilégios menores que o necessário, pois destaforma, tal objeto não conseguirá realizar suas tarefas. Este método é largamente utilizado,sendo importante para eliminar ou amenizar os danos causados por pessoas malintencionadas.

No contexto de Internet, existem vários exemplos:

Todo usuário não precisa acessar todos os serviços de Internet existentes;

Todo usuário não precisa modificar todos os arquivos em seu sistema;

Todo usuário não precisa saber a senha de root (administrador) da máquina;

Todo administrador de sistema não precisa conhecer as senhas de root de todos ossistemas;

Todo sistema não precisa acessar todos os arquivos de todo outro sistema.

Muitos dos problemas se segurança comuns na internet podem ser evitados com autilização deste princípio. Por exemplo, o Sendmail é um alvo muito visado pelos atacantes,devido sua complexidade e o fato de que ele funciona acoplado ao root. O nível de complexidadedeste daemon aumenta a ocorrência de bugs, isto implica que, programas privilegiados devemser tão simples quanto possíveis. Caso um programa complexo exija privilégios acentuados,

Page 56: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

49

devemos procurar meios de separar e isolar as partes que necessitam destes privilégios das quenão precisam (MELO, 2006).

Segregação de função: Consiste na separação entre as funções de autorização, aprovaçãode operações, execução, controle e contabilização, de tal maneira que nenhum funcionáriodetenha poderes e atribuições em desacordo com este princípio de controle interno.

A segregação de funções proíbe o usuário de, exercendo certa atividade, executar outraatividade ao mesmo tempo que implique em risco operacional para o negócio. A hierarquiaorganizacional reflete a estrutura dos papéis desempenhados pelos colaboradores dentro daorganização.

Várias normas e regulamentos governamentais, como Sarbanes-Oxley (SOX), COBIT,ISO/IEC 27002, recomendam a implementação de controles, como o Perfil por Função, comoforma de seguir as políticas de acesso. Mas para que os controles funcionem de maneiraadequada, é extremamente importante que as pessoas tenham treinamentos corretos nos sistemasde informação e conscientização nos temas de segurança da informação.

Segurança por Obscuridade: É um princípio nada confiável, pois consiste unicamenteem ocultar informações.

Exemplos práticos deste método são:

colocar uma máquina na Internet e achar que ninguém tentará invadi-la, simplesmenteporque você não contou a ninguém sobre ela;

abrir um servidor Apache em uma porta diferente para que ninguém o utilize, a não ser aspessoas que você informou sobre sua existência;

configurar sua rede de forma que usuários internos vejam as informações de uma maneirae usuários externos (Internet) não consigam ver tais informações, como portas e serviçosprestados em seus servidores.

Observe alguns pontos

sempre utilize esta técnica em conjunto de outras, pois manter a segurança apenas atravésda obscuridade é muito ruim;

não anunciar algo não é o mesmo que ocultá-lo;

utilizar um sistema de criptografia desconhecido, não garante segurança nenhuma(MELO, 2006);

Segurança em Profundidadeou em camada: implementar o máximo de controlespossíveis no ambiente pra proteger o ativo. Este princípio de segurança é destinado à prevençãodos acidentes, e a minimização das respectivasconsequências, evitando que um problema isoladose alastre pelo sistema; instituindo múltiplos, redundantes e independentes níveis de proteção. Aidéia aqui é não depender de um únicométodo de defesa, instalando vários níveis de proteção.Tornando a tentativa de invasão arriscada demais ou cansativa demais para os atacantes. Istoporque as chances de violar um nível de proteção do sistema são muito maiores do que aschances de violar um sistema com vários níveis de segurança(MELO, 2006).

Page 57: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

50

3.8. Segurança no Sistemas de Arquivos

Sempre que o sistema Linux é instalado, as boas práticas de instalação aconselhaparticionar o disco e a colocar os principais diretórios em partição separadas, isso proporcionauma maior segurança, pois cada partição tem sua tabela separada.

Caso o diretório /está em uma partição e o /home em outra, no caso de algum problemano sistema ou até uma reinstalação, não perderia as informações no diretório/home.Entretanto,segurança de um particionamento não é apenas isso. Todas essas partições sãomontadas no diretório, e um erro que muitos administradores de sistema Linux cometem é nãoler a documentação para conhecer melhor os recursos e descobrir que ocamandomountpossibilita a utilização de algumas opções muito interessante, que permitemmelhorar muito a segurança nas partições.

Caso todos os diretórios estivessem na mesma partição, no /, não seria possível ter essasopções e usufruir desses recursos. É possível retirar a permissão de Suid bit dos binários, mas sóisso tambem não resolveria. Vamos cortar o mal pela raiz, com essas opções do mount, dizendoque na partição em questão os binários com permissão de Suid bit não terão efeito, entre outrasconfigurações.

Conformidade com as recomendações

A segurança em sistemas de arquivos, a norma ABNT NBR ISO/IEC 27002:2005,recomenda, no item 10.4, que devemos proteger a integridade do software eda informação.

Execução do procedimento

A primeira opção do mounté o nosuid,que faz com que binários com permissão de Suidbit não surtam efeito na partição na qual está definido.

Ex: prático, adicionar um usuário.

# adduser teste

Faça uma cópia das shells do seu sistema para o diretório home desses usuário e atribua as shellsa permissão de Suid bit.

# cp /bin/*sh /home/teste

# chmod 4755 /home/teste/*sh*

Logar em outro terminal com o usuário que foi criado e teste executar uma dessas shells.

$ cd /home/teste

$ ./sh

$ id

Na saida do comando id, podemos ver que esse usuário conseguiu permissão de root.

Page 58: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

51

OBS.: Recomenda-se, para fins de melhor conhecimento do sistema, que esse teste seja feitoem todas as shells disponíveis.

Para resolvermos isso, vamos remontar a partição onde está montada o /home, mas agoracom a opção de nosuid.

# mount -o remount,rw,nosuid /home

# mount

O camandomountsem parâmentros nos mostra quais as partições estão montadas e suasrespectivas opções.

Com a partição remontada com nosuid, faça o teste novamente e veja que as asshellscontinuam com o suid bit ativado. Entretanto, quando forem executadas, não vão maispossibilitar o acesso no nível de root.

Outra opção que pode ser utilizado é o noexec, que impossibilita a execução de qualquerbinário ou arquivo executável dentro da partição na qual essa opção está ativa.

Essa opção pode ser aplicada a todos os diretórios, mas um clássico exemplo é aplicá-laaos diretórios /home e /tmp. Crackerspodem ser aproveitar do diretório /tmp, onde por padrãoqualquer usuário pode introduzir backdoors ou qualquer outro programa malicioso para ter umacesso completo ao seu sistema.

O mesmo exemplo realizado com o nosuid.Agora será remontar a partição com a opçãonoexece tentar executar umas shells que copiamos para o /home.

# mount -o remount, rw,noexec /home

# mount

# ./sh

Observe que não foi possível executar a shell. Na tentativa de executá-las, retornou amensagem “permissão negada”; nessa partiçao, nada de execução.

Uma última opção que podemos utilizar é o noatime. Ele não é especificamente umaopção para a questão de segurança, mas sim para a questão de performace, pois faz com que okernel do linux execute uma rotina a menos quando o noatime esta definido e destinado àatuaização do tempo de acesso de arquivo.

Primeiro é conhecer o comando stat, utilizado para verificar o status de um arquivo ou deum sistema de arquivos.

# stat /etc/passwd

A saida desse comando nos retorna informações importantes, mas vamos nos focar nasinformações do Access(atime), do Modify (mtime)e do Change (ctime).Veremos suasdiferenças.

Será criado dois arquivos, um no diretório /root e outro no /tmp, assumindo que o /root eo /tmp estão em partiçoes diferentes.

# touch /root/teste1

Page 59: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

52

# touch /tmp/teste2

Verificar o seu status, mas focando nas informações do Access,do Modifye do Change.

# stat /root/teste1

# stat /tmp/teste2

Diante das primeiras informações, vamos fazer os testes e ver o que será mudado. Vamosvisualizar o conteúdo dos arquivos, supondo que eles tenham algum conteúdo, e logo em seguidaserá verificado o status dos arquivos.

# cat /root/teste1

# cat /tmp/teste2

# stat /root/teste1

# stat /tmp/teste2

Veja que os Accessdos arquivos estão diferentes. Quando nós visualizamos o conteúdodos arquivos, fizemos um acesso a ele, logo o seu tempo de acesso (Access) foi modificado.

Agora mais um teste nesses arquivos. Será modificado sua permissão e logo em seguidavisualizar o seu status.

# chmod 777 /root/teste1

# chmod 777 /tmp/teste2

# stat /root/teste1

# stat /tmp/teste2

Com atenção observer que o Access dos arquivos estão diferentes. Quando évisualizado o conteúdo dos arquivos, é feito um acesso a ele, logo o seu tempo de acesso(Access) foi modificado.

Será feito um teste nesses arquivos. Modificar sua permissão e logo em seguida visualizaro seu status.

# chmod 777 /root/teste1

# chmod 777 /tmp/teste2

# stat /root/teste1

# stat /tmp/teste2

Percebe-se que agora o Access não foi modificado, mas o Changefoi. Sempre quemudarmos a permissão de um arquivo, o Change será mudado, registrando a última data e horada mudança.

Agora será inserido um conteúdo nesses arquivos e logo em seguida verificar o que foimodificado.

# echo abc> /root/teste1

Page 60: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

53

# echo abc> /tmp/teste2

# stat /root/teste1

# stat /tmp/teste2

Percebe-se que o Change foi alterado novamente, mas ele não foi alterado sozinho: oModify também foi, pois agora não ocorreu só uma mudança de permissões, mas uma alteraçãono conteúdo do arquivo.

Veremos a diferença entre o Access,o Modify e o Change,podemos fazer a alteração napartição e ver o que será melhorado.

Agora é remontar a partição onde foi montado o diretório /tmp com a opção noatime.

# mount –o remount,rw,noatime /tmp

# mount

Com a partição remontada com a opção noatime, vamos fazer o primeiro teste que foirealizado, o de listar o conteúdo do arquivo, e logo em seguida é verificado seu status dosarquivos.

# cat /root/teste1

# cat /tmp/teste2

# stat /root/teste1

# stat /tmp/teste2

Observe que o Access(atime) do arquivo teste2 dentro do /tmp não foi modificado,justamente por causa da opção noatime que colocamos na remontagem da partição.

Isso pode ser muito útil para os diretórios de logs, onde o acesso é feito constantementepelo sistema, pois faz com que ookernel deixe de executar uma rotina, o que ajuda suaperformance.

DICA:Essas não são as únicas opções que o comando mount pode nos oferecer.

Para ver todas as opções possíveis, consulte o man do comando mount.

Page 61: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

54

Tabela 5.3 : bom exemplo da maneira pela qual podemos aplicar essas opções aos nossosdiretórios que estão montados em partições diferentes.

3.9. Programas Desnecessários

Após a instalação de um sistema Linux, devemos nos preocupar se todos os programasque foram instalados nele são realmente necessários. Mesmo que tenha sido instalação masbásica possível a verificação de programas é sempre uma boa escolha. Lembre-se de que oservidor não deve conter programas “Clientes”.

Conformidade com as recomendações

No que diz respeito a programas instalados, a norma ABNT NBR ISO/IEC 27002:2005recomenda no Item 11.5.4 que devemos remover todo utilitário ou software desnecessário dosistema após uma checagem.

Execução de procedimento

Primeiramente é possível fazer uma pesquisa por todos os pacotes instalados no sistema,justamente com suas versões. Em seguida, enviamos a uma lista para ser mais bem analisada.

Debian:

#dpkg –l | awk ‘{print $2,$3}’ | sed ‘1,7d’ >/root/pacotes

Com esse commando, estaremos pesquisando todos os pacotes instalados. Com o dpkg éfeito um filtro somente na segunda e na terceira coluna, que são os nomes dos programas e asversões. O sed removerá as sete primeiras linhas que são importantes para a nossa pesquisa e adirecionará isso para o arquivo de pacotes dentro do /root.

A retirada dos programas desnecessários será de acordo com a situação com que se estátrabalhando. Pode ser que, para um caso específico, seja necessário algum programa que, emoutros casos, não seja obrigatório. É importante que isso seja minunciosamente analisado.

Um exemplo é o programa wget, que é utilizado para fazer download sem a interação dousuário. Isso pode ser um grande risco para um servidor, já que um cracker pode aproveitar-se deproblemas conhecidos do seu sistema e utilizar o wgetpara baixar programas maliciosos para seu

Page 62: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

55

servidor, tais como exploits, backdoors, entre outros. Isso impossibilitará que ele tenha um fácilacesso ao servidor ou que mesmo o danifique.

Concluindo o exemplo, se o seu Linux tem o wget, podemos então removê-lo,

# apt-getremove –purgewgetFaça uma análise completa dos programas que estão instalados por padrão no seu Linux everifique o que é realmente necessário. Lembre-se de cada caso é um caso.

DICA: O sistema Operacional Windows também vem com um programa semelhante

ao wget, o tftp. Caso esteja utilizando o Windows, também tome cuidado com esse

programa, pois muitos Spywares se aproveitam dele.

Podemos ver que, mesmo o sistema seja instalado no seu modo básico, ainda existeprogramas que podemos ser retirados, pois talvez sejam até brechas de segurança em seu sistemase forem bem explorados.

3.10.Arquivos com permissão Suid bit

A permissão de Suid bit possibilita que um determinado binário que só pode serexecutado, por exemplo, pelo usuário root seja executado por outro usuário comum do sistema.Muitos binários no sistemajá vêm com a permissão de Suid bit, pois alguns binários que somenteo root pode executar precisam ser utilizados por um usuário. Exemplos clássicos dessescomandos o su, o ping, o passwde muitos outros. Mas em uma coisa devemos pensar: será quetodas esses binários que já estão com a permissão de suid bit vão ser utilizados por seususuários? Será que eles precisam de todas esses comandos a disposição?

Mas qual o problema de se ter um Suid bit ativado. O problema pode ser muito grande seum cracker souber aproveitá-lo, explorando vulnerabilidades conhecidos para conseguir umashell do root. Podemos pensar no exemplo clássico das shells com permissão de suid bit quequando executada por um usuário, pode liberar uma shell de root. O administrador tem queatenta-se para essas coisas. Como o sistema possui muitos binários com suid bit, problemascomo esses das shells podem passar despercebidos.

Então o que podemos fazer?

Retirar todas as permissões de Suid bit do sistema de depois vamos setar essaspermissões somente para os binários que julgamos fundamentais para um usuário. Devemospensar sempre que vão existir casos diferentes, então os binários que julgamos importantes paraum servidor firewall por exemplo, podem não ser os mesmos para um servidor de e-mail.

Conformidade com as recomendações

Por recomendação da norma ABNT NBR ISO/IEC 27002:2005, no item 11.6.1, o acessoá informaçãoe as funções dos sistemas e de aplicações por usuário e pessoal de suporte deve serrestrito de acordo com o definido na política de controle de acesso.

Execução do procedimento

Page 63: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

56

Para remover todas as permissões de suid bit dos binários, temos que fazer uma pesquisano sistema e gerar uma lista com todos eles para uma melhor análise.

Será criado um diretório chamado teste dentro do /root para fazermos os nossos testes e emseguidautilizaremos o comando findpara localizar com Suid bit.

# cd /root

# mkdirteste

# find / -perm -4000 > /root/teste/lista.suid

OBS.: O número 4000 representa a permissão de Suid bit, sendo que os três zeros

são as permissões padrões do sistema ( 0 para usuário, 0 para grupo e 0 para outros),

e o 4 representa a permissão a permissão Suid bit. Podemos ter também, no lugar do

4, o 2, que é Sgid bit, e o 1, que é Sticky bit, mas não vamos falar sobre eles aqui.

Faça uma listagem detalhada em um desses binários para ver como a permissão de suid bitaparece.

# ls - l /bin/su

Vemos que nas permissões do usuário aparece um s no lugar do x. Isso representa que apermissão de Suid bit está ativada, mas a permissão de execução (x) continua-lá.

Com a lista gerada, podemos ver qual desses binários precisa continuar com a permissãode suid bit. Vamos pegar um exemplo de um Bastion Host, que é o Firewall da sua rede.Podemos deixar dois binários com o Suid bit setado, que são o passwde o su. Podemos deixar opasswd para que o usuário possa mudar a sua senha de acesso caso ele seja um administrador eacesse essa máquina remotamente. Se estamos pensando em um firewall, mas não há motivospara um usuário comum acessa-lo. Já o suvai ser de vital importância, pois podemos fazer quetanto local ou remotamente o usuário root não tenha acesso direto. Assim, o administrador vailogar com seu usuário comum, que pode ter alguns privilégios a mais, e depois utilizar o suparase tornar o usuário root.

Vamos retirar todas as permissões de Suid bit dos binários.

# chmod -s -Rv /

Onde:

s - retira a permissão de Suid bit

R - é recursivo, do /para baixo

v - é o modo verbose (mostra o que está sendo feito pelo comando)

# ls –l /bin/su

Logo vamos setar a permissão de Suid bit somente para os dois binários que desejamos.

Page 64: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

57

# chmod +s /usr/bin/passwd

# chmod +s /bin/su

# ls –l /usr/bin/passwd# ls –l /bin/passwd

Com esses comandos, as permissões de Suid bit foram setadas novamente para esses doisbinários.

Pode ser que, para o servidor que você esteja configurando só o passawd e o sunão sejasuficiente, talvez outros binários precisem estar com o Suid bit ativado. Cabe analisar o que seránecessário para cada tipo de serviço.

Uma solução alternativa que podemos adotar é o comando sudo. Como ele podemos definirsomente os comandos queremos para o usuário comum executar como se fosse root.

Instalando o sudo.

#apt-getinstallsudo

Depois que o sudo estiver instalado, editaremos o arquivo /etc/sudores, que é ondedefinimos quais usuários podem ter acesso aos comandos a serem definidos.

Alguns exemplos:

# vi /etc/sudores

Exemplo 1: teste ALL= /sbin/ifconfig, /sbin/iptables

Neste primeiro exemplo, vamos permitir que o usuário teste, possa executar os comandosifconfig e iptablescomo se fosseroot. Dessa maneira, entretanto, ele vai pedir a senha do usuáriona primeira vez que fomos executar esses comandos.

Podemos executá-los da seguinte maneira.

# sudoifconfig

# sudoiptables

Exemplo 2:teste ALL=NOPASSWD: /bin/reboot , /bin/halt

Estamos permitindo que o usuário teste, possa executar os comandos reboot e halt, masdessa vez sem que seja necessário que ele digite a senha (NOPASSWD).

Exemplo 3:teste ALL= /usr/bin/passwd [A-z]*, !/usr/bin/passwd root

Este commando permite que o usuário teste mude a senha de qualquer usuário cujo loginesteja no interlavo de A a Z, exceto o root.

No sistema Linux já vem com a permissão de suid bit ativado em muitos binários parafacilitar a utilização deles para outros usuários, mas vimos também que nem sempre essafacilidade é uma boa, pois pode gerar brechas de segurança. Fiquemos atentos para esses tipos depermissões.

Page 65: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

58

3.11. Segurança no Terminal

Quando falamos em segurança, a primeira coisa que vem à mente é um possível ataqueremoto. Então, os nossos servidores que não estão conectados à internet não estão correndonenhum perigo, certo? Errado, alias, dois fatos errados. Não estar conectado diretamente àinternet não quer dizer que se está totalmente seguro, pois se um cracker conseguir passar pelonosso firewall, ele vai conseguir chegar até os outros servidores que não tem acesso direto àinternet, já que entrou em nossa rede interna. O outro fato é que um funcionário malintencionado pode ter um acesso local (físico) ao nosso servidor, diretamente no teclado dopróprio servidor.

Se somos administradores desprevenidos, vamos resolver um problema fora da sala e semperceber deixamos o terminal do servidor logado, com usuário de root. Então, esse funcionáriomal intencionado poderá fazer o que quiser, já que ele finge ser um cara que não entende nada deinformática, mas na verdade tem um conhecimento maior do que o nosso.

Para esse tipo de situação, podemos aplicar alguns procedimentos.

Conformidade com as recomendações

No que diz repeito ao software instalado, a norma diz, nos itens 11.5.5 e 11.5.6, quedevemos ter controle sobre os acessos no sistema a fim de evitar acessos não-autorizados e denão fornecer informações desnecessárias.

Execução do procedimento

1. Desabilitar o uso de CTRL+ALT+DEL

Desabilitar o Ctrl+Alt+Del no sistema Linux pode ser uma boa idéia, pois não permitiráque alguém pressione uma sequencia de teclas e faça com que o servidor reinicie. Isso é bomprincipalmente quando seu servidor Linux está no mesmo armário que um servidor com osistema Windows, assim se evita que em algum momento você pressione Ctrl+Alt+Del noteclado do Linux pensando que é o do Windows.

Edite o arquivo /etc/inittab e comente a linha a seguir:

#ca:12345:ctrlaltdel:/sbin/shutdown –t1 –a –r nowVocê pode também mapear as teclas para executar um outro comando qualquer, por

exemplo.

#ca:12345:ctrlaltdel:/bin/echo “Esse recurso foidesabilitado por segurança”Depois das alterações, precisamos atualizar o arquivo /etc/inittab. Isso é feito com o comandoseguinte:

# init q

2. Limitar o uso dos terminais texto

Dependendo da situação em um servidor, por questões de segurança não é muitointeressante deixarmos o login habilitado em todos os terminais texto. Por exemplo, para impediro login nos terminais 4,5 e 6 devemos editar o arquivo /etc/inittab e comentar as seguintes linhas:

Page 66: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

59

# vi /etc/inittab

# 4:23:respawn:/sbin/getty 38400 tty4

# 5:23:respawn:/sbin/getty 38400 tty5

# 6:23:respawn:/sbin/getty 38400 tty6

Depois das alterações, precisamos realizar novamente o arquivo /etc/inittab

# init q

3. Bloquear o terminal com a variável TMOUT

No sistema Linux, temos uma variável que não vem setada por padrão. Essa variável é aTMOUTque controla em quando tempo o terminal será deslogado.

Primeiro, podemos setá-la manualmente com um tempo pequeno para testarmos.

# TMOUT=15

Estamos setando o valor da variável para 15 segundos. Logo, se o terminal não forutilizado durante os 15 segundos, ele será deslogado e o usuário será obrigado a logar-senovamente.

Para melhorar, podemos colocar essa variável dentro do arquivo global da variável, paraque ela fixe toda vez que o sistema for iniciado.

# vi /etc/profile

If [ “ ’id –u’ “ -eq 0 ]; then

PATH=”/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11”else

PATH=”/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games”fi

if [ “$PS1” ]; thenif [ “$BASH” ]; thenPS1=’ \u@ \h: \w \$ ‘

else

if [ “ ‘id –u’ “ –eq 0 ]; thenPS1=’# ‘

else

PS1=’$ ‘fi

fi

fi

Page 67: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

60

TMOUT=180

Export PATH

TMOUTumask 022

Dessa maneira, o sistema voltará para a tela de login se nenhum commando for executadonum intervala de 180 segundo (3 minutos).

4. Bloquear o terminal com o programa Vlock

Com a variável TMOUT, fizemos com que o terminal seja deslogado automaticamentedepois de um determinado tempo. Podemos fazer isso também manualmente com um programachamado Vlock, que pode travar todos os terminais no momento em que quisermos.Instalação doprograma:

# apt-getinstallvlock

Para travar todos os terminais, digite:

# vlock –aO Vlockexecutado com o parâmetro –a bloqueia o uso de todos os terminais. Os

terminais só serão liberados mediante autenticação com senha do usuário que os travou.

Pequenos detalhes em configurações, uma variável e um simples programa podem nosajudar a manter nosso servidor seguro, com todos os nossos terminais protegidos.

3.12. Gerenciamento de Privilégios

O usuário root é o usuário mais conhecido em sistemas *nix (o termo *nix aborda ossistemas baseados em Unix). Quando algum cracker ou funcionário mal intencionado tentar umacesso ao nosso sistema, seu foco vai ser conseguir senha do usuário root. Se ele tiver sorte econsegui-la, terá acesso ao nosso sistema. Como evitar isso?

Vamos adotar alguns procedimentos para evitar que o usuário root tenha acesso direto aosistema. Nós seremos obrigados a utilizar nossos usuários comuns para logar e depoisutilizaremos o sudo ou su para virarmos root.

Conformidade com as recomendações

A norma ABNT NBR ISO/IEC 27002:2005, no item11.2.2, estabelece que concessão eo uso de privilégio devem ser restritos e controlados.

Execução do procedimento

1. Bloquear o login do root nos terminais texto

Não é seguro deixarmos o login como root habilitado para os terminais texto. O ideal ébloquear o login do root em todos os terminais texto, logar como usuário comum e, quando fornecessário a realização de alguma tarefa administrativa, viramos usuário root usando o comandosu.

Criando o usuário comum

#adduserlix

Page 68: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

61

Uma das maneiras pelas quais podemos bloquear o login do root é editar o arquivo/etc/securetty e comentar as linhas referentes aos terminais que queremos desabilitar para o root.Vamos comentar as seguintes linhas:

# vi /etc/securetty

# tty1

# tty2

# tty3

# tty4

# tty5

# tty6

# tty7

# tty8

# tty9

# tty10

# tty12

Agora que as linhas dos terminais estão comentadas, podemos tentar nos logar em outroterminal com o usuário root. Veremos que não teremos sucesso.

Como dissemos, essa é uma das maneiras pelas quais se pode bloquear o acesso do rootpelos terminais.

2. Determinar datas de expiração para contas de usuários

Se o nosso servidor for alocar uma grande quantidade de usuários, podemos especificardatas de expiração para as contas dos usuários. Dessa maneira, se aquele usuário utiliza a suaconta todos os dias, quando sua senha expirar ele poderá modifica-la e renovar a conta. Mas, sepor algum motivo uma conta de um usuário não está sendo utilizada, ela será desativada notempo especificado, dando-nos uma segurança de que essa conta não será usada com másintenções.

Utilizaremos o comando chage, que modifica os parâmetros do arquivo /etc/shadown,onde são feitos esses controles.

Primeiro vamos visualizar a configuração padrão de uma conta de um usuário, porexemplo, o usuário teste.

# chage –l testeE agora faremos algumas modificações para esse usuário.

# chage –M 30 –W 5 –I 2 teste# chage –l teste

Onde:

-M é o tempo máximo da validade da conta.

Page 69: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

62

-Wé o tempo de aviso.

-Ié o tempo antes de uma conta ser desativada.

Com essa configuração, estamos dizendo que a conta do usuário é válida por 30 dias.Quando estiverem faltando 5 dias para a conta expirar, o usuário começará a ser avisado quandofor logar. Depois desses 30 dias, o usuário terá 2 dias para poder modificar a senha e para que aconta seja renovada. Enquanto ele não fizer isso, não conseguirá logar no sistema. Se nesses 2dias o usuário não modificar a senha, a conta será desativada e somente o usuário root poderárealtivá-la.

3. Remover shells válidas de usuários que não precisam delas.

Usuários que não utilizam shell não têm necessidade de tê-la. Vamos remover as shellsválidas de todos os usuários que não vãoexecutar oficialmente login no sistema através doterminal local (tty) ou via ssh. Combinado a isso, criaremos um usuário estratégico pertencenteao grupo de administradores, que também criaremos. Os usuários pertencentes a esse grupo terãopermissão para realizar o logine posteriormente usar o su para se tornar root.

Primeiro vamos criar o grupo administradores. Logo em seguida, criaremos um usuárioadministrador e o adicionaremos ao grupo.

# groupadd administradores

# addusertoor

# gpasswd –atoor administradoresVamos visualizar o arquivo /etc/passwd. Veja que todos os usuários de sistema também

possuem shells válidas.

# cat /etc/passwd | less

Criaremos um script para remover todas as shells válidas dos usuários, menos daquelesque nós especificamos.

# cd /root

# vi inválidos.sh

# ! /bin/bash

For USER in $(cat /etc/passwd | cut –f l –d “:” | grep –v root |grep –v toor | grep –v lix)

do

usermod –s /bin/false $USERdone

# ./inválidos.sh

Esse script, ele executa um for que pegará somente a primeira coluna do arquivo/etc/passwd, que são os nomes dos usuários que não estão especificados no grep–v. Isso éarmazenado dentro da variável USER. Logo depois, com o comando usermod, esse script passatodas as shells dos usuários que estão na variável USER para /bin/false, ou seja, uma shellinválida.

Page 70: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

63

Depois da execução do script, visualize novamente o arquivo /etc/passwd e veja comoele ficou.

# cat /etc/passwd | less

Repare que todas shells dos usuários passaram a ser /bin/false, menos as dos usuáriosroot, toor e lix. Podemos adotar a política de que, sempre que criarmos um usuário novo, ele sejacriado com uma shell inválida. Caso ele precise de uma shell válida depois, podemos mudar issono arquivo /etc/passwd.

Para fazer isso, podemos editar os seguintes arquivos.

# vi /etc/adduser.conf

Nesse arquivo podemos mudar a variável DSHELL para uma shell inválida.

DSHELL=/bin/false

Dessa maneira nossos usuários seriam criados por padrão com a shell/bin/false, uma shellinválida. Finalizando essa parte de shells, podemos visualizar o arquivo /etc/shells. Ele é umarquivo texto que contém os nomes de caminho completos das shells de login válidos. Essearquivo é consultado pelo comando chsh (utilizado para mudar a shell de um usuário) e ficadisponível para consulta por outros programas.

# cat /etc/shells

É preciso ficar atento, porque há programas que consultam esse arquivo para descobrir seum usuário é um usuário normal. Por exemplo, daemos (processos que são executados embackground) de ftptradicionalmente desaprovam acessos aos usuários com interpretadores decomando não incluídos nesse arquivo.

3.20.ConclusãoO ambiente computacional e todas as suas tecnologias, com as mais modernas

arquiteturas, plataformas e inúmeras formas de garantir mais segurança da informação ainda nãoé, e provavelmente não será, suficiente para conter o ímpeto curioso, criativo e astuto do cérebrohumano.

A engenharia social, combinada com a fragilidade humana, contribui para um dos pontosmais vulneráveis que estão presentes em todas as organizações e que sempre existirão, pois nãohá uma receita milagrosa de como transformar um ambiente que manipulam informações em umlocal totalmente seguro.

Uma medida para dificultar o roubo ou o acesso indevido a essas informações são ascondutas, os treinamentos, os hábitos e o conhecimento de técnicas deHardening em servidores,além da responsabilidade que se deve ter ao manipular, transmitir e descartar informações, sejamelas confidenciais ou não.

Se a informação não for considerada uma fonte preciosa será preocupante o agravamentoda falta de instruções e conscientizações por parte dos funcionários e se tornará cada vez maisdifícil a implementação da segurança da informação, pois o desafio de manter as informaçõesconfidenciais está cada vez menor e está cada vez mais fácil de encontrá-las e utilizá-las.

Page 71: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

64

É importante ter em mente que a tarefa de se possuir profissionais capacitados e aptos atrabalharem com segurança é realmente difícil, porém é um investimento que não deve serencarado como uma despesa a ser adicionada ao orçamento. Deve ser realizado de formaconstante, pois seu retorno será em longo prazo e de acordo com as mudanças culturais daorganização.

Mesmo o tema sendo discutido nas empresas, ainda assim percebe-se certo grau dedesconhecimento em segurança da informação por partes dos gestores e administradores de TI,que ainda têm a mentalidade de que “as coisas só acontecem aos outros...” de modo que issoreflete no ambiente corporativo. A verdade é que se tem um longo caminho para ser alcançado ediante dos resultados pode-se perceber que as empresas já estão mais preocupadas em relação assuas informações geradas ao longo do dia, que devem ser tratadas e gerenciadas para que nãoocorram situações como a imagem da empresa atrelada em fraudes ou vitimas de cibecriminosos.

Referências

AMARAL, Bruno do. Segurança proativa. Disponível em<http://www.decisionreport.com.br/publique/cgi/cgilua.exe/sys/start.htm?infoid=9819&sid=42> Acesso em: 12 de Outubro de 2012.

ARAUJO, Eduardo Edson de. A vulnerabilidade humana na segurança da informação. 2005.Disponível em <http://svn2.assembla.com/svn/GSIDEI/Bibliografia/Monografia%20Interven%C3%A7%C3%A3o%20humana%20Seguran%C3%A7a.pdf>. Acesso em: 01 de Outubro de 2012.

ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. ABNT NBR ISO/IEC 27001:2006.Rio de Janeiro, 2006.

ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. ABNT NBR ISO/IEC 27002:2005.2.ed. Rio de Janeiro, 2005.

BR-LINUX.ORG. Pane na telefônica: funcionários suspeitam de sabotagem. Disponível em:<http://br-linux.org/2008/pane-na-telefonica-funcionarios-suspeitam-de-sabotagem/> Acessoem: 15 de outubro de 2012.

CERT.BR. Incidentes reportados ao CERT.br janeiro a março de 2011. Disponível em:<http://www.cert.br/stats/incidentes/2011-jan-mar/total.html> Acesso em: 01 de Outubro de2012.

COMPUTERWORLD. Falhas de segurança em redes sociais geram risco para o negócio. Março2010. Disponível em: <http://computerworld.uol.com.br/gestao/2010/03/04/falhas-deseguranca-em-redes-sociais-geram-risco-para-o-negocio/> Acesso em: 10 de Outubro de2012.

CORREIA, Marco. Engenharia social no Governo do Rio de Janeiro percebeu?. Disponível em:<http://marcoacorreia.wordpress.com B/2011/04/03/engenharia-social-no-governo-do-rio-de-janeiro-percebeu/>Acesso em: 18 de Outubro de 2012.

CORREIA, Marco. Segurança da informação é novidade nas empresas. Disponível em:<http://marcoacorreia.wordpress.com/ 2011/10/12/seguranca-da-informacao-e-novidade-nas-empresas/>Acesso em: 14 de Outubro de 2012.

Page 72: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

65

CORREIO 24 HORAS. Luciano Huck tem senha do Twitter roubada e brinca com a situação.Disponível em:<http://correio24horas.globo.com/noticias/noticia.asp?codigo=57227&mdl=49>. Acesso em:15 de Outubro de 2012.

DAWEL, George. A segurança da informação nas empresas. Rio de Janeiro: Editora CiênciaModerna Ltda., 2005.

DECISION REPORT. A evolução das atividades maliciosas.Disponível em<http://www.decisionreport.com.br/publique/cgi/cgilua.exe/sys/start.htm?from_info_index=153&infoid=8903&sid=4> Acesso em: 27 de Outubro 2012.

ESTADÃO. Hackers espalham vírus com oferta de vacina antigripe H1N1. Disponível em:<http://www.estadao.com.br/noticias/geral,hackers-espalham-virus-com-oferta-de-vacina-antigripe-h1n1,475155,0.htm> Acesso em: 15 de Outubro de 2012.

FONTES, Edison Luiz Gonçalves. Segurança da informação:o usuário faz a diferença. SãoPaulo : Saraiva, 2006.

FONTES, Edison Luiz Gonçalves. Vivendo a segurança da informação:orientações práticas paraas organizações. São Paulo :Sicurezza Brasiliano & Associados, 2000.

GUELMAN, Luiz. Conscientização de usuários: como envolver seu público com a Segurança daInformação. 2006. Disponível em: <http://www.modulo.com.br/comunidade/entrevistas/616-conscientizacao-de-usuarios-como-envolver-seu-publico-com-a-seguranca-da-informacao>.Acesso em: 30 de Outubro de 2012.

MITNICK, Kevin D. A arte de enganar. São Paulo : Pearson Education do Brasil Ltda, 2003.

MITNICK, Kevin D.; SIMON, Willian L. A arte de invadir. São Paulo: Pearson Education doBrasil Ltda 2006.

MÓDULO SECURITY SOLUTIONS.10ª Pesquisa Nacional de Segurança da Informação.2006,Disponível em <http://www.modulo.com.br/media/10a_pesquisa_nacional.pdf> Acesso em:24 de Outubro de 2012.

MOREIRA, Nilton Stringasci. Segurança mínima: uma visão corporativa da segurança deinformações. Rio de Janeiro: Axcel Books, 2001.

REUTERS. Hackers espalham vírus com oferta de vacina antigripe H1N1. 2009, Disponível em<http://br.reuters.com/article/internetNews/idBRSPE5B00SZ20091201?sp=true> Acesso em:24 Outubro 2012.

MELO, Sandro. BS7799 Linux da Tática à Prática em Servidores. São Paulo: Alta Books, 2006

SEMOLA, Marcos. Gestão da Segurança da Informação: uma visão executiva. Rio de Janeiro:Campus, 2002.

SLADE, Robert. Exclusivo: entrevista com Rob Slade– especialista em vírus de computadores.Jun 2006. Disponível em:<http://www.modulo.com.br/site?from%5Finfo%5Findex=8&infoid=791&lng=br&sid=91>Acesso em: 24 de Outubro de 2012.

SYMANTEC.InternetSecurity Threat Report, volume 16.2010, Disponível em:<http://www.symantec.com/threatreport/#> Acesso em: 24 de Outubro de 2012.

Page 73: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

66

TECHOJE. Planos de Contingência em TI. Disponível em<http://www.ietec.com.br/site/techoje/categoria/detalhe_artigo/219> Acesso em: 01 denovembro de 2012.

TERRA TECNOLOGIA. Erro de programação inofensivo vira ameaça à segurança. Disponívelem: <http://tecnologia.terra.com.br/ interna/0,,OI1790208-EI4805,00.html> Acesso em: 15 deOutubro de 2012.

TI EXAMES. Curso preparatório para o exame ISO/IEC 27002 FOUDATION, 2011.

XAVIER, Herberth. Furto na Petrobrás traz à tona espionagem industrial. 2008. Disponível em:<http://www.abin.gov.br/modules/articles/article.php?id=2008> Acesso em: 15 de Outubro de2012.

WIKIPEDIA, Hardening, Disponível em: <http://pt.wikipedia.org/wiki/Hardening> Acesso em :30 de Outubro de 2012.

Page 74: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

67

Desenvolvimento Web com Framework Primefaces

Jailson Nunes Leocadio, Roniere da Silva Sousa e Evaldo Sávio Silva Araújo daCosta

AbstractThis chapter describes the contents discussed in short course about Web ApplicationsDevelopment using the framework Primefaces. To this, it is presented a theoretical context of thetechnologies used for the construction of systems in order to situate and connect the roles indevelopment. Understanding the characteristics of JavaServer Faces provides a deeperunderstanding of how Primefaces components work and how is their communication with eachother and with the application logic. It is presented the set of elements of the JSF libraries,HTML and Primefaces.

ResumoEste capítulo descreve os conteúdos discutidos em minicurso sobre o Desenvolvimento deAplicações Web com utilização do framework Primefaces. Para isso, é feito a contextualizaçãoteórica das tecnologias empregadas para a construção dos sistemas, no sentido de situar erelacionar o papel de cada uma no desenvolvimento. Compreender as características doJavaServer Faces possibilita entender mais profundamente como funcionam os componentes doPrimefaces e como se dá a comunicação deles entre si e com a lógica da aplicação. Apresenta-se o conjunto de elementos das bibliotecas JSF, HTML e do Primefaces.

4.1. Aplicações webAs aplicações web surgiram e agregaram benefícios sobre os modelos de sistemas até então existentes.Isso ocorreu devido ao estabelecimento da rede mundial de computadores e do grande fluxo deinformações que constantemente flui dentro das organizações, e entre as instituições e as pessoas. Essetipo de aplicação, geralmente, implementa características de dinamismo, rapidez, disponibilidade,atualização e portabilidade, que são propriedades necessárias para sobreviver frente ao mercado e aomodelo social atual. Por isso, as experiências na utilização de tecnologias de desenvolvimento, levam àcriação de modelos e padrões que agregam as melhores práticas e tecnologias que proporcionam aconcepção de produtos que atendam a todas essas demandas de forma simples e segura.

4.2. O Primefaces como uma extensão do JavaServer FacesO framework open-source Primefaces corresponde a uma biblioteca de componentes UI (User Interface)que extende os componentes nativos do JavaServer Faces (JSF). Sendo assim, compreender ascaracterísticas e o modo de funcionamento de uma aplicação desenvolvida em JSF corresponde emconhecer também a dinâmica do Primefaces. Nos tópicos a seguir, será visto importantes tecnologias

Page 75: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

68

que tornam possível o desenvolvimento de aplicações web com Java, e como elas trabalham emconjunto com o framework de visão aqui em estudo.

4.2.1. JavaServer FacesMantido pelo comitê JCP (Java Community Process) com o Java Specification Request (JSR – 314), oJavaServer Faces é uma tecnologia que se apresenta no formato de um framework, utiliza o padrão dearquitetura MVC para o desenvolvimento de aplicações web em Java e emprega um modelo deinterfaces gráficas baseado em eventos. Divulgado inicialmente em 2004, atualmente está em suaversão 2.

Ele possui dois grupos de componentes: a primeira são as Java APIs que modelam e definem oscomponentes UI; a segunda são as taglibs JSP que realiza a representação dos componentes em umapágina JSP e também a conexão dos objetos no backend da aplicação. A API é ainda responsável pelamanipulação dos componentes e seu ciclo de vida (estados), handle-event, validação server-side,conversão de dados, acessibilidade, além do suporte a internacionalização.

De acordo com diversos autores [Marafon 2006], [Rossi 2012], utilizar o padrão JSF proporcionadiversos ganhos no desenvolvimento de aplicações web, dentre esses benefícios, cita-se: reusabilidadede componentes nas páginas, possibilidade de extensão pela utilização de bibliotecas de terceiros, aexistência de IDEs e plugins adaptados para o desenvolvimento de sistemas que utilizam o framework;facilidade de construção de novos componentes, entre outros.

A primeira proposta de especificação para o JSF propõe oito principais metas:

Criar um framework de componentes GUI (Graphical User Interface) padrão que pode seraproveitado para a criação de ferramentas de desenvolvimento, que permitam criar interfacesgráficas de alta qualidade e gerenciar as conexões entre os componentes e o comportamento daaplicação;

Definir um conjunto de classes base simples para os componentes GUI, estados doscomponentes, e eventos de entrada. Estas classes controlarão o ciclo de vida dos componentese a persistência de dados referentes a eles;

Fornecer um conjunto de componentes comuns, incluindo elementos padrão HTML de entradasde formulário. Eles serão derivados do conjunto das classes bases (item 1) e poderão ser usadospara definir novos componentes;

Fornecer um modelo JavaBeans para emitir os eventos acionados no lado do cliente para aaplicação no lado do servidor, onde ocorre o controle do comportamento da aplicação;

Definir API's para validação de dados de entrada, incluindo suporte para a validação no lado docliente;

Especificar um modelo de internacionalização e localização dos componentes.

Gerar automaticamente saídas apropriadas para o cliente, de acordo com os dados disponíveisde configuração, como versão do navegador e etc.;

Page 76: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

69

Gerar automaticamente saídas que contenham suporte de acessibilidade, como definido pelaWAI (Web Accessibility Iniciative).

4.2.2. Padrão de Arquitetura MVCO padrão de arquitetura MVC (Model, View e Controller) permite a separação entre a lógica de negócioe as interfaces de visualização, pela divisão do sistema em três partes com responsabilidades distintas.Essas são denominadas de modelo, visão e controle.

O modelo é responsável por representar os dados, manter o estado da aplicação pela definiçãodos dados armazenados e fornecer o acesso às informações quando necessário. A visualização éresponsável por exibir as informações vindas do modelo e por captar e enviar aos controles, as açõesdos usuários sobre os dados apresentados. O controle faz a ligação entre a visão e os modelos,acionando um ou outro, de acordo com as requisições recebidas. Essa interação produz modificações noestado do sistema que então provoca respostas diferenciadas ao cliente.

Ao dividir em grupos as diversas tarefas de um sistema, o padrão MVC faz com que a aplicaçãopasse a ter uma arquitetura onde a interface pode ser modificada sem preocupações com alterações nacamada de lógica do negócio [Engholm Júnior 2010]. A Figura 4.1 [Algaworks 2010], logo abaixo, mostraa interação entre os componentes do MVC, nela é possível perceber como os componentes interagempara montar a dinâmica de funcionamento das aplicações que implementam esse padrão.

Figura 4.1 Arquitetura do JavaServer Faces baseada no MVC

Em JSF, a camada de controle é composta por alguns elementos distintos. O servlet chamado deFacesServlet é quem recepciona e redireciona as requisições vindas da web e é ele também que envia aresposta que será exibida pela visão; os arquivos de configuração mapeiam as ações realizadas edefinem as regras de navegação; e os manipuladores de ações e observadores de eventos são quemrecebem os dados vindos das interfaces, realizam o acesso ao modelo quando necessário e retornam oresultado para o FacesServlet.

Já as views são providas pelos componentes de interface do JSF, que incluem componentes delayout desde os mais simples, até outros mais complexos. Os componentes UI possuem propriedades,

Page 77: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

70

métodos e eventos acessíveis pelo desenvolvedor, que possibilita identificar a interação do usuário comestes componentes de interface.

4.2.3. Características de uma Aplicação Java com JSFAs aplicações Java para a web quando construída de acordo com a especificação J2EE, possui umconjunto de padrões e modelos característicos bem definidos. Na figura 4.2 [Algaworks 2010], é possívelver a forma como o JSF está relacionado com outras tecnologias na construção das aplicações dentrodesse padrão.

Figura 4.2 Arquitetura de Aplicações Java para a Web

O Java Servlet é a base para as aplicações Java e são responsáveis pela recepção de requisiçõesdo cliente e envio de respostas, geralmente por meio do protocolo HTTP. Já o JavaServer Pages (JSP)pode ser compreendido como uma abstração do Java Servlet e torna possível a utilização de código Javanesses sistemas web. As páginas JSP são executadas nas views e utilizam Java do lado do servidor para acriação de conteúdo dinâmico junto com as tags HTML. O JSP não oferece nada que não possa sercriado com servlets puros, porém ele oferece a vantagem de ser facilmente codificado, facilitando assima elaboração e manutenção de uma aplicação web [Ferreirra e Martins 2009].

Nessa estrutura, existe o ciclo de vida formal do JSF, como pode ser visualidade na Figura 4.3,[Jacobi e Fallows 2007]. Quando ocorre uma requisição, enviada pelo navegador, o Faces Servletrecepciona essa requisição e dá inicio à execução dos seis passos mostrado na imagem: Restore View(Restaurar a view), Apply Request Values (aplicar os valores do request), Process Validations (processaras validações), Update Model Values (atualizar os valores do modelo), Invoke Application (invocar aaplicação) e Render Response (renderizar a resposta).

Page 78: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

71

Figura 4.3 Ciclo de vida formal do JSF

4.2.4. Componentes VisuaisA especificação do JSF fornece um conjunto de componentes básicos, incluídos em duas bibliotecas, a“HTML”, que possui componentes que representam diversos elementos HTML e a biblioteca “Core”, queé responsável por tarefas comuns no desenvolvimento de sistemas, como internacionalização, validaçãoe conversão de dados [Algaworks 2010]. A Tabelas1 4.1 e 4.2 mostram as tags disponibilizadas pelabiblioteca nativa do JSF e HTML, respectivamente, além de uma descrição das mesmas.

Tabela 4.1 Tags nativas na biblioteca JSF.

Tag Descrição

f:actionListener Registra uma instância de javax.faces.event.ActionListener junto a umcomponente

f:ajax Fornece recurso Ajax de forma padrão

f:attribute Define o valor de um atributo no componente

f:convertDateTime Converte datas e possui um conjunto de opções

f:convertNumber Registra uma instância de NumberConverter

f:converter Registra uma instância de Converter

f:event Define o tipo de evento, por exemplo, para chamada de funções Ajax

f:facet Adiciona um facet a um componente

f:loadBundle Carrega um pacote de recursos de acordo com o local vigente

f:metadata Engloba as tags f:viewParam

f:param Configura um parâmetro para o componente associado

1 http://www.jsftoolbox.com/documentation/help/12-TagReference/

Page 79: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

72

f:phaseListener Adiciona um ouvidor de fases a um componente

f:selectItem Adiciona um componente filho UISelect para o componente associado

f:selectItems Adiciona um componente filho UISelectItems para o componente associado

f:setPropertyActionListener Registrar uma instância de ActionListener no componente relacionado

f:subview Cria um componente container que terá todo o core JSF e as tags aninhadas via“jsp:include” ou outra tag dinâmica

f:validateBean Utilizado para validações de acordo com as definições do Bean

f:validateDoubleRange Registra uma instância de DoubleRangeValidator no componente associado

f:validateLength Registra uma instância de a LengthValidator no componente associado

f:validateLongRange Registra uma instância de LongRangeValidator no componente associado

f:validateRegex Valida expressões regulares

f:validateRequired Define componente como requerido

f:validator Registra uma instância de Validator instance no componente associado

f:valueChangeListener Registra uma instância de ValueChangeListener no componente associado

f:verbatim Cria um componente output como um filho do componente associado

f:view A tag View tag é o container para todo componente JavaServer Faces usado napágina

f:viewParam Uso para URL

Tabela 4.2 Tags nativas na biblioteca JSF HTML.

Tag Descrição

h:body Renderiza um element Body do HTML

h:button Renderiza um Button

h:column Renderiza uma coluna dentro de um componente data table

h:commandButton Renderiza um button que pode está associado a um backing bean ou a uma classeActionListener

h:commandLink Renderiza um link HTML

h:dataTable Cria uma data table

h:form Renderiza um elemento tipo form

Page 80: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

73

h:graphicImage Renderiza uma tag de imagem em HTML

h:head Renderiza um elemento head

h:inputHidden Renderiza um elemento input do tipo "hidden".

h:inputSecret Cria um elemento input do tipo "password".

h:inputText Cria um elemento input do tipo "text".

h:inputTextarea Cria um elemento input do tipo "textarea"

h:link Configura links

h:message Renderiza mensagens específicas para um determinado componente

h:messages Renderiza todas as mensagens para a view atual

h:outputFormat Cria um elemento para exibição de texto

h:outputLabel Renderiza um elemento "label"

h:outputLink Renderiza um elemento link HTML que possua o atributo "href"

h:outputScript Renderiza a tag HTML <script/>, que trás um JavaScript existente na bibliotecaJSF 2.0

h:outputStylesheet Definite arquivos de layout CSS

h:outputText Tag básica para textos

h:panelGrid Renderiza um panelGrid compatível com a tabela do HTML4

h:panelGroup Container de componentes

h:selectBooleanCheckbox Cria um elemento input do tipo "checkbox".

h:selectManyCheckbox Cria uma lista de checkboxes.

h:selectManyListbox Cria um “select” list

h:selectManyMenu Cria um elemento "select” com múltiplos atributos

h:selectOneListbox Renderiza um elemento HTML "select" de qualquer tamanho sem atributo"multiple"

h:selectOneMenu Cria um elemento do tipo Select One Menu

h:selectOneRadio Cria um elemento do tipo Select One Radio

4.3. Persistência com JPA

Page 81: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

74

A JPA (Java Persistence API) é uma especificação que padroniza as ferramentas ORM (Object RelationalMapper) para os sistemas desenvolvidos em Java. As ferramentas ORM fazem o mapeamento etransição automática de dados entre os paradigmas relacional e orientado a objetos (OO). Isso énecessário, tendo em vista que as aplicações Java são construídas seguindo as regras de OO e os SGDB’sgeralmente são organizados de acordo com o modelo relacional.

Dentre as implementações de JPA, destaca-se o Hibernate que é o mais utilizado para essepropósito; mas existem outras implementações como o EclipseLink e OpenJPA. As ferramentas queseguem as regras da JPA caracterizam-se por serem independentes de linguagem SQL, resultando numbaixo acoplamento entre aplicação e os Sistemas Gerenciadores de Banco de Dados (SGDB).

4.4. Manipulação de Dados com JPQLA Java Persistence Query Language (JPQL) é uma linguagem de consulta ORM que permite a realizaçãode consultas sobre classes e objetos. A linguagem suporta consultas de campos individuais de umaentidade e operações como update e delete, subqueries, join, group by, e having. A linguagem é umaextensão da EJB Query Language (EJB QL), e inclui outras funcionalidades não presentes nestalinguagem que a antecede. Todas as operações em JPQL podem ser realizadas no modo de consultasdinâmicas ou estáticas.

4.5. FaceletsAté a versão 1.2 do JSF, existem algumas deficiências que dificultam a vida do programador de páginas,como a falta de um mecanismo para criação de templates de telas integrado ao JSF e também paracriação de novos componentes visuais a partir da composição de outros componentes já existentes[Algaworks 2010], a partir disso, foi desenvolvido um framework denominado Facelets para facilitar ogerenciamento das telas criadas. Na versão 2 do JSF, o Facelets é o engine padrão que gerencia asinterfaces.

Ao se utilizar Facelets, as páginas deverão ser construídas usando XHTML (eXtensible HyperTextMarkup Language), e não mais JSP, pois o framework possui um compilador XHTML responsável pelogerenciamentos e reaproveitamento dos templates criados. A tag do Facelets possui as bibliotecas aseguir: component, composition, debug, decorate, define, fragment, include, insert, param, remove erepeat.

4.6. PrimefacesO Primefaces, em sua versão atual 3.4, é um framework composto por mais de 100 componentes para oJSF, com suporte nativo a Ajax e HTML5. Possui boa documentação e ricos exemplos de códigosdisponibilizados na web para auxílio na utilização dos mesmos. Para utilizar o Primefaces em umprojeto Java que implemente JSF 2, é preciso fazer o download do arquivo primefaces-{version}.jar no

Page 82: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

75

site do framework, adicioná-lo ao classpath da aplicação web desejada, e importar o namespace parachamada dos componentes: xmlns:p="http://primefaces.org/ui".

A Figura 4.4 [primefaces.org], logo abaixo, mostra a codificação de alguns componentes doPrimefaces numa página web. Nela, os elementos estão definidos dentro de um formulário, que fazparte da biblioteca HTML e por isso foi definido pela tag <h:form>. Ainda há outros elementos damesma biblioteca, são eles o panelGrid e o outputLabel. Neste código encontram-se dois elementossimples do Primefaces: o inputText e o commandButton.

Figura 4.4 Codificação de componentes HTML e Primefaces

Os componentes são definidos por seus atributos configuráveis, que podem ou não estávinculado a classes Java denominadas Managed Bean, que são classes que fornecem ao desenvolvedoro acesso aos estados dos componentes na tela, ou seja, eles fazem a ligação entre interfaces gráficas e alógica da aplicação. O resultado do código da Figura 4.4 é exibido na figura abaixo, Figura 4.5[primefaces.org].

Figura 4.5. Componentes em exibição na tela.

O Primefaces oferece os componentes mais populares utilizados em páginas na internet, eoutros mais complexos, fazendo com que seja possível encontrar em sua biblioteca um elemento paraquase todas as necessidades na construção das interfaces gráficas. Dentre os principais componentes,cita-se: AutoComplete, BooleanButton, BooleanCheckbox, Calendar, Editor, InputMask, InputText,InputTextarea, Keyboard, ManyButton, ManyMenu, ManyCheckbox, OneRadio, Password, Slider,DataExporter, DataList, DataGrid, DataTable, GMap e muitos outros componentes distribuídos nascategorias Ajax Core, Input, Button, Data, Panel, Overlay, Menu, Charts, Message, Multimedia, File,DragDrop e Misc.

Sobre a exibição de mensagens de validação, são utilizadas as tags Messages e Growl doPrimefaces, isso torna fácil a construção destas mensagens e outros avisos que se deseja exibir durante

Page 83: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

76

a utilização dos componentes na tela. Essas mensagens podem ser geradas pela manipulação da própriainterface ou serem lançadas a partir do managed bean.

O Primefaces disponibiliza um conjunto de 37 temas pré-definidos, alguns deles mostrado naFigura 4.6, que podem ser utilizados nos projetos de desenvolvimento. Para isso é necessário fazer odownload do theme.jar e adicioná-lo ao classpath da aplicação. Além desses, é possível utilizar aferramenta ThemeRoller, divulgado no site do framework, para criar um novo tema sem necessidade deconhecimentos aprofundados sobre CSS.

Figura 4.6 Temas pré-definidos.

4.7. ConclusãoO framework aqui estudado é uma ferramenta utilizada em muitos projetos relatados nainternet, sempre com críticas positivas da sua utilização. As atualizações de versões sãofrequentes, o que vai permitindo a melhoria e o incremento dos componentesdisponibilizados.

ReferênciasAlgaworks. (2010) “DWJSF – Desenvolvimento Web com JavaServer Faces”,

http://www.algaworks.com/treinamentos/desenvolvimento-web-com-jsf

Engholm Júnior, H. (2010) “Engenharia de Software na Prática”. São Paulo: Novatec Editora.

Ferreira, A. D. e Martins, L. A. (2009) “Comparativo Entre as Tecnologias JSP (JavaServer Pages) e ASP(Active Server Pages)”, http://www.inf.ufrgs.br/gppd/disc/cmp167/trabalhos/sem2001-1/T2/alex/

Jacobi, J. e Fallows, J. R. (2007) “Pro JSF e Ajax - Construindo Componentes Ricos para a Internet”. Rio deJaneiro: Ciência Moderna.

Page 84: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

77

Marafon, L. D. (2006) “Integração JavaServer Faces e Ajax”. Monografia (Graduação em Ciência daComputação) - Universidade Federal de Santa Catarina, Santa Catarina.

Rossi, C. L. (2012) “Interfaces Ricas para Web: Aplicação com PrimeFaces”. Monografia.(Aperfeiçoamento/Especialização em II Especialização em Tecnologia Java) - UniversidadeTecnológica Federal do Paraná. Orientador: Beatriz Terezinha Borsoi.

Page 85: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

78

Introdução à simulação de redes de computadorescom o NS-2 (Network Simulator) - Teoria e Prática

Marllus de Melo Lustosa

AbstractPerform real experiments with computer networks is often not a trivial task, because, as youknow, in many cases can have a complex and heterogeneous environment such networks, whichcan cause a significant impact on development time of this study. Therefore, computer simulationis a technique used very often because it enables the performance evaluation of variousscenarios, including the use of new technologies and protocols, plus the ability to evaluate theimpact of different topologies in the environment. This paper attempts to transpose, for students,teachers and professionals, the idea of using computer simulation in education and researchcomputer network, using examples of network simulation with the software NS-2 (NetworkSimulator).

ResumoRealizar experimentos reais com redes de computadores muitas vezes não é uma tarefa trivial,pois, como se sabe, em muitos casos pode se ter um ambiente complexo e heterogêneo dessasredes, o que pode causar um impacto significativo no tempo de desenvolvimento desse estudo.Por esse motivo, simulação computacional é uma técnica utilizada com muita frequência, poispossibilita a avaliação de desempenho de vários tipos de cenários, incluindo a utilização denovos protocolos e tecnologias, além da possibilidade de avaliação do impacto de diferentestopologias no ambiente. Este artigo tenta transpor, para alunos, professores e profissionais, aideia da utilização da simulação computacional no ensino e pesquisa de redes de computadores,utilizando-se para isso exemplos de simulação de redes com o software NS-2 (NetworkSimulator).

5.1. IntroduçãoO estudo de redes de computadores propõe analisar, quantita e qualitativamente, o desempenho desistemas conectados entre si, como a avaliação de protocolos de roteamento, segurança, topologias enovas arquiteturas de comunicação. Desde a criação da pilha de protocolos TCP/IP bem como domodelo OSI, o meio acadêmico e empresarial estuda a implantação de novas tecnologias para comporeste ramo da pesquisa. Para isso, trabalham em conjunto para propor novos protocolos e tecnologias,que vão desde à camada de aplicação, como os "peer-to-peer" e ssh, à camada física, como asarquiteturas de transferência de dados usb e wireless. A criação dos modelos TCP/IP e OSI foiambientalizada na adoção do modelo "Dividir para conquistar", o qual ataca, em partes, o desafio de sepropor novos estudos na área de redes de computadores.

Page 86: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

79

O uso de técnicas de avaliação de desempenho de sistemas também é necessário para comporestudos na área de redes, como: Análise real, modelagem analítica e simulação computacional. A análisereal faz uso de acompanhamento real do sistema, medindo e criando relatório das variáveis estudadas,o que pode se tornar um processo árduo e, às vezes, impraticável, pelo alto custo e complexidade doestudo. Os modelos matemáticos ou analíticos podem ser vistos como um conjunto de fórmulasmatemáticas de natureza estática, porém, muitos sistemas complexos não possuem modelos parasolução analítica, acarretando em hipóteses simplificadoras, o que o torna pouco utilizado emambientes de alta dinamicidade (Chwif and Medina 2006). Já a simulação computacional é uma técnicaque faz uso de soluções computacionais para modelagem e análise de situações reais, podendo prever,com certa confiança, o comportamento de um sistema baseado em dados de entradas específicos erespeitando um conjunto de premissas (Chwif and Medina 2006).

Nos demais tópicos serão mostrados as características dos modelos TCP/IP e OSI, bem como aimportância para o estudo de redes de computadores, além de promover o estudo de simulaçãocomputacional de redes de computadores com o simulador de eventos discretos NS-2, demonstrandotodo o seu potencial, tanto na abordagem teórica do simulador quanto por meio de exemplos práticosde simulação de redes.

5.2. Modelo OSISigla para Open System Interconnection, é um padrão da ISO (Intenational Organization forStardardization) mundial que define um framework de rede para implementação de protocolos em setecamadas. Esse padrão ISO, criado em 1984, afeta a forma de como a indústria de TI deve criarprotocolos de redes de computadores [Surman 2002]. Com base na teoria de "Dividir para conquistar", omodelo foi criado com objetivo de traçar todas as partes de desenvolvimento de uma arquitetura ouprotocolo de comunicação que usa redes de computadores e máquinas heterogêneas em seufuncionamento. O modelo é composto de várias camadas distribuídas desde o nível do usuário (camadade aplicação) ao nível físico (camada física). A figura 5.1 mostra como estão dispostas essas camadas.

Page 87: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

80

Figura 5.1. Exemplificação das 7 camadas do modelo OSI

5.3. Modelo TCP/IPCriado e financiado pela ARPANET (Advanced Research Projects Agency), o TCP/IP,comumente chamado de pilha TCP/IP, é um conjunto de protocolos de comunicação entrecomputadores em rede. O nome foi dado em referência aos protocolos TCP (TransmissionControl Protocol) e IP (Internet Protocol). O conjunto de protocolos pode ser visto como ummodelo de camadas, onde cada uma é responsável por um grupo de tarefas, fornecendo umconjunto de serviços bem definidos para o protocolo da camada superior. Sua evolução emergiuno final de 1978, e em 1983 se tornou o primeiro modelo aprovado pela ARPANET. Osprotocolos para internet formam o grupo de protocolos de comunicação que implementam apilha de protocolos TCP/IP sobre a qual a internet e a maioria das redes comerciais funcionam[Danzig and Jamin 1991]. A seguir, a Figura 5.2 mostra as camadas referentes ao modeloTCP/IP.

Page 88: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

81

Figura 5.2 Pilha de protocolos TCP/IP

5.4. Modelo OSI vs Modelo TCP/IPA Arquitetura OSI foi elaborada pelas comissões da ISO, constituídas por representantes técnicos damaioria dos países com experiência em comunicação de dados [Lima 2006]. O modelo OSI foi elaboradoseguindo métricas determinadas no decorrer do processo. Enquanto que a Arquitetura TCP/IP foielaborada no ambiente da Internet de acordo com a demanda e as necessidades do mercado [Lima2006]. Os estudos da ARPA foram os grandes precursores para o desenvolvimento desse modelo.

A criação dos protocolos TCP e IP deu início a um novo paradigma de comunicação, baseado noconjunto de vários protocolos que fornecem a possibilidade de transferência de dados por meio dasredes de computadores. A figura 5.3 mostra uma possível comparação entre esses dois modelos decomunicação de dados.

Figura 5.3 Comparação dos modelos OSI e TCP/IP

5.5. Análise de desempenho de sistemasNa implantação ou desenvolvimento de qualquer sistema computacional, é imprescindível o uso detécnicas para avaliação de desempenho, pois permite ao pesquisador uma maior análise das métricas ecaracterísticas do sistema em questão, objetivando uma maior viabilidade de recursos para o projeto,além da utilização de diferentes parâmetros no processo de análise.

Existem três técnicas clássicas utilizadas na literatura para a avaliação de desempenho desistemas, que são: Medição real, modelagem analítica e simulação computacional. A primeira, tambémchamada de métodos de benchmarking, provê o uso de ferramentas para teste diretamente nohardware de estudo, ou seja, é necessária a disponibilidade do equipamento físico em questão noambiente de pesquisa. A modelagem analítica é baseada em métodos analíticos, que são modelosmatemáticos, como Redes de Petri e Cadeias de Markov, e consistem no principal meio de predição dodesempenho de sistemas que ainda não estão fisicamente disponíveis. A criação de um modelo analíticopreciso para determinado sistema é muito difícil, devido à complexidade do seu processo dedesenvolvimento do modelo [Marcari and Manacero 2003]. Por último, a técnica de simulação

Page 89: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

82

computacional é empregada em referência à expressões matemáticas ou especificações mais ou menosformalizadas, com a finalidade de representar um processo ou operação do mundo real. Assim, énecessária a construção de um modelo de computador que corresponda à situação real que se pretendasimular [Freitas 2008]. A simulação de sistemas é a utilização de técnicas matemáticas usadas emcomputadores, que permitem "imitar" a operação de praticamente qualquer tipo de operação ouprocesso do mundo real, o que significa que é o estudo do comportamento dos sistemas reais atravésda exercício de modelos [Freitas 2008] [Chwif and Medina 2006].

A partir dessas técnicas, vários parâmetros são disponibilizados objetivando uma melhorpostura por parte do pesquisador em seus critérios de avaliação e adoção de um modelo para o estudode avaliação de desempenho de sistemas. Tais parâmetros podem ser vistos na tabela 5.1, retirada deJain [Jain 1991].

Tabela 5.1 Critérios para escolha de técnicas de análise ou predição de desempenho[Jaim 1991]

CritérioMétodosanalíticos

Simulação Benchmarking

1. Estágio de desenvolvimento Qualquer qualquer pós-protótipo

2. Tempo na obtenção dosresultados

Pequeno médio varia

3. Ferramentas para análise analistas humanoslinguagem decomputadores

instrumentação

4. Exatidão Baixa moderada varia

5. Avaliação de alternativas Fácil moderada varia

6. Custo Baixo médio alto

7. Credibilidade do método Baixo médio alto

Page 90: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

83

.5.1. Simulação computacionalSimulação, segundo [Longman Dictionary of Contemporary English 2003], é uma atividade ousituação que reproduz uma condição real, mas tem uma aparência realística, sendo usada paratestar qualquer coisa. Segundo [Law e Mccomas 1991], simulação é a imitação de um sistemareal, modelado em computador, para avaliação e melhoria de seu desempenho. Ou seja,simulação é o desenvolvimento virtual e controlado de uma realidade, afim de se estudá-la,objetivando propor melhorias no ambiente, assim como [Banks 2000], que afirma que asimulação envolve a criação de uma história artificial da realidade e, com base nesta históriaartificial, são realizadas observações e inferências nas características de operação do sistema realrepresentado. A figura 5.4 esquematiza este conceito da transformação da realidade em modeloe novamente dos resultados em realidade.

Figura 5.4 Realidade x Modelo [Duarte 2003]

Existem na literatura três tipos de modelos de simulação: Modelos discretos e contínuos.Também existem os modelos híbridos, que trabalham com eventos estáticos e discretos em ummesmo ambiente. Mais especificamente, de acordo com [Filho 1995], Um modelo é discreto setodas as variáveis de estado têm seus valores alterados apenas em um número contável deinstantes de tempo. Já em um modelo contínuo, todas essas têm seus valores alterados a qualquerinstante de tempo. Um modelo é misto ou híbrido, se algumas variáveis de estado têm os seusvalores alterados a qualquer instante de tempo e outras apenas em um número contável deinstantes de tempo. A figura 5.5 demonstra como funciona uma simulação de eventos contínuos,mostrando como exemplo a simulação do esfriamento de uma xícara de chá. A variável estudadaé a temperatura, que varia continuamente com o tempo.

Figura 5.5 Simulação contínua do estudo da temperatura do chá ao longo do tempo [Chwif andMedina 2006].

Page 91: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

84

Ao contrário dessa, a figura 5.6 exemplifica uma simulação de eventos discretos, ou seja, elessão disparados em instantes de tempo descontinuados, pois, no modelo discreto, a execução doseventos ocorre em saltos.

Figura 5.6 Evolução dos estados na simulação de eventos discretos da preparação de uma xícarade chá [Chwif and Medina 2006].

5.6. Simuladores de redes de computadoresNa literatura de redes de computadores, vários são os simuladores disponíveis para quem desejaestudar a área, a exemplo do Jist [Barr and Haas 2004], Sinalgo [Sinalgo 2007] e OMNet++ [György1993]. Alguns clássicos, como o Network Simulador 2 [NS 2001] e TOSSIM [Levis and Lee et al 2003] sãomais utilizados pela comunidade acadêmica, envolvida em diversos projetos sobre redes wireless,cabeadas, veiculares, dentre outras.

Muitas são as linhas de pesquisa em redes de computadores, e pela grande quantidade depesquisadores envolvidos em projetos na área, é esperado que existam vários simuladores para os maisdiversos fins. Neste trabalho é proposta a iniciação e o desenvolvimento do estudo sobre simulação deredes de computadores a partir da ferramenta Network Simulator - 2 (NS), cujos objetivos e motivaçõesserão descritos no próximo tópico.

5.6.1. Network Simulator - NS-2NS-2 é um simulador de redes de eventos discretos. NS-2 fornece um apoio substancial para asimulação do TCP, protocolos de roteamento e multicast com fio e sem fio (local e satélite). Eleé descrito em C++ e uma versão orientada a objeto do Tcl (Tool command language) chamadoOTcl [Fall and Varadhan 2007]. É altamente escalável, com características de acoplamento demódulos para simulação de diferentes tipos de redes. Na instalação do NS-2 ainda é seguido oNAM (Network Animator), que é uma ferramenta capaz de realizar uma animação 2D dasimulação. A figura 5.7 mostra o resultado de uma pesquisa feita pelo autor deste trabalho, quecomparou a utilização dos simuladores de redes de computadores, em trabalhos publicados emconceituadas conferências. Como resultado, apresentou-se a estatística do uso de simuladores deredes e modelagem analítica, pela comunidade acadêmica no período entre 1998 e 2009, em

Page 92: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

85

estudos na área de Redes de Sensores Sem Fio (RSSF). Num total de 46, todos os artigosanalisados na pesquisa foram retirados do portal de periódicos da capes.

Figura 5.7 Análise do uso de simuladores em pesquisas na área de RSSF entre os anos de 1998 e2009.

Na figura acima, percebe-se que o software de simulação mais utilizado em trabalhoscom RSSF, no período estudado, e atingindo quase 70% de utilização, foi o NS-2, seguido desimuladores próprios (P.S.) desenvolvidos para determinado fim de pesquisa. Em terceiro lugarencontra-se o Tossim, e por último, com menos de 5% de uso, estão os modelos analíticos(M.A.). Além da motivação citada acima, outros tópicos interessantes favoreceram naescolha do NS-2 como software de simulação de redes de computadores na composição dessetrabalho, dentre eles:

- Open Source;

- Possibilidade de interações em ambientes multiprotocolos;

- Facilidade de Trancing;

- Disponível em sistemas Unix, GNU/Linux, BSD, Solaris e Windows (Cygwin);

- Orientado a objetos;

- Estrutura modular;

- Suporte à simulação de redes cabeadas e sem fio;

Percebe-se, portanto, sua grande abrangência tanto em relação ao desenvolvimento docenário de simulação de redes quanto na utilização de diferentes sistemas operacionais paraexecução do mesmo, facilitados pelo motivo de este ser de código aberto e ter compatibilidadecom diferentes núcleos operacionais. Outra característica bastante interessante é a sua capacidadede implementação em qualquer camada do modelo OSI, da aplicação à física. Na literatura,existem modelos prontos de diferentes camadas, propostos por pesquisadores da área edesenvolvedores do programa. O suporte à simulação de redes cabeadas e sem fio também é um

Page 93: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

86

fator decisivo, pois, em ambientes reais, tanto pode-se ter um ambiente de simulação homogêneode nós em rede como a fusão desses dois tipos, wired-cum-wireless, como exemplificado nafigura 5.8, retirado de [Fall and Varadhan 2007].

Figura 5.8 Topologia de rede mista, onde se encontram nós móveis e fixos cabeados e sem fio[Fall and Varadhan 2007].

5.6.1.1. NS-2 - C++ e OTclA importância e necessidade de utilizar duas linguagens de programação para compor o NS-2está descrita a seguir.

- C++: É utilizada para compor o núcleo do simulador. É nela em que ocorre aimplementação e execução dos protocolos e aplicações. Pelo fato dessa linguagem trabalhar bemcom bytes e ter um tempo computacional de processamento relativamente baixo, além dacapacidade de trabalhar com orientação a objetos, ela foi escolhida para compor a padrão de maisbaixo nível do programa, agilizando os processos de recompilação de módulos.

- OTcl: A alta dinamicidade de mudança de uma simulação, aliada à rapidez no processode alteração do ambiente a ser simulado sem que os módulos e protocolos sejam recompiladosnovamente, foram o que levaram a adoção de uma linguagem de scripts para compor o front-enddo usuário. A linguagem Otcl, variante orientada a objetos da Tcl, e interpretada, é capaz deinteragir com as classes C++ por meio da interface TclCL, que faz a ligação entre estas, numacorrespondência one-to-one [Fall and Varadhan 2007], conforme mostra a figura 5.9, retirada de[Issariyakul and Hossain 2011].

Page 94: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

87

Figura 5.9 Ligação one-to-one entre as classes compiladas e interpretadas, das linguagens C++ eOtcl [Issariyakul and Hossain 2011].

A correspondência entre essas duas linguagens é melhor descrita por meio da imagem5.10, retirada de [Rodolfo 2009], na qual são apresentados três níveis: O cenário de simulação, oscript Tcl e a implementação C++. O primeiro, representa um ambiente de simulação constituídode 2 nós e comunicação sem fio. O script Tcl contém a instanciação e criação de um array de nóse de um objeto simulador, pelas declarações das variáveis node_ e ns_. A implementação daclasse dos nós, chamada MobileNode (nó móvel), que contém todos os atributos e métodosreferentes a eles, é feita na linguagem C++, e é compilado somente um vez, na criação doambiente de simulação.

Figura 5.10 Interação entre as implementações Tcl e C++ no NS-2 [Rodolfo 2009].

5.6.1.2. NS-2 - Nós e enlaces - Modelo wiredOs nós (hosts) são definidos no NS-2, na linguagem OTcl, por meio do comando set<nome_do_no> [$ns node], que seta um nó e referencia a classe node da instância do simulador

Page 95: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

88

$ns. Eles são compostos de agentes, um ponto de entrada no nó, um classificador de endereços eum classificador de portas. De acordo com [Anton 2003], um pacote gerado por um agente éentregue ao nó ao qual o agente está ligado, através do ponto de entrada, que também recebepacotes cujo destino é o próprio nó. Após passar pelo ponto de entrada, o pacote é recebido peloclassificador de endereços, que verifica se o pacote deve ser entregue a um agente pertencente aonó ou deve ser transmitido para um enlace de saída. Caso o pacote seja destinado a um agente dopróprio nó, o pacote é então repassado ao classificador de porta que, de acordo com o endereçode destino, entrega o pacote ao respectivo agente. A arquitetura do componente nó é mostrada aseguir, a partir da figura 5.11, retirada de [Coutinho 2007].

Figura 5.11 Arquitetura do componente do tipo nó, unicast e multicast [Coutinho 2007].

A definição dos nós está diretamente ligada à criação do enlace, que é uma estrutura queconecta os nós, objetivando formar a topologia. Outro detalhe importante que se deve ter ciênciaé o fato de a camada de enlace implementar as políticas de fila, ao contrário do que acorre emambientes reais, cujo gerenciamento de buffer é no próprio host. Portanto, o atraso noencaminhamento dos pacotes de um nó a outro se dá pela soma do atraso do pacote na fila com oatraso default do próprio enlace, o qual é definido pelo usuário. A camada de enlace tambémguarda informações e gerencia o TTL do pacote, valor que vai decaindo com cada salto domesmo. Toda a estrutura dessa camada pode ser observada na figura 5.12, retirada de [Coutinho2007].

Figura 5.12 Estrutura do enlace no NS-2 [Coutinho 2007].

Page 96: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

89

O NS-2 suporta dois padrões de encaminhamento de pacotes nos enlaces: O tipo simplex,em que os dados são enviados apenas em um sentido (exemplo da figura 5.12) e no modo em queos pacotes trafegam em ambos os sentidos, caracterizando o tipo duplex.

O comando básico que define um enlace entre os nós é $ns duplex-link n0 n1 1Mb 10msDropTail. O comando contém parâmetros do tipo de encaminhamento do enlace (duplex ousimplex), os nós que serão ligados (n0 n1), a largura de banda do link (1 Megabits/segundo), oatraso do link (10 milissegundos) e a política de fila adotada para o enlace (DropTail).

5.6.1.3. NS-2 - Camadas de protocolos - Modelo WirelessAs camadas de protocolos do modelo wireless, no NS-2, descrevem a pilha de protocolos emodelos referentes às camadas da arquitetura OSI, utilizadas pelo simulador. Qualquerimplementação de novos módulos para algumas dessas camadas, tem de ser realizada nalinguagem C++, cujas implementações estão na estrutura do próprio simulador. A figura 5.13,retirada de [Rodolfo 2009] demonstra como funciona o modelo wireless no NS-2.

Figura 5.13 Funcionamento do modelo wireless no simulador NS-2 [Rodolfo 2009].

Iniciando pelo camada de mais alto nível, a camada "Agent" se liga à aplicação (ftp,telnet, cbr, ...) e tem a função de receber ou transmitir pacotes, funcionando como Src(transmissor) ou Sink/Null (receptor). Logo após, tem-se os componentes "Addr Demux" e "PortDemux" que são os classificadores de endereço e porta, respectivamente, e cuja função já foiexplicada anteriormente, a partir da figura 1.10. A camada "RTagent" faz a implementação doprotocolo de roteamento utilizado na simulação, no caso do exemplo da figura 5.13, foi usado oprotocolo DSDV. A camada "LL" implementa a camada de enlace, cuja função é executar osprotocolos da camada de ligação de dados, como fragmentação ou reagrupamento dos pacotes.Essa camada está também ligada à camada "ARP", que tem a função de converter o endereço ip

Page 97: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

90

do pacote em endereço mac e vice-versa. A camada "MAC" implementa os protocolos de acessoao meio, como o padrão IEEE 802.11, que simplesmente foi uma transcrição em C++ dofirmware das placas de comunicação que se utilizam desse padrão. A camada "IFq" (interface defila) existe para dar prioridade aos pacotes de encaminhamento. O módulo PriQueue, referente aessa camada, prioriza os pacotes de encaminhamento, colocando-os na cabeça da lista de espera.As camadas "NetIF", "Radio Propagation Model and Antenna" e "Channel" modelam osprotocolos referentes à camada física, da arquitetura OSI. A primeira, "NetIF" (interface derede), implementada pelo módulo WirelessPhy, é usada pela classe MobileNode como umainterface de hardware para acesso ao Channel. Especificamente, essa camada recebe os meta-dados, presentes no cabeçalho do pacote recebido, com informações sobre potência detransmissão, energia gasta na transmissão ou restante (residual), comprimento de onda do sinal, eencaminha para a camada de propagação de rádio e antena, que, a partir de modelos como oTwoRayGround e Propagation e Free-space, quantifica as perdas de propagação e testa se opacote contém as condições necessárias para ser recebido pelo nó em questão, ou seja, se possuia potência mínima para ser recebido, caso contrário, será descartado. Os modelos de antenatambém são definidos na camada "Radio Propagation Model and Antenna", como por exemplo omodelo OmniAntenna. Como tipo de canal, tem-se o exemplo do modelo WirelessChannel, que éum modelo de propagação sem fio.

5.7. Projeto LiowsnImplantar o ambiente computacional necessário para a iniciação das pesquisas na área de redes éa primeiro passo para o pesquisador que deseja realizar simulações em seu estudo. No entanto,além de instalar essas ferramentas, muitas vezes é necessário a configuração dos módulosadicionais para estudos específicos, como por exemplo, os da área de rede de sensores sem fio(RSSF), no caso do NS-2.

Considerando que a grande maioria desses programas e módulos são nativos para aplataforma Linux, é natural que se tenha um corpo técnico para a realização da configuraçãoadequada do software no sistema operacional. Tendo em vista a grande lista de perguntas sobreinstalação do NS-2, como em [Nabble 2012], bem como dúvidas sobre a configuração de novosmódulos em grandes fóruns desses programas, como pode ser visto em [Nabble 2012], [TheLinux Question 2012], [Gname 2012] e [The Mail Archive 2012], entende-se que essa não é umatarefa trivial. A partir desse cenário, o projeto Liowsn (Linux for works with WSN, Linux paratrabalhos com redes de sensores sem fio), idealizado pelo autor deste trabalho, foi criado econsiste de um sistema operacional GNU/Linux remasterizado com todas as ferramentasclássicas para simulação de redes, já instaladas e configuradas, assim como a maioria dosmódulos para trabalhos com redes de sensores sem fio, cujo tema foi o foco do projeto [Lustosaand Singh 2012]. Dentre essas ferramentas estão o NS-2 e OMNet++, além de alguns módulosespecíficos para trabalhos na área de RSSF, como a Castalia e Mannasim. A descrição de todasas ferramentas incluídas no sistema operativo segue abaixo.

- NS-2.34 (Simulador de redes);

- Mannasim (Módulo para simulação de RSSF para o NS-2.34);

- OMNeT++ (Framework para simulação de redes);

- Castalia (Simulador de RSSF, roda sob o OMNeT++);

Page 98: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

91

- Xgraph (Analisador de arquivos trace);

- Tracegraph (Analisador de arquivos trace);

- NAM (Animador gráfico da simulação);

Percebe-se, então, que todo o ambiente necessário para iniciação à simulação de redes,com as ferramentas mais utilizadas na literatura, está instalado no sistema operacional. Ele foidisponibilizado em imagem .iso e se encontra no endereçohttp://sourceforge.net/projects/liowsn/. O sistema operacional utilizado para compor o projetoLiowsn foi o GNU/Linux Ubuntu 9.10, e será usado neste trabalho de simulação de redes por jáconter o NS-2.34 instalado e configurado. O sistema pode ser instalado em computador ou aindainiciá-lo pela opção live-cd, que funciona usando somente a memória principal (ram).

O NS-2 ainda pode ser utilizado instalando-o a partir de seus arquivos fontes ou bináriosoriginais, que podem ser baixados no sitehttp://nsnam.isi.edu/nsnam/index.php/Downloading_and_installing_ns-2/.

5.8. Prática de simulação de redes com NS-2O tópico a seguir abordará a prática da simulação de redes cabeadas e sem fio no simulador NS-2, com exemplos bem claros de ambientes básicos de redes. Mostrará também os tópicos a seremseguidos no desenvolvimento da simulação, assim como a análise básica dos arquivos trace(arquivos gerados após a execução da simulação computacional).

5.8.1. Simulando uma rede cabeadaPara iniciar uma simulação de ambientes cabeados, ou seja, redes em que os nós são ligados porlinks físicos, 5 passos basicamente são seguidos [Coutinho 2007]:

- Planejar a simulação;

- Definir os nós;

- Definir a ligação entre os nós (topologia);

- Definir o tráfego que será injetado na rede;

- Analisar os resultados;

O planejamento da simulação consiste em definir quais as características dos nós eenlaces da rede a ser simulada. Segue abaixo a figura 5.14, que mostrando uma modelagembásica de um ambiente de rede.

Figura 5.14 Planejamento da simulação

Page 99: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

92

Na figura acima são definidas todas as características da rede a ser simulada, como atopologia dos nós, a largura de banda do enlace seguido de seu atraso padrão, o tipo de filaDropTail (com política FIFO - First In First Out) e os agentes UDP (User Datagram Protocol) eNULL ligados aos nós, que são os agentes de roteamento de envio e recebimento do pacotes. Édefinida também a aplicação CBR (Constraint Bit Rate), cuja é ligada ao agente de roteamentoUDP, que possui característica de entrega não confiável de dados.

A seguir, é mostrado o script, com extensão .tcl, desse cenário, adaptado de [Greiss 2012]utilizado para ser executado pelo simulador NS-2, a partir do shell do Linux, como o comando$ns nome_do_script.tcl.

# Criando o objeto simulador

set ns [new Simulator]

# Abre o arquivo de trace .nam e .tr

set nf [open out.nam w]

set f [open out.tr w]

$ns namtrace-all $nf

$ns trace-all $f

# Define o procedimento "finish"

proc finish {} {

global ns nf f

# Limpa os arquivos trace

$ns flush-trace

# Fecha o arquivo trace

close $nf

close $f

# Envia um comando para o shell e abre o arquivo trace do NAM pelo programa NAM

exec nam out.nam &

Page 100: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

93

exit 0

}

# Cria dois nós

set n0 [$ns node]

set n1 [$ns node]

# Cria um enlace full-duplex entre eles

$ns duplex-link $n0 $n1 1Mb 10ms DropTail

# Cria um agente UDP e anexa-o ao nó n0

set udp0 [new Agent/UDP]

$ns attach-agent $n0 $udp0

# Cria uma fonte de tráfego e anexa-a ao agente udp0

set cbr0 [new Application/Traffic/CBR]

# Define os parâmetros de tamanho dos pacotes gerados e intervalo entre eles

$cbr0 set packetSize_ 500

$cbr0 set interval_ 0.005

$cbr0 attach-agent $udp0

# Cria um agente null0 e anexa-o ao nó n1

set null0 [new Agent/Null]

$ns attach-agent $n1 $null0

# Conecta os agentes udp0 e null0 (transmissor e receptor)

$ns connect $udp0 $null0

Page 101: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

94

# Escalonador de eventos para a aplicação CBR

$ns at 0.5 "$cbr0 start"

$ns at 4.5 "$cbr0 stop"

# Chama o procedimento "finish" no instante de tempo 5 segundos.

$ns at 5.0 "finish"

# Executa a simulação

$ns run

A partir desse código, salvo com extensão .tcl e executado pelo comando acima citado,tem-se dois arquivos trace: out.nam e out.tr. O primeiro, é o arquivo que será executado pelosoftware NAM (Network Animator) e será responsável por realizar a animação gráfica dasimulação. Com ele, se tem a possibilidade de observar se a simulação ocorreu da forma comofoi programada, pela visualização gráfica que este fornece ao pesquisador, assim como émostrado pela figura 5.15, em um exemplo de utilização do software NAM. O segundo, out.tr, éum arquivo trace que contém todos os dados da simulação, ou seja, todos os eventos queocorreram ao longo do tempo dado, como o instante de tempo de cada pacote enviado, se ele foirecebido e/ou descartado, e até mesmo se passou por fila em algum enlace que trafegou. Aseguir, nas figuras 5.16 e 5.17, é mostrado parte do código do arquivo trace gerado pelasimulação acima e o que cada campo representa na análise dos dados, respectivamente.

Figura 5.15 Visualização dos fluxos de dados e estouro de fila, com o software NAM.

Page 102: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

95

Figura 5.16 Exemplo de parte do arquivo trace gerado na simulação.

Figura 5.17 Análise dos campos do arquivo trace de uma simulação cabeada, adaptada de [Chungand Claypool 2012].

Na figura 5.16, tem-se na primeira coluna o evento, que pode ser "r", "+", "-" e "d",referente ao recebimento do nó ou monitoramento da fila. Logo após está o instante de tempo emque ocorreu o evento, depois vêm os campos "from node" e "to node", que representa o nóemissor e receptor. A coluna 5 ("pkt size") é referente ao tamanho do pacote. O campo "flags"representa os campos seguintes, que são: Id do fluxo de dados do pacote ("fid"), o endereço donó fonte ("src addr") e do nó destino ("dst addr") e são representados por "nó.porta", o númerode sequência do pacote ("seq num") e o id do pacote ("pkt id"). A partir desses dados do arquivotrace, é possível realizar diversas consultas com objetivo de receber informações a cerca dedeterminados parâmetros de simulação, como exemplo:

- Vazão de um link (troughput);- Índice de perdas de pacotes;

- Atraso médio na entrega dos pacotes (latência);

- Variação no atraso (jitter);

5.8.3. Simulando uma rede sem fioA simulação de redes sem fio também segue os mesmos 5 passos para desenvolvimento do scriptde simulação. A diferença está na criação dos parâmetros de topologia, que na rede wireless,tem-se desde informações da camada física até a camada de enlace, definidas pelo usuário.Abaixo segue um script de simulação, adaptado de [Rodolfo 2009] com dois nós sem fio (nó n(0)e nó n(1)) que se movem, além de haver transmissão de dados FTP, por meio do agente deroteamento TCP, entre eles (do nó n(0) ao nó n(1)), em um ambiente com dimensão 500x500m(eixo z é definido como z=0). A figura 5.18, retirada de [Rodolfo 2009], mostra o modelo desimulação utilizado.

Page 103: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

96

Figura 5.18 Modelo pretendido para simulação [Rodolfo 2009].

Segue script .tcl abaixo:

# Define opções

set val(chan) Channel/WirelessChannel; # tipo do canal

set val(prop) Propagation/TwoRayGround; # modelo de radio-propagação

set val(netif) Phy/WirelessPhy; # tipo de interface de rede

set val(mac) Mac/802_11; # tipo MAC

set val(ifq) Queue/DropTail/PriQueue; # tipo de interface de fila

set val(ll) LL; # tipo de camada de enlace

set val(ant) Antenna/OmniAntenna; # modelo da antena

set val(ifqlen) 50; # num máx de pacotes em ifq

set val(nn) 2; # numero de nós móveis

set val(rp) DSDV; # protocolo de roteamento

# Inicializa variáveis globais

set ns_ [new Simulator]

set tracefd [open simple.tr w]

Page 104: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

97

$ns_ trace-all $tracefd

# Seta topografia da simulação

set topo [new Topography]

$topo load_flatgrid 500 500

# Cria objeto GOD (Guarda informações sobre a conectividade da topologia)

create-god $val(nn

# Configuração dos nós

$ns_ node-config -adhocRouting $val(rp) \

-llType $val(ll) \

-macType $val(mac) \

-ifqType $val(ifq) \

-ifqLen $val(ifqlen) \

-antType $val(ant) \

-propType $val(prop) \

-phyType $val(netif) \

-channelType $val(chan) \

-topoInstance $topo \

-agentTrace ON \

-routerTrace ON \

-macTrace OFF \

-movementTrace OFF

#Criação dos nós

for {set i 0} {$i < $val(nn) } {incr i} {

Page 105: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

98

set node_($i) [$ns_ node]

$node_($i) random-motion 0 ; #Desabilita movimento randômico dos nós

}

# Define coordenadas iniciais para os nós (X,Y, Z=0)

$node_(0) set X_ 5.0

$node_(0) set Y_ 2.0

$node_(0) set Z_ 0.0

$node_(1) set X_ 390.0

$node_(1) set Y_ 385.0

$node_(1) set Z_ 0.0

# Criação de movimentos dos nós

# Nó n(1) vai para posição x=25m y=20m com uma velocidade de 15m/s, no instante de tempo50s.

$ns_ at 50.0 "$node_(1) setdest 25.0 20.0 15.0"

$ns_ at 10.0 "$node_(0) setdest 20.0 18.0 1.0"

$ns_ at 100.0 "$node_(1) setdest 490.0 480.0 15.0"

# Criando a geração de tráfego

set tcp [new Agent/TCP]

$tcp set class_ 2

set sink [new Agent/TCPSink]

$ns_ attach-agent $node_(0) $tcp

$ns_ attach-agent $node_(1) $sink

$ns_ connect $tcp $sink

Page 106: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

99

set ftp [new Application/FTP]

$ftp attach-agent $tcp

$ns_ at 10.0 "$ftp start"

# Reseta as configurações dos nós para encerramento da simulação

for {set i 0} {$i < $val(nn) } {incr i} {

$ns_ at 150.0 "$node_($i) reset";

}

$ns_ at 150.0 "stop"

$ns_ at 150.01 "puts \"NS EXITING...\" ; $ns_ halt"

proc stop {} {

global ns_ tracefd

$ns_ flush-trace

close $tracefd

}

# Inicia simulação

puts "Starting Simulation..."

$ns_ run

Após a execução do script de simulação acima é gerado o arquivo simple.tr, que é umarquivo de trace completo da simulação, com informações a cerca de cada evento disparado namesma. A figura 5.19 mostra um exemplo de uma linha de código do arquivo trace de umasimulação, e logo abaixo têm-se a caracterização de todos os campos.

Figura 5.18. Exemplo de parte do arquivo trace de uma simulação de redes wireless.

Abaixo segue a descrição de todos os campos referentes à figura acima.

- s: envio de pacote (também pode ser r - recepção, D - descarte, f - encaminhamento, c -colisão);

Page 107: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

100

- 0.029365548: instante de tempo em que ocorreu a operação;

- _1_: nó onde foi executado a operação;

- MAC/RTR/AGT: indica a camada que gerou a operação;

- ---: flags;

- 0: identicador do pacote;

- message/tcp: nome do pacote;

- 90 (bytes): tamanho do pacote;- 0: tempo de duração do pacote contido no cabeçalho MAC;

- ffffffff: endereço de MAC de destino;

- 1: endereço MAC de quem enviou o pacote;

- 800: tipo de cabeçalho MAC do pacote (800 = ARP);

- -------: flags;

- [1:255 – 1:255 32 0]: cabeçalho IP;

- 1: endereço IP de quem originou o pacote;

- 255: porta de origem;

- 1: endereço IP do nó destino;

- 255: porta do nó destino;

- 32: campo TTL (time to live);

- 0: indica o endereço do próximo salto (hop);

5.9. Considerações finaisEste trabalho teve por objetivo teorizar sobre o tema de redes de computadores, abordando suascaracterísticas que vão desde os primeiros estudos de conexão entre sistemas até os modelos OSIe TCP, além de conceituar as formas de análise de desempenho de sistemas, e mostrando oporque da escolha da simulação computacional como foco deste trabalho. Foram relatadassimulações com redes cabeadas e sem fio, a partir do programa NS-2, com um exemplo práticode todo o desenvolvimento da simulação, que vai desde o planejamento da topologia de rede atéa análise dos arquivos trace, que contém as informações sobre todos os eventos ocorridos nasimulação, seja recebimento, envio, enfileiramento ou descarte de pacotes. O ambienteoperacional necessário para a iniciação de pesquisas que têm como foco a simulaçãocomputacional na área de redes também foi discutido e focado no projeto Liowsn, um sistemaoperativo proposto pelo autor desse artigo, e que visa prover um ambiente com váriasferramentas mais utilizadas na literatura já instaladas e pré-configuradas para uso. Portanto, otrabalho foi concluído, seguindo como base de ensino os métodos descritos acima, visandosempre a adequação desse conteúdo de forma a torná-lo o mais claro possível, tanto para

Page 108: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

101

docentes, que desejam repassar seus conhecimentos em sala de aula, como para pesquisadoresem geral, que necessitam desse conteúdo para o desenvolvimento de projetos na área.

ReferênciasSurman, G. (2002) "Understand security using the OSI model", SANS Institute - The Information Security

Reading, March 20.

Danzig, P., Jamin, S. (1991) "tcplib: A Library of TCP/IP Traffic characteristics". TechnicalReport CS-SYS-91-01, University of Southern California.

Lima, S. H. (2006) "Comunicação de Dados - Arquitetura TCP em rede de dados", Engenhariade Telecomunicações, Universidade de Santa Cecília - UNISANTA.

Marcari, E., Manacero, A. (2002) "Classificação de Técnicas para Análise de Desempenho deSistemas Paralelos e Distribuídos", FAPESP - Fundação de Amparo à Pesquisa do Estado deSão Paulo.

Freitas, P. J. F. (2008) "Introdução à Modelagem e Simulação de Sistemas: com Aplicações emArena", 2. ed. Florianópolis: Visual Books Ltda. 372p. ISBN 978-85-7502-228-3.

Chwif, L., Medina, A. C. (2006) "Modelagem e Simulação de Eventos Discretos: Teoria e Aplicações", 1ed. São Paulo: Bravarte. 254 p. ISBN 85905978-1-4.

Jain, R. (1991) "The Art of Computer Systems Performance Analysis: Techniques forExperimental Design, Measurement, Simulation, and Modeling", John Wiley & Sons, 2ndedition.

Longman Dictionary of Contemporary English (2003), 3a Edição, Pearson Education do BrasilLTDA.

Law, M. A., Mccomas, M. G. (1999) "Simulation of Manufacturing Systems", Proceedings ofthe Winter Simulation Conference. Tucson.

Banks, J., (1999) "Introduction to Simulation", Proceeding of the Winter conference, Atlanta.

Duarte, R. N. (2003) "Simulação computacional: Análise de uma célula de manufatura em lotesdo setor de auto-peças", Dissertação (Mestrado em Engenharia de Produção) Programa dePós-Graduação em Engenharia de Produção, Itajubá, MG, UNIFEI.

Filho, C. P. (1995) "Introdução à simulação de sistemas", 159f. Campinas, SP: Editora daUNICAMP.

Barr, R., Haas, Z. J. (2004) "JiST/SWANS - Java in Simulation Time",http://jist.ece.cornell.edu/.

Sinalgo (2007) "Sinalgo - Simulator for Network Algorithms",http://disco.ethz.ch/projects/sinalgo/index.html.

Fall, K., Varadhan, K. (2007) "The ns manual", http://www.isi.edu/nsnam/ns/ns-documentation.html, August.

György, P. (1993), "OMNeT: Objective Modular Network Testbed", MASCOTS '93:Proceedings of the International Workshop on Modeling, Analysis, and Simulation OnComputer and Telecommunication Systems: 323--326.

Page 109: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

102

Levis, P., Lee N., Welsh M., Culler, D. (2003) "TOSSIM: Accurate and Scalable Simulation ofEntire TinyOS Applications", In: Proceedings of the First ACM Conference on EmbeddedNetworked Sensor Systems.

Issariyakul, T., Hossain, E. (2012) "Introduction to Network Simulator NS2", DOI10.1007/978-1-4614-1406-3 3, © Springer Science+Business Media, LLC.

Anton, R. E. (2003) "Análise de desempenho de protocolos para estabelecimento de chave de grupo emredes ad hoc", X, 53 p. 29,7 cm (COPPE/UFRJ, M.Sc., Engenharia Elétrica), Tese - Universidade Federaldo Rio de Janeiro, COPPE.

Coutinho, M. M. (2007) "Network Simulator - Guia básico para iniciantes", http://gredes.ifto.edu.br/wp-content/uploads/livroNS.pdf.

Nabble. (2012) "Network Simulator ns-2 - The Official Discussion List", Research on errors inthe installation of the ns2.http://old.nabble.com/forum/Search.jtp?query=installation+error+ns&local=y&forum=15582&daterange=0&star tdate=&enddate=/.

The Linux Questions. (2012) "Forum of the linux users", Research on errors in the installation ofthe module Mannasim in Ns-2.http://www.linuxquestions.org/questions/search.php?searchid=5438840.

Gname. 2012 "Forum of discussion on the NS-2", Research on errors in the installation of themodule Mannasim in Ns-2.http://search.gmane.org/?query=mannasim+error+installation&author=&group=gmane.network.simulator.isi&sort=relevance&DEFAULTOP=and&xP=Zmannasim%09Zerror&xFILTERS=Gnetwork.simulator.isi---A

The Mail Archive. (2012) "Discussion list of the ns-users" Research on errors in the installationof modules on the ns-2. http://www.mail-archive.com/search?l=ns-users%40isi.edu&q=error+installation+module.

Lustosa, M., Singh S. (2012) "Liowsn Project: An Operating System Remastered for Works withSimulation of Wireless Sensor Networks", In: International Journal of Computer Applications52(12):32-37, August 2012. Published by Foundation of Computer Science, New York, USA.

Greiss, M. (2012) "Tutorial for the network simulator “ns”,http://www.isi.edu/nsnam/ns/tutorial/index.html.

Chung, J., Claypool, M. (2012) "NS by Example", Worcester Polytechnic Institute (WPI),http://nile.wpu.edu/NS/purpose.

Page 110: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

103

Desenvolvimento de Aplicações para PlataformaGoogle Android

Fábio de Jesus Lima Gomes, Manoel Taenan Ferreira de Souza, Rafael MadureiraLins de Araújo

AbstractWith the evolution of mobile technology, mobile devices have become an important source oftransmission and reception of information, creating the need for more robust operating systemsand a considerable demand for the development of services and applications. The GoogleAndroid platform was created in order to fill this gap. Thus, this mini-course aims disseminateconcepts about developing services and applications for the Google Android platform. Also wewill describe how mobile applications can consume web services via REST architecture.

ResumoCom a evolução da tecnologia móvel, os dispositivos móveis tornaram-se uma importante fontede transmissão e recepção de informações, gerando a necessidade de sistemas operacionaismais robustos e uma considerável demanda para o desenvolvimento de serviços e aplicações. Aplataforma Google Android surgiu para preencher esta lacuna. Dessa forma, este mini-cursopretende disseminar conceitos envolvidos no desenvolvimento de serviços e aplicações para aplataforma Google Android. Também será abordado como aplicações para dispositivos móveispodem consumir serviços web através da arquitetura REST.

6.1. IntroduçãoO Google Android OS, também chamado apenas de Android, é um sistema operacional de código abertopara dispositivos móveis e utiliza uma versão modificada do Sistema Operacional Linux. Permite adesenvolvedores criarem aplicações Java que controlam o dispositivo através de bibliotecasdesenvolvidas pela Google. O Android também provê uma infra-estrutura robusta de execução deaplicações Java. Apesar de ser recente (seu lançamento foi em 2008), o Android foi adotado rapidamentepor diversos fabricantes de dispositivos móveis e atualmente é a plataforma que mais cresce no mundo.

Atualmente, a plataforma Google Android é mantida pela OHA (Open Handset Alliance), umgrupo formado por mais de 40 empresas que se uniram para inovar e acelerar o desenvolvimento deaplicações e serviços para dispositivos móveis, trazendo aos consumidores uma experiência mais rica emtermos de recursos e menos onerosa financeiramente para o mercado. Pode-se dizer que a plataformaGoogle Android é a primeira plataforma completa, aberta e livre para dispositivos móveis. O AndroidSDK é o kit de desenvolvimento que disponibiliza as ferramentas e APIs necessárias para desenvolveraplicações para a plataforma Google Android, utilizando a linguagem Java.

Page 111: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

104

Este mini-curso visa abordar conceitos envolvidos sobre desenvolvimento de aplicações para aplataforma Google Android, apresentando os principais aspectos do desenvolvimento de aplicações paradispositivos móveis, com enfoque para o desenvolvimento de aplicações que consomem serviços webutilizando a linguagem Java. Pretende-se capacitar os participantes no desenvolvimento de aplicaçõesJava para plataforma Google Android com base no Android SDK e demonstrar a arquitetura REST(Representational State Transfer) de desenvolvimento de aplicações web. O curso procura explorar asfuncionalidades dessas tecnologias através do desenvolvimento passo a passo de aplicações-exemplos.

6.2. Arquitetura do Google Android

Android é uma pilha de software para dispositivos móveis que inclui sistema operacional, middleware eaplicações-chave. Esta pilha possui 4 níveis (Google, 2011):

Figura 6.1. Arquitetura da Plataforma Google Android (Google, 2011)

1. LINUX KERNEL: a base da pilha é o kernel. O Google usou a versão 2.6 do Linux para construir okernel do Android, que inclui serviços essenciais do sistema, tais como, gerenciamento de memória,gerenciamento de processos, gerenciamento de energia, configurações de segurança, configuraçõesde rede e drivers. O kernel também atua como uma camada de abstração entre o hardware dodispositivo e os outros níveis da pilha de software.

2. RUNTIME ANDROID e LIBRARIES: acima do kernel estão as bibliotecas do Android e o androidruntime. Android runtime consiste de um conjunto de bibliotecas que fornece a maioria dasfuncionalidades disponíveis nas principais bibliotecas da linguagem de programação Java e de umaMáquina Virtual Dalvik (DVM). Uma aplicação Android roda em seu próprio processo, com a sua

Page 112: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

105

própria instância da máquina virtual Dalvik. Dessa forma, nenhuma aplicação é dependente de outra;se uma aplicação pára, ela não afeta quaisquer outras aplicações executando no dispositivo e issosimplifica o gerenciamento de memória. Dalvik foi escrito de modo que um dispositivo possaexecutar várias VMs eficientemente. Android possui um conjunto de bibliotecas C/C ++ usado pordiversos componentes da plataforma. As principais bibliotecas são listadas abaixo:

System C library – uma implementação da biblioteca padrão C (libc), derivada do sistemaoperacional BSD, alterada para dispositivos embarcados baseados no Linux;

Media Libraries – baseada no OpenCORE da PacketVideo; estas bibliotecas suportamreprodução e gravação de muitos formatos populares de áudio, vídeo e imagem, tais como,MPEG4, H.264, MP3, AAC, AMR, JPG, e PNG.

Surface Manager – gerencia acesso ao sub-sistema de exibição e compõe as camadas gráficas 2De 3D para as aplicações.

LibWebCore – um moderno engine para um navegador web que alimenta o navegador doAndroid.

SGL – engine de gráficos 2D.

3D libraries – uma implementação baseada nas APIs OpenGL ES 1.0; estas bibliotecas usamaceleração de hardware 3D (quando disponível) ou o software embutido no sistema.

FreeType – renderizador de bitmap e fontes vetorizadas.

SQLite – engine leve e poderoso de banco de dados relacional para as aplicações.

3. APPLICATION FRAMEWORK: O próximo nível é o framework de aplicação que consiste nosprogramas que gerenciam as funções básicas do telefone, tais como, alocação de recursos,aplicações de telefone, mudança entre processos ou programas e informações sobre a localizaçãofísica do aparelho. Os desenvolvedores de aplicações têm acesso total ao framework de aplicação doAndroid. Isso possibilita tirar vantagem das capacidades de processamento e do suporte de recursosdo Android.

4. APPLICATIONS: No topo da pilha estão as aplicações em si. Aqui se encontram as funçõesbásicas do dispositivo, como fazer chamadas telefônicas, acessar o navegador web ouacessar sua lista de contatos. Esta é a camada do usuário comum, que utiliza a interface deusuário. Apenas os programadores do Google, os desenvolvedores de aplicação e osfabricantes de hardware acessam as camadas inferiores da pilha. O Android contém umconjunto de aplicativos, implementados em Java, como um cliente de e-mail, programa paraSMS (Short Message Service), calendário, mapas, navegador e gerenciador de contatos.

6.3. Componentes de uma aplicação Android

As aplicações Android podem ser divididas em quatro tipos de componentes básicos que são definidospela própria arquitetura (ABLESON,2007), são eles:

6.3.1. Activities

Funcionam como mediadores que definem como as informações serão apresentadas ao usuário, além decontrolar o fluxo da aplicação. Elas podem interagir com o usuário e trocar informações com outrasactivities ou services (MEIER,2009).

Page 113: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

106

A maioria do código que escreveremos para uma aplicação Android irá executar no contexto deuma activity. Activities normalmente correspondem a telas: cada activity mostra uma tela para o usuário.Quando esta não está em execução, o sistema operacional pode eliminá-la para liberar memória.

6.3.1.1. Ciclo de vida de uma Activity

Ao longo de sua criação até o momento de sua eliminação da memória, uma activity atravessará seisestados, podemos referenciar cada estado pelos métodos:

OnCreate

É chamado quando a activity é criada. Ela é obrigatória e chamada apenas uma vez, deve referenciar a telaque será apresentada ao usuário.

OnStart

É chamado quando a activity está ficando visível e já tem uma tela definida.

OnResume

É chamado quando a activity foi parada temporariamente e está retornando à execução.

OnPause

É chamado quando a activity está sendo tirada do topo da execução. Geralmente é utilizado para salvar oestado da aplicação.

OnStop

É chamado quando a activity não está mais visível e está em segundo plano.

OnDestroy

Executa os últimos processamentos antes da activity ser literalmente encerrada.

Page 114: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

107

Figura 6.2. Ciclo de vida de uma Activity.

6.3.2. Services

São programas que executam em segundo plano. Não interagem diretamente com o usuário e podem ficarexecutando por tempo indefinido.

6.3.3. Broadcast e Intent Receivers

São componentes que ficam aguardando a ocorrência de um determinado evento, pode-se entender comoevento a inicialização do sistema operacional, uma chamada de voz, a chegada de um SMS, um eventodisparado por uma aplicação (MEIER,2009).

Intents são elementos chave no Android, porque facilitam a criação de novas aplicações a partirde aplicações já existentes. Precisaremos utilizar Intents para interagir com outras aplicações e serviçosque proporcionarão informações necessárias para nossa aplicação.

6.3.4. Content Providers

Page 115: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

108

São os compartilhadores de conteúdo entre as aplicações, uma aplicação pode requisitar informações deoutra, por exemplo, uma aplicação pode receber dados da lista de contatos que é nativa do Android, e combase nesses dados, realizar algum processamento (LECHETA,2010).

6.4. Android SDK e seus pacotes para implementação de aplicações

O SDK é um conjunto de ferramentas utilizadas para desenvolver aplicações para a plataforma Android.Possui um emulador para simular o dispositivo móvel e uma API completa para a linguagem Java, comtodas as classes necessárias para desenvolver as aplicações (BURNETTE, 2008).

Existem atualmente três versões do SDK para atender a maior parte dos desenvolvedores: versãopara Windows, Linux e Mac OS.

O ambiente de desenvolvimento que nos utilizaremos nos exemplos seguintes é composto, alémdo JDK e Android SDK, pelo Eclipse IDE versão Galileo e o Android Development Plugin (ADT), umplugin que ajudará na integração da IDE com o emulador.

Os componentes do ambiente de desenvolvimento podem ser encontrados nos links a seguir:

JDK: http://www.oracle.com/technetwork/java/javase/downloads/index.html

Android SDK: http://developer.android.com/sdk/

Eclipse IDE: http://www.eclipse.org/downloads/

ADT: http://developer.android.com/sdk/eclipse-adt.html6.4.1. Conceitos básicos do Android

6.4.1.1 Criando uma Activity

A classe android.app.activity é utilizada para criar uma tela na aplicação. Essa tela é composta de várioselementos visuais, os quais no Android são representados pela classe android.view.View (LECHETA,2010).

A classe android.view.View pode representar algo simples como um botão, um checkbox ouimagem, como também pode representar algo complexo como um gerenciador de layout, a qual podeconter várias views aninhadas para organizar na tela.

Page 116: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

109

Figura 6.3. Exemplo de uma Activity.

O método setContentView(view) é o que faz a ligação entre a activity e a view e recebe comoparâmetro a view que será exibida na tela.

6.4.1.2 A classe R

A classe R é criada automaticamente pelo ADT e não pode ser alterada manualmente. Nela existemconstantes para os recursos do projeto. Cada constante é nomeada com o nome do recurso, que deve serescrito com letra minúscula e sem espaço, e recebe um valor inteiro.

6.4.1.3 O arquivo AndroidManifest.xml

Toda aplicação Android deve ter um arquivo AndroidManifest.xml em seu diretório raiz. Esse arquivoapresenta informações essenciais sobre a aplicação para o sistema operacional, que deve possuirinformações do sistema antes que possa executar qualquer solicitação do código do aplicativo(MEDNIEKS,2009).

Ele armazena informações como o nome do pacote da aplicação, descreve os componentes daaplicação, determina qual processo da aplicação vai armazenar os componentes, declara de que formas assolicitações devem ter permissões para acessar partes protegidas da API e interagir com outras aplicações.Declara também as permissões que os outros processos serão obrigados a ter, fim de interagir com oscomponentes da aplicação, enumera classes e perfis e fornece outras informações sobre como a aplicaçãoserá executada, declara qual o nível mínimo da API que o aplicativo exige e enumera bibliotecas queestarão relacionadas com a aplicação.

Page 117: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

110

Figura 6.4. Exemplo de arquivo AndroidManifest.xml

6.4.1.4 Criação de uma interface visual

O Android fornece um sofisticado e poderoso modelo, baseado em componentes, para construir suainterface, baseado no esquema de classes fundamentais: android.view.View e android.view.ViewGroup, einclui também as suas classes filhas chamadas de widgets e layouts respectivamente(LECHETA, 2010).

Podemos citar alguns exemplos de widgets como Button, TextView, EditText, ListView,CheckBox, RadioButton, Gallery, Spinner, e outros.

Podemos citar, também, exemplos de layouts como LinearLayout, FrameLayout, RelativeLayoutentre outros.

Para exemplificar a criação da interface visual criaremos uma tela de login, a qual conterá oscampos de nome de usuário e senha, e um botão para submetê-los.

Page 118: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

111

Figura 6.5. Representação gráfica da tela de login.

Figura 6.6. Código da tela de login

Podemos observar que foram utilizados três tipos de widgets e um layout. Dois TextView que sãoutilizados para renderizar strings na tela e dois EditText que são caixas para receber texto. Foi utilizado,também, um “Button” para enviar os dados e um LinearLayout para organizá-los na tela.

Podemos observar, também, alguns atributos como o “id” que serve como identificador de cadacomponente, o text que tem o funcionamento semelhante ao value do HTML e o atributo password queesconde os caracteres digitados no nosso EditText.

6.4.1.5 O método findViewById()

Page 119: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

112

Ao construir uma tela usando um arquivo XML de layout, surge a necessidade de recuperar os objetosdefinidos no arquivo dentro do código-fonte da aplicação para obter seus valores ou definir atributos(LECHETA, 2010).

Podemos recuperar um objeto de visão através do seu identificador único (android:id), passando-ocomo parâmetro no método findViewById(id). Esse método recebe o id do componente desejado eretorna uma subclasse de android.view.View, como as classes Button, TextView e EditText.

Na figura a seguir é mostrado como recuperar a senha inserida pelo usuário através do métodofindViewById(id) e uma pequena ajuda da classe R.

Figura 6.7. Exemplo da utilização do método findViewById()

6.4.2 Intent

Uma intent representa uma intenção da aplicação em realizar alguma ação. Ela envia uma mensagem aosistema operacional chamada de broadcast. Ao receber essa mensagem, o sistema operacional tomará asdecisões necessárias (LECHETA, 2010).

Uma intent é representada pela classe android.content.Intent e pode ser utilizada para enviaruma mensagem ao sistema operacional, abrir uma nova tela da aplicação, utilizando o métodostartActivity(intent), solicitar ao sistema operacional que ligue para determinado número de celular, abriro browser em um determinado endereço da internet, exibir algum endereço, localização ou rota no GoogleMaps dentre outros.

6.4.2.1 Navegação entre telas com passagem de parâmetros

Page 120: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

113

Existem dois métodos de se iniciar uma nova tela (activity), através dos métodos startActivity(intent) estartActivityForResult(intent,codigo) que apenas inicia uma nova activity ou inicia uma nova activity ecria um vínculo para ser utilizado ao retornar respectivamente (PEREIRA, 2009).

Para que o sistema operacional possa reconhecer nossa nova activity, é necessário adicionar seuendereço no arquivo AndroidManifest.xml.

Figura 6.8. Trecho do arquivo AndroidManifest.xml que contém a nova activity.

Podemos enviar informações para outras telas através de uma intent.

Figura6.9. Exemplo de passagem de parâmetro e troca de tela através de uma intent

Podemos observar na figura 6.9, que é criada uma intent com a activity da tela-alvo, é passadocomo parâmetro através do método putExtra() o texto contido no EditText referente ao usuário para apróxima tela, e finalmente, a nova activity é iniciada através do método startActivity(intent).

Page 121: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

114

Figura 6.10. Código da classe SegundaTela.

Observando essa classe, vemos que a intent é capturada através do método getIntent() erecebemos o parâmetro do login através do método getStringExtra(string). O conteúdo da tela é apenasum TextView com uma mensagem de boas vindas.

6.4.2.2 Intents Nativas do Android

Vimos no exemplo anterior que é possível iniciar uma nova activity através das intents. O Android possuialguns tipos de intents pré-definidas que podemos utilizar para enviar mensagens ao SO, porém, algumasdelas necessitam de permissões para executar, tais permissões precisam ser registradas no arquivoAndroidManifest.xml (PEREIRA,2009).

Várias intents como a ACTION_VIEW, que serve para iniciar o navegador, a ACTION_CALL,que é utilizada para realizar chamadas, a ACTION_PICK, que serve para visualizar todos os contatos,dentre outras, são utilizadas em aplicações Android.

A seguir veremos um exemplo de como chamar o navegador através de uma intent pré-definidano Android.

Figura 6.11. Exemplo da iniciação do navegador através de uma Intent.

O exemplo demonstra a utilização da intent ACTION_VIEW, mas, para usar essa intent énecessária a permissão INTERNET que deve ter sido registrada previamente.

Page 122: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

115

Figura 6.12. Inserindo a permissão INTERNET no arquivo AndroidManifest.xml

6.4.3 Intent Filter

Podemos utilizar intents para enviar mensagens ao sistema operacional, definindo uma ação queidentifique essa intent. Então quando a mensagem for enviada ao sistema operacional ela seja identificadapor essa ação, e somente uma activity que esteja mapeada para aquela ação será executada (MEDNIEKS,2009).

Esse tipo de rotina é bem prática quando queremos que mais de um programa esteja configuradopara receber uma ação (LECHETA, 2010).

Para definir essa ação, basta criar uma Intent usando seu construtor, que recebe uma string queidentifica a ação, como, por exemplo:

Figura 6.13. Exemplo de uma chamada de ação por uma Intent.

Logicamente, alguém tem que responder por essa ação. Para isto, precisamos mapear um IntentFilter no arquivo AndroidManifest.xml, para escutar esse chamado e delegar a execução à uma activity.

Figura 6.14. Código fonte da classe SegundaTela.

Page 123: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

116

Figura 6.15. Exemplo de mapeamento de uma Intent Filter.

6.4.4 BroadcastReceiver

A classe BroadcastReceiver é utilizada para responder a determinados eventos enviados por uma intent.Ela sempre é executada em segundo plano durante pouco tempo, normalmente dez segundos. Não deveter interface gráfica ou interação com o usuário (LECHETA, 2010).

É utilizada normalmente para executar algum processamento sem que o usuário perceba, emsegundo plano.

Assim como uma activity, devemos declará-lo no arquivo AndroidManifest.xml através da tag<receiver>, deve ser declarada, também, um Intent Filter para o broadcast, ou podemos registrá-lodinâmicamente, utilizando o método registerReceiver(receiver,filtro), que tem como parâmetros umaclasse-filha de IntentReceiver e uma instância da classe IntentFilter que possui a configuração da ação e acategoria (LECHETA, 2010).

O método para enviar uma mensagem para um broadcast é diferente do utilizado para uma intentque chama uma activity. O método utilizado é o sendBroadcast(intent) que envia uma mensagem paratodas as aplicações instaladas no celular.

Para implementar um BroadcastReceiver deve-se extender a classe BroadcastReceiver eimplementar o método onReceive() que será executado assim que o IntentFilter receber a mensagem.

Page 124: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

117

Figura 6.16. Utilizando o método sendBroadcast(intent).

Figura6.17.

Exemplo de um BroadcastReceiver.

Apenas por motivos didáticos foi utilizado a classe Toast para verificar o funcionamento doBroadcastReceiver. Recomenda-se que não tenha nenhum tipo de interação com o usuário.

Page 125: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

118

Figura 6.18. Exemplo do mapeamento de um BroadcastReceiver.

6.4.5 Notification

A classe Notification é utilizada para exibir informações ao usuário sem que este seja interrompido seestiver executando alguma atividade. O usuário pode escolher visualizar as informações neste momento,ou depois (LECHETA, 2010).

A notificação é exibida na barra de status do celular para chamar a atenção do usuário. Ao servisualizada, a intent configurada pode uma abrir uma nova activity ou pode ser usada para iniciar umserviço por exemplo (MEIER, 2009).

Um exemplo de notificação é a recepção de uma nova SMS, onde usuário pode decidir visualizá-la ou não.

Para criar uma notificação é necessário capturar um serviço do Android chamado deNOTIFICATION_SERVICE, será necessário, também utilizar a classe PendingIntent que criará umaintent que ficará pendente até o usuário decidir visualizar a notificação:

Figura 6.19. Exemplo da criação de uma notificação.

Page 126: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

119

Podemos observar, que o construtor da classe Notification recebe três parâmetros: o ícone quedeverá ser exibido, o título da notificação e a hora que aparecerá do lado da notificação.

Observamos, também, que deve-se informar através do método setLatestEventInfo, a mensagemque aparecerá na barra de status assim que a notificação for reconhecida pelo serviço de notificações doandroid, o título da notificação e a intent que deverá ser chamada quando o usuário visualizar anotificação.

Figura 6.20. Classe que será instanciada quando a notificação for visualizada.

A figura anterior mostra a classe que será instanciada quando o usuário visualizar a notificação.Capturamos o serviço de notificações do android, e pedimos para que a notificação não apareça mais nabarra de status através do método cancel(int) que recebe como parâmetro o id da notificação.

6.4.6 Service

Têm as mesmas características dos serviços dos sistemas operacionais de computador.

São utilizados quando queremos executar algo por tempo indeterminado em segundo plano e queexija um alto consumo de recursos, memória e CPU (LECHETA, 2010).

Geralmente são iniciados por um BroadcastReceiver para executar algum processamentodemorado, pois um BroadcasReceiver tem um tempo determinado para executar (PEREIRA, 2009).

É interessante que os serviços tenham suas próprias threads para que fiquem independentes doprograma hospedeiro. Eles também possuem um ciclo de vida próprio, semelhante ao de uma Activity,mas possuem apenas três estágios: o onCreate, onStart e onDestroy, que desempenham o mesmo papelque o de uma Activity.

Page 127: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

120

Para iniciar um serviço é necessário criar uma activity que chame o método startService(intent).Para parar um serviço existem duas maneiras: a primeira é chamar o método stopService(intent), a mesmaintent utilizada para iniciar o serviço deve ser usada para pará-lo, e a segunda forma é o próprio serviçochamar o método stopSelf().

Figura 6.21. Chamando um serviço.

Para implementar um serviço é necessário estender a classe android.

Page 128: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

121

Figura 6.22. Exemplo de um serviço.

Para exemplificar o funcionamento de um serviço, utilizamos esta classe, que quando iniciada,cria uma série de logs. Podemos observar que mesmo fechando a aplicação que iniciou o serviço, elecontinua criando logs até chamar o método stopSelf().

Page 129: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

122

É necessário mapear o serviço no arquivo AndroidManifest.xml e configurar um IntentFilter coma ação que iremos passar como parâmetro pela nossa Intent.

Figura 6.23. Exemplo do mapeamento de um serviço.

6.4.7 AlarmManager

São eventos agendados no sistema operacional para serem executados no futuro (LECHETA, 2010).

É utilizado quando é necessário executar algo uma vez em determinado horário ou ficar repetindode tempos em tempos.

Quando agendados, ficam ativos no sistema até que sejam explicitamente cancelados, ou osistema for reiniciado.

Para agendar um alarme, primeiro temos que definir uma intent com o BroadcastReceiver que iráresponder pelo nosso alarme. Depois temos que capturar o serviço do Android responsável pelogerenciamento dos alarmes, o AlarmManager.

Page 130: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

123

Figura 6.24. Agendando um alarme.

Figura 6.25. BroadcastReceiver que será chamado pelo nosso alarme.

6.5. Arquitetura REST de desenvolvimento de aplicações Web

Vivemos hoje uma febre de Apps – pequenos aplicativos auto-contidos que tem uma única função ecomumente são interfaces para sistemas Web. A maioria desses aplicativos é extremamente dependentede dados para serem úteis e esses dados podem vir dos mais variados lugares – por exemplo, a plataforma

Page 131: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

124

Android disponibiliza ao desenvolvedor uma pequena base dados SQLite onde ele pode criar suas tabelas,armazenar e buscar dados, mas cada vez mais esses dados vêm de serviços web.

A Web é uma plataforma “orientada a recursos”. Um Recurso pode ser definido como qualquercoisa que é exposta a Web através de um identificador e que possamos manipular (ler e/ou escrever)(WEBBER; PARASTATIDIS, 2010)..

Desde sua formalização REST2 vem sendo um termo e, mais adequadamente, uma arquitetura desoftware de sistemas Web cada vez mais utilizado, estudado e discutido. Esta arquitetura foi proposta peloDr. Roy T. Fielding em 2000 e desde então vem sendo adotada em vários sistemas de grande porte comoTwitter, Facebook, Flickr e todas as APIs de serviços públicos do Google como Google Agenda, GoogleHealth, Google Data e Google Maps.

Veremos a seguir o que é REST e, em seguida, formas de se trabalhar com REST em Java.

6.5.1 Definição

O protocolo HTTP, e consequentemente servidores HTTP, é um protocolo simples e sem muitos recursos.Em sua primeira versão ele apresentou endereçamento e statelessness: duas características de seu projetoque o tornou um avanço perante seus rivais e que ainda o mantém escalável mesmo nos mega-sites dehoje (RICHARDSON; RUBY, 2007).

Sistemas com esta arquitetura são sistemas Clientes-Servidores comuns, entretanto suasrequisições e respostas são construídas ao redor da transferência da representação de recursos. Recursossão os blocos fundamentais de sistemas baseados na web, ao ponto que a Web é considerada como“orientada a recursos” (WEBBER; PARASTATIDIS, 2010). A abstração chave de informação do RESTsão os recursos. Qualquer informação que pode ser nomeada pode ser um recurso: documentos, imagens,informações sobre o tempo, uma pessoa, e assim sucessivamente (FIELDING, 2000). Um dos recursosmais comuns da Web são páginas HTML, que em sistemas são comumente a representação de um recursointerno do sistema, por exemplo, uma página de exibição de um vídeo do YouTube é a representação dorecurso “vídeo” do sistema.

Um mesmo recurso pode ter várias representações diferentes. Utilizando o exemplo do vídeo doYouTube, uma representação é a página HTML onde é mostrado o vídeo, comentários, etc. outrarepresentação é vista quando o vídeo é incorporado em outra página. Nessa representação vemos apenasum player que carrega o vídeo em questão. Outra representação, um pouco menos conhecida, é arepresentação em XML3 ou mais recentemente JSON4, ambas tecnologias de transição de dadoshierárquicos.

Devido a essas características REST também requer que as aplicações façam total distinção entrecliente e servidor através da implementação das seguintes características:

2 Representational State Transfer – Transferência de Estado Representacional3 XML – eXtensible Markup Language – Linguagem de marcação extensível.4 JavaScript Object Notation – Notação de Objetos JavaScript.

Page 132: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

125

1. Cliente-Servidor: Clientes são separados dos Servidores por uma interface uniforme. Essa divisãofaz com que o cliente não se preocupe com, por exemplo, armazenamento de dados ao passo que oservidor não se preocupa com interface com o usuário;

2. Stateless (Sem Estado): A comunicação cliente-servidor ocorre sem que nenhum contexto relativoao cliente seja armazenado no servidor entre as requisições. Cada requisição de cada cliente contémtoda informação necessária para atender aquela requisição e a reposta deve conter toda ainformação para satisfazer a requisição;

3. Cache: Como é comum na Web, o cliente pode manter um cache das respostas do servidor,portanto é recomendado que as respostas contenham informações sobre se podem e como deve serfeito o cache a fim de evitar que clientes requisitem um mesmo recurso repetidamente. Um bomcache elimina várias interações cliente-servidor desnecessárias o que proporciona escalabilidade eperformance;

4. Camadas: Um cliente não pode normalmente distinguir se ele está ou não conectado ao servidorfinal ou apenas a um intermediário. Um sistema com vários servidores permite o balanceamento decarga, caches compartilhados e ajudam a manter uma boa segurança;

5. Código sob demanda (opcional): Servidores podem ser capazes de estender a funcionalidade deum cliente transferindo lógica para que ele execute. Exemplos disso são componentes compiladoscomo Applets Java ou scripts no lado cliente como JavaScript;

6. Interface uniforme: Todo cliente obedece ao mesmo formato de requisição e recebe o mesmoformato de resposta.

A arquitetura REST está fundamentada sob o protocolo HTTP e seus métodos. Clientes queacessam recursos informando sua intenção através do método que executam sob o recurso. A maioria dossistemas hoje em dia segue a seguinte convenção de métodos HTTP, concebidos para simular operaçõesde CRUD:

GET: Leitura;

POST: Escrita;

PUT: Alteração ou Atualização;

DELETE: Remoção.Muitas aplicações novas estão utilizando os princípios REST a fim de obterem um bom nível de

escalabilidade. Normalmente essas aplicações disponibilizam a seus usuários uma API dos métodosREST disponíveis, suas entradas e suas saídas.

Para compreender melhor, vejamos a API de um sistema referência em tecnologia REST: oTwitter.

O Twitter disponibiliza em seu website uma extensa e detalhada documentação da API de seusistema5. uma plataforma de apoio aos desenvolvedores que desejam criar clientes para o Twitter com

5 Disponível em http://dev.twitter.com/ - Acesso em 12 outubro 2011

Page 133: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

126

páginas de ajuda onde são descritos os métodos da API, um guia ao desenvolvedor e ferramentas paraajudá-lo.

Chamadas a alguns métodos da API podem ser feitas, para testes, através de um navegador webqualquer.

Durante a escrita deste texto, a API do Twitter aceita a seguinte chamada:http://api.twitter.com/1/users/show.xml?screen_name=fat. Para chamar estemétodo da API basta abrir esta URL em qualquer navegador web.

Ao abrir esta URL em um navegador, o que é feito é uma chamada a API através do métodoHTTP GET. Chamadas a qualquer API REST na Web são compostas de 3 partes:

1. A URL correspondente ao método da API

http://api.twitter.com/1/users/show

2. Os parâmetros da chamada ao método

screen_name = fat

3. O método HTTP utilizado para chamada aquela URL

Por padrão, toda transação HTTP dos navegadores atuais utiliza o método GET.

A URL é uma chamada ao método “1/users/show” da API do Twitter. Uma particularidade dessaAPI é a possibilidade de escolha do formato de representação do recurso: XML ou JSON, representadopela “extensão do arquivo” na URL.

6.5.2. REST em Java

Em Java chamadas a APIs REST são feitas utilizando chamadas HTTP simples, normalmente comobjetos java.net.URL e java.net.HttpURLConnection. Nos exemplos a seguir utilizaremos aAPI do Twitter como exemplo.

A forma mais simples de se executar uma chamada é a seguinte:

String apiCall = "<url de chamada a API>";

URL url = new URL(apiCall);

HttpURLConnection conn;

conn = (HttpURLConnection) url.openConnection();

Ao invocar o método openConnection() uma requisição HTTP GET é feita a URL

especificada em apiCall. Após essa chamada, é importante verificar o código de resposta dado pelo

Page 134: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

127

servidor. Normalmente um código de resposta 200 significa que tudo ocorreu como esperado. Outroscódigos de resposta podem ser especificados pela API.

if (conn.getResponseCode() == 200) {

// Tudo ocorreu como esperado.

}

Dessa forma podemos tomar alguma providência caso ocorra algum erro, e garantir um bomfuncionamento da aplicação.

Após a confirmação do sucesso da chamada o próximo passo é ler os dados da resposta doservidor. É necessário um cuidado especial com o tipo de dado esperado pois a resposta da API pode seruma imagem, ou um documento, ou até mesmo um Stream de dados. Vamos considerar que a resposta anossa chamada está em formato textual, caso qual podemos utilizar a seguinte técnica para captar oresultado num formato mais cômodo para manipulação:

BufferedReader reader = new BufferedReader(newInputStreamReader(conn.getInputStream()));

StringBuilder str = new StringBuilder();

String line;

while ((line = reader.readLine()) != null) {

str.append(line);}reader.close();

Após o recebimento da resposta, é uma boa prática sempre fechar a conexão junto ao servidorinvocando o método disconnect():

conn.disconnect();

Dessa forma podemos fazer chamadas a quaisquer API REST utilizando Java.

6.5.2.1 Interpretando Respostas

Em Java podemos quase sempre considerar um recurso disponibilizado pelo servidor com um Objeto.Comumente recebemos respostas em XML o qual é uma serialização de um objeto que está no servidor.

Devido a isso um ponto que requer especial atenção é a interpretação das respostas. APIs RESTutilizam representações do estado de um recurso (um Objeto) do sistema. Nestes casos a forma maiscomum de representação é textual, segundo um padrão determinado pela API, XML ou JSON.

Page 135: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

128

Existem várias bibliotecas disponíveis para se trabalhar com os formatos XML e JSON, algumasbastante sofisticadas e simples de usar. Para XML temos, por exemplo, uma biblioteca chamada jDOM6

que interpreta XML e dá ao desenvolvedor uma representação do documento XML na forma de um grafode objetos com uma interface nativa Java que podem ser facilmente percorridos e manipulados. ParaJSON há uma biblioteca chamada Gson7 disponibilizada pelo Google que pode transformar Objetos Javaem sua representação JSON e vice-versa:

Gson gson = new Gson();

String json = gson.toJson(meuObjeto);

MeuObjeto obj = gson.fromJson(json, MeuObjeto.class);

Através do uso de bibliotecas auxiliares é possível criar objetos concretos Java a partir derepresentações textuais dos mesmos.

A utilização de JSON é recomendada nestes casos pois grande parte dos sistemas REST atuaissão voltados para a interatividade entre sistemas de Websites, os quais são em sua maioria feitosutilizando JavaScript, linguagem-mãe da notação JSON e que dá suporte nativo a interpretação econstrução de objetos a partir de sua representação textual e vice-versa.

Referências

ABLESON, W. Frank; Unlocking Android - A Developer’s Guide. Ed. Manning, 2007.

BURNETTE, Ed.Hello, Android:Introducing Google`s Mobile Development Plataform. PragmaticBookshelf, 2008.

Google Android. Disponível em <http://developer.android.com/guide/basics/what-is-android.html>.Acesso em 12 outubro 2011.

LECHETA, Ricardo R. Google Android. São Paulo: Novatec, 2010, 2 ª ed.

MEDNIEKS, Zigurd; MEIKE, Blake. Desenvolvimento de Aplicações Android. São Paulo: Novatec,2009, 1ª ed.

MEIER, Reto. Professional Android Application Development. Indianapolis: Wiley Publishing, 2009, 1ª.ed.

PEREIRA, Lúcio C. Oliva. Android para Desenvolvedores. São Paulo: Brasport, 2009, 1ª ed.

WEBBER, Jim; PARASTATIDIS, Savas; ROBINSON Ian. REST in Practice: Hypermidia and SystemsArchitecture. O’Reilly Media, 2010.

6 http://www.jdom.org/ - Acesso em 12 outubro 20117 http://code.google.com/p/google-gson/ - Acesso em 12 outubro 2011

Page 136: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

129

RICHARDSON, Leonard; RUBY Sam. RESTful web services. O’Reilly Media, 2007.

FIELDING, Roy; Architectural Styles and the Design of Network-based Software Architectures.Dissertação de Doutorado, University of California, 2000.

Page 137: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

130

Resumo— Ambientes virtuais de aprendizagem em 3Dproporcionam uma experiência educacional com grande riquezade detalhes, sensação de imersão e interação com diversosrecursos educacionais. Um museu virtual, a partir de suaplataforma virtual em 3D e dos recursos que esta plataformapode oferecer, funciona como uma ferramenta educacionaleficiente, pois disponibiliza informação aos seus visitantes deforma simples e de fácil compreensão. No entanto, uma limitaçãodo uso de museus virtuais para a aprendizagem é que estesambientes não levam em consideração as característicasindividuais e contextuais dos visitantes, limitando suaaprendizagem. Assim, este artigo apresenta um museu virtual em3D denominado Musert, que tem como diferencial arecomendação personalizada de conteúdo. Para isso, utilizaontologias juntamente com agentes inteligentes para realizar arecomendação personalizada de conteúdo de forma satisfatória.

Palavras-chave— Museu 3D, padrão X3D, browser Xj3D erecomendação personalizada de conteúdo.

Abstract— virtual learning environments provide aneducational experience with great detail, sense of immersion andinteraction with various educational resources. A virtualmuseum, from its 3D virtual platform and resources that canoffer this platform, works as an effective educational tool as itprovides information to its visitors in a simple and easy tounderstand. However, a limitation of the use of virtual museumsto learn is that these environments do not take into account theindividual and contextual characteristics of visitors, limiting theirlearning. Thus, this paper presents a 3D virtual museum namedMusert, whose differential is personalized contentrecommendation. It uses ontologies along with intelligent agentsto perform personalized content recommendation satisfactorily.

Keywords— 3D museum, X3D standard, Xj3D browser andcontent personalized recommendation.

I. INTRODUÇÃO.

grande disponibilidade de computadores, tanto emescolas como nas residências e a facilidade de acesso a

internet tem influenciado a utilização de recursos tecnológicoscom o propósito de promover educação. Nos últimos anos,devido à facilidade de acesso a esses recursos, museus virtuaistem sido cada vez mais utilizados para fins educacionais. Um

Í. Moura, Programa de Pós-Graduação em Cinência da Computação –PPgCC, Universidade do Estado do Rio Grande do Norte e UniversidadeFederal Rural do Semi-Árido, Mossoró-RN, Brasil, [email protected]

F. Mendes Neto, Universidade Federal Rural do Semi-Árido, Mossoró-RN, Brasil, [email protected]

P. Sousa, Universidade Federal Rural do Semi-Árido, Mossoró-RN,Brasil, [email protected]

J. Lima, Universidade do Estado do Rio Grande do Norte, Mossoró-RN,Brasil, [email protected]

museu virtual é um sistema complexo, com uma gama depossibilidades para os usuários e por isso, tem mostrado sereficaz em uma série de projetos de ensino e estão sendousados para facilitar o processo educacional de maneiradiferente da convencional.

A busca por alternativas para suprir a necessidade depreservação do patrimônio histórico e cultural de uma regiãosão cada vez maiores, visto que este patrimônio é fundamentalpara a educação e contribui significativamente na definição daidentidade cultural. Entretanto, apesar de sua relevância, umasérie de artefatos e documentos de valor histórico imensuráveltêm sido perdidos ao longo do tempo devido à deficiência derecursos e técnicas de preservação que não conseguem evoluircom uma rapidez que evite tais perdas. Isto ocasiona prejuízosimensuráveis, provocados por diversos fatores, como tempo,manuseio e armazenamento inadequados [1]. Uma dessasalternativas é a utilização de técnicas de digitalização em trêsdimensões (3D) em projetos com grande apelo visual. Adigitalização em 3D pode ser utilizada para preservar bens dopatrimônio histórico e cultural em seus mínimos detalhes deforma segura, permitindo a construção de réplicas, mesmoquando o original não existe mais, bem como a criação decoleções virtuais acessíveis através da Internet [2].

Diante disso, é cada vez mais comum a utilização deconteúdo em 3D em Ambientes Virtuais de Aprendizagem(AVA), devido ao seu poder de promoção de sensação deimersão e disponibilidade de recursos visuais e educacionais.Mas, devido à riqueza de detalhes que as técnicas dedigitalização em 3D proporcionam e da grande cargainformacional que ambientes virtuais podem oferecer, emmuitas situações os usuários são incapazes de identificar assuas reais necessidades de aquisição de informação napresença de uma grande quantidade de dados que lhes sãodisponibilizados [3]. Na tentativa de resolver este problema,uma das formas encontradas é o armazenamento do perfil dosusuários e das atividades realizadas nos ambientes virtuais,que pode ser realizado com o uso de ontologias, e atualizaçãodinâmica destas informações, que pode ser feita por agentesinteligentes. A utilização de ontologias como meio dearmazenamento de informações se torna interessante pelo fatode permitir uma melhor compreensão dos dados por parte decomputadores, oferecendo uma maior precisão dos resultadosque são retornados. Além disso, devido à sua forma derepresentação do conhecimento, a utilização de ontologiaspermite a comunicação eficiente entre pessoas, agentes desoftware e sistemas e promove muitas outras vantagens emrelação aos mecanismos convencionais de armazenamento dedados [4] [5].

Com o propósito de superar estes desafios, este artigo

Í. Moura, F. Mendes Neto, P. Sousa e J. Lima

Desenvolvimento de um Museu Virtual 3DUtilizando Agentes Inteligentes

A

Page 138: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

131

apresenta um AVA na forma de um museu virtual,denominado Musert, que utiliza tecnologias como o padrãoX3D, o browser Xj3D e técnicas de modelagem específicaspara o desenvolvimento do museu e das peças que o compõe.Além disso, mostra como a utilização de agentes de software eontologias pode promover a recomendação personalizada deconteúdos do acervo levando em consideração ascaracterísticas do perfil de cada visitante, além de monitorar asatividades do visitante no ambiente virtual.

Assim, este trabalho está dividido em seis seções. A Seção2 mostra os trabalhos relacionados e apresenta uma brevecomparação entre estes trabalhos e o proposta descrita nesteartigo. A Seção 3 traz conceitos relacionados a ambientesvirtuais de aprendizagem e a utilização de técnicas derealidade virtual e aumentada neste tipo de ambiente. A Seção4 aborda os conceitos e benefícios da utilização de ontologiasjuntamente com a utilização de agentes inteligentes narecomendação personalizada de conteúdos. A Seção 5descreve a abordagem proposta neste artigo, que é odesenvolvimento de um museu virtual 3D com recomendaçãopersonalizada de conteúdo, e também apresenta ascaracterísticas e as etapas de modelagem e implementação domuseu. Já a última seção apresenta as considerações finas euma breve discussão sobre trabalhos futuros.

II. TRABALHOS RELACIONADOS.

No trabalho descrito em [6], é relatado o desenvolvimentode um framework para a modularização de um sistema degerenciamento de conteúdo em museus virtuais no ambienteSecond Life [7]. A principal questão é como gerenciar grandesquantidades de informações de um museu e disponibilizar deforma personalizada a informação apropriada para cadavisitante deste museu. Com este propósito foi desenvolvidoeste framework que consiste em dois subsistemas e seismódulos, que são relacionados com o conteúdo a serapresentado pelo museu e os perfis dos visitantes. As visitas einteração com o museu são o foco do framework, eproporciona a personalização do conteúdo disponibilizado aosusuários durante as visitas pelo museu. Para que o frameworkdesenvolvido obtivesse o sucesso desejado foram adotadastécnicas já existentes e já utilizadas em sistemas baseados naWeb e sistemas de recomendação. No entanto, estas técnicasainda precisam ser devidamente ajustadas, e esta tarefa foideixada como trabalho futuro.

No trabalho apresentado em [8], é descrito um museuvirtual imersivo, interativo e itinerante, denominado Museu 3I.Este museu tem como principal característica a possibilidadedo visitante escolher quais obras deseja visitar. Outro fatorimportante é a possibilidade de que qualquer pessoa possa serum curador do museu, sendo necessário apenas o envio deuma peça, modelada tridimensionalmente e que esteja noformato X3D, para o acervo do museu através do browserXj3D, que já é nativo da aplicação. Além disto, o museuoferece uma interface gráfica em 3D e paralelamente sãoapresentados menus no qual o visitante poderá selecionar asfuncionalidades que mais lhe interessam.

Outro trabalho tem como abordagem principal odesenvolvimento de AVAs que utilizam recursos em 3D e que

tem como objetivo principal acrescentar riqueza de detalhes naapresentação de conteúdo aos usuários. Desta forma, otrabalho apresentado por [9] mostra os aspectos de um museuvirtual que tem como proposta a preservação de artefatoshistóricos através da utilização de recursos multimídia. Paraisto, utiliza a narração digital do conteúdo apresentado, alémde utilizar técnicas de realidade virtual e levar emconsiderações informações dos usuários e curadores paramelhorar visualização das peças.

Desta forma, em comparação aos trabalhos descritos acima,este trabalho apresentará nas seções seguintes ascaracterísticas de um museu virtual 3D com recomendaçãopersonalizada de conteúdo. Para alcançar este objetivo foramutilizadas diversas tecnologias, dentre elas o padrão X3D, obrowser Xj3D e a linguagem de programação Java no móduloreferente à visualização em três dimensões do museu. Já nomódulo de recomendação personalizada de conteúdo, foramutilizados agentes inteligentes, ontologias e técnicas derecomendação de conteúdo. Com base nisso, a utilização dopadrão X3D e do browser Xj3D em relação à utilização demundos virtuais como Second Life, se deve ao fato da fácilinteração entre estas tecnologias juntamente com ontologias eagentes inteligentes para se alcançar o objetivo deste trabalhoque é a recomendação personalizada de conteúdo emambientes virtuais em 3D. Assim, os detalhes, desafios eresultados alcançados são apresentados nas próximas seções.

III. AMBIENTES VIRTUAIS DE APRENDIZAGEM.

AVAs podem ser conceituados como sistemas de softwareque facilitam os processos de aprendizado individual oucoletivo, utilizando para isso meios eletrônicos [10]. Elesprecisam basicamente da internet e fornecem muitas funçõesgerenciais, como, por exemplo, gestão do materialeducacional, além do acompanhamento e avaliação daaprendizagem dos alunos [10]. Desta forma, um ambientevirtual pode ser entendido como um espaço virtual que tem opoder de representar uma metáfora do mundo real [11].

Além disso, as simulações interativas disponibilizadas porambientes virtuais podem desempenhar um papel significativona facilitação da aprendizagem através do envolvimento dosalunos, pois fornecem contextos do mundo real [12].

A. AVAs com Recursos de Realidade Virtual e Aumentada

A criação de ambientes virtuais 3D, para a representação deAVAs, permite fantasiar sobre infinitas possibilidades para acriação de ambientes que não podem existir fisicamente, ouque, por algum impedimento, não podem disponibilizar todosos recursos desejáveis fisicamente. Com isso, os AVAs 3Dpermitem o surgimento de muitas ideias inovadoras para aconstrução de personagens (avatares) e desenho arquitetônicode edifícios com fins educacionais. Além disso, a ausência derestrições físicas no desenvolvimento deste tipo de ambiente ébastante significativa em relação às dificuldades encontradasna construção de ambientes reais. Em AVAs 3D não existemas restrições da vida real, como restrições orçamentárias,testes de solo, limitações dos materiais, requisitos deinfraestrutura, som ou até mesmo a gravidade. Assim, umsimples procedimento 3D pode, por exemplo, transformar e

Page 139: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

132

enriquecer cores de paredes envelhecidas e melhorar tristesestilos arquitetônicos [13].

B. Museus Virtuais

A popularidade dos ambientes virtuais na web permite ouso deste tipo de sistema para muitas aplicações, dentre elas aeducação. Seguindo esta evolução, o desenvolvimento demuseus virtuais tem avançado muito nos últimos anos e issotem facilitado a disponibilização das peças aos visitantes.Além disso, outro fator de destaque é o poder derepresentatividade que este tipo de ambiente possui, podendoocorrer através de diferentes tipos de mídias, tais como texto,imagem, áudio, vídeo, e outros tipos de dados maiscomplexos, como, por exemplo, objetos que usam técnicas demodelagem em 3D [11].

Um museu virtual pode ser caracterizado como umacoleção de artefatos eletrônicos e recursos informativosdisponibilizados de forma digital. Uma das vantagens que ummuseu virtual pode apresentar, em relação aos tradicionais, é areprodução digital de objetos reais, que ainda existem ou não,oferecendo a possibilidade de observar e interagir com asobras de arte, pertencentes ao museu virtual, que estãolocalizadas em outro lugar físico [14]. Outra vantagem é apossibilidade de disponibilizar diversos recursos multimídia,como textos, dados, gráficos e recursos de animação,enriquecendo ainda mais uma visita ao ambiente virtual [15].

Um museu virtual, a partir da utilização de tecnologias derealidade virtual juntamente com todos os outros recursos,funciona como uma ferramenta educacional eficiente, poisdisponibiliza informação aos usuários de forma simples e defácil compreensão [16].

Mas, mesmo diante de tantos recursos, pesquisadoresconcluem que um AVA não pode substituir a interação entrealuno e professor. Um problema que ocorre na maioria dosAVAs é que o conteúdo é passado para todos os alunos damesma forma e não muda de acordo com as necessidades decada um [1].

Assim, nos últimos anos, pesquisadores têm tentadomodificar este comportamento passivo e têm apresentado umasérie de práticas e tecnologias inovadoras para se chegar auma nova geração de AVAs, onde é possível ter habilidadesde interatividade reais e participação no processo deaprendizagem [17] [18]. Desta forma, este trabalho apresentauma alternativa para que recomendação de conteúdo sejarealizada de forma satisfatória.

IV. RECOMENDAÇÃO DE CONTEÚDO COM UTILIZAÇÃO DE

AGENTES INTELIGENTES E ONTOLOGIAS.

Atualmente, há um crescimento exponencial das fontes dedados e este fato torna a aquisição de conhecimento cada vezmais complicada devido à dificuldade que os usuários têm nomomento de identificar as suas reais necessidades deinformação [3] [19].

A. Agentes Inteligentes

Agentes inteligentes podem realizar diversas tarefas em umAVA, tais como monitorar as atividades do usuário, capturarde forma automática suas informações contextuais, como, porexemplo, a preferência por um determinado tipo de conteúdo e

frequência de utilização dos recursos, além de realizar arecomendação personalizada de conteúdo educacional [20].Seguindo esta linha, agentes inteligentes com característicaspedagógicas (AICPs), além das características de um agenteconvencional, têm como foco o alcance de objetivos quemelhorem o aprendizado dos usuários de AVAs. Devido à estacaracterística, eles têm sido utilizados como tutores, utilizandomodelos cognitivos dos usuários, além de proporcionarem umsuporte para a aprendizagem personalizada [21]. Atualmente,há um esforço considerável no emprego de AICPs emambientes tradicionais de aprendizagem. Isto se deve,principalmente, ao potencial destes agentes para proporcionarum aprendizado com uma maior riqueza de recursos e àexploração das habilidades sociais dos agentes, que podemproporcionar vários cenários de aprendizagem úteis para acolaboração no AVA [22].

Com base nisto, um sistema computacional em que dois oumais agentes interagem ou trabalham em conjunto de forma adesempenhar determinadas tarefas ou satisfazer um conjuntode objetivos é considerado um sistema multiagente. Ainvestigação científica e a implementação prática de sistemasmultiagente está focada na construção de padrões, princípios emodelos que permitam a criação de pequenas ou grandessociedades de agentes capazes de interagir convenientementede forma a atingirem os seus objetivos. Estes agentes exibemduas características fundamentais, a primeira é a capacidadede agirem de forma autônoma tomando decisões que levem àsatisfação dos seus objetivos, a segunda apresenta acapacidade de interagirem com outros agentes utilizandoprotocolos de interação social inspirados nos humanos eincluindo pelo menos uma das funcionalidades comocoordenação, cooperação, competição e negociação [23].

Cada agente trabalha como um elemento capaz de resolverproblemas de forma autônoma e que coopera com outrosagentes. Para que um agente possa operar como parte dosistema, é necessária a existência de uma infra-estrutura quepermita a comunicação ou interação entre os agentes quecompõem o sistema [24].

Juntamente com agentes de software, ontologias podem serutilizadas com diversas finalidades em AVAs, sendo uma dassuas principais aplicações é a personalização, utilizando paraisso as características específicas do perfil de cada usuário[25].

B. Ontologias

Ontologias têm sido amplamente utilizadas em áreas comoEngenharia do Conhecimento, Engenharia de Software, WebSemântica e muitas outras áreas da indústria da informação[25].

Neste trabalho, foi utilizada a OWL (Web OntologyLanguage), que tem sido pesquisada e desenvolvida pela W3C(World Wide Web Consortium). Esta linguagem é baseada noesquema XML, e é amplamente utilizado para descrever aontologias. Os desenvolvedores e os pesquisadores criaramtrês tipos de sub-linguagens para atender diferentes tipos denecessidades. Elas são OWL Lite, OWL DL e OWL Full, e acapacidade de expressão dessas três sub-línguagens écrescente. Neste trabalho está sendo utilizada a sub-linguagemOWL DL (Description Logic), que visa atender aos usuáriosque necessitam de forte capacidade descritiva para a realização

Page 140: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

133

de inferência pela ontologia. Esta sub-linguagem contém todosos elementos da OWL [26].

Ao longo das últimas décadas, as organizações têm aplicadograndes esforços na criação e manutenção de modelos dedados para suportar aplicações de negócios. Embora diferentestipos de modelos de dados existentes hoje como, por exemplo,relacional, objeto-relacional, orientado a objetos e hierárquico,o seu principal princípio permanece o mesmo: um modelo dedados captura ambos os principais elementos de dados emuma área de assunto e as características desses elementos dedados.

Sabendo que tanto os modelos de dados como ontologiaspodem capturar informações semelhantes, o que os difere é aforma como esta informação é codificada e a extensão a qual éexpressa. Atualmente, vários métodos têm sido desenvolvidospara gerar ontologias a partir de modelos de dados jáexistentes. Além disso, existem outras características que asdiferem bastante [27].

O objetivo da utilização de ontologias é a modelagem dedomínios levando em consideração as relações e conceitossemânticos com uma alta expressividade. Já a utilização debanco de dados é determinada pela modelagem de dadoslevando em consideração apenas a sua estrutura, ou seja,tabelas. Adicionado a estes fatores, tem-se que as ontologiaspodem ser utilizadas independentemente de aplicação e emcontextos variáveis [28].

Atualmente AVAs armazenam, através da utilização debanco de dados, uma grande quantidade de materiais deensino. Mas devido a este caráter de armazenamento, estesmateriais possuem pouca expressividade semântica. Destaforma, um repositório de materiais didáticos baseado nautilização de ontologias fornece uma partilha global através deum vocabulário dos conceitos no domínio de ensino. Alémdisso, a utilização de uma grande quantidade de materiais deensino pode tornar difícil a busca e compartilhamento deconhecimento a partir das demandas de ensino e aprendizagemem AVAs.

A utilização de AVAs pode não só apoiar o ensino e aaprendizagem pela web, mas também consegue partilhar deforma efetiva conhecimento e oferece uma gestãopersonalizada para cada usuário [29].

Desta forma, pode-se destacar que uma das principaiscaracterísticas de uma ontologia é a possibilidade decomunicação entre pessoas, agentes e sistemas, já que aontologia permite o reuso, a representação formal de conceitose o compartilhamento de conhecimentos [30].

Devido aos avanços da web semântica e a utilização deontologias, problemas como armazenamento, organização,compartilhamento e reutilização de informações de formaeficiente podem ser superados. O uso de ontologias paradescrever objetos de aprendizagem permite que diferentesaplicações educacionais compartilhem e reutilizem os mesmosconteúdos educacionais. Além disso, a capacidade de leiturade uma ontologia pelos computadores aumenta a velocidadede consulta às informações compartilhadas e a precisão dosresultados que são retornados [4].

Com isso, diante das vantagens que as ontologias possuem,neste trabalho foram utilizadas ontologias para armazenartodas as informações dos perfis dos usuários, as descrições daspeças a serem recomendadas e as informações queinfluenciam dinamicamente o comportamento da aplicação.

V. MUSERT.

Nesta seção são apresentadas as principais características domuseu virtual proposto neste artigo. A seguir são apresentadosos detalhes referentes à arquitetura da proposta juntamentecom as técnicas e tecnologias que juntas, viabilizam arecomendação personalizada de conteúdo.

A. Arquitetura do Museu Virtual

Este trabalho tem como diferencial a personalização deconteúdo em um museu virtual denominado Musert, tendocomo base para isso, ontologias e AICPs. A ideia principaldesta abordagem é identificar os requisitos do usuário, ou seja,suas preferências e suas características, e criar um modelodeste usuário. Nesse modelo deve constar o seu conhecimentoexpresso por meio de um conjunto de termos pertencentes auma ontologia comum, possibilitando adaptar o conteúdo deforma individual. A arquitetura desta proposta pode servisualizada na Figura 1, onde são representados os AIPCs,ontologias e a interação dos usuários com o museu.

Page 141: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

134

Figura 1. Arquitetura do museu virtual e utilização de agentes de software e ontologias na disponibilização personalizada de conteúdo.

Como pode ser visto na Figura 1, é possível perceber queinicialmente há a autenticação do visitante junto ao museu.Após esta autenticação, a visualização das descrições daspeças é acionada a partir da aproximação do visitante aossensores das peças, que ficam localizados em locais pré-determinados do museu. Antes disto, no entanto, o visitanteprecisa realizar um cadastro para que suas característicaspessoais sejam armazenadas na ontologia de contexto estático,que contém informações como, por exemplo, nome, idade eescolaridade. Além desta ontologia, há a ontologia de contextodinâmico, que é responsável por armazenar informações comoquantidade de visitas, peças visitadas, dentre outrasinformações de caráter dinâmico que representam a interaçãodo visitante com o ambiente virtual.

B. Agentes de Software com Características Pedagógicas

Na abordagem proposta foram implementados quatroagentes: Agente de Navegação (BAg - Browsing Agent),Agente Usuário (UAg - User Agent), Agente Recomendador(RAg - Recommender Agent) e o agente DF (DiretoryFacilitator). Cada agente tem um objetivo específico, mas serelacionam com os demais para alcançar o objetivo principal,que é a recomendação personalizada de conteúdo.

O UAg é responsável por monitorar as atividades dosvisitantes e recuperar, das ontologias de contexto estático edinâmico, as preferências de conteúdo que compõem os perfisdos visitantes e os seus respectivos históricos de peçasvisitadas. Com base no histórico de visitas, o UAg podeverificar o perfil de outros visitantes que possuem, em seushistóricos, preferências similares. Os UAgs também capturamas informações do contexto dinâmico do estudante. Para isso,o UAg realiza sua ação no momento em que o estudante seautentica na aplicação. Em seguida, todas essas informaçõessão cadastradas no agente DF.

O RAg tem como propósito detectar a descrição das peçasque são adequadas ao perfil do estudante, de acordo com asinformações providas pelo Agente DF e as informações acercado acervo do museu, obtidas da ontologia de descrições daspeças. Assim, o RAg encontra, inicialmente, a descrição queseria mais adequada de acordo com perfil do visitante. Emseguida, com base nessas informações, o RAg verifica aquantidade de visitas que o usuário fez àquela peça,juntamente com a quantidade de visitas que ele fez ao museu,e cadastra estas informações no agente DF que serãoconsultadas pelo BAg.

O BAg possui sensores de proximidade presentes por todo omuseu, principalmente nas peças. A partir da aproximação deum visitante a uma peça, o sensor percebe a intenção dovisitante em obter informações sobre a peça. Após isso, oBAg gerencia a disponibilização do conteúdo juntamente comos outros agentes.

O agente DF provê, para outros agentes, o serviço depáginas amarelas. Esse serviço consiste em uma lista de todosos agentes e os respectivos serviços oferecidos por cadaagente. Todo agente que desejar publicar seus serviços para

outros agentes devem encontrar um agente DF apropriado erequisitar o registro da sua descrição de serviço. Além disso,os agentes podem retirar e modificar o seu próprio registro deum DF e buscar neste, de acordo com um critério de busca,por um registro de serviço fornecido por outro agente. Essecomponente é de extrema importância para o SistemaMultiagente (SMA) proposto. Outro fator a ser observado éque o bom desempenho do RAg depende diretamente de ummecanismo eficiente para a representação do conhecimento.Assim, o mecanismo de recomendação desenvolvidoconsidera as informações do perfil do visitante, como, porexemplo, idade, escolaridade, conhecimento sobre o tema domuseu, dentre outras, contidas na ontologia de contextoestático, além da quantidade de visitas e as últimas peçasvisitadas, as quais estão contidas na ontologia de contextodinâmico. Estas informações são ponderadas de acordo com asdescrições disponíveis para cada peça e são utilizadas tambémpara sugerir a ordem da visita e que peças devem ser visitadas,levando em consideração as atividades de usuários com perfissemelhantes. Com base nisto, objetiva-se alcançar umarecomendação eficiente do conteúdo descritivo das peças domuseu.

B.1 Comunicação, Gerenciamento e Modelagem dosAgentes de Software

Com o surgimento do paradigma de ProgramaçãoOrientada a Agentes, várias metodologias para a modelagemde SMAs foram propostas nos últimos anos. Analisando asvantagens e desvantagens de cada metodologia, a metodologiaescolhida para modelagem dos agentes deste trabalho foi ametodologia MAS-CommonKADS+, que consiste em umaextensão à metodologia MAS-CommonKADS [31].

A metodologia MAS-CommonKADS+ mantém muitos dosmodelos já propostos na metodologia MAS-CommonKADS,porém realiza algumas modificações e adiciona novosconceitos. Foram adicionados à metodologia os modelos derequisitos, de papéis e de recursos, enquanto que os modelosde organização, de interação e de projeto foram alterados, como intuito de complementar a especificação dos diagramas daAML [31].

Diante disso, a modelagem dos agentes foi realizadautilizando, além da metodologia MAS-CommonKADS+, aferramenta StarUML [32] que tem o intuito de promovermecanismos de modelagem de software e uma plataforma quepossa substituir ferramentas UML comerciais.

Assim, para que se tenha uma visão do comportamentodinâmico do SMA, utilizou-se o Modelo de Interação. Omodelo de interação consiste na junção dos modelos decoordenação e de comunicação da MAS-CommonKADS.Nele são descritas, através da AML, todas as interaçõesentre agentes. Cada interação deve obedecer a um protocolode interação, o qual estabelece como os agentes podem secomunicar. A Figura 2 mostra o modelo de interação entre osagentes que compõem o SMA proposto.

Page 142: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

135

Figura 2. Modelo de interação entre agentes de software e ontologias.

No modelo apresentado na Figura 2, é possível visualizartoda a interação que ocorre entre os agentes e os recurso quesão consultados por cada um dos três agentes que compõem osistema. O diagrama mostra desde o comportamento do UAgno momento em que o visitante se autentica no Musert até ainformação chegar ao BAg, que irá buscar pelo conteúdo quemais se adéqua ao perfil do visitante.

Também é possível perceber que as informações decontexto estático e dinâmico do estudante precisarão serarmazenadas. Uma forma possível de se armazenar essainformação seria com a utilização de um banco de dados.Porém, o uso de uma ontologia para a representação desseconhecimento mostra-se como uma alternativa mais útil, vistoque esse conhecimento pode ser utilizado por outras partes daaplicação e, caso seja necessário modificar o comportamentodesta, pode-se criar uma nova forma de representar aontologia, sem modificar a codificação em si. Assim, é poreste motivo que estão sendo utilizadas duas ontologias, sendouma para representação do contexto estático e outra pararepresentação do contexto dinâmico do estudante.

Um dos componentes chaves de um SMA é a comunicaçãoentre os agentes. Na realidade, agentes precisam se comunicarpara que sejam capazes de cooperar, colaborar e negociar entresi. De uma forma geral, os agentes interagem entre si atravésde algumas linguagens de comunicação específicas, chamadaslinguagens de comunicação entre agentes. Atualmente, alinguagem de comunicação entre agentes mais difundida eutilizada é a FIPA ACL (Agent Communication Language).As principais características da FIPA ACL são a possibilidadede utilizar linguagens de conteúdos diferentes e ogerenciamento de conversações através de protocolos deinteração predefinidos [33].

A FIPA (Foundation for Intelligent Physical Agents) é umconjunto de padrões da IEEE Computer Society cujo objetivoé promover (i) tecnologias baseadas em agentes, (ii) ainteroperabilidade desses padrões com outras tecnologias, (iii)a interoperação de agentes heterogêneos e (iv) os serviços queeles podem representar [34].

Outra tecnologia utilizada na comunicação e gerenciamentodos agentes foi o framework JADE (Java Agent DevelopmentFramework), que voltado para o desenvolvimento de sistemasmultiagente e tem como uma de suas características, a suatotal implementação em linguagem Java e fornece umconjunto de recursos técnicos para o desenvolvimento desistemas multiagente. Além disso, provê uma plataforma deagentes distribuídos, gestão facilitada dos agentes ecomunicação entre agentes com troca de mensagens [35]. Aprincipal vantagem em utilizar o JADE reside no fato de que épossível utilizar todos os componentes da especificação FIPA,visto que o JADE atende todas as especificações deste padrãoe ainda o estende, sendo que um desses componentes é oagente DF. Outra vantagem dessa plataforma consiste napossibilidade de consultar e utilizar, através do MTS (MessageTransport Service), os agentes DFs que estejam sendoexecutados em outras plataformas de agentes. Assim, o DFutilizado na plataforma JADE deste trabalho pode, porexemplo, ser consultado, por meio da internet, por um agenteque esteja sendo executado em outro local, através doprotocolo MTP (Message Transport Protocol). Essacaracterística permite a criação de uma rede de colaboraçãoentre os agentes, mesmo que estejam localizados, porexemplo, em universidades distintas [34]. A Figura 3 mostra,através da interface gráfica do JADE, como ocorre acomunicação entre os agentes descrita através dos modelostextuais dos agentes apresentados anteriormente.

Page 143: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

136

Figura 3. Comunicação entre agentes através do JADE Sniffer Agent.

Como pode ser visto na Figura 3, inicialmente, o RAgsolicita por informações de serviço ao agente DF. Em seguida,o DF responde com as informações de serviços disponíveis.Desta forma, a comunicação entre os três agentes e o agenteDF é mantida durante toda a utilização do museu virtual.

B.2 Características e Utilização do Perfil do Usuário

O processo de personalização proposto pelo museu utilizaontologias para o gerenciamento do perfil do usuário, sugestãode serviços e registro das interações com o intuito de garantirum processo de aprendizagem automática.

A função principal que justifica a utilização da estruturaperfil do usuário é captura de todas as informações necessáriaspara promover a recomendação personalizada de conteúdopelo museu. Com base nisso, a utilização das ontologias decontexto estático e dinâmico têm participação direta nestarecomendação.

A ontologia de contexto estático provê informações maisgerais do usuário como nome, escolaridade, login e senha.Devida à natureza da utilização destes dados, é que estaontologia tem caráter estático, ou seja, a utilização do museu ea disponibilização de conteúdo, não influenciam estes dados.Já a ontologia de contexto dinâmico, contém dados comoquantidade de visitas e peças visitadas, e estes dados mudamno decorrer da utilização do museu.

Com base nestas características, a recomendação deconteúdo é realizada levando em consideração as informaçõescontidas nestas duas ontologias, ou seja, a recomendação érealizada levando em consideração o conhecimento prévio dousuário e a sua interação com o museu.

Existem basicamente três tipos de recomendação, arecomendação de conteúdo descritivo das peças do museu,

recomendação de rotas de visitas e as recomendações paraconteúdos externos.

A recomendação do conteúdo disponibiliza para o visitanteas descrições das peças que, a partir de sua aproximação, eledemonstra interesse. Além disso, o conteúdo recomendadoleva em consideração as informações de contexto estático edinâmico. Já a recomendação de rotas de visitas, sugere rotascom base nas peças que ainda não foram visitadas e rotas quepossam maximizar o conteúdo, apresentado informações deforma encadeada. As recomendações externas são realizadascom base nas peças já visitadas e no perfil do usuário comoalternativa para complementar o aprendizado sobredeterminada peça ou temática envolvida.

Diante disto, as informações contidas no perfil do usuário,ou seja, as informações de contexto estático e dinâmicooferecendo uma recomendação de forma direcionada paracada visitante, proporcionando um maior aproveitamento doconteúdo abordado pelo museu.

C. Aspectos de Implementação do Museu Virtual

Para o desenvolvimento do AVA proposto foram estudadasdiversas ferramentas e tecnologias. O objetivo principal erapermitir a navegação no ambiente virtual, bem como permitira interação com seus diversos elementos de formapersonalizada, utilizando para isso ontologias e agentes desoftware. Foram consideradas diversas tecnologias e mundosvirtuais, como o Second Life [7] e o OpenSim [36], pelafacilidade de tratamento gráfico, navegabilidade einteratividade. Entretanto, além da necessidade dedisponibilização do conteúdo na Web, a recomendação deconteúdo de forma personalizada exige a utilização de

Page 144: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

137

tecnologias específicas e, por esta razão, para este trabalhoforam escolhidos o padrão X3D e o browser Xj3D.

O X3D (Extensible 3D) é um padrão adotadointernacionalmente para 3D na Web. Ele é utilizado paraconstruir ambientes virtuais tridimensionais complexos. Trata-se de um padrão aberto que permite descrever em um arquivoformas e comportamentos de um ambiente virtual. As formassão descritas por figuras geométricas e os comportamentos dacena podem ser controlados internamente pelo arquivo X3D eexternamente por linguagens de programação ou script. Aescolha do X3D como ferramenta de implementação deveu-sea facilidade de utilização com a linguagem de programaçãoJava juntamente com a facilidade de comunicação com obrowser Xj3D. Além do fato do X3D oferecer suporte adiversas mídias e formas de interação, inclusive contendoAPIs que adicionam diversas funcionalidades às já existentes[37].

Browsers X3D consistem em aplicações capazes deinterpretar e processar as cenas, que na verdade são arquivosX3D, apresentando os modelos tridimensionais, animados ounão, e permitindo interações do usuário com os objetos docenário. A escolha do browser deve ser feita de acordo com asnecessidades do AVA a ser construído. Com isso, foiescolhido o browser Xj3D, que se trata de um software decódigo aberto e que possibilita a integração do ambiente comscripts na linguagem de programação Java, que é a linguagemutilizada na implementação dos agentes e na comunicaçãodestes com as ontologias [8] [38].

C.1 Modelagem Tridimensional

Para o desenvolvimento do Musert foram definidas trêsetapas: a modelagem tridimensional do museu, denominada deetapa de modelagem, a etapa desenvolvimento da interfacegráfica a ser utilizada pelo visitante, denominada etapa deinterface e, por último, a etapa de implementação dos agentese ontologias, que são os reais responsáveis pela recomendaçãopersonalizada de conteúdo, denominada etapa de inferência deconteúdo.

A etapa de modelagem foi concebida como primeiraatividade a ser executada. Para isso foi utilizado o Blender,que é um software livre e de código aberto para modelagem3D, que possui exportador para o formato X3D e que éamplamente utilizado pela comunidade de desenvolvedores deaplicações 3D [1] [16]. O resultado da utilização destaferramenta pode ser visualizado na Figura 4, onde éapresentada uma peça 3D em fase de modelagem.

Figura 4. Peça 3D do Musert em fase de modelagem com utilização daferramenta Blender.

Como o museu será disponibilizado na Internet, amodelagem foi otimizada em um nível que a qualidade gráficado ambiente virtual não inviabilizasse o uso devido àquantidade de informações trocadas entre o servidor onde aaplicação se encontra e seus visitantes. Deste modo, foramutilizadas texturas otimizadas em relação à quantidade dedados, mas que ao mesmo tempo promovem uma aparênciarealista ao ambiente. Adicionalmente foram utilizadas técnicasde implementação peculiares do X3D, que evitam a replicaçãodesnecessária de código e que, consequentemente, aumentama velocidade de transmissão das informações oferecidas peloambiente [16].

No projeto da interface foi utilizada a linguagem deprogramação Java juntamente com o browser Xj3D. O Xj3Dé um browser em conformidade com as especificações doX3D, implementando, inclusive, funcionalidades nãoespecificadas pelo padrão, o que facilita o desenvolvimento deambientes virtuais 3D com interatividade complexa e altaqualidade gráfica. No Musert, o visitante terá acesso ao museue poderá navegar por todas as salas do museu e visitar as peçascontidas em cada sala. A utilização de sensores e omonitoramento dos agentes permite a interação com as peçasde forma inteligente, ou seja, fornecendo uma descrição daspeças de forma personalizada. O resultado da modelagem domuseu pode ser visualizado na Figura 5, onde é mostrada atela inicial apresentada aos visitantes.

Figura 5. Visualização externa do Musert.

No Musert, a inferência é provida pela interação entre osagentes e as ontologias com as descrições das peças e com asinformações dos visitantes. A ontologia de contexto estáticocontém informações cadastrais básicas de cada visitante,enquanto que a ontologia de contexto dinâmico contém asinformações referentes à interação do visitante com o museu,ou seja, nesta ontologia são armazenadas informações como aspeças que já foram visitadas, a quantidade de visitas ao museu,a quantidade de visitas a cada peça e as salas visitadas.

Com isto, por meio da inferência realizada pelos agentesnestas duas ontologias, é possível recomendar uma rota devisita e uma descrição mais apropriada de cada peça para cadaperfil de usuário. Esta recomendação proporciona umaexperiência educacional ímpar e, ao mesmo tempo, eficaz paraa necessidade de cada visitante.

C.2 Sensores

A utilização de sensores foi adotada com o objetivo depermitir a geração de eventos de acordo com a ação dovisitante no museu. Um exemplo de sensor utilizado é oProximitySensor. Este sensor gera eventos ao chegar próximode um determinado objeto, neste caso, peças do museu epontos específicos que acionam mecanismos para maximizar a

Page 145: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

138

experiência educacional do visitante do museu. Essessensores estão sendo utilizados para que o visitante possavisualizar as informações a respeito das peças de formainterativa. Assim, eles estão sendo empregados para ativar aexibição das descrições das peças, para recomendar salas aserem visitadas e rotas a serem adotadas, além de informaçõessobre o próprio museu [38]. Na Figura 4 é possível observar ainteração do visitante com o museu a partir da aproximação deuma região específica do museu.

Figura 6. Interação entre visitante e o museu a partir da atuação de agentes desoftware.

Como pode ser visto na Figura 6, além da existência desensores de proximidade nas peças do museu, existem sensoresde proximidade em pontos específicos do museu com opropósito de promoverem uma experiência educacionaldiferente por meio de sugestão de salas a serem visitadas e aordem em que elas são visitadas.

VI. CONCLUSÕES

Neste artigo, foi descrita a implementação de um museuvirtual 3D que utilizou tecnologias como a ferramenta demodelagem Blender para a modelagem do museu e das peçasque o compõe, além do padrão X3D e do browser Xj3D paradisponibilizar o conteúdo do museu na web. Além disso,também utilizou a linguagem de programação Java, agentesinteligentes e ontologias para a realização da recomendaçãointeligente de conteúdos do acervo. Desta forma, a soluçãoproposta objetiva tornar a aprendizagem, a partir das visitas aomuseu, adequada às necessidades de cada visitante.

Desta forma, como trabalhos futuros, pretende-se submetero ambiente desenvolvido à avaliação de um museólogo, paraque a aplicação tenha uma melhor abordagem no que tange oaspecto do conteúdo descritivo das peças recomendadas. Tem-se também como proposta futura a integração do sistema comredes sociais ou outros mecanismos de identificação paraajudar no levantamento do perfil do usuário e ajudar amelhorar a formar como os dados de cada usuário são obtidos,evitando o preenchimento de formulários antes de utilizar oambiente. Além disso, objetiva-se mensurar o quanto aabordagem é eficaz na realização da recomendação sob a óticaeducacional, tendo em vista que testes preliminares mostramque o ambiente realiza a recomendação de forma satisfatóriaobedecendo todos os critérios apresentados anteriormente.Com base nisso, objetiva-se realizar um estudo de caso comuma turma de um curso de ensino a distância para verificar oimpacto da abordagem proposta na adequação do conteúdo.

REFERENCIAS

[1] Í. B. G. Moura, J. D. Lima, P. S. M. Sousa, e F. M. Medes Neto,“Musert: Um Museu Virtual em 3D com Recomendação Personalizadade Conteúdo”, In Anais do XXIII Simpósio Brasileiro de Informática naEducação, SBIE, Rio de Janeiro, RJ, 2012.

[2] I. J. A. Soares, L. Silva, O. R. P. Bellon e A. Vrubel, “3D VirtualMuseum for Digital TV”, In WebMedia ’09, Fortaleza, CE, 2009.

[3] M. A. Zeb and M. Fasli, “Adaptive user profiling for devianting userinterests” In: 3rd Computer Science and Electronic EngineeringConference (CEEC), p. 65-70, 2011.

[4] P. Q. Dung and A. M. Florea, “An Architecture and a Domain Ontologyfor Personalized Multi-agent e-Learning Systems”, In ThirdInternational Conference on Knowledge and Systems Engineering(KSE), p. 181-185, 2011.

[5] C. S. Bhatia and S. Jain, “Semantic Web Mining: Using OntologyLearning and Grammatical Rule Inference Technique”, In: InternationalConference on Process Automation, Control and Computing (PACC), p.1-6., 2011.

[6] K. Sookhanaphibarn and R. Thawonmas, “A Conten ManagementSystem for User-Driven Museums in Second Life”, In: InternationalConference on CyberWords (CW), p. 185-189., 2009.

[7] C. J. Liu and G. Wang, “Using Second Life in ESL/EFL Teaching andReacher-Training in the Web2.0 Environment”, In IEEE Symposium onEletrical & Eletronics Engineering (EEESYM), p. 717-720, 2012.

[8] E. L. Falcão e L. S. Machado, “Museu 3I: Publicação e Visitação Onlinede Acervos Tridimensionais”, In Anais do VII Workshop de RealidadeVirtual e Aumentada (WRVA),São Paulo, SP, 2010.

[9] S. Rivic e A. Sadak, “Multimedia Techniques in Virtual MuseumApplications in Bosnia and Herzegovina”, In International Conferenceon Systems, Signals and Image Processing (IWSSIP), p. 1-4, 2011.

[10] M. H. Bahiraey, “Quality of collaborative and individual learning invirtual learning environments”, In Second International Conference onE-Learning and E-Teaching (ICELET), p. 33-39, 2010.

[11] R. R. Dantas, J. C. P. Melo, J. Lessa, C. Schneider, H. Teodósio e L. M.G. Gonçalves, “A Path Editor for Virtual Museum Guides”, In IEEEInternational Conference on Virtual Environments Human-ComputerInterfaces and Measurement Systems (VECIMS), 2010.

[12] Z. O. Kostic, A. D. Jevremovic, D. S. Markovic e R. M Popovic,“Virtual Educational System and Communication” In 10th InternationalConference on Telecommunicatio in Modern Satellite Cabble andBroadcasting Servies (TELSIKS), p. 373-376, 2011.

[13] N. Saleeb e G. Dafoulas, “Pedagogical immigration to 3D virtualworlds: A critical review of underlying themes and their concepts”, InInternational Conference on Information Society (i-Society), p. 401-409,2010

[14] G. Guidi, R. Trocchianesi, G. Pils, G. Morlando, e A. Seassaro, “AVirtual Museum for Design: New forms of interactive fruition”, In 16thInternational Conference on Virtual Systems and Multimedia (VSMM),p. 242-249, 2010.

[15] Y. Chengwei, Y. Chengle, L. Shijun, M. Xiangxu e W. Rui, “AnApproach of Personalized 3D Scene Customization Based onMultimedia Resources” In International Conference on Multimedia andSignal Processing (CMSP), p. 131-135, 2011.

[16] Í. B. G. Moura, J. D Lima, F. M. Mendes Neto, P. S. M. Sousa,“MUSERT: Um Museu Virtual em 3D para a Preservação do PatrimônioHistórico e Cultural do Semiárido Brasileiro”, In Anais da V EscolaRegional de Computação dos Estados do Ceará, Maranhão e Piauí(ERCEMAPI), 2012.

[17] M. H. Bahiraey, “Quality of collaborative and individual learning invirtual learning environments”, In Second International Conference onE-Learning and E-Teaching (ICELET), p. 33-39, 2010.

[18] J. Z. Jun e W. Z. Bin, “Ideas transforming in the public arts education ofvirtual museum”, In 6th International Conference on Computer Science& Education (ICCSE), p. 649-653, 2011.

[19] T. T. Primo, R. M. Vicari, J. M. C. Silva, “Rumo ao Uso de MetadadosEducacionais em Sistemas de Recomendação”, In Anais do XXISimpósio Brasileiro de Informática na Educação, SBIE, João Pessoa,PB, 2010.

[20] L. C. N. Silva, F. M. Mendes Neto e L. Jácome Júnior, “MobiLE: Umambiente Multiagente de Aprendizagem Móvel para Apoiar aRecomendação Sensível ao Contexto de Objetos de Aprendizagem”,

Page 146: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

139

Artigo Completo, In Anais do XXII Simpósio Brasileiro de Informáticana Educação, SBIE, Aracaju, SE, 2011.

[21] L. Qu, N.Wang e W. L. Johnson, “Choosing When to Interact withLearners”, In Proceedings of the 9th international Conference onIntelligent User Interfaces, 2004.

[22] E. Soliman e C. Guetl,“Intelligent Pedagogical Agents in immersivevirtual learning environments: A review”, In Proceedings of the 33rdInternational Convention, MIPRO, p. 827-832, 2010.

[23] V. R. Lesser, “Cooperative multiagent systems: a personal view of thestate of the art”, In IEEE Transactions on Knowledge and DataEngineering, v. 11, n. 1, p. 133-142, 1999.

[24] L. P. Reis, “Coordenação em Sistemas Multi-Agente: Aplicações naGestão Universitária e Futebol Robótico”, In PhD Thesis, FEUP, Julho2003.

[25] H. Zhao, S. Zhang e J. Zhao, “Research of Using Protégé to BuildOntology”, In 11th International Conference on Computer andInformation Science (ICIS), p 697-700, 2012.

[26] N. Prat, J. Akoka e I. Comyn-Wattiau, “Transforming multidimensionalmodels into OWL-DL ontologies”, In 6th International Conference onResearch Challenges in Information Science (RCIS), p 1-12, 2012.

[27] K. M. Albarrak, E. H. Sibley, “A Survey of Methods that TransformData Models into Ontology Models”, In International Conference onInformation Reuse and Integration (IRI), p 58-65, 2011.

[28] “Ontological Foundations for Structural Conceptual Models”, In PhDThesis, Centre for Telematics and Information Technology CTIT,Enschede, The Netherlands, 2005.

[29] R. Zhao e C. Zhang, “An Ontology–Based Knowledge ManagementApproach for E-Learning System”, In International Conference onManagement and Service Science (MASS ‘09), p 1-4, 2009.

[30] W.Min, C.Wei, e C. Lei, “Research of ontology-based adaptive learningsystem”, In International Symposium on Computational Intelligence andDesign, ISCID ’08, v. 2 , p. 366 –370., 2008.

[31] M. J. D. O. MORAIS II, “MAS-CommonKADS+: Uma Extensão àMetodologia Mas-CommonKADS para Suporte ao Processo Detalhadode Sitemas Multiagentes Racionais”,Dissertação de Mestrado.Universidade Estadual do Ceará - UECE. Fortaleza, CE. 2010.

[32] STARUML. StarUML - The Open Source UML/MDA Platform. PáginaSourcefourge do STARUML, 2011. Disponivel em:<http://staruml.sourceforge.net/en/>. Acesso em: outubro de 2012.

[33] L. C. M. Silva, “MobiLE – Um Ambiente Multiagente de AprendizagemMóvel para Apoiar a Recomendação Ubíqua de Objetos deAprendizagem.”,Dissertação de Mestrado. Universidade do Estadual doRio Grande do Norte – UERN e Universidade Federal Rural do Semi-Árido - UFERSA. Mossoró, RN. 2012.

[34] FIPA. Welcome to the Foundation for Intelligent Physical Agents. SiteOficial do Padrão FIPA, 2011. Disponivel em: <http://www.fipa.org/>.Acesso em: outubro de 2012.

[35] JADE, “Java development framework: an open-source platform for peer-to-peer agent based applications”. Online: http://jade.tilab.com/. Acessoem: setembro/2012.

[36] W. Ridgewell, V. Kumar, O. Lin and Kinshuk, “OpenSim Virtual asPlatform for Enhanced Learning Concepts”, In IEEE InternationalConference on Advanced Technologies (ICALT), p.623-624, 2011.

[37] D. P. S. Medeiros e L.S. Machado, “X3D e Integração Multimídia paraRepresentação de um Sítio Arqueológico”, In Anais do VII Workshopde Realidade Virtual e Aumentada (WRVA),São Paulo, SP, 2010.

[38] Í. B. G. Moura, F. M. Medes Neto, P. S. M. Sousa e J. D. Lima,“Utilização do Padrão X3D no Desenvolvimento de um Museu VirtualImersivo com Recomendação Personalizada de Conteúdo Através doUso de Agentes Inteligentes e Ontologias”, In Anais do IV Workshopde Realidade Virtual e Aumentada (WRVA), Paranvaí, PR, 2012.

Íthalo Bruno Grigório de Moura é Tecnólogo em Análise Desenvolvimentode Sistemas pelo Instituto Federal do Piauí (IFPI),Teresina (2010). Atualmente faz parte do NúcleoTecnológico de Engenharia de Software (NTES) naUniversidade Federal Rural do Semi-Árido (UFERSA).Ingressou em 2011 no Programa de Pós-Graduação emCiência da Computação ofertado pela Universidade doEstado do Rio Grande do Norte - UERN e pela UFERSA.

Francisco Milton Mendes Neto possui graduação em Ciência daComputação pela Universidade Estadual do Ceará (1997),mestrado em Informática pela Universidade Federal deCampina Grande (2000) e doutorado em Engenharia pós-graduação em Ciência da Computação da UniversidadeFederal Rural do Semi-Árido (UFERSA). Temexperiência na área de Ciência da Computação, comênfase em Engenharia de Software, atuandoprincipalmente nos seguintes temas: ensino a distância,

aprendizagem colaborativa com suporte de computador, engenharia doconhecimento, gestão do conhecimento e sistemas multiagentes.

Paulo Sérgio Maia de Sousa é Bacharelando em Ciência da Computaçãopela Universidade Federal Rural do Semi-Árido(UFERSA). Atualmente faz parte do Núcleo Tecnológicode Engenharia de Software (NTES). Atua principalmentena área de Engenharia de Software, principalmente nosseguintes temas: ensino a distância, gestão doconhecimento e sistemas multiagentes.

João de Deus Lima possui graduação em Licenciatura em Matemática pelaUniversidade do Estado do Rio Grande do Norte (1983),mestrado em Matemática pela Universidade Federal doCeará (1996) e doutorado em Engenharia Elétrica pelaUniversidade Estadual de Campinas (2002). Atualmente éprofessor adjunto 4 da Universidade do Estado do RioGrande do Norte, lotado no Departamento de Matemática eEstatística e do quadro permanente de professores domestrado em Ciência da Computação UERN-UFERSA. A

área de interesses é Sistemas de Telecomunicações, com enfases emmodulações, códigos corretores de erros, canais e processamento digital deimagens. Para tanto utiliza ferramentas matemáticas como a TopologiaAlgébrica, Geometria Riemanniana e Teoria dos Grafos.

Page 147: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

140

Abstract– 1In order to send images over the network from onecomputer to another in a Telerobotic system more adequately, ithas developed a way to transmit images over the network adaptingit to the programming language chosen in this system. The work,therefore, is to capture a frame of a camera through a library forgames, turn it into text and send over the network to anothercomputer using socket programming, in the target are made ofinverted steps, gets converted to text in image again to use on anypurpose. From the experimental research, several tests wereperformed to reach the synthesis scheme presented in this paper.

Keywords—Wireless Networks, Python, Images, WirelessTransmission.

I. INTRODUÇÃO

os dias atuais, o vídeo é considerado parte fundamentalna interação com o usuário quando se fala em sistemas

web, monitoração ou em projetos de Telerobótica. Assim quea Internet surgiu, no final da década de 80, sua velocidade eramuito limitada, onde a conexão entre Brasil e Estados Unidosoferecia uma banda que suportava, no máximo, 9 kbps [8].Acreditava-se que a transmissão de imagens congestionariatoda a rede entre os dois países. Esse é o motivo pelo qualquando a interligação mundial das redes surgiu, a transmissãode dados era limitada, afetando diretamente o layout dos sitesda época, onde estes eram compostos somente por texto [9],mídia mais leve de ser transmitida.

Um site composto somente por texto, implica em um visualextremamente rústico, tornando pouco o interesse dos usuáriosao navegar e permanecerem na página acessada. Diante desteimpasse, viu-se que realmente era crucial o envio de mídiasmais pesadas, como imagens com resolução cada vez maisaltas, ou até vídeos a longas distâncias. Esse problema foiresolvido com o avanço da tecnologia, que passou adisponibilizar bandas de transmissão de dados mais largas,integradas a linguagens de programação que passaram adisponibilizar bibliotecas específicas, também facilitadoras dainteratividade com o usuário. Em suma, capturar uma imagempara depois convertê-la em texto foi uma das soluçõesencontradas para a transmissão de imagens através da rede,

M. Z. B. Araujo, Universidade Estadual do Piauí (UESPI), Parnaíba, Piauí,Brasil, [email protected]

F. M. A. Araujo, Instituto Federal de Educação, Ciência e Tecnologia doPiauí (IFPI), Parnaíba, Piauí, Brasil, [email protected]

diminuindo até, o nível de congestionamento no tráfego dosdados.

Com base nisto, objetiva-se enviar imagens entredispositivos pela rede usando Python. Para isto seráapresentada a seguinte metodologia: pode-se usar a linguagemPython por ter um fácil entendimento [10] usando suabiblioteca para jogos Pygame, pois dá suporte a captura deframes da webcam, além de ter algumas funções paramanipulação de imagens, trabalhando junto a bibliotecasocket, que se responsabiliza pela comunicação entredispositivos através da rede, já inclusa na biblioteca padrão doPython.

A partir desta metodologia, os resultados esperados irãodepender diretamente da taxa de transferência do equipamentoutilizado no meio de transmissão, seja wireless ou não.

Neste artigo serão abordados a metodologia usada, exemploe configuração de um código em Python, testes realizados comum programa mais elaborado desenvolvido usando estamesma metodologia, seguidos dos resultados obtidos.

II. METODOLOGIA

Python, em um propósito geral, é uma linguagem deprogramação de computador de código aberto. É otimizadapara qualidade de software, a produtividade do desenvolvedor,a portabilidade do programa e integração de componentes [4].

O Python, ao ser instalado, leva consigo sua bibliotecapadrão, centenas de módulos que contêm ferramentas quepermitem ao programador uma interação com o sistemaoperacional, interpretador e internet [1]. Seu conteúdo extenso,escrito na linguagem C, permite um melhor uso defuncionalidades do sistema, bem como dispositivos de entradae saída de dados. Partindo do ponto em que, funciona emqualquer plataforma que tenha compilador de C, assim que oPython é instalado, dá suporte para a programação de socket.O socket é um meio para programação de redes comfuncionamento baseado na tecnologia Cliente/Servidor,possibilitando a comunicação entre dispositivos conectados arede como: celulares, tablets, computadores entre outros.

Nesse sentido, percebe-se que o Python, desenvolvidobasicamente em C/C++, resulta em uma boa manipulação dedispositivos de entrada/saída como, por exemplo, umawebcam. Pygame é uma biblioteca para desenvolvimento dejogos usando Python que dá suporte também ao uso dawebcam, bem como, algumas funções para manipulação de

M. Z. B. Araujo and F. M. A. Araujo

Transmission of Images Captured in Real Timethrough Wireless Network using the Python

Language: A possible way of WirelessTransmission

N

Page 148: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

141

imagens, sendo possível, até mesmo, transformar uma imagemem texto ou vice versa.

Usa-se uma função tostring dessa biblioteca, capaz deconverter uma imagem em string. Já a função fromstring éusada para realizar a tarefa inversa, transformando o texto emimagem novamente. Em seguida, o socket é criado econfigurado com mesmo endereço IP, mais precisamente o IPdo servidor, em dois ou mais dispositivos, porta decomunicação e protocolo para que a conexão seja estabelecida,captura-se um frame da câmera e transformando-o em texto,sendo assim, possível enviá-lo entre os hosts da rede com alinguagem Python.

A Figura 1 mostra o trecho final de uma imagem convertidaem texto, composta por cabeçalho onde possui informaçõessobre a imagem como largura, altura, entre outros, seguido poruma sequência de caracteres que substitui os pixels. Cadapixel é composto por três cores: vermelho, verde e azuldependente do padrão de cores usado na configuração dawebcam. Cada cor recebe um valor que está compreendidoentre 0 e 255, representando sua intensidade que quandomisturadas, pode compor imagens de 24 bits de cores.

Figura 1. Trecho final da string retornada pela função tostring, seguida de seutamanho mostrado pela função len.

Figura 2. Arquitetura do Sistema.

A Figura 2 ilustra a funcionalidade do programadesenvolvido neste trabalho, que consiste em transferirimagens a partir de um computador. Esse esquema mostra ocaminho percorrido pelos dados transferidos, que inicia-secom a captura da imagem através da função get_image dabiblioteca Pygame, onde retorna um objeto Surface, que éconvertido em texto pela mesma biblioteca. Com a classeimage são passados como parâmetros um objeto Surface e umpadrão de cores RGB, usado neste estudo. Com a classesocket, que dá suporte a comunicação entre hosts usando textoe/ou buffer, a imagem transformada em texto pode ser enviadapela rede, tendo em vista que, ao ser criado, o socket precisade um endereço IP, porta de comunicação, especificação doprotocolo, entre outros.

A próxima seção do artigo, serão abordados a configuraçãodo socket, bem como um exemplo simples de como se podeenviar uma imagem através da rede usando a metodologiaapresentada.

III. CONFIGURAÇÃO

Figura 3. Programa em Python que captura um frame de uma Webcam e oenvia convertido em texto através de socket.

A Figura 3 exemplifica um código escrito em Python querepresenta o Servidor. A partir da linha 9 até a linha 11,destacadas em azul, é configurada a webcam, onde sãoespecificadas resolução e padrão de cores a ser usado. Dalinha 12 até a linha 17, no interior do retângulo verde, ilustra omomento em que se instancia o objeto socket, são explicitadosa porta de comunicação, endereço de IP, protocolo decomunicação e a quantidade de hosts que o servidor deveouvir. Para que a conexão seja estabelecida, devem-se criar ossockets de maneira sincronizada, com a mesma porta de

Câmera

Pygame

socket

Ubuntu

Rede

Objetivo

Pygame

socket

Ubuntu

Rede

Page 149: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

142

comunicação e mesmo endereço de IP, mais especificamente oIP do servidor.

Podem ser usadas no socket as faixas IPV4 e IPV6,protocolos FTP e UDP paralelamente a porta de comunicaçãoque pode assumir valores de 0 a 65535, porém alguns serviçosjá possuem portas específicas como requisições HTTP atravésda porta 80 ou SSH pela porta 22, mas, portas com valoresinferiores a 1024 necessitam da permissão de super usuário,caso contrário, o sistema operacional interrompe o processo decriação do socket.

Um ponto muito importante e decisivo para ofuncionamento satisfatório de um sistema de vídeo é avelocidade do meio em que é feita a transmissão dos dados,uma vez que o desempenho está diretamente ligado àqualidade das imagens capturadas, resolução, quantidade deframes por segundo (fps) e o plugin usado na renderização ecompressão do arquivo. A largura de banda máxima é de 344Mbps, o que corresponde a imagens estereoscópicas com 70quadros por segundo e uma resolução de 640x480 pixels porimagem [2].

Esta metodologia teve como norte os testes que buscavamuma análise comportamental do programa desenvolvido. Taistestes serão explanados mais detalhadamente no tópico que sesegue.

IV. TESTES E RESULTADOS

TABELA ITABELA DE VELOCIDADE DA CONEXÃO POR RESOLUÇÃO DE VÍDEO

Tipos de sinaisTamanho do

quadroFrames por

segundoLargura de

banda

TV vídeo(PAL/NTSC)

720x480 25 – 30 fps165,9Mbps

TV vídeocompactado

(Qualidade deDVD)

720x480 25 – 30 fps 5,2 Mbps

Vídeo stereo(Não

compactado)640x480 30 – 70 fps

147 – 344Mbps

Vídeo stereocompactado

(Qualidade deDVD)

640x480 30 – 70 fps6,3 – 14,6

Mbps

A Tabela 1 ilustra um comparativo entre qualidade dasimagens associada a velocidades da conexão no meio detransmissão. Conforme os testes feitos, comprova-se que ataxa de bits necessária para a transmissão de vídeo, utilizando-se um codec de compressão DivX®, com a resolução de320x240 pixels, mantém-se por volta de 1,5 Mbps, onde aconversão de cada imagem retorna um texto com tamanhoexato de 230400 bytes. Contudo, se a resolução for estendidapara 640x480 pixels, o tamanho do arquivo é de 921600 bytes,entretanto, para transmitir o vídeo com um desempenhosatisfatório, é necessário uma rede que proporcione no mínimo10 Mbps de velocidade em transferência de dados.

Logo abaixo, são exemplificados dois testes dedesempenho da rede ao se transmitir imagens pela rede usandouma aplicação desenvolvida. Os equipamentos utilizadosforam um computador Desktop Intel® Core 2 Duo 2.8Ghzcom 2Gb de memória (Cliente), conectado a um roteadorWireless TP-LINK de 150 Mbps por um cabo de ethernet,conectado a um netbook CCE Intel® Atom® 1.33Ghz com2Gb de memória (Servidor), ambos os computadores com oUbuntu 11.04 como sistema operacional.

Figura 4. Network History demonstra um grafíco do Cliente com a velocidadeconstante necessária para transmissão de imagens com resolução de 320x240pixels.

Na Figura 4, em Network History do gerenciador dosistema do Ubuntu, é exibido um gráfico que representa umavelocidade estável em 1,5 Mbps na transmissão de imagenscom resolução de 320x240 pixels usando a aplicação queoriginou este artigo. A estabilidade da velocidade da redeimplica em um desempenho satisfatório, com uma taxa de fpspróxima ao ideal, que quanto maior esta taxa, maior será asensação de movimento que uma sequência de imagens podepropor e maior a quantidade de dados que serão enviados.

Figura 5. Network History demonstra um grafíco do Cliente com a velocidadeirregular, resultando em perda de desempenho do vídeo.

Page 150: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

143

Instabilidade na rede pode ocasionar em perda significativade desempenho na hora de se transmitir grandes volumes dedados. A Figura 5 mostra, em Network History,irregularidades no gráfico de velocidade da rede. Este teste foirealizado usando as mesmas características do teste anterior:aplicação, resolução da imagem e equipamento de transmissãosem fio. Esta instabilidade foi propositalmente provocada aose remover a antena do roteador wireless, resultando na perdado sinal, acarretando na demora na transmissão, e por fim, naredução da qualidade do vídeo, com a quantidade de fpspodendo girar em torno de menos de 1 frame a cada segundo.

V. CONCLUSÕES

Convém ressaltar a funcionalidade dos sockets paratransmissão de dados e a simultaneidade entre os dispositivosonde este é executado. Um host ao receber uma string atravésdo socket, transfere as informações para o módulo Pygame,que por sua vez, converte o texto em imagem novamente,possibilitando, assim, que haja interação entre usuários decomputadores remotos. Mas, observou-se um problema deincompatibilidade entre a biblioteca Pygame e o sistemaoperacional Windows no momento em que se tenta usar awebcam [7]. Baseado neste pressuposto, a versão Servidor dametodologia apresentada deve executar incondicionalmente nosistema Ubuntu, mesmo porque o Windows passa por umatransição de versão e não se tem resultados de execução doPython em sua versão nova.

No desenvolvimento deste artigo, encontrou-se dificuldadeem obter-se embasamento teórico de artigos científicos comtrabalhos de mesmo princípio de funcionamento ou queenvolvesse a integração de Python, Pygame e Opencv comobjetivos similares.

Conclui-se então, que esta metodologia foi estabelecidainicialmente com o objetivo de satisfazer uma necessidadeencontrada em um sistema Telerobótico, mas adaptaçõestornam esta maneira de envio de imagens cabível a qualquersituação que seja necessário monitoramento através decâmeras com uso de sinais Wireless disponíveis, desdeexploração de outros planetas, monitoramento urbano,residencial, industrial, militar até sistemas de TeleCirurgia ouarquiteturas onde cliente e servidor podem estar a distânciascontinentais tendo redução de custo com equipamentos, cabos,instalações no interior de paredes, entre outros, e atéaproveitamento de serviços disponíveis como a própriaInternet.

REFERÊNCIAS

[1] D. Hellmann, The Python Standard Library by Example. PearsonEducation, Boston, 2011.

[2] R. Aracil, M. Buss, S. Cobos, M. Ferre, S. Hirche, et al, The HumanRole in Telerobotics. Berlim, v.31, p.11-24, 2007.

[3] B. Rhodes, J. Goerzen, Foundations od Python Network Programming:The Comprehensive guide to building network applications withPython. Apress, New York, 2010.

[4] M. Lutz, Programming Python, Fourth Edition. O’Reilly, Sebastopol,2011.

[5] P. Barry, Head First Python. O’Reilly, Sebastopol, 2011.

[6] A. Anderson, R. Benedetti, Head First Networking. O’Reilly,Sebastopol, 2009.

[7] http://www.pygame.org/news.html.[8] http://www.olhardigital.com.br/produtos/central_de_videos/web-

completa-20-anos-veja-toda-a-historia.[9] http://info.cern.ch/.[10] T. A. Budd, Exploring Python. McGraw-Hill, Maidenhead, 2009.

Marlo Zeni Braga de Araujo é graduando em Bachareladoem Ciências da Computação pela Universidade Estadual doPiauí (UESPI), Parnaíba, Piauí, Brasil. Suas pesquisas seconcentram na área da Telerobótica, Computação, Eletrônicae almeja mestrado e doutorado nessas áreas.

Francisco Marcelino Almeida de Araújo é Bacharel emEngenharia Elétrica com ênfase em Eletrônica pelaUniversidade Estadual do Piauí (UESPI) em Teresina, Piauí,Brasil. Mestrando em Biotecnologia pela UniversidadeFederal do Piauí em Parnaíba, Piauí, Brasil, trabalhando comnanocompósitos para nanofilmes aplicados à Engenharia

Biomédica e materiais anticorrosivos. Suas principais áreas de pesquisas são:Processamento Digital de Imagens, Hardware Livre, Robótica, TecnologiasAssistivas à Deficientes e Portadores de Necessidades Especiais,Nanotecnologia, Engenharia Biomédica e Engenharia de Materiais.

Page 151: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

144

Abstract— 1This paper brings a new model to solve the problemof downloads in social networks. In particular the waste ofbandwidth by downloading one same file multiple times. TheInternet Architecture provides the best effort and it forward eachpackage individually, but it doesn’t provide a good performance,neither deals with redundant downloads. In this case the problem isknown and there are some solutions, for instance Proxy Cachingand FTP servers, but those don’t work with colaboration betweenusers in a local network, and they are not built by the point of viewof groupware and distributed systems. The objective of the projectOurdown is to remove redundant downloads and addconscious/aware components, built on a Peer to Peer (P2P)network. P2P has been involved on building experimental andsophisticated components, and those components can talk to eachother and consequently avoid duplicated downloads. This paperdemonstrates the model, the specification and the development ofthe project Ourdown.

Keywords — Peer to Peer, Download Manager, JXTA.

I INTRODUÇÃO

egundo projeções para 2015, realizado pelainstituição de consultoria IDC (Internacional Data

Corporation), o tráfego mensal médio de quem usa a Internetserá em torno de 24,8 gigabytes, para enviar esta quantidadede informação por escrito, seria necessário 1 milhão de cartasde uma página cada uma, ou 10 (dez) toneladas de papel [1].Segundo pesquisas feita pela Internet World Stats [2] aInternet possui cerca de 2 (dois) bilhões de usuários, cerca de32% da população mundial tem acesso a Internet, ocrescimento de usuários de 2000 até 2011 foi de 528%(quinhentos e vinte e oito). Com o crescimento da Internettorna-se atraente o compartilhamento de arquivos via WWW(Word Wide Web), atualmente é comum às organizaçõesdisponibilizar seus arquivos digitais através de portais. Esteprocedimento torna-se atrativo, pois economiza comgravações de mídias e o interessado obtém o arquivo sobdemanda e com todas as vantagens que a Web podeproporcionar.

Antes do ambiente WWW para compartilhamento dearquivo o serviço FTP (File Transferer Protocol) foi oprincipal meio de troca de arquivos, o FTP viabiliza ocompartilhamento de arquivos na Internet permitindo que umusuário em um computador: transfira; mova; ou removaarquivos remotos [3]. Em organizações onde o tráfego na redenecessita de extremo controle o administrador da rede executauma conexão remota ao servidor FTP que disponibiliza o

1R. G. Sousa, Universidade Federal do Piauí (UFPI), Piauí, Brasil,[email protected]

arquivo desejado e deixa-o disponível para os usuários na redelocal. O procedimento é muito atrativo, pois limita aquantidade de downloads entre a rede local e a externa.

O serviço FTP foi criado numa época em que o uso daInternet era limitado e os usuários não realizavam downloadsconstantemente [4]. Atualmente, controlar o tráfego em umarede torna-se muito difícil por vários aspectos: (i) novageração de usuários acostumados com acesso irrestrito; (ii)liberdade dos usuários em utilizar a Internet; (iii) poucoconhecimento sobre as características do “conjunto” que opermitem o acesso à Internet. Com o passar do tempo atransferência de arquivos através da Web supriu o serviço FTP.

Recentemente, vários downloads são via navegadoresacessíveis por meio de hyperlinks em páginas Web. Para obterum arquivo o usuário encontra o que deseja e clica nohyperlink, de forma simples e transparente. O comportamentoindividual de cada internauta não leva em consideração ocomportamento do grupo de usuários na rede em comum.

Para facilitar a atividade de download, existem diversosgerenciadores disponibilizados na Internet, sejam pagos, comoo Internet Download Manager [5], ou gratuitos, p.ex: Orbit [6]e JDownloader [7]. Estes e outros aplicativos que se situam nolado do cliente, ao contrário dos servidores FTP, ficam noâmbito do computador do usuário e fogem da administraçãocentralizada. Ambos os tipos de gerenciadores de downloads,servidor FTP ou aplicativos do lado do cliente não usufruemdo compartilhamento peer-to-peer para otimizar o link deacesso à Internet.

Uma dificuldade muito grande para qualqueradministrador de rede é evitar downloads redundantes dentrode uma rede local. Servidores FTP precisam de umaadministração rígida e centralizada e aplicativos gerenciadoresde downloads que são executados do lado do clientefuncionam no escopo restrito da máquina dos usuários e nãosão acessíveis para outros usuários dentro da mesma rede. Aredução de downloads paralelos do mesmo arquivo é degrande importância para economia de banda de rede, uma vezque as cópias transmitidas concorrem e consomem recursospreciosos da rede, como: buffers de recepção, buffers detransmissão, links de dados, processador e memória dosroteadores e comutadores de rede.

Este trabalho propõe a criação de componentes desoftwares distribuídos [8,9,10] que são instanciados numa redelocal. O objetivo é trabalhar de forma cooperada e emconjunto com o navegador do usuário para gerenciar osdownloads dentro da rede local. Os componentes comportam-se de forma a monitorar e promover a comunicação entre elesdo início de eventuais downloads e alertando outros

S

Project OurDown: Collaborative System forDownload Management in Overlay Network

R. G. Sousa

Page 152: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

145

componentes da existência do download. A vantagem destesistema é suprimir redundâncias de downloads, evitando-senovas conexões entre a rede local e a externa. Toda ainteração segue o modelo de comunicação peer-to-peer [11],ou seja, sem a necessidade de configurar um servidor centralpara o controle, cuja característica é um dos pontos dedestaque do projeto Ourdown.

As próximas seções deste artigo estão organizadas daseguinte maneira: na seção 2 apresentam-se os trabalhosrelacionados, a seção 3 aborda a fundamentação teórica doprojeto e o modelo conceitual do projeto Ourdown, figura-seos diagramas de classe e sequencia para compreensão domodelo concebido. Na seção 4 apresentam-se as tecnologias ea infraestrutura de rede usada no projeto. Sequencialmente, aseção 5 destaca dois pontos importantes na codificação domodelo. A seção 6 descreve um resumo dos motivos de adoçãoda plataforma JXTA. Por fim, na seção 7 estão asconsiderações finais com vários pontos aprendidos durante odesenvolvimento e a descrição de melhorias almejadas.

II. TRABALHOS RELACIONADOS

Com o intuito de posicionar o trabalho perante o assunto dedistribuição de arquivos, propõem a seguinte divisão para osserviços de compartilhamento de arquivos:

a. Centralizados e não transparente: FTP;b. Centralizados e transparentes: WEB Cache;c. Distribuídos, transparentes, sem controle de

admissão: Squirrel;d. Distribuídos, transparentes, com controle de

admissão: Ourdown.

2.1 FTP

O FTP (File Transfer Procolol) [12] é o protocolo destinadoa transferência de arquivos de um hospedeiro ao outro naInternet. Projetado em 1971, tem como missão criar umaambiente de manipulação de arquivos remotos através deprimitivas parecidas com as utilizadas nos sistemas dearquivos locais. Para tanto, é possível através do FTP umcliente realizar as seguintes operações: listar, renomear,remover, criar, transferir e outras.

2.2 WEB CacheServidor WEB Cache, também conhecido como servidor

proxy, é o servidor que realiza cache de objetos WEB daInternet, assim além de armazenar páginas HTML (HyperTextMarkup Language) também pode armazenar objetos (imagens,áudio e vídeos) referenciados nas páginas requisitadas via oprotocolo HTTP (Hyper Text Transfer Protocol). É utilizadopara reduzir o tráfego na Internet, pois armazenatemporariamente os arquivos [13]. Geralmente é um serviçodedicado e colocado entre a rede local e a externa.

A ideia do servidor proxy é trazer o conteúdo de umservidor WEB para mais próximo do cliente e assim diminuiro tempo de espera. A vantagem é alcançada na segundarequisição HTTP emitida pelo cliente que inicialmente fez arequisição HTTP ou por outro cliente que compartilha omesmo servidor proxy. O tamanho da cache versus páginasestáticas e dinâmicas é um ponto de conflito nas configurações

deste serviço. O servidor proxy utiliza o ambiente WEB paratransmissão de dados. Em 1998 o tráfego WEB correspondia a75% de todo o tráfego na Internet [14]. O servidor proxy éutilizado por um cliente através de uma prévia configuraçãono navegador, ou no sistema operacional, ou no gateway darede através de um recuso chamado de proxy transparente.

O tempo de armazenamento na cache depende de umaprévia configuração realizada pelo administrador da rede [15].Cabe ao administrador da rede: a) instalar o servidor proxy narede; b) decidir o que deve ser armazenado; c) quanto temposerá armazenado as páginas e os objetos; e d) o tamanho dacache que será reservado.

2.3 Squirrel

Squirrel [16] é um sistema de WEB cache distribuído queusa o protocolo Pastry na busca de recursos e no roteamentode mensagens. O Squirrel é um serviço executado no mesmohost que o navegador WEB e ele compartilha o diretório decache do navegador.

Após o cliente solicitar uma URL a solicitação éencaminhada ao proxy Squirrel. Inicialmente o Squirrelverifica se o objeto está na cache local e caso o objeto nãoexista localmente é feita uma busca na rede P2P formada poroutros nós. A URL é utilizada para gerar um identificadoratravés de uma função de hash, e com este identificador asolicitação é encaminhada a um nó da rede P2P que tem oidentificador mais próximo do identificador do objeto. Esteprincipio é a base da DHT (Dynamic Hash Table). Squirrel éum projeto maduro com resultados factíveis e implementa oprotocolo Pastry para realizar a identificação de objetos e oroteamento para o encaminhamento de mensagens.

2.4 Ourdown

Ourdown é um projeto construído sobre uma arquiteturaPeer-to-Peer (P2P). Esta arquitetura é caracterizada peladistribuição horizontal das entidades, assim, cada entidade éum servente, assumindo funções de cliente e servidor, estecomportamento simétrico é desejado para sistemas sem apresença de um servidor central.

Segundo Tanenbaum [4], as arquiteturas P2P são de doistipos: estruturadas ou não estruturadas. As arquiteturasestruturadas utilizam de mecanismos complexos, p.ex:variações da DHT (Dynamic Hash Table), para nomeação elocalização, muito estudo foi realizado neste assunto deste oNapster 2007 [4]. Balakrishnan (2003) [17] em seu trabalho“Looking up Data in P2P System” apresenta vários algoritmoscomo: CAN, Pastry, Tapestry e Chord como evoluções dopercursor Napster para distribuição de arquivos sobarquitetura P2P.

As arquiteturas não estruturadas são sistemas em que não seutiliza de complexos sistemas de nomeação e localização paraconstruir uma rede de sobreposição. Quando um nó precisalocalizar um item, a única coisa que ele faz é inundar a redecom uma consulta de busca. O projeto Ourdown é construídosobre uma arquitetura não-estruturada.

A Tabela 1 apresenta as diferenças entre os sistemas FTP(seção 2.1), WEB Cache (seção 2.2), Squirrel (seção 2.3) emrelação ao Ourdown. As respostas da primeira pergunta mostraque o Squirrel e o Ourdown são sistemas descentralizado. A

Page 153: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

146

resposta da segunda pergunta mostra que o Squirrel e oOurdown não necessitam de um administrador de rede parasua execução. As respostas da terceira pergunta mostra quesomente o WEB Cache e o Ourdown fazem controle daadmissão de novas conexões para arquivos, o WEB Cacheutiliza da primitiva HEAD do HTTP para este controle. Aresposta da quarta questão mostra que somente o FTP nãoesconde do usuário os parâmetros de rede como: endereço,porta, usuário e senha, diretórios e nome dos arquivosremotos. A resposta da quinta questão mostra que no FTP e naWEB Cache o usuário para encontrar um recurso precisanecessariamente saber sua localização. As respostas da sextaquestão apresentam que somente o Squirrel e o Ourdown, porserem construídos sobre uma arquitetura distribuída, possuemuma maior robustez por não possuir um ponto devulnerabilidade.

A resposta da última pergunta da Tabela 1 destaca o pontode divergência conceitual do projeto Squirrel e Ourdown. OOurdown evita que conexões a um mesmo objeto sejam feitasem tempo real, o controle da banda é pró-ativa. No Squirrel osarquivos são obtidos através de diretórios temporários dosnavegadores Web após o download ser completado, não háintervenção do sistema durante o download, dois clientesusando o Squirrel podem realizar o download de um mesmoarquivo ao mesmo tempo, este comportamento é evitado peloOurdown.

TABELA 1COMPARAÇÃO ENTRE VÁRIOS MEIOS DE COMPARTILHAMENTO DE ARQUIVOS

Questões FTP Web Cache Squirrel Ourdown1. Necessita de um Servidor? Sim Sim Não Não2. Necessita de umadministrador de rede:

Sim Sim Não Não

3. Gerencia a admissão dedownloads duplicados?

Não Parcialmente

Não Sim

4. Transparente para ousuário?

Não Parcialmente

Sim Sim

5. Transparente quanto alocalização de rede?

Não Não Sim Sim

6. Ponto único de falha? Sim Sim Não Não7. Gerencia o download sob-demanda em tempo real?

Não Não Não Sim

III. SISTEMAS COLABORATIVOS E MODELAGEM

A Fig. 1 apresenta um modelo básico de uma rede local deuso genérico.

Figura 1. Duplicação de Download.

Em uma extremidade da rede se encontram os usuáriosque neste contexto são os responsáveis pelos downloads.Entende-se neste modelo que os usuários utilizam de diversostipos de equipamentos (computador, notebook, smartphones eoutros) para realizar o download. As redes locais (LAN) não

se preocupam em detectar nenhum download, e assim écomum que um arquivo seja descarregado por vários usuáriosao mesmo tempo. Visualiza-se que o “Arquivo A” na Fig. 1 éduplicado no espaço de armazenamento do Usuário 1 eUsuário 2.O tempo de download de um arquivo (Fórmula 1) éproporcional ao tamanho do mesmo e a Largura de Banda.Calcula-se o tempo de download através da fórmula:

(1)

São variáveis da Fórmula 1: t denota o tamanho do arquivo; v denota a largura de banda.Quanto maior a quantidade de downloads paralelos

menor será a largura de banda sensível disponível na rede.Apesar da largura de banda corresponder a uma faixa defrequência fixa, a taxa de transmissão é alterada de acordocom diversas variáveis, entre elas a quantidade de downloads.Enquanto as requisições de downloads gerarem um consumona rede menor que a largura de banda disponível nenhumusuário irá competir e atrapalhar a atividade do outro. Àmedida que o número de downloads aumente o tempo dedownload de um arquivo irá aumentar.

(2)

A Fórmula 2 apresenta a somatória total de tempo gastona rede com todas as transmissões:

São variáveis da Fórmula 2: t denota o tamanho do arquivo; 0 e n limites, 0 instante inicial e n tempo final; t denota o tamanho do arquivo.Existem várias técnicas de suprir a demanda por banda

em uma rede de computadores. Uma visão mais simples eestática é o aumento de recursos de rede, como p. ex.: enlacesmais velozes. Porém esta medida gera um ciclo vicioso, umavez que o aumento de largura de banda provocaproporcionalmente o aumento na demanda gerando um círculovicioso, mais banda mais consumo.

Neste campo de estudo, nas últimas décadas pesquisaram-se várias maneiras de gerenciar os enlaces de rede. Dentrediversas abordagens a Arquitetura DiffServ se destaca.Arquitetura dos Serviços Diferenciados (DiffServ) [18,19,20]posiciona entre o serviço padrão da Internet (BestEffort -Serviço de Melhor Esforço) e a Arquitetura IntServ (ServiçosIntegrados) [21]. DiffServ e IntServ são arquiteturas baseadasno conceito de QoS (Quality of Service) e são abordagensfundamentadas no controle do uso da rede baseadas nasinalização do tráfego para prover garantias na rede, dentre elaa largura de banda.

Merece destaque que a proposta deste trabalhodiferentemente das Arquiteturas IntServ e DiffServ estábaseada na colaboração invés da concorrência que as outras

ANAIS ELETRÔNICOS V ENUCOMP

146

resposta da segunda pergunta mostra que o Squirrel e oOurdown não necessitam de um administrador de rede parasua execução. As respostas da terceira pergunta mostra quesomente o WEB Cache e o Ourdown fazem controle daadmissão de novas conexões para arquivos, o WEB Cacheutiliza da primitiva HEAD do HTTP para este controle. Aresposta da quarta questão mostra que somente o FTP nãoesconde do usuário os parâmetros de rede como: endereço,porta, usuário e senha, diretórios e nome dos arquivosremotos. A resposta da quinta questão mostra que no FTP e naWEB Cache o usuário para encontrar um recurso precisanecessariamente saber sua localização. As respostas da sextaquestão apresentam que somente o Squirrel e o Ourdown, porserem construídos sobre uma arquitetura distribuída, possuemuma maior robustez por não possuir um ponto devulnerabilidade.

A resposta da última pergunta da Tabela 1 destaca o pontode divergência conceitual do projeto Squirrel e Ourdown. OOurdown evita que conexões a um mesmo objeto sejam feitasem tempo real, o controle da banda é pró-ativa. No Squirrel osarquivos são obtidos através de diretórios temporários dosnavegadores Web após o download ser completado, não háintervenção do sistema durante o download, dois clientesusando o Squirrel podem realizar o download de um mesmoarquivo ao mesmo tempo, este comportamento é evitado peloOurdown.

TABELA 1COMPARAÇÃO ENTRE VÁRIOS MEIOS DE COMPARTILHAMENTO DE ARQUIVOS

Questões FTP Web Cache Squirrel Ourdown1. Necessita de um Servidor? Sim Sim Não Não2. Necessita de umadministrador de rede:

Sim Sim Não Não

3. Gerencia a admissão dedownloads duplicados?

Não Parcialmente

Não Sim

4. Transparente para ousuário?

Não Parcialmente

Sim Sim

5. Transparente quanto alocalização de rede?

Não Não Sim Sim

6. Ponto único de falha? Sim Sim Não Não7. Gerencia o download sob-demanda em tempo real?

Não Não Não Sim

III. SISTEMAS COLABORATIVOS E MODELAGEM

A Fig. 1 apresenta um modelo básico de uma rede local deuso genérico.

Figura 1. Duplicação de Download.

Em uma extremidade da rede se encontram os usuáriosque neste contexto são os responsáveis pelos downloads.Entende-se neste modelo que os usuários utilizam de diversostipos de equipamentos (computador, notebook, smartphones eoutros) para realizar o download. As redes locais (LAN) não

se preocupam em detectar nenhum download, e assim écomum que um arquivo seja descarregado por vários usuáriosao mesmo tempo. Visualiza-se que o “Arquivo A” na Fig. 1 éduplicado no espaço de armazenamento do Usuário 1 eUsuário 2.O tempo de download de um arquivo (Fórmula 1) éproporcional ao tamanho do mesmo e a Largura de Banda.Calcula-se o tempo de download através da fórmula:

(1)

São variáveis da Fórmula 1: t denota o tamanho do arquivo; v denota a largura de banda.Quanto maior a quantidade de downloads paralelos

menor será a largura de banda sensível disponível na rede.Apesar da largura de banda corresponder a uma faixa defrequência fixa, a taxa de transmissão é alterada de acordocom diversas variáveis, entre elas a quantidade de downloads.Enquanto as requisições de downloads gerarem um consumona rede menor que a largura de banda disponível nenhumusuário irá competir e atrapalhar a atividade do outro. Àmedida que o número de downloads aumente o tempo dedownload de um arquivo irá aumentar.

(2)

A Fórmula 2 apresenta a somatória total de tempo gastona rede com todas as transmissões:

São variáveis da Fórmula 2: t denota o tamanho do arquivo; 0 e n limites, 0 instante inicial e n tempo final; t denota o tamanho do arquivo.Existem várias técnicas de suprir a demanda por banda

em uma rede de computadores. Uma visão mais simples eestática é o aumento de recursos de rede, como p. ex.: enlacesmais velozes. Porém esta medida gera um ciclo vicioso, umavez que o aumento de largura de banda provocaproporcionalmente o aumento na demanda gerando um círculovicioso, mais banda mais consumo.

Neste campo de estudo, nas últimas décadas pesquisaram-se várias maneiras de gerenciar os enlaces de rede. Dentrediversas abordagens a Arquitetura DiffServ se destaca.Arquitetura dos Serviços Diferenciados (DiffServ) [18,19,20]posiciona entre o serviço padrão da Internet (BestEffort -Serviço de Melhor Esforço) e a Arquitetura IntServ (ServiçosIntegrados) [21]. DiffServ e IntServ são arquiteturas baseadasno conceito de QoS (Quality of Service) e são abordagensfundamentadas no controle do uso da rede baseadas nasinalização do tráfego para prover garantias na rede, dentre elaa largura de banda.

Merece destaque que a proposta deste trabalhodiferentemente das Arquiteturas IntServ e DiffServ estábaseada na colaboração invés da concorrência que as outras

F (t )= tv

S (t)=∑0

n

F (t )

ANAIS ELETRÔNICOS V ENUCOMP

146

resposta da segunda pergunta mostra que o Squirrel e oOurdown não necessitam de um administrador de rede parasua execução. As respostas da terceira pergunta mostra quesomente o WEB Cache e o Ourdown fazem controle daadmissão de novas conexões para arquivos, o WEB Cacheutiliza da primitiva HEAD do HTTP para este controle. Aresposta da quarta questão mostra que somente o FTP nãoesconde do usuário os parâmetros de rede como: endereço,porta, usuário e senha, diretórios e nome dos arquivosremotos. A resposta da quinta questão mostra que no FTP e naWEB Cache o usuário para encontrar um recurso precisanecessariamente saber sua localização. As respostas da sextaquestão apresentam que somente o Squirrel e o Ourdown, porserem construídos sobre uma arquitetura distribuída, possuemuma maior robustez por não possuir um ponto devulnerabilidade.

A resposta da última pergunta da Tabela 1 destaca o pontode divergência conceitual do projeto Squirrel e Ourdown. OOurdown evita que conexões a um mesmo objeto sejam feitasem tempo real, o controle da banda é pró-ativa. No Squirrel osarquivos são obtidos através de diretórios temporários dosnavegadores Web após o download ser completado, não háintervenção do sistema durante o download, dois clientesusando o Squirrel podem realizar o download de um mesmoarquivo ao mesmo tempo, este comportamento é evitado peloOurdown.

TABELA 1COMPARAÇÃO ENTRE VÁRIOS MEIOS DE COMPARTILHAMENTO DE ARQUIVOS

Questões FTP Web Cache Squirrel Ourdown1. Necessita de um Servidor? Sim Sim Não Não2. Necessita de umadministrador de rede:

Sim Sim Não Não

3. Gerencia a admissão dedownloads duplicados?

Não Parcialmente

Não Sim

4. Transparente para ousuário?

Não Parcialmente

Sim Sim

5. Transparente quanto alocalização de rede?

Não Não Sim Sim

6. Ponto único de falha? Sim Sim Não Não7. Gerencia o download sob-demanda em tempo real?

Não Não Não Sim

III. SISTEMAS COLABORATIVOS E MODELAGEM

A Fig. 1 apresenta um modelo básico de uma rede local deuso genérico.

Figura 1. Duplicação de Download.

Em uma extremidade da rede se encontram os usuáriosque neste contexto são os responsáveis pelos downloads.Entende-se neste modelo que os usuários utilizam de diversostipos de equipamentos (computador, notebook, smartphones eoutros) para realizar o download. As redes locais (LAN) não

se preocupam em detectar nenhum download, e assim écomum que um arquivo seja descarregado por vários usuáriosao mesmo tempo. Visualiza-se que o “Arquivo A” na Fig. 1 éduplicado no espaço de armazenamento do Usuário 1 eUsuário 2.O tempo de download de um arquivo (Fórmula 1) éproporcional ao tamanho do mesmo e a Largura de Banda.Calcula-se o tempo de download através da fórmula:

(1)

São variáveis da Fórmula 1: t denota o tamanho do arquivo; v denota a largura de banda.Quanto maior a quantidade de downloads paralelos

menor será a largura de banda sensível disponível na rede.Apesar da largura de banda corresponder a uma faixa defrequência fixa, a taxa de transmissão é alterada de acordocom diversas variáveis, entre elas a quantidade de downloads.Enquanto as requisições de downloads gerarem um consumona rede menor que a largura de banda disponível nenhumusuário irá competir e atrapalhar a atividade do outro. Àmedida que o número de downloads aumente o tempo dedownload de um arquivo irá aumentar.

(2)

A Fórmula 2 apresenta a somatória total de tempo gastona rede com todas as transmissões:

São variáveis da Fórmula 2: t denota o tamanho do arquivo; 0 e n limites, 0 instante inicial e n tempo final; t denota o tamanho do arquivo.Existem várias técnicas de suprir a demanda por banda

em uma rede de computadores. Uma visão mais simples eestática é o aumento de recursos de rede, como p. ex.: enlacesmais velozes. Porém esta medida gera um ciclo vicioso, umavez que o aumento de largura de banda provocaproporcionalmente o aumento na demanda gerando um círculovicioso, mais banda mais consumo.

Neste campo de estudo, nas últimas décadas pesquisaram-se várias maneiras de gerenciar os enlaces de rede. Dentrediversas abordagens a Arquitetura DiffServ se destaca.Arquitetura dos Serviços Diferenciados (DiffServ) [18,19,20]posiciona entre o serviço padrão da Internet (BestEffort -Serviço de Melhor Esforço) e a Arquitetura IntServ (ServiçosIntegrados) [21]. DiffServ e IntServ são arquiteturas baseadasno conceito de QoS (Quality of Service) e são abordagensfundamentadas no controle do uso da rede baseadas nasinalização do tráfego para prover garantias na rede, dentre elaa largura de banda.

Merece destaque que a proposta deste trabalhodiferentemente das Arquiteturas IntServ e DiffServ estábaseada na colaboração invés da concorrência que as outras

Page 154: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

147

arquiteturas promovem. Neste contexto o projeto adota oparadigma da colaboração.

Existem várias teorias e modelos de colaboração, entre elasTeorias dos Jogos, a Teoria da Atividade, o Modelo 3C decolaboração, Padrões de Colaboração e o Modelo Tuckman.Teorias e modelos são utilizadas para entender, comparar,abstrair e generalizar o ambiente e os cenários nos quaiselementos colaborativos estão inseridos [22]. Dentre os váriosmodelos, este projeto alinha-se a ideia do Modelo 3C. OModelo 3C é esquematizado na relação entre as ações de:comunicar, cooperar e coordenar. A seguir, estas três açõessão identificadas no Modelo Conceitual do Projeto Ourdown.

Figura 2. Cooperação entre os componentes.

Segundo a Fig. 2, nota-se que a rede é adicionada comnovas funcionalidades incorporadas na máquina do usuáriopara o gerenciamento de downloads. A dinâmica da rede éalterada para que antes do início do download haja umainteração entre os componentes distribuídos. Cadacomponente é construído de várias funcionalidades sendorealizadas em paralelo e em comum dentre todos.

Uma grande diferença entre as Fig. 1 e a Fig. 2 está naquantidade de arquivos “Arquivo A” transmitida da redeexterna (Internet) para a rede local (LAN). Uma vez que onovo ambiente proposto neste projeto comporta-se comoesperado as requisições duplicadas de um mesmo arquivoserão canceladas e o requisitante aguardará o download dequem iniciou primeiramente o arquivo. Importante ressaltarque no mercado atual, a largura de banda comum entre oGateway e a rede externa é da grandeza dos kilobits porsegundo (Kbps) ou megabits por segundo (Mbps), enquanto asredes locais (LAN) operam na grandeza dos gigabits (Gbps)por segundo.

3.1 Objetos do Componente

Após uma visão geral do projeto, onde se focou navantagem desta abordagem em relação ao modelo tradicionalde download, além da demonstração simples da modelagemmatemática do sistema, esta seção apresenta a propostacomputacional de modelagem de objetos utilizados naimplementação dos componentes.

Figura 3. Objetos do Componente.

O componente (ver Fig. 3) atua como servente e assume ospapeis de cliente e servidor. O componente pode serdecomposto em várias partes, são elas: WebServer,WaitingFile, UDPServer e o Downloader. A Fig. 3 apresenta ocomponente, seus principais objetos e sua localização noambiente. Na figura observa-se que o componente tem acessoa LAN e a Internet ao mesmo tempo. Nos quatro parágrafos aseguir são delineadas as funcionalidades de cada um.

WebServer é responsável pela captura do início de umdownload, existem várias possibilidades tecnológicas para estadetecção. Na seção 4 é desvendada a técnica adotada nodesenvolvimento do componente neste projeto. Uma vezdetectado o início de um download é necessário extrair onome do arquivo, sua localização e salvar as informações parauso futuro.

O WaitingFile (ver Fig. 3) tem a função de entrar emcontato com os outros componentes para descobrir se outrocomponente realiza o download do arquivo requisitado pelousuário. A taxa de requisição pode ser maior que a taxa dedownload realizado pelo sistema, assim, há necessidade dearmazenar as requisições em um buffer e tratá-lassequencialmente.

Caso nenhum componente na rede esteja realizado odownload do arquivo requisitado, o Downloader inicia odownload pela Internet. Esta tarefa implica em atualização devariáveis locais para sinalizar esta ação.

A qualquer momento um componente pode receber umamensagem de outro componente questionando pela existênciado download de um arquivo. Se o componente que recebe amensagem realiza o download do arquivo desejado este deveenviar uma mensagem ao componente que fez oquestionamento. O UDPServer é o responsável por esta tarefa,de enviar um arquivo local a outro componente na rede.

Neste contexto, há um protocolo de alto nível e asmensagens enviadas pelos componentes são: a) Mensagem deRequisição e b) Mensagem de Resposta. A Mensagem deRequisição é enviada para todos os componentes contendo onome e a localização do arquivo desejado, após o envio destamensagem o componente aguardará um timeout, quando estetimeout esgota o próprio componente inicia o download, ouseja, não aguarda mais nenhum tempo por espera. AMensagem de Resposta é uma mensagem unicast enviadadiretamente para quem originou o pedido, o componente queoriginou o pedido após receber a mensagem de resposta deveaguardar o envio do arquivo.

Alguns objetos contidos no componente (ver Fig. 3) sãoassíncronos e outros são síncronos. O WEBServer éassíncrono, ele intercepta uma requisição a qualquer momento,

ANAIS ELETRÔNICOS V ENUCOMP

147

arquiteturas promovem. Neste contexto o projeto adota oparadigma da colaboração.

Existem várias teorias e modelos de colaboração, entre elasTeorias dos Jogos, a Teoria da Atividade, o Modelo 3C decolaboração, Padrões de Colaboração e o Modelo Tuckman.Teorias e modelos são utilizadas para entender, comparar,abstrair e generalizar o ambiente e os cenários nos quaiselementos colaborativos estão inseridos [22]. Dentre os váriosmodelos, este projeto alinha-se a ideia do Modelo 3C. OModelo 3C é esquematizado na relação entre as ações de:comunicar, cooperar e coordenar. A seguir, estas três açõessão identificadas no Modelo Conceitual do Projeto Ourdown.

Figura 2. Cooperação entre os componentes.

Segundo a Fig. 2, nota-se que a rede é adicionada comnovas funcionalidades incorporadas na máquina do usuáriopara o gerenciamento de downloads. A dinâmica da rede éalterada para que antes do início do download haja umainteração entre os componentes distribuídos. Cadacomponente é construído de várias funcionalidades sendorealizadas em paralelo e em comum dentre todos.

Uma grande diferença entre as Fig. 1 e a Fig. 2 está naquantidade de arquivos “Arquivo A” transmitida da redeexterna (Internet) para a rede local (LAN). Uma vez que onovo ambiente proposto neste projeto comporta-se comoesperado as requisições duplicadas de um mesmo arquivoserão canceladas e o requisitante aguardará o download dequem iniciou primeiramente o arquivo. Importante ressaltarque no mercado atual, a largura de banda comum entre oGateway e a rede externa é da grandeza dos kilobits porsegundo (Kbps) ou megabits por segundo (Mbps), enquanto asredes locais (LAN) operam na grandeza dos gigabits (Gbps)por segundo.

3.1 Objetos do Componente

Após uma visão geral do projeto, onde se focou navantagem desta abordagem em relação ao modelo tradicionalde download, além da demonstração simples da modelagemmatemática do sistema, esta seção apresenta a propostacomputacional de modelagem de objetos utilizados naimplementação dos componentes.

Figura 3. Objetos do Componente.

O componente (ver Fig. 3) atua como servente e assume ospapeis de cliente e servidor. O componente pode serdecomposto em várias partes, são elas: WebServer,WaitingFile, UDPServer e o Downloader. A Fig. 3 apresenta ocomponente, seus principais objetos e sua localização noambiente. Na figura observa-se que o componente tem acessoa LAN e a Internet ao mesmo tempo. Nos quatro parágrafos aseguir são delineadas as funcionalidades de cada um.

WebServer é responsável pela captura do início de umdownload, existem várias possibilidades tecnológicas para estadetecção. Na seção 4 é desvendada a técnica adotada nodesenvolvimento do componente neste projeto. Uma vezdetectado o início de um download é necessário extrair onome do arquivo, sua localização e salvar as informações parauso futuro.

O WaitingFile (ver Fig. 3) tem a função de entrar emcontato com os outros componentes para descobrir se outrocomponente realiza o download do arquivo requisitado pelousuário. A taxa de requisição pode ser maior que a taxa dedownload realizado pelo sistema, assim, há necessidade dearmazenar as requisições em um buffer e tratá-lassequencialmente.

Caso nenhum componente na rede esteja realizado odownload do arquivo requisitado, o Downloader inicia odownload pela Internet. Esta tarefa implica em atualização devariáveis locais para sinalizar esta ação.

A qualquer momento um componente pode receber umamensagem de outro componente questionando pela existênciado download de um arquivo. Se o componente que recebe amensagem realiza o download do arquivo desejado este deveenviar uma mensagem ao componente que fez oquestionamento. O UDPServer é o responsável por esta tarefa,de enviar um arquivo local a outro componente na rede.

Neste contexto, há um protocolo de alto nível e asmensagens enviadas pelos componentes são: a) Mensagem deRequisição e b) Mensagem de Resposta. A Mensagem deRequisição é enviada para todos os componentes contendo onome e a localização do arquivo desejado, após o envio destamensagem o componente aguardará um timeout, quando estetimeout esgota o próprio componente inicia o download, ouseja, não aguarda mais nenhum tempo por espera. AMensagem de Resposta é uma mensagem unicast enviadadiretamente para quem originou o pedido, o componente queoriginou o pedido após receber a mensagem de resposta deveaguardar o envio do arquivo.

Alguns objetos contidos no componente (ver Fig. 3) sãoassíncronos e outros são síncronos. O WEBServer éassíncrono, ele intercepta uma requisição a qualquer momento,

ANAIS ELETRÔNICOS V ENUCOMP

147

arquiteturas promovem. Neste contexto o projeto adota oparadigma da colaboração.

Existem várias teorias e modelos de colaboração, entre elasTeorias dos Jogos, a Teoria da Atividade, o Modelo 3C decolaboração, Padrões de Colaboração e o Modelo Tuckman.Teorias e modelos são utilizadas para entender, comparar,abstrair e generalizar o ambiente e os cenários nos quaiselementos colaborativos estão inseridos [22]. Dentre os váriosmodelos, este projeto alinha-se a ideia do Modelo 3C. OModelo 3C é esquematizado na relação entre as ações de:comunicar, cooperar e coordenar. A seguir, estas três açõessão identificadas no Modelo Conceitual do Projeto Ourdown.

Figura 2. Cooperação entre os componentes.

Segundo a Fig. 2, nota-se que a rede é adicionada comnovas funcionalidades incorporadas na máquina do usuáriopara o gerenciamento de downloads. A dinâmica da rede éalterada para que antes do início do download haja umainteração entre os componentes distribuídos. Cadacomponente é construído de várias funcionalidades sendorealizadas em paralelo e em comum dentre todos.

Uma grande diferença entre as Fig. 1 e a Fig. 2 está naquantidade de arquivos “Arquivo A” transmitida da redeexterna (Internet) para a rede local (LAN). Uma vez que onovo ambiente proposto neste projeto comporta-se comoesperado as requisições duplicadas de um mesmo arquivoserão canceladas e o requisitante aguardará o download dequem iniciou primeiramente o arquivo. Importante ressaltarque no mercado atual, a largura de banda comum entre oGateway e a rede externa é da grandeza dos kilobits porsegundo (Kbps) ou megabits por segundo (Mbps), enquanto asredes locais (LAN) operam na grandeza dos gigabits (Gbps)por segundo.

3.1 Objetos do Componente

Após uma visão geral do projeto, onde se focou navantagem desta abordagem em relação ao modelo tradicionalde download, além da demonstração simples da modelagemmatemática do sistema, esta seção apresenta a propostacomputacional de modelagem de objetos utilizados naimplementação dos componentes.

Figura 3. Objetos do Componente.

O componente (ver Fig. 3) atua como servente e assume ospapeis de cliente e servidor. O componente pode serdecomposto em várias partes, são elas: WebServer,WaitingFile, UDPServer e o Downloader. A Fig. 3 apresenta ocomponente, seus principais objetos e sua localização noambiente. Na figura observa-se que o componente tem acessoa LAN e a Internet ao mesmo tempo. Nos quatro parágrafos aseguir são delineadas as funcionalidades de cada um.

WebServer é responsável pela captura do início de umdownload, existem várias possibilidades tecnológicas para estadetecção. Na seção 4 é desvendada a técnica adotada nodesenvolvimento do componente neste projeto. Uma vezdetectado o início de um download é necessário extrair onome do arquivo, sua localização e salvar as informações parauso futuro.

O WaitingFile (ver Fig. 3) tem a função de entrar emcontato com os outros componentes para descobrir se outrocomponente realiza o download do arquivo requisitado pelousuário. A taxa de requisição pode ser maior que a taxa dedownload realizado pelo sistema, assim, há necessidade dearmazenar as requisições em um buffer e tratá-lassequencialmente.

Caso nenhum componente na rede esteja realizado odownload do arquivo requisitado, o Downloader inicia odownload pela Internet. Esta tarefa implica em atualização devariáveis locais para sinalizar esta ação.

A qualquer momento um componente pode receber umamensagem de outro componente questionando pela existênciado download de um arquivo. Se o componente que recebe amensagem realiza o download do arquivo desejado este deveenviar uma mensagem ao componente que fez oquestionamento. O UDPServer é o responsável por esta tarefa,de enviar um arquivo local a outro componente na rede.

Neste contexto, há um protocolo de alto nível e asmensagens enviadas pelos componentes são: a) Mensagem deRequisição e b) Mensagem de Resposta. A Mensagem deRequisição é enviada para todos os componentes contendo onome e a localização do arquivo desejado, após o envio destamensagem o componente aguardará um timeout, quando estetimeout esgota o próprio componente inicia o download, ouseja, não aguarda mais nenhum tempo por espera. AMensagem de Resposta é uma mensagem unicast enviadadiretamente para quem originou o pedido, o componente queoriginou o pedido após receber a mensagem de resposta deveaguardar o envio do arquivo.

Alguns objetos contidos no componente (ver Fig. 3) sãoassíncronos e outros são síncronos. O WEBServer éassíncrono, ele intercepta uma requisição a qualquer momento,

Page 155: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

148

uma vez interceptado ele armazena a requisição em um buffer,as requisições são feitas diretamente pelo usuário e sãoguardas para futuras requisições despachadas na rede local. OWaitingFile responsável por enviar as mensagens derequisições na rede é síncrono, ele aguarda um intervalo detempo e caso não receba uma reposta sinaliza ao Downloadera realizar o download, que consequentemente também ésíncrono.

3.2 Diagrama de Classe

Segundo os requisitos do sistema e o modelo docomponente (seção 3.1), o sistema projetado é composto decinco classes principais e mais duas classes auxiliares. A Fig. 4apresenta a relação entre elas.

Figura 4. Diagrama de classes.

A classe Componente é a classe principal que possui ométodo para o início da execução da aplicação. Esta classe écomposta por quatro objetos, cada um da classe WebServer,WaitingFile, Downloader e UDPServe. Todos os quatroobjetos associados são únicos e executados em paralelo,portanto as classes são especializadas da classe Thread. Porquestão de clareza da Fig. 4 a não apresenta estasgeneralizações.

A classe Componente possui dois vetores:FiladeDownloads e FiladePedido. O vetor FiladeDownloadsé utilizado para armazenar as requisições disparadas pelousuário. O vetor FilaPedidos é utilizado para armazenar asrequisições enviadas pelos componentes da LAN e que serãoatendidas. Os quatro parágrafos a seguir explicam aresponsabilidade de cada uma das classes (ver Fig. 4).

WebServer é a classe responsável pela implementação dainteração entre as interfaces de detecção do evento dodownnload e o componente. Sua outra função é de registrar asrequisições para futuro processamento, por fim, é de suaresponsabilidade enviar uma mensagem ao usuário avisando-odo sucesso da operação. Como há possibilidade do disparo devárias requisições de downloads pelos usuários a classeWebServer cria um objeto da classe WebClientRequest .

WaitingFile é a classe responsável pela recepção de umarquivo antes requisitado e prometido por outro componente.

Uma vez sinalizado o envio pelo outro componente na rede écriado um objeto da classe ReceiveFile para receber o arquivo.Portanto, observa-se a possibilidade e a preocupação derecebimentos simultâneos na rede. A classe ReceiveFiletambém é uma generalização da classe Thread.

Downloader é a classe responsável por realizar o downloadde um arquivo da Internet. Seu método principal é uma rotinacircular de checagem do vetor FilaDownloads, quando o vetoresta vazio o objeto desta classe é bloqueado (Thread.wait()).Se o vetor contiver elementos, cada elemento representa umarequisição dispara pelo Usuário que não foi atendida pelosoutros componentes, entretanto este elemento descreve oarquivo a ser obtido da Internet.

UDPServer é a classe que modela o comportamento doobjeto responsável por escutar da rede local pedidos dedownload. Seu método principal apenas abre uma porta decomunicação UDP e aguarda a chegada de pacotes debroadcast. Uma vez recebido um pacote a mensagem éextraída e analisada. A análise consiste em procurar no vetorFilaDownloads se o arquivo requisitado faz parte da lista dearquivos obtidos pelo Downloader, se sim então é extraído dopacote o endereço de comunicação do requerente e salvo novetor de FilaPedidos para futuro processamento.

3.3 Diagramas de Sequência

A seguir são apresentados dois diagramas de sequênciailustrando a interação entre os objetos dos componentes.

Figura 5. Diagrama de sequência de um pedido de um Arquivo.

O diagrama de sequência (Fig. 5) apresenta a sequência demensagens entre os elementos. O Navegador e o WebServer seencontram no mesmo host. O UDPServer é o objetopertencente a outro componente de outro host.

Entre o WebServer e o UDPServer está a LAN que nestediagrama representa simplesmente uma rede local decomputadores. Esta figura representa a fase inicial de umpedido e os passos até que o pedido seja enviado de umcomponente para a rede e da rede para outro componente.Após o recebimento de um pedido pelo UDPServer outrasequência de mensagens é realizada, ver Fig. 6.

ANAIS ELETRÔNICOS V ENUCOMP

148

uma vez interceptado ele armazena a requisição em um buffer,as requisições são feitas diretamente pelo usuário e sãoguardas para futuras requisições despachadas na rede local. OWaitingFile responsável por enviar as mensagens derequisições na rede é síncrono, ele aguarda um intervalo detempo e caso não receba uma reposta sinaliza ao Downloadera realizar o download, que consequentemente também ésíncrono.

3.2 Diagrama de Classe

Segundo os requisitos do sistema e o modelo docomponente (seção 3.1), o sistema projetado é composto decinco classes principais e mais duas classes auxiliares. A Fig. 4apresenta a relação entre elas.

Figura 4. Diagrama de classes.

A classe Componente é a classe principal que possui ométodo para o início da execução da aplicação. Esta classe écomposta por quatro objetos, cada um da classe WebServer,WaitingFile, Downloader e UDPServe. Todos os quatroobjetos associados são únicos e executados em paralelo,portanto as classes são especializadas da classe Thread. Porquestão de clareza da Fig. 4 a não apresenta estasgeneralizações.

A classe Componente possui dois vetores:FiladeDownloads e FiladePedido. O vetor FiladeDownloadsé utilizado para armazenar as requisições disparadas pelousuário. O vetor FilaPedidos é utilizado para armazenar asrequisições enviadas pelos componentes da LAN e que serãoatendidas. Os quatro parágrafos a seguir explicam aresponsabilidade de cada uma das classes (ver Fig. 4).

WebServer é a classe responsável pela implementação dainteração entre as interfaces de detecção do evento dodownnload e o componente. Sua outra função é de registrar asrequisições para futuro processamento, por fim, é de suaresponsabilidade enviar uma mensagem ao usuário avisando-odo sucesso da operação. Como há possibilidade do disparo devárias requisições de downloads pelos usuários a classeWebServer cria um objeto da classe WebClientRequest .

WaitingFile é a classe responsável pela recepção de umarquivo antes requisitado e prometido por outro componente.

Uma vez sinalizado o envio pelo outro componente na rede écriado um objeto da classe ReceiveFile para receber o arquivo.Portanto, observa-se a possibilidade e a preocupação derecebimentos simultâneos na rede. A classe ReceiveFiletambém é uma generalização da classe Thread.

Downloader é a classe responsável por realizar o downloadde um arquivo da Internet. Seu método principal é uma rotinacircular de checagem do vetor FilaDownloads, quando o vetoresta vazio o objeto desta classe é bloqueado (Thread.wait()).Se o vetor contiver elementos, cada elemento representa umarequisição dispara pelo Usuário que não foi atendida pelosoutros componentes, entretanto este elemento descreve oarquivo a ser obtido da Internet.

UDPServer é a classe que modela o comportamento doobjeto responsável por escutar da rede local pedidos dedownload. Seu método principal apenas abre uma porta decomunicação UDP e aguarda a chegada de pacotes debroadcast. Uma vez recebido um pacote a mensagem éextraída e analisada. A análise consiste em procurar no vetorFilaDownloads se o arquivo requisitado faz parte da lista dearquivos obtidos pelo Downloader, se sim então é extraído dopacote o endereço de comunicação do requerente e salvo novetor de FilaPedidos para futuro processamento.

3.3 Diagramas de Sequência

A seguir são apresentados dois diagramas de sequênciailustrando a interação entre os objetos dos componentes.

Figura 5. Diagrama de sequência de um pedido de um Arquivo.

O diagrama de sequência (Fig. 5) apresenta a sequência demensagens entre os elementos. O Navegador e o WebServer seencontram no mesmo host. O UDPServer é o objetopertencente a outro componente de outro host.

Entre o WebServer e o UDPServer está a LAN que nestediagrama representa simplesmente uma rede local decomputadores. Esta figura representa a fase inicial de umpedido e os passos até que o pedido seja enviado de umcomponente para a rede e da rede para outro componente.Após o recebimento de um pedido pelo UDPServer outrasequência de mensagens é realizada, ver Fig. 6.

ANAIS ELETRÔNICOS V ENUCOMP

148

uma vez interceptado ele armazena a requisição em um buffer,as requisições são feitas diretamente pelo usuário e sãoguardas para futuras requisições despachadas na rede local. OWaitingFile responsável por enviar as mensagens derequisições na rede é síncrono, ele aguarda um intervalo detempo e caso não receba uma reposta sinaliza ao Downloadera realizar o download, que consequentemente também ésíncrono.

3.2 Diagrama de Classe

Segundo os requisitos do sistema e o modelo docomponente (seção 3.1), o sistema projetado é composto decinco classes principais e mais duas classes auxiliares. A Fig. 4apresenta a relação entre elas.

Figura 4. Diagrama de classes.

A classe Componente é a classe principal que possui ométodo para o início da execução da aplicação. Esta classe écomposta por quatro objetos, cada um da classe WebServer,WaitingFile, Downloader e UDPServe. Todos os quatroobjetos associados são únicos e executados em paralelo,portanto as classes são especializadas da classe Thread. Porquestão de clareza da Fig. 4 a não apresenta estasgeneralizações.

A classe Componente possui dois vetores:FiladeDownloads e FiladePedido. O vetor FiladeDownloadsé utilizado para armazenar as requisições disparadas pelousuário. O vetor FilaPedidos é utilizado para armazenar asrequisições enviadas pelos componentes da LAN e que serãoatendidas. Os quatro parágrafos a seguir explicam aresponsabilidade de cada uma das classes (ver Fig. 4).

WebServer é a classe responsável pela implementação dainteração entre as interfaces de detecção do evento dodownnload e o componente. Sua outra função é de registrar asrequisições para futuro processamento, por fim, é de suaresponsabilidade enviar uma mensagem ao usuário avisando-odo sucesso da operação. Como há possibilidade do disparo devárias requisições de downloads pelos usuários a classeWebServer cria um objeto da classe WebClientRequest .

WaitingFile é a classe responsável pela recepção de umarquivo antes requisitado e prometido por outro componente.

Uma vez sinalizado o envio pelo outro componente na rede écriado um objeto da classe ReceiveFile para receber o arquivo.Portanto, observa-se a possibilidade e a preocupação derecebimentos simultâneos na rede. A classe ReceiveFiletambém é uma generalização da classe Thread.

Downloader é a classe responsável por realizar o downloadde um arquivo da Internet. Seu método principal é uma rotinacircular de checagem do vetor FilaDownloads, quando o vetoresta vazio o objeto desta classe é bloqueado (Thread.wait()).Se o vetor contiver elementos, cada elemento representa umarequisição dispara pelo Usuário que não foi atendida pelosoutros componentes, entretanto este elemento descreve oarquivo a ser obtido da Internet.

UDPServer é a classe que modela o comportamento doobjeto responsável por escutar da rede local pedidos dedownload. Seu método principal apenas abre uma porta decomunicação UDP e aguarda a chegada de pacotes debroadcast. Uma vez recebido um pacote a mensagem éextraída e analisada. A análise consiste em procurar no vetorFilaDownloads se o arquivo requisitado faz parte da lista dearquivos obtidos pelo Downloader, se sim então é extraído dopacote o endereço de comunicação do requerente e salvo novetor de FilaPedidos para futuro processamento.

3.3 Diagramas de Sequência

A seguir são apresentados dois diagramas de sequênciailustrando a interação entre os objetos dos componentes.

Figura 5. Diagrama de sequência de um pedido de um Arquivo.

O diagrama de sequência (Fig. 5) apresenta a sequência demensagens entre os elementos. O Navegador e o WebServer seencontram no mesmo host. O UDPServer é o objetopertencente a outro componente de outro host.

Entre o WebServer e o UDPServer está a LAN que nestediagrama representa simplesmente uma rede local decomputadores. Esta figura representa a fase inicial de umpedido e os passos até que o pedido seja enviado de umcomponente para a rede e da rede para outro componente.Após o recebimento de um pedido pelo UDPServer outrasequência de mensagens é realizada, ver Fig. 6.

Page 156: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

149

Figura 6. Diagrama de sequência do recebimento de um arquivo.

Após a recepção de um pedido, o UDPServer (ver Fig. 5)verifica se faz o download do arquivo requisitado, se sim elearmazena o pedido e envia uma mensagem avisando que estáfazendo o download. Neste caso, o outro componente não iráiniciar o download e aguardará o envio pela rede local. Senenhum UDPServer espalhado na rede local responder oDownloader entrará em ação.

O Downloader é responsável pelo download do arquivopela Internet. Após o fim do download ele deve pesquisar ospedidos enfileirados e transmitir o arquivo para o WaitingFileque se encontra em outro host. O WaitingFile fica aguardandoo envio e após a conexão ele cria o objeto ReceiveFile paracada envio, uma vez que pode existir a transmissão de váriasfontes diferentes e de arquivos diferentes. Na Fig. 6 apresentao objeto Internet para ilustrar a Internet, na verdade não há umcomponente de software Internet. Os diagramas de sequenciaFig. 5 e Fig. 6 mostram a série de mensagens e oenvolvimento de vários objetos na rede.

Esta seção apresentou os principais aspectos funcionais domodelo de classes e a interação entre elas, a seguir na seção 4apresenta-se os aspectos tecnológicos para implementaçãodeste modelo.

IV. TECNOLOGIAS E INFRAESTRUTURA DE REDE

Após a modelagem do sistema, das classes e suasrespectivas funcionalidades, das relações e dependências, opróximo passo do projeto consiste na implementação. Nesteponto, várias tecnologias foram avaliadas e nesta seçãoapresentam-se as tecnologias preteridas na fase inicial que seencontra o trabalho. Na seção 5 é apresentada a JXTA comooutra tecnologia no, sua adição só foi possível através deexperimentos realizados com as ferramentas apresentadasnesta seção.

4.1 Firefox

O navegador Web, ou browser, permite ao usuário acessar oconteúdo presente em outras máquinas, o usuário requisita oconteúdo através de um endereço e por meio deste é iniciadauma conexão com a outra máquina, alem da visualização depáginas utiliza-se o navegador para download de arquivos.

Existem várias técnicas para capturar o início do download,uma alternativa é alterar o comportamento do SistemaOperacional, esta alternativa envolve uma codificaçãoparticular para cada Sistema Operacional. Afim de umaindependência do Sistema Operacional projetou-se umcomponente para o Firefox[17]. O Firefox permite à adição de

complementos que alteram seu comportamento padrão, alémdesta flexibilidade a vantagem dele ser gratuito foifundamental na escolha.

O Firefox é escrito com a linguagem de marcação XULdesenvolvida pelo próprio Mozilla. Firefox é um softwarelivre de código aberto, todavia o usuário poderá alterar suascaracterísticas e funcionamento através de extensões.

De acordo com o Mozilla [15] as extensões do Firefox, sãopacotes contendo arquivos que podem modificar ocomportamento e a interface do Firefox. Podem aindamonitorar eventos do browser, como por exemplo, o clique domouse sobre algum link. As extensões assim como o próprionavegador são codificadas com a linguagem XUL.

A extensão é um arquivo composto por documentos quedescrevem seu funcionamento e contem um arquivo manifestoo qual o Firefox sabe sobre uma extensão e o que deve serinstalado. Também uma extensão possui a pasta chrome naqual estão inseridos os conteúdos que personificam aaparência, idioma e scripts em JavaScript que definem ofuncionamento.

Para que o WebServer (seção 3.1) identifique umarequisição a partir do browser foi codificado um componentepara o Firefox. É utilizado o AJAX para prover a comunicaçãoentre o browser e o objeto WebServer.

4.2 Java e Sockets

A codificação do componente foi feita por meio daplataforma de desenvolvimento Java. A linguagem Java foiescolhida por apresentar facilidade na programação paraInternet, suporte a Threads, controle de concorrência eparalelismo e suporte a Sockets TCP e UDP. Além destasvantagens focadas no projeto a linguagem Java se destaca porser robusta, flexível, e suportar mobilidade e portabilidade.

A portabilidade é de suma importância para o projeto. Apossibilidade de construir o componente e o mesmo serexecutado em diferentes Sistemas Operacionais vai aoencontro da natureza distribuída dos componentes.

Sockets em redes de computadores são abstrações de canaisde comunicação, todo servidor que deseja ser acessado devecriar Socket Server.

Uma vez criado um Socket Server este pode ser acessadopor outro programa que inicie um Socket com o servidor. Aconexão é formada por uma dupla de sockets, o do cliente e doservidor. A dupla de sockets é caracterizada por uma quádruplaformada por endereço IP de origem e endereço IP de destino,porta de origem e porta de destinos.

Neste projeto algumas portas foram pré-definidas para acriação de sockets. A Fig. 7 é início do Arquivo Configure.javaretirado do projeto.

Figura 7. Arquivo Configure.java.

public class Configure{static int portOurDownWebServer = 2121;static int portOurDownWaitingFil = 2222;static int portOurDownWaitingFil = 9000;

}

ANAIS ELETRÔNICOS V ENUCOMP

149

Figura 6. Diagrama de sequência do recebimento de um arquivo.

Após a recepção de um pedido, o UDPServer (ver Fig. 5)verifica se faz o download do arquivo requisitado, se sim elearmazena o pedido e envia uma mensagem avisando que estáfazendo o download. Neste caso, o outro componente não iráiniciar o download e aguardará o envio pela rede local. Senenhum UDPServer espalhado na rede local responder oDownloader entrará em ação.

O Downloader é responsável pelo download do arquivopela Internet. Após o fim do download ele deve pesquisar ospedidos enfileirados e transmitir o arquivo para o WaitingFileque se encontra em outro host. O WaitingFile fica aguardandoo envio e após a conexão ele cria o objeto ReceiveFile paracada envio, uma vez que pode existir a transmissão de váriasfontes diferentes e de arquivos diferentes. Na Fig. 6 apresentao objeto Internet para ilustrar a Internet, na verdade não há umcomponente de software Internet. Os diagramas de sequenciaFig. 5 e Fig. 6 mostram a série de mensagens e oenvolvimento de vários objetos na rede.

Esta seção apresentou os principais aspectos funcionais domodelo de classes e a interação entre elas, a seguir na seção 4apresenta-se os aspectos tecnológicos para implementaçãodeste modelo.

IV. TECNOLOGIAS E INFRAESTRUTURA DE REDE

Após a modelagem do sistema, das classes e suasrespectivas funcionalidades, das relações e dependências, opróximo passo do projeto consiste na implementação. Nesteponto, várias tecnologias foram avaliadas e nesta seçãoapresentam-se as tecnologias preteridas na fase inicial que seencontra o trabalho. Na seção 5 é apresentada a JXTA comooutra tecnologia no, sua adição só foi possível através deexperimentos realizados com as ferramentas apresentadasnesta seção.

4.1 Firefox

O navegador Web, ou browser, permite ao usuário acessar oconteúdo presente em outras máquinas, o usuário requisita oconteúdo através de um endereço e por meio deste é iniciadauma conexão com a outra máquina, alem da visualização depáginas utiliza-se o navegador para download de arquivos.

Existem várias técnicas para capturar o início do download,uma alternativa é alterar o comportamento do SistemaOperacional, esta alternativa envolve uma codificaçãoparticular para cada Sistema Operacional. Afim de umaindependência do Sistema Operacional projetou-se umcomponente para o Firefox[17]. O Firefox permite à adição de

complementos que alteram seu comportamento padrão, alémdesta flexibilidade a vantagem dele ser gratuito foifundamental na escolha.

O Firefox é escrito com a linguagem de marcação XULdesenvolvida pelo próprio Mozilla. Firefox é um softwarelivre de código aberto, todavia o usuário poderá alterar suascaracterísticas e funcionamento através de extensões.

De acordo com o Mozilla [15] as extensões do Firefox, sãopacotes contendo arquivos que podem modificar ocomportamento e a interface do Firefox. Podem aindamonitorar eventos do browser, como por exemplo, o clique domouse sobre algum link. As extensões assim como o próprionavegador são codificadas com a linguagem XUL.

A extensão é um arquivo composto por documentos quedescrevem seu funcionamento e contem um arquivo manifestoo qual o Firefox sabe sobre uma extensão e o que deve serinstalado. Também uma extensão possui a pasta chrome naqual estão inseridos os conteúdos que personificam aaparência, idioma e scripts em JavaScript que definem ofuncionamento.

Para que o WebServer (seção 3.1) identifique umarequisição a partir do browser foi codificado um componentepara o Firefox. É utilizado o AJAX para prover a comunicaçãoentre o browser e o objeto WebServer.

4.2 Java e Sockets

A codificação do componente foi feita por meio daplataforma de desenvolvimento Java. A linguagem Java foiescolhida por apresentar facilidade na programação paraInternet, suporte a Threads, controle de concorrência eparalelismo e suporte a Sockets TCP e UDP. Além destasvantagens focadas no projeto a linguagem Java se destaca porser robusta, flexível, e suportar mobilidade e portabilidade.

A portabilidade é de suma importância para o projeto. Apossibilidade de construir o componente e o mesmo serexecutado em diferentes Sistemas Operacionais vai aoencontro da natureza distribuída dos componentes.

Sockets em redes de computadores são abstrações de canaisde comunicação, todo servidor que deseja ser acessado devecriar Socket Server.

Uma vez criado um Socket Server este pode ser acessadopor outro programa que inicie um Socket com o servidor. Aconexão é formada por uma dupla de sockets, o do cliente e doservidor. A dupla de sockets é caracterizada por uma quádruplaformada por endereço IP de origem e endereço IP de destino,porta de origem e porta de destinos.

Neste projeto algumas portas foram pré-definidas para acriação de sockets. A Fig. 7 é início do Arquivo Configure.javaretirado do projeto.

Figura 7. Arquivo Configure.java.

public class Configure{static int portOurDownWebServer = 2121;static int portOurDownWaitingFil = 2222;static int portOurDownWaitingFil = 9000;

}

ANAIS ELETRÔNICOS V ENUCOMP

149

Figura 6. Diagrama de sequência do recebimento de um arquivo.

Após a recepção de um pedido, o UDPServer (ver Fig. 5)verifica se faz o download do arquivo requisitado, se sim elearmazena o pedido e envia uma mensagem avisando que estáfazendo o download. Neste caso, o outro componente não iráiniciar o download e aguardará o envio pela rede local. Senenhum UDPServer espalhado na rede local responder oDownloader entrará em ação.

O Downloader é responsável pelo download do arquivopela Internet. Após o fim do download ele deve pesquisar ospedidos enfileirados e transmitir o arquivo para o WaitingFileque se encontra em outro host. O WaitingFile fica aguardandoo envio e após a conexão ele cria o objeto ReceiveFile paracada envio, uma vez que pode existir a transmissão de váriasfontes diferentes e de arquivos diferentes. Na Fig. 6 apresentao objeto Internet para ilustrar a Internet, na verdade não há umcomponente de software Internet. Os diagramas de sequenciaFig. 5 e Fig. 6 mostram a série de mensagens e oenvolvimento de vários objetos na rede.

Esta seção apresentou os principais aspectos funcionais domodelo de classes e a interação entre elas, a seguir na seção 4apresenta-se os aspectos tecnológicos para implementaçãodeste modelo.

IV. TECNOLOGIAS E INFRAESTRUTURA DE REDE

Após a modelagem do sistema, das classes e suasrespectivas funcionalidades, das relações e dependências, opróximo passo do projeto consiste na implementação. Nesteponto, várias tecnologias foram avaliadas e nesta seçãoapresentam-se as tecnologias preteridas na fase inicial que seencontra o trabalho. Na seção 5 é apresentada a JXTA comooutra tecnologia no, sua adição só foi possível através deexperimentos realizados com as ferramentas apresentadasnesta seção.

4.1 Firefox

O navegador Web, ou browser, permite ao usuário acessar oconteúdo presente em outras máquinas, o usuário requisita oconteúdo através de um endereço e por meio deste é iniciadauma conexão com a outra máquina, alem da visualização depáginas utiliza-se o navegador para download de arquivos.

Existem várias técnicas para capturar o início do download,uma alternativa é alterar o comportamento do SistemaOperacional, esta alternativa envolve uma codificaçãoparticular para cada Sistema Operacional. Afim de umaindependência do Sistema Operacional projetou-se umcomponente para o Firefox[17]. O Firefox permite à adição de

complementos que alteram seu comportamento padrão, alémdesta flexibilidade a vantagem dele ser gratuito foifundamental na escolha.

O Firefox é escrito com a linguagem de marcação XULdesenvolvida pelo próprio Mozilla. Firefox é um softwarelivre de código aberto, todavia o usuário poderá alterar suascaracterísticas e funcionamento através de extensões.

De acordo com o Mozilla [15] as extensões do Firefox, sãopacotes contendo arquivos que podem modificar ocomportamento e a interface do Firefox. Podem aindamonitorar eventos do browser, como por exemplo, o clique domouse sobre algum link. As extensões assim como o próprionavegador são codificadas com a linguagem XUL.

A extensão é um arquivo composto por documentos quedescrevem seu funcionamento e contem um arquivo manifestoo qual o Firefox sabe sobre uma extensão e o que deve serinstalado. Também uma extensão possui a pasta chrome naqual estão inseridos os conteúdos que personificam aaparência, idioma e scripts em JavaScript que definem ofuncionamento.

Para que o WebServer (seção 3.1) identifique umarequisição a partir do browser foi codificado um componentepara o Firefox. É utilizado o AJAX para prover a comunicaçãoentre o browser e o objeto WebServer.

4.2 Java e Sockets

A codificação do componente foi feita por meio daplataforma de desenvolvimento Java. A linguagem Java foiescolhida por apresentar facilidade na programação paraInternet, suporte a Threads, controle de concorrência eparalelismo e suporte a Sockets TCP e UDP. Além destasvantagens focadas no projeto a linguagem Java se destaca porser robusta, flexível, e suportar mobilidade e portabilidade.

A portabilidade é de suma importância para o projeto. Apossibilidade de construir o componente e o mesmo serexecutado em diferentes Sistemas Operacionais vai aoencontro da natureza distribuída dos componentes.

Sockets em redes de computadores são abstrações de canaisde comunicação, todo servidor que deseja ser acessado devecriar Socket Server.

Uma vez criado um Socket Server este pode ser acessadopor outro programa que inicie um Socket com o servidor. Aconexão é formada por uma dupla de sockets, o do cliente e doservidor. A dupla de sockets é caracterizada por uma quádruplaformada por endereço IP de origem e endereço IP de destino,porta de origem e porta de destinos.

Neste projeto algumas portas foram pré-definidas para acriação de sockets. A Fig. 7 é início do Arquivo Configure.javaretirado do projeto.

Figura 7. Arquivo Configure.java.

public class Configure{static int portOurDownWebServer = 2121;static int portOurDownWaitingFil = 2222;static int portOurDownWaitingFil = 9000;

}

Page 157: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

150

Nota-se que no arquivo é definido o identificador de trêsportas de rede. A porta TCP 2121 é utilizada para o Navegadorenviar uma requisição ao WebServer. A porta TCP 2222 éutilizada pelo WaitingFile para receber a sinalização do enviode um arquivo. E por fim, a porta UDP 9000 é utilizada paraenvio de datagramas multicast.

V. DESENVOLVIMENTO E CODIFICAÇÃO

5.1 Componente no Firefox

Todo o processo da construção do componente para oFirefox é extenso. Abaixo é apresentado o código do arquivobrowser.xml responsável pela mudança visual do Firefoxquando se clica com o botão direito encima de um link.

<overlay id="ourdown"xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

<script src="ourdown.js" /><popup id ="contentAreaContextMenu"><menuitem label="OurDown" oncommand="linkTargetFinder.run()"/></popup></overlay>

A incorporação do código acima no componente faz que aoclicar com o botão direito do mouse construa um “menu” coma opção Ourdown como mostrado na Fig. 8.

Figura 8. Imagem da opção Ourdown no menu do Firefox.

O arquivo ourdown.js contido no complemento possui afunção do envio da requisição via AJAX. O trecho abaixomostra este processo.

...try

{// Firefox, Opera 8.0+, SafarixmlHttp=new XMLHttpRequest();}

catch (e)...

xmlHttp.open("GET","http://localhost:2121?="+arquivo,true);xmlHttp.send(null);...

O método open do objeto xmlHttp faz uma conexão para aporta 2121 cujo destino é a própria máquina. Antes do uso docomponente do Firefox é necessária a instalação da outra partedo sistema responsável pela recepção destas conexões. Aconexão mostrada no código acima é um recurso do Javascriptmuito utilizado em requisições AJAX.

5.2 Componente UDPServer

A mensagem destinada a todos os componentes éencapsulada por um datagrama UDP, como o destino a priori é

desconhecido o datagrama é enviado para o endereço debroadcast da rede. O código a seguir mostra esta tarefa:

ds = new DatagramSocket();byte[] bufout = new byte[1024];DatagramPacket dp = new DatagramPacket(bufout, bufout.length);bufout = ("PEDIDO:" + request).getBytes();dp.setData(bufout);dp.setAddress(

InetAddress.getByName("255.255.255.255"));dp.setLength(bufout.length);dp.setPort(Configure.portOurDownUDPServer);ds.send(dp);

O código acima mostra a construção de um datagramarepresentado pelo objeto Java dp. O método setAddress éutilizado para armazenar o endereço de destino255.255.255.255. Este número representa o endereço debroadcast numa rede local. O código elucida uma parteimportante do funcionamento do componente WebServerresponsável pelo envio do datagramas UDP em broadcast narede local. Esta solução implica que o código é dependente daArquitetura TCP/IP e seu escopo de atuação restringe a umarede local, uma vez que os datagramas UDP de broadcast sãodescartados nos roteadores.

O artifício utilizado para enviar uma mensagem para todosos componentes da rede é uma característica particular dacamada de rede da Arquitetura TCP/IP. Assim, este códigodepende de como a camada de rede trata os datagramas comendereço de broadcast. O uso do UDP também se fundamentapor ser um protocolo com baixo overhead de rede e preferívelem relação ao TCP neste aspecto.

VI. NOVO CÓDIGO COM JXTA

Toda codificação do componente, incluindo as classesWebServer, WaitingFile, UDPServer e Downloader está emprocesso de alteração para funcionar segundo a plataformaJXTA. O objetivo é aprimorar o projeto com novos recursosprovidos por esta plataforma [24].

JXTA cujo significado é juxtapose (unidos), é um conjuntoaberto de protocolos específicos para construção de redesPeer-to-Peer que permite qualquer dispositivo de rede, taiscomo: sensores, smartphones, notebooks e servidores,comunicarem-se mutuamente como seus parceiros. Oprotocolo JXTA é independente de linguagem deprogramação, porém Java possui pacotes para suporte aoJXTA.

A substituição da API Socket Java por JXTA foi orientadaao desejo de tornar o projeto mais interoperável, independentede plataforma, independe de arquitetura de rede e apossibilidade de construir serviços mais ubíquos. Váriasfunções implementadas neste projeto, tais como: descoberta decomponentes, organização em grupo, aviso e descoberta derecursos (neste caso arquivos compartilhados), comunicaçãoentre eles, e monitoração da rede será suprida pelo JXTA,resultando na diminuição da codificação.

VII. CONSIDERAÇÕES FINAIS E TRABALHOS FUTUROS

Ourdown é um sistema distribuído cuja função é exercidacooperativamente por componentes constituídos de objetos

Page 158: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

151

com funções bem definidas. Seu propósito geral torna a redelocal de computadores conscientes da dinâmica de downloadde forma descentralizadas. A descentralização está emconsonância com o novo modo de utilização pelos os novosusuários acostumados com o compartilhamento e adescentralização de serviços.

Este artigo apresenta um novo modelo de gerência dedownload cuja sua vantagem foi formalmente apresentada. Oprojeto apresenta um paradigma que rompe com o modelotradicional de download. A forma tradicional de downloadsnão tira aproveito da grande diferença entre a largura de bandadas redes LAN em relação às WANS e não preocupam com odownload enquanto estão ocorrendo.

Este artigo relata a fase inicial do projeto desenvolvidosobre o aval do programa de Iniciação Científica daUniversidade Federal do Piauí (ICV 2012/2013UFPI/CSNHB). Descreve várias etapas do projeto ressaltandoa concepção, a modelagem, e a codificação. Quanto àcodificação destacaram-se algumas partes cruciais do códigopara execução do sistema, entre elas a componentização para oFirefox, a interceptação de downloads e a comunicação embroadcast via UDP.

Durante o desenvolvimento do código novos requisitossurgiram e serão implementados no decorrer do período doICV 2012/2013. Dentre os principais requisitos levantadossão: a) adicionar aspectos de segurança na comunicação entreos componentes; b) estabelecer o conceito de grupos pararestringir as mensagens na rede; c) permitir a busca dedownloads ativos através de coringas de pesquisa de nomes,endereços e estados; d) implementar um sistema de cachelocal nos componente para que os mesmos executassem opapel de proxy de cache; d) adicionar a possibilidade decooperação para downloads simultâneos de um mesmoarquivo, pois a atual codificação implica que um componentedeve aguardar o encerramento do download para que o mesmoseja retransmitido na LAN; e) Atualmente existe apenas ocomponente Ourdown para o Firefox, almeja-se desenvolverpara outros navegadores, especialmente o Google Chrome.

A plataforma JXTA foi escolhida em substituição de APISocket do Java por permitir que as novas funcionalidadessegundo os requisitos levantados possam ser implementadoscom maior agilidade, pois muitas das funcionalidades já estãoembutidas no JXTA, entre elas: agrupamento de componentes,segurança e comunicação em grupo.

Assim que o sistema adquirir maior estabilidade, robustez einterfaces mais amigáveis deseja-se sua distribuiçãogratuitamente. O intuito é a divulgação do curso de Sistema deInformação da Universidade Federal do Piauí como produtorade softwares inovadores e assim fomentar o interesse na áreade pesquisa, desenvolvimento e empreendedorismo na região.

REFERÊNCIAS[1] VEJA. Abril, 2011, ISBN 2221, Ano 44, publicada em 15 jun.

2011.[2] IWS. Internet World Stats, Disponível em:

http://www.internetworldstats.com, acessado em 10 ago 2012.[3] SOARES, Luiz Fernando G. Redes de Computadores: Das

LANs,MANs e WANs às Redes ATM. 2ª Edição. Rio de Janeiro:Elsevier, 1995.

[4] TANENBAUM, A. S. Sistemas Distribuídos: princípios eparadigmas. 2ª Edição. São Paulo: Pearson Prentice Hall, 2007.

[5] IDM, Disponível em http://www.internetdownloadmanager.com.[6] ORBIT, Disponível em acessado em 01/08/2012.

http://www.orbitdownloader.com/br/index.htm, aces. em 10 ago.2011.

[7] JDOWNLOAD, Disponível em http://jdownloader.org/ , acessadoem 10 ago. 2011.

[8] DEITEL, H. M. Java TM: como programar. 6ª Edição. São Paulo,Pearson Prentice Hall, 2005.

[9] FUNDAÇÃO MOZILLA. Disponível em: http://www.mozilla.orgAcesso em: 10 out. 2011.

[10] OAKS SCOTT, Travaset Bernard, Gong Li, JXTA in a Nutshell,O'Reilly, 2002.

[11] TANENBAUM, A. S. Redes de Computadores. 4ª Edição. Rio deJaneiro: Elsevier, 2003

[12] POSTEL. J e REYNOLDS J. File Transfer Protocol (FTP), RFC977, fev. 1986. http://www.rfc-editor.org/rfc/rfc977.txt.

[13] KUROSE J. F. e Ross K. W. Redes de Computadores e a Internet,Pearson: São Paulo: 2004.

[14] CLAFFY K., MILLER G. E THOMPSON K. The Nature of theBeast: Recent Traffic Meassurement from an Internet Backbone.Proceedings of Inet`98. Geneva, jul. 1998.http://www.caida.org/outreach/resources/papers/Inet98/.

[15] Squid Web Proxy. Disponível em: http://www.squid-cache.org.Acessado em: 04 nov 2012.

[16] Sitaram Iyer, Antony Rowstron, and Peter Druschel. 2002.Squirrel: a decentralized peer-to-peer web cache. In Proceedings ofthe twenty-first annual symposium on Principles of distributedcomputing (PODC '02). ACM, New York, NY, USA, 213-222.DOI=10.1145/571825.571861http://doi.acm.org/10.1145/571825.571861

[17] Hari Balakrishnan, M. Frans Kaashoek, David Karger, RobertMorris, and Ion Stoica. 2003. Looking up data in P2P systems.Commun. ACM 46, 2 (February 2003), 43-48.DOI=10.1145/606272.606299http://doi.acm.org/10.1145/606272.606299

[18] Almesberger, W., Salim, J., Kuznetsov, A., and Knuth, D. (1999).“Differentiated Services on Linux”. Tecnical Report ietf internetdraft, Internet Enginnering Task Force. URL athttp://www.almesberger.net/cv/papers/18270721.pdf.

[19] Blake, S., Black, D., Carlson, M., Davies, E., Wang, Z., and Weiss,W. (1998). “An architecture for Differentiated Services ”.Tecnhinal Report RFC 2475, Internet Engineering Task Force.URL at http://www.ietf.org.

[20] Nichols, K., Blanke, S., Baker, F., and Black, D. (1998).”Definition of the Differentiated Services Field (DS Fiel d) in theIPv4 and IPv6 Headers”. Tecnhinal Report RFC 2474, InternetEngineering Task Force. URL at http://www.ietf.org.

[21] Braden, R., Clack, D., and Shenker, S. (1994). “Integrated Servicesin the Internet Architecture: an Overview”. Tecnhinal Report RFC1633, Internet Engineering Task Force. URL at http://www.ietf.org.

[22] Pimental M, Fuks H, et al, Sistemas Colaborativos, Rio de Janeiro:Elsevier, 2011.

[23] MDN. Disponível em: <https://developer.mozilla.org/pt-BR/>Acesso em: 10 out. 2011

[24] http://www.jxta.org

Rayner Gomes Sousa possui graduação em Ciência daComputação pela Fundação Integrada Municipal de EnsinoSuperior (1998) e mestrado em Ciência da Computação pelaUniversidade Federal de Uberlândia (2005). Atualmente éProfessor Titular da Universidade Federal do Piauí eProfessor Contratado da Universidade Aberta do Piauí. Temexperiência na área de Ciência da Computação. Atuando

principalmente nos seguintes temas: Internet, Qualidade de Serviço, CORBA,DiffServ, JXTA e Android.

Page 159: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

152

Abstract— Underlying the development of the SemanticWeb, the project Linked Data aims to define a set of bestpractices for publishing and connecting structured data onthe Web with the purpose of creating a Web of Data. To thisend, at first, existing data should be converted to a standardmodel in such a way that they can be understood by softwareagents and be used by diverse applications. In this light, thetool named SenseRDF has been developed to allow theconversion of data in formats such as PDF and XML to arepresentation model in RDF. The generated data (in RDF)follow the Linked Data principles and adhere to commonlyaccepted vocabularies.

Keywords — data conversion, Linked Data, vocabularies,RDF.

I. INTRODUÇÃO

Internet contemporânea, nos moldes da World WideWeb (ou simplesmente Web), vive um constante

processo de evolução e tem revolucionado a forma comocriamos conteúdo e trocamos informações. A Weborganizou as informações na Internet por meio dehipertexto e tornou a interação do usuário com a redemundial mais amigável. Entretanto, esses conteúdospublicados normalmente seguem regras apenas sintáticas,com objetivos de apresentação, não permitindo que seconsiga extrair semântica dos mesmos, nem ligá-los, semque para isso seja feito um grande esforço deimplementação. Considerando isso, a Web atual pode serclassificada ainda como sintática e o processo deinterpretação dos conteúdos disponibilizados fica a cargodos usuários [1]. Diante dessa constatação, uma novavisão da Web vem sendo buscada e tem sido denominadade Web Semântica (Semantic Web) [2]. Os documentos naWeb Semântica possuiriam, além das informações quedescrevem a estrutura sintática do seu conteúdo, outrasinformações que dariam o entendimento semântico a esseconteúdo.

Como base ao desenvolvimento da Web Semântica,surgiu o projeto Linked Data que delimita um conjunto depráticas para publicar e conectar dados estruturados naWeb, com o intuito de criar um espaço global de dados ouuma “Web de Dados” [3]. Estas práticas sãofundamentadas em tecnologias Web, como HTTP(Hypertext Transfer Protocol) e URI (Uniform ResourceIdentifier), e no uso do modelo RDF (ResourceDescription Framework), com o objetivo de permitir a

leitura dos dados conectados semanticamente, de formaautomática, por agentes de software.

Para aplicar essas práticas e alcançar a visão da Web deDados, é necessário trabalhar com algumas etapasbásicas: (i) conversão de dados disponíveis em formatosdiversos, como, por exemplo, PDF, XML e HTML, emmodelo de representação padrão RDF; (ii) associação dosobjetos presentes nos diversos conjuntos de dados pormeio de links; (iii) publicação dos conjuntos de dados nanuvem (Linked Data Cloud) [4] e o (iv) consumo dosdados publicados por meio de aplicações construídas paraeste fim.

Este trabalho abrange a primeira etapa do processo.Para viabilizar a publicação de dados no padrão LinkedData, a ferramenta SenseRDF vem sendo desenvolvidacom o objetivo de converter dados atualmente emformatos PDF e XML em modelos RDF, seguindo osprincípios propostos [4]. Para escolher os formatos aserem contemplados na primeira versão da ferramenta,fizemos um estudo dos dados atualmente disponibilizadosno portal do governo brasileiro1. Constatamos que boaparte deles se encontra em XML e PDF e que existemainda poucas ferramentas que contemplam os mesmos [5].Diante disso, a SenseRDF vem sendo implementada e,neste artigo, apresentamos a versão que converte arquivosPDF (seus metadados) em RDF. A ferramenta oferece umambiente simples de ser utilizado e permite atualizaçãodos metadados PDF, caso seja de interesse do usuário. Osdados (metadados) convertidos atendem aos princípiosformulados no projeto Linked Data: (i) usa URIs paranomear recursos; (ii) utiliza vocabulários recomendadospara identificar os recursos e (iii) permite que as URIssejam acessadas através do protocolo HTTP.

Este trabalho está organizado da seguinte forma: aSeção 2 introduz a abordagem SenseRDF; a Seção 3apresenta a ferramenta na prática por meio de exemplos; aSeção 4 descreve os trabalhos relacionados, e a Seção 5tece algumas considerações e indica trabalhos futuros.

II. A ABORDAGEM SENSERDF

A sistemática para disponibilizar dados na Web, segundo opadrão Linked Data, envolve um processo no qual os dados dediferentes fontes são selecionados e depois convertidos

1 http://dados.gov.br/

A. Silva, N. França, B. Paulino, D. Souza and W. Travassos, Member, Instituto Federal deEducação, Ciências e Teconologia da Paraíba - IFPB

SenseRDF: Towards a Linked Data ConversionTool

B. Communications Modeling

A

Page 160: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

153

para representações em um modelo padrão. Estaconversão segue o conjunto de princípios estabelecidos,descritos resumidamente a seguir [4]: (i) o uso de URIspara identificação dos objetos/recursos; (ii) a utilização detecnologias, como RDF2 e SPARQL3, para descrição econsulta a estes recursos, respectivamente e (iii) oreaproveitamento de URIs, de forma que seja possívelestabelecer ligações entre os dados disponíveis, com afinalidade de possibilitar a navegação por meio destasligações.

Um desses princípios defende o uso de RDF comomodelo de representação de dados estruturados na Web[6]. O RDF é um modelo de dados que descreve recursosou objetos, ou seja, entidades que possuem umaidentidade na web [6, 7]. Os recursos são descritos comouma tripla (S, P, O), interpretada como “S possui P comvalor O”, onde S é o sujeito da tripla, designado por umrecurso, P é o predicado da afirmação, designado por umrecurso e O é o objeto da afirmação, designado tambémpor um recurso ou por um literal [7, 8]. Com o RDF, ouso de links e de vocabulários recomendados, é possíveldescrever significado sobre os objetos ou recursos. Maisespecificamente, um link RDF pode ser uma tripla RDFem que o sujeito da tripla é uma referência URI nonamespace de um conjunto de dados, enquanto opredicado e/ou objeto da tripla são referências URIapontando para o namespace de outro conjunto de dados.“Derreferenciando” essas URIs, produzimos umadescrição do recurso vinculado fornecido pelo servidorremoto. Essa descrição irá geralmente conter um linkRDF adicional que aponta para outra URI que, por suavez, pode ser também “derreferenciada”. Isto é como adescrição de recursos individuais é tecida dentro da Webde Dados. Isto é também como a Web de Dados pode sernavegada usando um navegador Linked Data ou rastreadopor um robô de um engenho de busca.

Dentro desse panorama, o objetivo da SenseRDF épermitir converter dados, a princípio PDF e XML, emmodelo RDF, fazendo uso de informações do domínio dosdados e referenciando os termos dos vocabuláriospertinentes a este domínio. A Figura 1 apresenta umavisão geral da arquitetura da ferramenta SenseRDF.

2 http://www.w3.org/RDF/3 http://www.w3.org/TR/rdf-sparql-query/

Figura 1. Arquitetura da Ferramenta SenseRDF

A ferramenta SenseRDF permite a conversão de dadosem formato PDF e XML. Como forma de prover asemântica do domínio a partir de terminologiasrecomendadas (vocabulários), a ferramenta mantém umrepositório de vocabulários, como, por exemplo, o FOAF4

e o DC5, além de ontologias de domínio que possam serusadas como referência de termos.

Para a conversão, inicialmente a ferramenta identificaos metadados existentes na fonte de dados de entrada,metadados estes que podem ser de arquivos PDF ouXML. Um arquivo PDF contém metadados como Authore Title, já o XML pode conter diversos tipos quedependem do criador da fonte. Em seguida, a ferramentagera um alinhamento de correspondências entre estesmetadados e os termos (conceitos) existentes nosvocabulários recomendados. O objetivo do alinhamento éexplicitar relações de similaridade entre os metadados dafonte de dados e os termos dos vocabulários existentes.Para os objetivos da ferramenta, estamos buscandorelações de igualdade entre esses termos, para identificaro que pode ser referenciado dos vocabulários existentes.O alinhamento é persistido e, a cada novo arquivo a serconvertido, é verificado se a correspondência entre ometadado e o termo do vocabulário já existe. Caso nãoexista, ela é inserida neste arquivo de correspondências.Considerando arquivos PDF como fontes de dados,exemplos de correspondências de igualdade presentes noalinhamento são:

Criador dc:creator Autor res:author

Onde Criador e Autor são metadados de um arquivoPDF, o prefixo dc é referente ao vocabulário DC (DublinCore) e o prefixo res é referente a uma ontologia dedomínio sobre autores de publicações.

Caso não haja nenhum termo de vocabulárioequivalente a um metadado, este poderá ser adicionado a

4 http://www.foaf-project.org/5 http://dublincore.org/documents/dcmi-terms/

XML

PDF

RDF

FOAF OntologiaRes

SKOS DC

Arquivo deCorrespondências

ExtraçãodeMetadados

ExtraçãodeInstâncias

GeradorRDF

IdentificaçãodeTermos

IdentificaçãodeCorrespondências

Repositório de Vocabulários

Page 161: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

154

uma ontologia existente no repositório. Caso estaontologia não exista, ela será criada e armazenada norepositório para ser utilizada na geração/atualização defuturos alinhamentos e nas conversões subsequentes.

Depois de extraídos os metadados, as instâncias(indivíduos), no caso de arquivos XML, são tambémextraídas. A ferramenta, então, gera um arquivo RDF quecontém os metadados referenciados por meio dos termosdos vocabulários e os objetos identificados provenientesdas instâncias extraídas.

Um resumo dos componentes que fazem parte daarquitetura do SenseRDF é apresentado a seguir:

Repositório de Vocabulários: repositório onde seencontram armazenados os vocabulários eontologias de domínio que são utilizados pelaferramenta. Caso seja necessário, o usuário podeadicionar uma ontologia ou vocabulárioespecífico de seu domínio.

Arquivo de Correspondências: armazena oalinhamento obtido no processo de matchingentre os metadados da fonte de dados e os termosdos vocabulários existentes.

Extração de Metadados: extrai os metadados dafonte de dados escolhida pelo usuário.

Extração de Instâncias: é usado no caso dousuário escolher uma fonte de dados XML. Estemódulo extrai os dados (instâncias ouindivíduos) existentes na fonte de dados.

Identificação de Correspondências: gera ouatualiza um alinhamento de correspondênciasentre os metadados da fonte de dados e os termosexistentes nos vocabulários recomendados.

Identificação de Termo do Vocabulário: usandoas correspondências identificadas, este móduloreferencia um metadado da fonte quanto ao seutermo correspondente no momento da geração doRDF.

Geração RDF: módulo principal que recebe ostermos identificados nas correspondências, osmetadados e as instâncias da fonte de dados,gerando assim um RDF final.

III. A FERRAMENTA SENSERDF NA PRÁTICA

A ferramenta SenseRDF foi implementada emlinguagem Java, utilizando as APIs Jena6, JDOM7, Itext8,Alignment API9 e OWL API10. A primeira versão da

6 http://jena.apache.org/7 http://www.jdom.org/8 http://api.itextpdf.com/9 http://alignapi.gforge.inria.fr/align.html10 http://owlapi.sourceforge.net/

SenseRDF contempla todo o processo de conversão paraarquivos PDF. A conversão é realizada sobre seusmetadados e um link para o arquivo é mantido. Comonem sempre um arquivo PDF é criado definindo os seusmetadados (isso não é uma prática comum), a ferramentapermite que o usuário defina um conjunto mínimo demetadados para o arquivo em questão. O usuário podeatualizar os mesmos também. Nesta seção, apresentamosa ferramenta, de forma prática, por meio de exemplos,considerando arquivos PDF.

A Figura 2 apresenta a interface da SenseRDF quemostra algumas de suas opções: (I) campo paraidentificação do arquivo (pode ser um arquivo em discoou uma URL indicando o mesmo); (II) área de exibiçãodos metadados do arquivo, que podem ser alterados nocaso de arquivos PDF (como mencionado, nem sempre osarquivos PDF originais possuem metadados); (III) opçãode geração de RDF - o usuário pode escolher entre gerar oRDF em sintaxe XML ou em N3 e (IV) área onde seráexibido o RDF gerado.

Page 162: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

155

Como a ferramenta precisa das correspondências entreos metadados e os termos dos vocabulários, antes de geraro RDF, ela cria ou atualiza o alinhamento existente.

Para isso, ela usa um processo de matching que fazuma análise linguística [9] e verifica a proximidade dosnomes dos metadados do arquivo PDF e os nomes dostermos dos vocabulários (diferença de apenas algunscaracteres, análise de possíveis radicais, etc). Oalinhamento gerado é 1:1 e indica um grau desimilaridade (medida de confiança) entre os elementosassociados. Um fragmento do alinhamento decorrespondências é mostrado como exemplo na Figura 3.

Dessa forma, quando um alinhamento é gerado ouatualizado, obtemos correspondências com diferentesníveis de similaridade. Isso é reportado através de umamedida de confiança. Neste exemplo, temos umacorrespondência com medida igual a 1.0 que indica, comprecisão, uma equivalência entre o metadado e o termo. Amedida 0.86 indica um grau de similaridade muito alto.Realizando testes, percebemos que asjk correspondênciascom medida acima de 0.8 indicam equivalência entre ostermos. Utilizamos então este threshold, para limiar aidentificação das correspondências de equivalência.Assim, nesta versão, aquelas correspondências com

Figura 2. Interface da SenseRDF com algumas Opções

Figura 3. Fragmento do Alinhamento obtido entre os Metadados e os Construtores dos Vocabulários.

Page 163: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

156

threshold acima de 0.8 são definidas como equivalênciaentre o metadado e o termo.

Caso algum metadado não possua termo equivalente, aferramenta solicita do usuário que selecione nosvocabulários existentes algum termo que possa ser usado(Figura 4). Se não existir um compatível, a ferramentagera este novo termo adicionando o mesmo a umaontologia no repositório. Para isso, o usuário marca quenão encontrou nenhum termo correspondente aometadado exibido. Este novo termo será adicionado a umaontologia “othersTerms”, que incorpora os termos quenão pertencem aos vocabulários existentes. O usuárioindica a que superclasse deve ser vinculada este novotermo ou conceito (subclasse).

Figura 4. Seleção de Termos de Vocabulários para Correspondência comMetadados.

Para geração do RDF, a ferramenta lê o alinhamentode correspondências, para que sejam identificados ostermos dos metadados da fonte. Com os metadados etermos de referência em mãos, de acordo com a opção desintaxe RDF escolhida pelo usuário (RDF/XML ou N3), aferramenta gera o RDF final, como mostrado na Figura 5(em XML) e na Figura 6 (em N3).

Figura 5. Exemplo de RDF gerado em Sintaxe XML.

Figura 6. Exemplo de RDF Gerado em sintaxe N3.

IV. TRABALHOS RELACIONADOS

Para a publicação de dados RDF, podem ser usadasferramentas específicas de conversão. Atualmente,existem ferramentas para conversão de planilhas, arquivosCSV, dados relacionais e outros documentos [10]. Umexemplo é a ferramenta ConvertToRDF [11],desenvolvida pela MINDSWAP (Maryland Informationand Network Dynamics Lab Semantic Web AgentsProject) que tem como principal objetivo converterarquivos em formato XLS para RDF. A aplicação permiteao usuário executar o mapeamento através de umaontologia própria da ferramenta, mas também permite ouso de outras ontologias para utilização nosmapeamentos. A ferramenta demonstra ser limitada na

Page 164: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

157

automação, uma vez que exige que o usuário faça todo omapeamento manualmente, sem possuir um repositórioque armazene estes mapeamentos manuais, para quepossa reutilizá-los mais tarde. Outro exemplo deferramenta é A TopBraid Composer [5] que ofereceeditores gráficos visuais para RDF e diagramas de classe,incluindo a capacidade de gerar consultas SPARQL. Elatambém permite a conversão automática de XML, XSD,Excel, UML e outras fontes de dados.

Há também o DBpedia [12], um projeto colaborativoque extrai dados do Wikipedia e os converte em dadosestruturados usando o padrão RDF. O DBpedia estádisponível, permitindo aos usuários utilizar e colaborarcom o enriquecimento de seu repositório de datasets. ATripFS [13] é uma ferramenta que representa os diretóriose arquivos como recursos RDF. TripFS extrai metadadose cria links para outros conjuntos de dados e fornece umend-point SPARQL que permite aos clientes executarconsultas sobre o sistema de arquivo inteiro. A Bio2RDFpor outro lado converte documentos da área debiomedicina [14]. Visa também criar uma nuvem dedados sobre medicina. Lebo e Williams [15] apresentamuma abordagem para converter os dados CSV em PadrãoLinked Data, de forma que permita melhoramentosincrementais. Aplicando esta abordagem, eles foramresponsáveis por converter uma grande quantidade dedados governamentais dos EUA em RDF.

Apesar dos esforços e das ferramentas existentes, aindaexiste uma demanda não atendida por serviços quefacilitem o processo de conversão de dados,especialmente aqueles em formato PDF e XML. Emgeral, as ferramentas se concentram no aspecto sintáticoda geração RDF, enquanto que a questão semântica,referente ao uso de anotações ou referências amecanismos de controle terminológico (vocabulários), setorna incompleta. Diante disso, como forma de facilitar aconversão de dados no contexto brasileiro e buscandodesenvolver uma solução que faça uso da semântica dodomínio dos dados e dos padrões existentes, a ferramentaSenseRDF foi especificada e vem sendo desenvolvida.

Analisando nosso trabalho e comparando com osdemais, destacamos que, ao converter os metadados PDFpara RDF, nossa ferramenta, com o auxílio do usuário,identifica termos dos vocabulários existentes norepositório ou pode também criar novos termos, caso façasentido ao domínio dos dados e não exista uma ontologiaainda para este domínio. Esta nova ontologia é persistidano repositório e será reutilizada em futuras conversões dearquivos que pertençam àquele domínio. O conjunto deontologias e vocabulários existentes no repositório,juntamente com as correspondências já identificadas,automatiza futuras conversões e evita que o usuário tenhaque fazer as correspondências entre metadados e termosde vocabulários manualmente. Assim, novas conversões

serão mais rápidas e precisas. Nossa ferramenta tambémse diferencia por estar sendo desenvolvida de modo apermitir a conversão de dados disponibilizados pelogoverno brasileiro em seu portal.

V. CONSIDERAÇÕES E TRABALHOSFUTUROS

Este trabalho apresentou a ferramenta de conversão dedados denominada SenseRDF. A SenseRDF provê umambiente intuitivo e transparente onde o usuário escolheformatos de fontes de dados que deseja converter para omodelo RDF segundo o padrão Linked Data. Para isso, aferramenta utiliza um processo de matching que gera umalinhamento de correspondências entre os metadados dafonte e os termos existentes nos vocabulários do domíniodos dados. Utilizando estas correspondências, aSenseRDF gera o RDF, referenciando os termosidentificados. O resultado pode ser obtido tanto emRDF/XML quanto no formato N3.

Nesta primeira versão, a ferramenta trabalha comdados no formato PDF, gerando o modelo RDF apenascom seus metadados. Encontra-se em andamento aimplementação da opção de arquivos XML, que irá geraro modelo RDF tanto para os metadados identificadosquanto para as instâncias (indivíduos). Como trabalhofuturo, a ferramenta será estendida para permitir aidentificação de links entre dois conjuntos de dados RDFdiferentes.

REFERÊNCIAS

[1] Costa A., Yamate F. 2009. Semantic Lattes: uma ferramenta deconsulta baseada em ontologias. Trabalho de Graduação emEngenharia de Computação - Escola Politécnica. IME/USP.

[2] Berners-Lee T., Hendler J., Lassilia O. 2001. The semantic web.Scientific American. 284(5):34–44, Mai 2001.

[3] Bizer C., Heath T., Berners-Lee T. 2009. Linked data - the story sofar. Int. J. Semantic Web Inf. Syst. 5(3):1–22, 2009.

[4] Heath, T., Bizer, C. 2011. Linked Data: Evolving the Web into aGlobal Data Space (1st edition). Synthesis Lectures on theSemantic Web: Theory and Technology, 1:1, 1-136. Morgan &Claypool, 2011.

[5] TopBraid Documentation. Available athttp://www.topquadrant.com/products/TB_Composer.html.

[6] Klyne, G., Carroll, J. J., McBride, B. 2004. Resource descriptionframework (RDF): Concepts and abstract syntax. DOI=http://www.w3.org/TR/rdf-concepts/

[7] Lóscio, B., Cunha, D.; Souza, D. 2011. Linked Data: da Web deDocumentos para a Web de Dados. Escola Regional Ceará,Maranhão e Piauí 2011. Teresina: ERCEMAPI. 2011, v. 1, p. 79-99.

[8] Travassos W., Silva A., França N., Dantas R., Souza D. 2011.RDF, RDF(S) e OWL: Uma Análise Comparativa Visando Atingiro Padrão Linked Data. In: Anais Ciências Exatas e da Terra do VICongresso de Pesquisa e Inovação da Rede Norte e Nordeste deEducação Tecnológica – CONNEPI. Pg. 413-423. Natal, RN.

Page 165: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

158

[9] Euzenat J., 2004. An API for ontology alignment. Proceedings ofthe International Semantic Web Conference (ISWC), pages 698–712, 2004.

[10] Auer, S., Dietzold, S., Lehmann, J., Hellmann, S., and Aumueller,D. 2009 Triplify: Light-weight linked data publication fromrelational databases. In Quemada, J., León, G., Maarek, Y. S., andNejdl, W., editors, Proceedings of the 18th internationalConference on World Wide Web, WWW 2009, Madrid, Spain,April 20-24, 2009, pages 621–630. ACM.

[11] ConvertertoRDF Documentation. Available athttp://www.w3.org/wiki/ConverterToRdf.

[12] Kobilarov G., Bizer C., Auer S., Lehmann J. 2009. DBpedia - ALinked Data Hub and Data Source for Web and EnterpriseApplications. Web Semantics Science Services and Agents on theWorld Wide Web. Volume: 7, Issue: 3, Publisher: Elsevier, Pages:154-165.

[13] Schandl, B., & Popitsch, N. 2010. Lifting File Systems into theLinked Data Cloud with TripFS. 3º International Workshop onLinked Data on the Web, Raleigh, North Carolina, USA. DOI=http://eprints.cs.univie.ac.at/69/

[14] Bio2RDF Documentation. Available at http://bio2rdf.org/

[15] Ding, L., Lebo, T., Erickson, J. S., DiFranzo, D., Williams, G. T.,Li, X., Michaelis, J., Graves, A., Zheng, J. G., Shangguan, Z.,Flores, J., McGuinness, D. L., and Hendler, J. 2010. TWC LOGD:A Portal for Linked Open Government Data Ecosystems. In JWSspecial issue on semantic web challenge’10.

Ayrton Nádgel is an undergraduate student atthe Federal Institute of Education, Science andTechnology of Paraíba (IFPB), Brazil. He isalso a member of a research project at IFPB.His main research interests regard SemanticWeb and Linked Data.

Naftali França is an undergraduate student atthe Federal Institute of Education, Science andTechnology of Paraíba (IFPB), Brazil. He isalso a member of a research project at IFPB.His main research interests regard SemanticWeb and Linked Data.

Bruno Paulino is an undergraduate student atthe Federal Institute of Education, Science andTechnology of Paraíba (IFPB), Brazil. He isalso a member of a research project at IFPB.His main research interests regard SemanticWeb and Linked Data.

Damires Souza obtained her PhD (doctorate)in Computer Science from the FederalUniversity of Pernambuco (UFPE), Brazil. Sheis currently an Associate Professor at theFederal Institute of Education, Science andTechnology of Paraiba (IFPB), Brazil. She isalso the coordinator of some research projects

at IFPB. Her main research interests are concerned with theareas of databases and semantic web.

Walter Travassos is a master student inComputer Science at the Federal University ofPernambuco (UFPE), Brazil. He is a member

of some research projects at UFPE and at the Federal Institute ofEducation, Science and Technology of Paraíba (IFPB), Brazil.His main research interests are concerned with Semantic Web,Data Quality and Data Conversion.

Page 166: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

159

Abstract— This paper presents a prototype for a solution usingAugmented Reality (AR) and mobile devices technologies to resolvea problem occurred in Itaipu, where new employers has noknowledge about how to do maintenance in old measuringinstruments. The goal is present the system that was proposed, andshow the reported difficulties found in development by the tests inlaboratory,and defining a proposal of how to resolve thisdifficulties with the help of knowhow from the technical engineersifItaipu.

Keywords—Augmented Reality, Mobile Devices, MeasuringInstruments.

I. INTRODUÇÃO

M canteiros de obras e construções de barragens deconcreto e enrocamento existe uma preocupação constante

com o estado do solo, de sua fundação principalmente porquestões de segurança. Para isto a engenharia utiliza dediversos recursos para realizar monitoramento constante dosolo através de instrumentos que medem vibrações,deslocamentos, densidade, etc[1]. Em Itaipu, funcionáriosnecessitam realizar manutenções em diversos instrumentos demediçãonecessitando de conhecimento para tal. Estasmanutenções são, muitas vezes, com periodicidade longa epodem envolver a troca de peças caras, sendo que seumanuseio correto é muito importante para não danificar a peçae encarecer a manutenção. Para diminuir tal problema Itaipu,através da gestão de conhecimento, procura formas paradisseminaro conhecimento aos novos funcionários.

Este artigo apresenta estudos realizados sobre a tecnologiade realidade aumentada e dispositivos móveispara elaboraçãode sistemas para auxiliar a manutenção de extensômetros dehaste múltipla, um dos instrumentos utilizados para mediçãoem barragens.

Sendo assim este artigo apresenta na seção II, informaçõessobre a tecnologia de realidade aumentada, informando seusprincipais elementos e aplicações. A seção III apresentainformações de uso dos extensômetros de haste múltipla, emItaipu, alvo do estudo de casos deste artigo. A seguinte (seçãoIV) diz a respeito da construção de sistemas de realidadeaumentada em dispositivos móveis, trazendo informaçõessobreo Android e sobre sua arquitetura em camadas paraconstrução de aplicativos. A seção V apresenta informaçõessobre o núcleo da SDK QualcommVuforia, ferramentaescolhida para implementar este sistema, e sobre as possíveis

T. A.Nardi, Acadêmico da Universidade Estadual do Oeste do Paraná(Unioeste), Foz do Iguaçu, Paraná.

F. F. F. Peres, Docente da Universidade Estadual do Oeste do Paraná(Unioeste), Foz do Iguaçu, Paraná.

formas de realizar a identificação de objetos reais (tracker) pormeio desta ferramenta. Por fim a seção VI e VII apresentamrespectivamente as informações sobre o sistema propostoatravés da identificação das principais considerações daconstrução do mesmo e dos principais aspectos de arquiteturadefinidos para construção do mesmo e os resultados obtidosaté o momento. A seçãoVIII apresenta as conclusões obtidas.

II. REALIDADE AUMENTADA

A realidade aumentadapode ser entendida como umatecnologia que realiza o meio campo entre a realidade virtual ea telepresença (totalmente real). Para considerarmos umsistema como sendo de realidade aumentada o mesmo deveconter três elementos chave: combinar real e virtual, serinterativo em tempo real e deve ser registrado em 3D [2].

As principais áreas potenciais para criação de aplicaçõesusando esta tecnologia segundo Azuma são [2]: Medicina:suporte para visualização médica em geral na

sala de cirurgia. Realidade aumentada pode ser usada parareduzir o tamanho das incisões médicas geradas empequenas cirurgias, através do mapeamento 3D dosórgãos e partes afetadas do paciente;

Manufatura e reparo:úteis em atividades de fabricaçãode peças e materiais, além de reparo nos mesmos atravésda criação de tutoriais interativos.Esta é a área ondeaplica-se a realidade aumentada neste artigo;

Anotações e Visualização: compartilha informações emambientes públicos, por exemplo,um sistema de realidadeaumentada pode apresentar informações sobre livros deuma biblioteca;

Planejamento de trajetória de Robôs: existem casos noqual existem atrasos consideráveis de tempos e consumode recursos no controle de robôs a distância. Neste casoutiliza-se a realidade aumentada para realizar simulaçõese analisar o ambiente antes de se efetuar o comando. Porexemplo: robôs em expedições espaciais no planetaMarte;

Entretenimento: exemplo clássico de aplicação darealidade aumentada. Como grande ponto de estimulopara o seu uso tem-se o fato de que a indústria de cinemaconsidera em determinados casos mais barato construirobjetos de cenário em 3D e mistura-los a uma cena real doque construir de fato o objeto;

Aviação Militar: arealidade aumentada auxilia o pilotoem cálculos de trajetórias de mísseis e colisões.

T.A.Nardi; F. F. F. Peres

Utilização de Realidade Aumentada e DispositivosMóveis para Auxiliar na Manutenção de Instrumentos

de Medição de Barragens

E

Page 167: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

160

A. Principais elementos de um sistema de RA

A construção de sistemas de realidade aumentada requer trêsprincipais subsistemas. O primeiro subsistema é o gerador decenas, responsável por misturar elementos reais e virtuais egerar a cena de realidade aumentada. O segundo subsistema éo display, estes por sua vez é dividido em display ótico edisplay de vídeo. A diferença destes displays está no fato deque através do display ótico o usuário pode ver o mundo realdiretamente e no display de vídeo o usuário vê o mundoatravés de um monitor. E por fim, o rastreamento e detecção,também denominados trackers, são utilizados pelos sistemasde realidade aumentada paramapear posições no mundo real,definindo informações como ângulo, campo de visão, etc [3].

III. EXTENSÔMETRO DE HASTE MÚLTIPLA

Extensômetros de haste são instrumentos utilizados pelaengenharia para auxiliar de forma geral em medições do soloem fundação de barragens. São compostos por uma cabeça queé fixada sob a superfície e hastes metálicas de diversoscomprimentos chumbadas na rocha. Através da cabeça mede-se a tensão aplicada pelo solo à haste, possibilitando amedição de deslocamentos. Extensômetros podem serdemedição manual ou automática. Quando automática, suacabeça é composta por um conjunto de transdutores (um paracada haste), que são dispositivos que convertem os sinais datensão para o formato digital, permitindo o armazenamento emintervalos de tempos.

Em Itaipu, existem 146extensômetros instalados em suafundação, barragens de concreto e enrocamento, auxiliando nomonitoramento de deslocamentos verticais (medição derecalques do solo) e deslocamentos horizontais (cisalhantes).

O sistema proposto pelo artigo pretende ser usado porprofissionais para auxiliar na manutençãodestesextensômetros, ajudando no processo de substituiçãodetransdutores.

Segundo levantado por Moreira [7], para realização damanutenção nos extensômetros de Itaipu, os técnicos realizamos seguintes passos:1. Remover a tampa protetora;2. Realizar leitura manual e automática do extensômetro para

servir como base para comparação com a leitura realizadano final da troca do transdutor;

3. Retirar circulo protetor;4. Retirar o parafuso lateral que regula a altura utilizando uma

chave Allen de 5,5mm (7/32”);5. Retirar a porta de suporte do Transdutor, utilizando uma

chave de boca;6. Rotacionar o transdutor para ambos os lados

simultaneamente até encontrar o ponto de encaixe. Obs.: otransdutor deve estar travado neste momento e caso omesmo não esteja travado, pode romper a corda vibranteque realiza as medições no extensômetro;

7. Remover o cabo que contecta o transdutor;8. Remover o transdutor;9. Inserir novo transdutor no local do antigo.Obs:deve-se

remover o lacre do novo Transdutor antes da instalação;

10. Travar transdutor na base, rotacionando em sentidohorário;

11. Passar o cabo pelo anel protetor da base;12. Travar a porca de suporte;13. Regular a altura;14. Realocar parte protetora;15. Realizar nova leitura e comparar com a anterior para

verificar a calibragem do equipamento.

IV. DESENVOLVIMENTO DE SISTEMAS DE RAEMDISPOSITIVOS

MÓVEIS

Para que sistemas de realidade aumentada possam serconstruídos é necessário hardware capaz de capturar: vídeo,realizar processamento de dados e que possua alguma formade exibir informações, como um display. Azuma[2] apresentasistemas de realidade aumentada concebidos sob Headmounted Displays (HMDs), por serem na época osdispositivos que preenchiam estes requisitos e permitiam amobilidade requerida pelos tecnologia. Atualmente oscelulares evoluíram de forma que se tornou possível aconstrução de sistemas de realidade aumentada nos mesmos.

Atualmente existem basicamente quatro plataformas quedominam o mercado de dispositivos móveis: Android, BlackBarry, Symbian OS e IOS. O artigo foca na construção deaplicativos para Android, que está entre as plataformas maispopulares atuais e possui desenvolvimento livre de custo comlicenças[3].

Visão geral da Arquitetura Android

Android é um Sistema Operacional (SO) desenvolvido peloGoogle. É organizado em camadas (figura 1). Cada camadaagrupa um conjunto de programas com objetivos efuncionalidades em comum. Estas camadas são organizadascomo uma pilha e sua base é o Kernel. Para construção desteKernel baseou-se na versão 2.6 do Kernel do Linux. Oconjunto de programas do próximo nível contém as bibliotecasbásicas do SO (exemplo: gravação e reprodução de áudio,aceleração tridimensional, vídeo, etc.). A próxima camadacontém frameworks de aplicações.Inclui programas quegerenciam funções básicas do telefone e dão suporte àaplicações de forma geral. E por fim, está a camada deaplicativos, onde estão todos os aplicativos que o usuário finalpode acessar [6].

Estrutura básica de aplicativos

Os aplicativos construídos para Android devem levar emconsideração quatro tipos básicos de estruturas: Atividades,toda tela que a aplicação exibe ao usuário; Objetivos, eventosdisparados dentro da aplicação para troca de Ativiades; caso oprograma tenha tenha alguma estrutura de Serviço associada, omesmo pode continuar sendo executado mesmo tendo suaAtividade fechada pelo usuário; por fim, temos o Provedor deConteúdo, responsável por compartilhamento de conteúdoentre as aplicações.

Page 168: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

161

Figura1. Organização da pilha de programas do SO Android.

V. QUALCOMMVUFORIA

A Qualcomm é um instituto de pesquisa que atuadesenvolvendo soluções paradiversos tipos de tecnologiasvoltadas a informação. [4]. Dentre suas áreas de atuação estáa RA, através do projeto denominado Vuforia. Esta sessãodedica-se em apresentar os principais aspectos desta SDKdisponibilizada pela Qualcomm.

A. Elementos do núcleo Vuforia

Este tópico apresenta todos os elementos que caracterizam onúcleo de elementos da Vuforia [4]:

Câmera: Comunica com hardware de câmera e asseguraque as imagens capturadas foram transferidas eficientementeao tracker. O desenvolvedor apenas tem controle de informarquando iniciar e quando pausar a captura de vídeo.

Image Converter: Converte a imagem obtida pela câmeraem um formato padronizado que seja compatível com o renderutilizado.

Tracker: Algoritmos de visão computacional que detectamobjetos do mundo real analisando os frames da câmera. Podemser dos tipos Target, Markers ou Buttons.

Vídeo Background Render:Renderiza a imagem dacâmera.

Código da Aplicação: Deve instanciar e inicializar todos oselementos básicos do núcleo (descritos nesta sessão) além demanipular os marcadores, a lógica da aplicação e atualizar orender da camada gráfica (virtual) do sistema.

Target Resources: Criados utilizando uma plataformaonline disponível no site da Qualcomm. São estruturasutilizadas para representar os marcadores dentro do sistema.

Trackables: Classe base que representa todo objeto domundo real que a Vuforia pode rastrear. Todo marcadorsuportado pela SDK origina desta classe.

B. Tipos de Trackers

A SDK Vuforia permite desenvolver sistemas de realidadeaumentada utilizando três tipos de marcadores: ImageTargets,Frame Markers e Buttons. O primeiro tipo de trackerreconhece qualquer imagem fornecida ao mesmo. O Segundotipo reconhece marcadores fiduciais com códigos e o terceiroreconhece formas dentro de ImageTargets como botões deinteração virtual com o usuário. A seguir apresentamos cadatipo de tracker.

ImageTracker: Cada novo marcador deste tipo é ranqueadode zero a cinco pontos pela ferramenta, dependendo dacomplexidade dos elementos contidos na imagem. O websitede ferramenta destaca uma nota de instrução informando quenão é aconselhável o uso de imagens que apresentamranqueamento inferior a três. Para uma imagem serconsiderada boa ela deve possuir: alto número de elementos aolongo de toda a imagem e bem distribuídos (sem espaços embranco), forte contraste entre os mesmos e os padrões contidosna imagem devem ser variados. A figura 2 apresenta umaimagem em sua versão original e sua versão após omapeamento da ferramenta, apresentando um ranking cinco.

(a): Imagem original

(b): Resultado do algoritmo para gerar o ImageTracker da Vuforia.

Figura 2.Rankeamento da vufória com nível 5. Imagem apresenta todas ascaracterísticas consideradas fortes para reconhecimento pela ferramenta.

Fonte: Qualcomm [8].

FrameMarker:Este tipo de tracker não é gerado online. ASDK disponibiliza 512 padrões diferentes de marcadoresorganizados de 0 à 511. A Figura 3 apresenta o padrão dedesign de todos os FrameMarkets, o ID deste exemplo é 0. Aparte de cor laranjada da figura representa informações quepodem ser customizadas no marcador e todo o resto deve ter omesmo formato do original para que possa ser reconhecido.

Buttons:Desenho de botões que podem ser adicionados emImageTrackers e reconhecidos individualmente pela SDK.

Page 169: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

162

Figura 3. Exemplo de FrameMarker padrão da ferramenta QualcommVuforia.Fonte [8].

VI. SISTEMA PROPOSTO

Esta sessão dedica-se em apresentar o sistema proposto paraauxiliar na manutenção do instrumento de mediçãoExtensômetro de Haste Múltipla de Itaipu e suas principaiscaracterísticas em termos de tecnologia utilizada paraconstrução.

Princípios da construção do sistema

Para que este sistema possa ser utilizado de fato pelo técnicoque realiza manutenção em extensômetros ele deve idealmentelevar os seguintes fatores em consideração em sua construção: Tutorial passo a passo que auxilia no processo de

manutenção do extensômetro; O extensômetro deve ser reconhecido in-situ; O extensômentro deve ser reconhecido preferencialmente

sem adição de marcadores fiduciais;

Como visto anteriormente, o código da aplicação de RAdeve ter 3 preocupações básicas: manipular os marcadores,lógica particular da aplicação e manipular o render gráfico. Ostópicos a seguir descrevem a solução considerada paradesenvolver cada parte do trabalho.

Descrição do ambiente de trabalho para desenvolvimento deaplicações Android

Para desenvolvimento de sistemas para a plataformaAndroid é utilizado por padrão a linguagem de programaçãoJava. Para construção deste sistema foi configurado oambiente de desenvolvimento utilizando a ferramenta Eclipse,onde foi instalado oAndroidDevelopment Tools (ADT), quepermite configuração de máquinas virtuais de teste e geraçãode aplicativos para Android e instalado o Android SDK, parasuporte às funcionalidades básicas da plataforma. Para testesunitários na criação do sistema está sendo utilizado umdispositivo Galaxy Y Samsung, com Android 2.3.6 instalado.

A API disponibilizada para programaçãoAndroid écontabilizada em níveis conforme atualização da mesma. Paraa construção deste sistema está sendo utilizada como base aAPI nível 10, suportada porAndroid 2.3 e superiores.

Descrição das configurações para trabalho com a SDKQualcommVuforia

A SDK da Vuforia é escrita nas linguagens C/C++. Para teracesso as suas funções na aplicação escrita em Java está sendo

criada uma biblioteca compartilhada contento todas asfuncionalidades necessárias utilizadas pelo sistema. Estasbibliotecas são carregadas na aplicação e acessadas via JavaNative Interface (JNI). O JNI é um padrão de programaçãoque permite com que a máquina virtual do Java (JVM)manipule códigos nativos de outros sistemas [5]. Para criarestas bibliotecas compartilhadas está sendo utilizado oAndroidNativeDevelopment Kit (NDK)[3], que fornece umconjunto de ferramentas para compilação independentes deplataforma (Windows, Linux, etc).

Descrição das configurações de trabalho com a OpenGl ES

OpenGL ES é a versão da OpenGL (API multiplataformapadrão da indústria de computação gráfica), especializada emaplicações embarcadas (EmbeddedSystems). Ela fornecefunções na linguagem C/C++ e para sua utilização no sistemaproposto foi adotada a mesma estratégia proposta para uso doselementos da QualcommVuforia, que é a criação de umabiblioteca compartilhada através da Android NDK, utilizandoJNI como padrão de comunicação.Objetos 3D:Os objetos 3D carregados no sistema (tais comosetas indicadoras, ferramentas e o próprio extensometro 3D),são provenientes das ferramentas Blender 3D e SolidWorks. Abiblioteca OpenGL gerada para realizar animações erenderizaros gráficos da cena do sistema utilizam Array comcoordenadas para representar cada objeto, estas coordenadasrepresentam os vértices, as normais, a coordenada das texturase os índices do objeto.

Construção dos marcadores

Para construção de marcadores foi optado inicialmentepelos ImageTargets. A figura 4 apresenta o resultado doprocesso de detecção dos marcadores ImageTargets geradospela ferramenta da Vuforia para detecção do extensômetroexemplo utilizado na aplicação. Para ambas as imagens oranking do sistema foi zero.

(a)

Page 170: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

163

(b)

Figura 4.Imagens (a) superior e (b) lateral da cabeça do extensômetro dehaste múltipla utilizado para realizar os testes.

VII. RESULTADOS OBTIDOS

O sistema está em fase final de desenvolvimento, ondeestão sendo finalizadas animações 3D e implementados ospassos do tutorial de acordo com levantado por Moreira [7]junto a especializas.Os marcadoresestiloImageTargetsutilizados na construção de um protótipoinicial de teste da SDK apresentou baixo desempenho emtestes de uso em laboratório devido a simplicidade dasimagens (o algoritmo da Vuforia reconhece melhor imagenscomplexas) e devido ao fato de que utilizar imagens sólidas(fotografia 2D) limitam fortemente a faixa de angulação naqual o dispositivos de vídeo reconhece o objeto 3D. Estesproblemas aconteceram por que a tecnologia ImageTargets daQualcommVuforia é fortemente voltada para oreconhecimento do ambiente via marcadores, ou seja, énecessário que o ambiente seja modificado com a adição demarcadores para que o mesmo possua desempenho relevante.

Para correção deste problema e dar continuidade aodesenvolvimento do sistema, optou-se por utilizar osmarcadores do estilo Frame Markers. Tal decisão iráintroduzir os benefícios de apresentar melhor desempenho emlaboratório e consequentemente in-situ (ambientes externos aolaboratório possuem maior número de condições adversascomo, por exemplo, iluminação e clima, que dificultam adetecção da imagem) e irá introduzir como ponto negativo anecessidade de adicionar ao extensômetro um marcadorfiducial padronizado para reconhecimento pelo sistema. Afigura 5 apresenta telas de uso do sistema em testes delaboratório.

Figura 5.Screenshoot da aplicação rodando em sistema Android,reconhecendo o marcador FrameMarker.

VIII. CONCLUSÃO

Os esforços realizados para o desenvolvimento do trabalhoaté então identificaram que é necessário um entendimentomaior sobre a diferença de uso pelo técnico de Itaipudosistemas utilizandomarcadores fiduciais e os que nãonecessitam.Foi descoberto que a SDK da QualcommVuforia em sua atualversão não suporta reconhecimento sem marcadores,denominados pelo mercado marklesstracking, que permitemreconhecimento de objetos 3D do mundo real. Durante todo oprocesso tentamos utiliza a solução ImageTargets comotecnologia para substituir o uso de marcadoresmarcadores, oque resultou em um sistema que não reconhecia o aparelho,obrigando a mudança para FrameMarkers, que são marcadoresfiduciais tradicionais.

Como proposta para evolução está sendo proposto o estudoda diferença das abordagens, algoritmos envolvidos e casos deuso.

O resultado final também possibilitou constatar que aferramenta QualcommVuforia não implementa algoritmos deoclusão de objetos, fazendo com que no efeito final o objeto3D sempre apareça sob a imagem real, neste caso, propõe-se oestudo de algoritmos de oclusão para adição futura naferramenta.

A maior dificuldade encontrada durante a produção foidefinir de forma sistemática a posição relativa do objeto 3Dcom o objeto real. Através da Vuforia o programador apenastem acesso a posição no espaço 3D do marcador e podeposicionar objetos 3D partindo desta posição relativa, nãolevando em consideração particularidades do extensômetro.Neste caso foi posicionado através de tentativa e erro osobjetos no espaço 3D até se alcançar uma posição relativaaceitável pelo usuário. Esta questão pode ser foco dedesenvolvimento de novas tecnologias pois é uma demanda deincremento que se fosse implementada pouparia grandeesforço no desenvolvimento (cerca de 30% do tempo gasto no

Page 171: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

164

desenvolvimento da ferramenta foi sob o posicionamento deforma aceitável pelo usuário final).

REFERÊNCIAS

[1] J. F. A. Silveira,Instrumentação e Segurança de Barragens de Terra eEnrocamento,Oficina de Textos, 2006.

[2] R. Azuma, “A Survey of Augmented Reality”, Teleoperators andVirtual Enviroments, Vol. 6, 1997.

[3] Google,“Android Website”,Disponível em: www.android.com, 2012.[4] Qualcomm, “QualcommVuforia Website”,Disponível em:

www.qdev.net.[5] Sun Microsys, “Java Website”, Disponível em: www.java.com.[6] J. Strickland. A Arquitetura do Android. Disponível em:

http://informatica.hsw.uol.com.br/google-phone2.htm,.2012.[7] T. Moreira, “Auxílio na Manutenção de um Extensômetro Utilizando

Realidade Aumentada”,Unioeste, 2011.[8] Qualcomm, “QualcommVuforia Website”, Disponível em:

https://ar.qualcomm.at/qdevnet/developer_guide/Target%20Management%20System, 2012.

Page 172: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

165

Abstract— The warranty of a certain level of Quality ofService (QoS) is a key requirement in many interactiveapplications used in Brazilian Digital TV System (SBTVD). Thisstudy aims to analyze the QoS requirements, and for this, wecreated a semantic model for knowledge representation throughan ontology covering the various elements that can impact on thequality levels set by interactive applications. The created modelfocuses on SBTVD, and we believe it can help in the automatedreasoning on the feasibility of tasks and interactive applications,considering the work on different technological circumstances.

Keywords— Digital Television, Interaction, Quality of Service.

I. INTRODUÇÃO

modelo da TV Digital oferece aos usuários aoportunidade de novas experiências relacionadas à trocade informações, principalmente por meio da

interatividade, o que possibilita o desenvolvimento de novosaplicativos e serviços.

De acordo com [1], para prover comunicação através docanal de retorno é necessária a escolha de algum meio detransmissão (fibra óptica, rádio, satélite entre outros),considerando as características específicas de cada tecnologiae parâmetros limitantes do canal de comunicação (vazão,atraso e perda de pacotes). A seleção desses parâmetros emdetrimento de outros, pode variar de um lado pela aplicação e,por outro lado, pelas tecnologias de comunicação disponíveise seus fatores limitantes.

No Brasil, dada as suas características de dispersãogeográfica e assimetria na oferta de serviços detelecomunicação, é fundamental avaliar previamente o nívelde interatividade que uma determinada aplicação podeproporcionar aos seus usuários. Concebido dentro de umapolítica nacional de oferta de serviços ao cidadão, o SistemaBrasileiro de TV Digital (SBTVD) precisa disponibilizarmeios de validação prévia da exequibilidade de aplicaçõesinterativas enquanto instrumento essencial de políticas sociaisnacionais.

Para a validação do modelo QoSTVModel utilizado nestetrabalho, foram consideradas duas estratégias complementares.A primeira baseia-se nos dados apurados pelo simulador derede, para identificar valores limitantes na utilização detecnologias de retorno em cenários bem definidos. Estaestratégia esbarra na baixa escalabilidade e baixo desempenhopara simulação de cenários mais realistas, que consideram, porexemplo, a quantidade provável de usuários em um bairro ou________________________

M. S. Couto, Instituto Federal do Sertão Pernambucano (IF Sertão),Ouricuri, Pernambuco, Brasil, [email protected]

V. L. da Silva, Universidade do Estado do Rio Grande do Norte (UERN),Natal, Brasil, [email protected]

C. Mª F. A. Ribeiro, Universidade do Estado do Rio Grande do Norte(UERN), Natal, Brasil, [email protected]

cidade. Para enfrentar este desafio, foram utilizados métodosestatísticos para análise e projeção de valores para cenáriosreais, de forma a permitir a avaliação do impacto dadegradação do nível de qualidade de serviço (QoS) sobre asaplicações, mais especificamente sobre a interatividade.

Considerando-se a heterogeneidade dos elementosenvolvidos e a complexidade e dinamismo das relações entreos mesmos, optou-se por representar este conhecimento pormeio de ontologias de domínio com a aplicação QoSTVApp.Tal tecnologia possibilitará, dentre outros benefícios, oraciocínio automatizado para verificação da exequibilidade deaplicações interativas em um dado contexto. Estes e outrosconceitos que fundamentam a proposta estão descritos nasseções a seguir.

II. CONTEXTO DO TRABALHO

A evolução trazida pela TV Digital substitui o antigomodelo unidirecional e oferece ao telespectador um canal deinteratividade para sua comunicação, possibilitando, destaforma, a troca de informações. O canal de interatividade oucanal de retorno é o meio através do qual os usuáriosconseguem interagir com o sistema.

Os aplicativos interativos com recursos multimídia aindaestão em processo de desenvolvimento, com o surgimento denovos conteúdos e a construção de novos modelos elinguagens [2]. Portanto, é preciso gerenciar esse tipo deaplicativo em relação aos parâmetros necessários para asincronização entre diferentes mídias e limites tecnológicos dacomunicação.

De acordo com [3], os aplicativos interativos que sãodisponibilizados na TV Digital precisam atender algumascaracterísticas como usabilidade e aplicabilidade, para aaceitação dos usuários. A avaliação desta aceitação envolvequestões subjetivas de difícil validação, tais como interessepelo assunto. Contudo, a aplicação é um elemento importanteque deve ser considerado para validação do modelo utilizado.

III. SOLUÇÃO

Com base neste cenário e nos desafios que o mesmoapresenta, foi utilizado o modelo denominado QoSTVModel,que conjuga os requisitos de QoS da aplicação interativa comos requisitos da tecnologia de acesso [4]. Os diversoselementos envolvidos no modelo são apresentadosgraficamente na Figura 1.

No modelo QoSTVModel são explicitados os componentesdiretamente envolvidos com a interatividade, suaspropriedades ou funções específicas e o relacionamento entreos mesmos.

A dinâmica entre os elementos sugere o envio do aplicativopela Estação de TV Digital, responsável pela difusão daprogramação. O receptor, que possui propriedades específicas,

M. S. Couto, V. L. da Silva, C. Mª F. A. Ribeiro

QoSTVApp:Uma Aplicação Semântica para oSBTVD

O

Page 173: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

166

tais como poder de processamento, capacidade de memória eportas de comunicação, é o equipamento que recebe earmazena o aplicativo que será disponibilizado ao usuário.

Conforme [5], o usuário pode interagir com o aplicativo deforma local, intermitente ou permanente. Para a troca deinformações, o receptor precisa estar conectado a umadeterminada tecnologia de acesso, que restringe os requisitosde QoS (vazão, atraso e perda de pacotes) e possuicaracterísticas que a diferencia de outra, tais como: alcance,largura de banda, disponibilidade da rede e custo dainfraestrutura. O provedor de canal de retorno é o responsávelpela tecnologia de acesso a ser utilizada na última milha para ocanal de retorno, e o provedor de conteúdo oferece acesso aserviços e conteúdos especializados aos usuários, por meio doprovedor de canal de retorno.

O termo ontologia passou a ser adotado por grupos depesquisas para referenciar os conceitos e termos que podemser utilizados para apresentar alguma área do conhecimento oudesenvolver uma representação. Uma ontologia determina umdomínio, ou, mais formalmente, define uma conceitualizaçãoacerca dele [6].

Para o desenvolvimento da ontologia em relação aosconhecimentos sobre QoS em TV Digital, utilizou-se aferramenta Protégé1. Essa ferramenta open source é baseadaem Java e integrada ao framework Jena2, para construiraplicações da Web Semântica. O modelo criado é representadopor meio de classes, apresentadas na Figura 2.

Fig. 2. Representação das Classes

O modelo também foi formalizado em uma ontologia dedomínio, sendo este, representado por meio de classes epropriedades. A representação das classes da ontologia e assuas relações são vistas na Figura 3.

Para representar o papel de cada componente do modelo deQoS utilizado na ontologia, foram utilizadas as propriedadesde objetos, onde cada propriedade possui um domínio e umaimagem que são as classes que representam os componentesaos quais cada propriedade está relacionada.

1 http://protege.stanford.edu/2 http://protege.stanford.edu/plugins/owl/jena-integration.html

Fig. 3. Representação das Classes e suas Relações

IV. ESTUDO DE CASO E RESULTADOS

Como estratégia de validação do modelo proposto, foramrealizadas simulações por meio do Network Simulator-2 [7],para analisar os parâmetros da rede no cenário descrito. O NS-2 é uma ferramenta poderosa para simulação de redes quecobre um grande número de aplicações, protocolos, tipos deredes, elementos de rede e modelos de tráfego.

A noção de tempo no NS-2 é obtida através de unidades desimulação que podem ser associadas, para efeitos didáticos, asegundos. A rede é construída usando nós os quais sãoconectados por meio de enlaces. Quando é simulada uma redecabeada, como é o caso deste trabalho, os parâmetros de umenlace precisam ser ajustados.

Os agentes utilizados podem ser associados aos nós e elessão responsáveis pela geração de diferentes pacotes. A fontede tráfego é uma aplicação à qual é associado um agenteparticular. Os agentes precisam de um receptor que receberáseus pacotes. A Figura 4 mostra a estrutura padrão dos objetosde simulação.

Fig. 4. Objetos de Simulação do NS-2

Neste trabalho, o cenário que serviu de base para assimulações representa o bairro Neópolis, na cidade de Natal,Rio Grande do Norte, a menor cidade em termospopulacionais, dentre as sedes da Copa 2014. Neópolis possuiaproximadamente 6481 residências, segundo os dados daPrefeitura do Natal [8]. A tecnologia escolhida foi a ADSL,uma das mais usadas para o acesso à Internet. O tráfego foigerado entre os receptores e o provedor de canal de retorno,composto pelo link de dados do tipo assimétrico. Segundo [9],foi adotado um link de 1 Mbps para download e 300 Kbpspara upload, valores geralmente ofertados pelas operadoras. A

Page 174: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

167

partir dessa transferência de dados, foi realizada a análise dosparâmetros de QoS: vazão, atraso e perda de pacotes.

Foi gerado um tráfego entre os receptores e o provedor decanal de retorno, sendo que os dados como o tamanho dospacotes e atraso do link para aplicações multimídia foramdefinidos como mostrado na Tabela I, para obter os dadosmais próximos de uma aplicação interativa da TV Digital [10].A partir dessa transferência de dados, foi realizada a análisedos parâmetros de QoS.

TABELA IVARIÁVEIS CONSIDERADAS NA AVALIAÇÃO DE TÉCNICAS DE INTERAÇÃO

DESCRIÇÃO VALORES

Nº de nós Até 1000

Tamanho do Pacote 1500 bytes

Atraso 20ms

Taxa de Transmissão (download) 1 Mbps

Taxa de Transmissão (upload) 300 Kbps

O objetivo principal deste trabalho é, portanto, investigar eanalisar requisitos de QoS no SBTVD por meio da aplicaçãosemântica QoSTVApp, com a ênfase nos aplicativos e nastecnologias de acesso para o canal de retorno.

A. RESULTADOS

Foi desenvolvida uma aplicação semântica, denominadaQoSTVApp, que utiliza ontologia como base para o raciocínioautomatizado. Esse aplicativo busca responder aosquestionamentos de viabilidade técnica para provimento dainteratividade, tanto por parte dos provedores quanto dosdesenvolvedores de aplicações, como mostrada na Figura 5.

A aplicação QoSTVApp utiliza as informações doQoSTVModel para definir a rota de comunicação doselementos que compõem o SBTVD.

Fig. 5. Tela Inicial do Aplicativo QoSTVApp

Conforme previsto, o NS-2 apresentou queda progressiva dedesempenho, a partir de 1000 aparelhos receptores. A partir deentão, foi utilizada a técnica estatística da Regressão LinearSimples [11], que pode prever valores futuros de uma variável,para estimar um número maior de receptores utilizados para ocálculo das médias dos parâmetros de QoS em um cenário realutilizado na simulação.

Por meio dos resultados obtidos nas simulações para atecnologia ADSL, a análise de cada um dos parâmetros deQoS indica que após um determinado número de receptoresnão é mais possível garantir a entrega do serviço comqualidade. Mais especificamente, a interatividade do aplicativotem o seu desempenho afetado quando a vazão da rede ficaabaixo dos 100 Kbps [4].

De acordo com [12], em relação ao atraso, quanto maior foro seu valor, maior deverá ser o tamanho do buffer paragarantir uma determinada reserva de dados. O valor desseparâmetro começa a prejudicar a aplicação quando ficasuperior a 0,5s, ou seja, em torno de 330 usuários conectados.

Na Figura 6, a aplicação semântica apresenta os resultadospara 200 receptores, sendo possível perceber que cadaparâmetro de QoS está relacionado diretamente ao número dereceptores conectados a tecnologia ADSL, utilizando oaplicativo interativo.

De acordo com esse cenário, o provedor de acesso sópoderia disponibilizar essa conexão para aproximadamente330 receptores, sendo este, o número máximo de conexõescom a garantia de que esse serviço não comprometeria osparâmetros de QoS, já que o atraso foi o maior limitador donúmero de receptores.

Fig. 6. Resultados dos Parâmetros do QoSTVApp

Estes resultados parciais, embora careçam de maiorinvestigação, apontam claramente para a existência de umgargalo tecnológico. Tal fato pode limitar seriamente a adoçãodeste tipo de tecnologia em novos modelos de negócios e parao suporte às políticas públicas, indicando a necessidade deinvestimento na área. Se for considerada a assimetria na ofertade serviços de comunicação nas várias regiões do Brasil, écorreto afirmar que este fato pode aprofundar o problema deexclusão digital existente atualmente.

Page 175: Ficha Catalográfica elaborada pela Bibliotecária · relacionados à transmissão de imagens em redes sem fio, sistemas colaborativos para gerenciamento ... Criação de jogos 2D

ANAIS ELETRÔNICOS V ENUCOMP

168

V. CONCLUSÃO

As mudanças trazidas pela TV Digital não se resumemapenas aos ganhos em relação à qualidade de áudio e vídeo.As aplicações interativas já estão sendo trabalhadas dentro donovo padrão de TV, associada às tecnologias de acesso, quecriam um caminho para a troca de informações suscitandomaior participação do telespectador.

A aplicação semântica QoSTVApp, permite inferir sobre aexequibilidade da interatividade considerando requisitos daaplicação e do ambiente de execução. Utilizou-se oconhecimento representado no modelo e os dados obtidos nafase de validação para a construção de uma ontologia dedomínio, a partir da qual os desenvolvedores de aplicativosinterativos ou provedores de serviços podem usar osresultados do QoSTVApp para avaliar os parâmetros de QoSda comunicação.

Como trabalho futuro pretende-se fazer a inclusão de regrasde inferência para ampliar o raciocínio e a precisão dasinformações apresentadas pela aplicação semântica.

REFERÊNCIAS

[1] Campista, Miguel Elias M.; Moraes, Igor M.; Esposito, Pedro Miguel;Amodei Jr., Aurélio; Cunha, Daniel de O.; Costa, Luís Henrique M. K.;Duarte, Otto Carlos M. B.“The Ad Hoc Return Channel: a Low-CostSolution for Brazilian Interactive Digital TV”. Grupo de Teleinformáticae Automação, PEE/COPPE – DEL/POLI. Universidade Federal do Riode Janeiro, Brasil. 2006.

[2] Gosciola, V. Roteiro para as novas mídias: do game à TV Interativa.São Paulo: Editora Senac, 2003.

[3] Margalho, M., Frances, R. and Wely, J. “Return path in Brazilian digitaltelevision with interactivity based on continuous signalizationmechanism and qos bandwidth control”, Latin America Transactions,IEEE (Revista IEEE America Latina), 5(5):367 –372, Sep. 2007.

[4] Couto, M.S.; da Silva, V.L.; da Rocha, B.G.; Ribeiro, C.M.F.A.QoSTVModel: A semantic model for analysis of QoS in interactiveapplications for SBTVD. Information Systems and Technologies(CISTI), 2012 7th Iberian Conference on Publication 2012.

[5] Montez, C.; Becker, V. TV Digital Interativa: conceitos, desafios eperspectivas para o Brasil. Florianópolis: Ed. Da UFSC, 2005. 2ª edição.

[6] Gruber, T. R. Towards Principles for the Design of Ontologies Usedfor Knowledge Sharing. International Journal of Human and ComputerStudies, v. 43, p. 907-928, 1995.

[7] Issariyakul, T; Hossain, E. Introduction to Network Simulator NS2.Springer Publishing Company, 2008. ISBN: 0387717595.

[8] Natal. Bairros de Natal / Secretaria Municipal de Meio Ambiente eUrbanismo. 2ª ed. SEMURB. Natal, 2010.

[9] Caires, G. O. J. “Explorando a Tecnologia ADSL: Uma Ferramenta deSuporte ao Ensino Presencial e a Distância”. In Dissertação (EngenhariaElétrica). Universidade Salvador, Bahia. 2003.

[10] Couto, M. S.; Costa, F. S.; Ribeiro, C. M. F. R. Simulação do Canal deRetorno na TV Digital via Network Simulator: uma proposta com atecnologia ADSL. II Workshop Técnico Científico de Computação(WTCC), Mossoró - RN, p. 127 - 133, jun. 2011.

[11] Charnet, R.;Charnet, E.M.R.; Freire, C.A.F.; Bovino, H. Análise demodelos de regressão linear com aplicações. Campinas, Editora daUnicamp, 1999.

[12] Guojun, LU. Communication and Computing for DistributedMultimedia Systems. Artech House. 1996.

Mailson Sousa Couto é graduado em Ciência da Computação pelaUniversidade Estadual do Sudoeste da Bahia (UESB), Vitória daConquista, Bahia, Brasil, em 2009. Obteve o título de mestre emCiência da Computação pela Universidade do Estado do RioGrande do Norte (UERN), Natal, Rio Grande do Norte, em 2012.Atualmente é professor do Instituto Federal de Educação, Ciência

e Tecnologia do Sertão Pernambucano (IF Sertão) e suas pesquisas seconcentram na área de Qualidade de Serviço, Geoprocessamento e TV Digital.

Vandeclécio Lira da Silva é estudante do curso de Ciência da Computaçãona Universidade do Estado do Rio Grande do Norte (UERN),integrante do Laboratório LUMEN trabalhando em projetos deTV Digital. Atualmente estagiando na SEPLAN-RN comoprogramador. Suas áreas de interesse são: ASP, VB, SQLServer e TV Digital.

Cláudia Mª Fernandes Araújo Ribeiro possui graduação em Ciência daComputação pela Universidade Estadual do Ceará (1987),mestrado em Sistemas e Computação pela UniversidadeFederal do Rio Grande do Norte (1999) e doutorado emCiência da Computação pela Universidade Federal dePernambuco (2004). Atualmente é professora adjunta da

Universidade do Estado do Rio Grande do Norte (UERN) e do InstitutoFederal do Rio Grande do Norte (IFRN). Tem experiência na área de Ciênciada Computação, com ênfase em Sistemas Distribuídos, atuando nos seguintestemas: SOA, Web Semântica e Especificação Formal de Sistemas.

Fig. 1. Modelo de Interatividade - QoSTVModel