Documente Academic
Documente Profesional
Documente Cultură
E56a
ENCONTRO UNIFICADO DE COMPUTAO EM
PARNABA. (5: 2012: Parnaba, PI).
Anais do V ENUCOMP 2012, Parnaba, PI, 12 a 14 de
novembro de 2012: [recurso eletrnico]/ Organizao [de]
Thiago C. de Sousa e Rodrigo Augusto R. S. Baluz. Parnaba: FUESPI, 2012.
194 p.: Il.
ISBN: 978-85-61946-80-7
1. Cincia da Computao. 2. Congressos. I. Sousa,
Thiago C. de (org.) II. Baluz, Rodrigo Augusto R. S. (org.)
III. Ttulo.
CDD 001.642
ii
PREFCIO
Em 2008, as instituies parnaibanas que atuam no ensino superior, tcnico e profissional de
informtica sentiram a necessidade de criar um evento de computao maior e mais completo para a
cidade. Assim, surgiu o projeto ENUCOMP (Encontro Unificado de Computao em Parnaba),
criado numa parceria do CEEP, FAP, IFPI e UESPI, cujas propostas foram pautadas na contribuio
para a troca de experincias, buscando a unio dos acadmicos; no fortalecimento da parceria no
desenvolvimento da educao e da informtica; e no incentivo produo de trabalhos cientficos
ligados tecnologia. Mantendo estes mesmos ideais, o evento vem alcanando um crescimento
consistente ano aps ano e ganhando envergadura. Em sua quinta edio, com cerca de 300
participantes vindos de diversos Estados brasileiros, o ENUCOMP j uma referncia regional no
Norte-Nordeste do Brasil na rea de computao.
A edio deste ano, que ocorre nos dias 12, 13 e 14 de novembro, inclui cinco palestras, com
temas sobre inovao, acessibilidade, mtodos geis, computao ubqua e educao distncia,
bem como seis mini-cursos com assuntos relativos criao jogos 2D e para Facebook, simulao e
segurana de redes, desenvolvimento web e sistemas embarcados. Alm disso, a programao do
ENUCOMP 2012 tambm fortaleceu a sua vertente cientfica ao montar um excelente Comit de
Programa, composto por quase quarenta pesquisadores e professores de renomadas universidades e
empresas de todas as cinco regies brasileiras, para realizar a arbitragem de artigos por pares. Como
consequncia, foram recebidos trabalhos provenientes de 1/3 dos Estados da Federao, sendo
selecionados apenas nove para apresentao no evento, o que significou um taxa de aceitao de
26%, nvel dos melhores congressos nacionais da rea. Os artigos versam sobre trs grandes reas da
computao: Inteligncia Artificial, com trabalhos sobre agentes inteligentes, testes de agentes e
algoritmos genticos para estimao de sistemas de potncia; Sistemas Distribudos, com temas
relacionados transmisso de imagens em redes sem fio, sistemas colaborativos para gerenciamento
de download; e Viso Computacional, com assuntos referentes aplicao de realidade aumentada,
anlise de imagens via sries temporais e converso de dados em RDF. Assim, este volume dos
Anais Eletrnicos do ENUCOMP 2012 composto por 12 captulos: 6 relacionados aos mini-cursos
trabalhados durante o encontro, e outros 6 formados pelos artigos cientficos selecionados pelo
Comit de Programa para apresentao mas no premiados.
Por ltimo, gostaramos de agradecer enormemente aos palestrantes, aos ministrantes de minicursos e aos membros da equipe de apoio e do comit de programa, por acreditarem em nosso
evento. O trabalho voluntrio realizado por vocs de foi fundamental importncia para o sucesso do
ENUCOMP. Desejamos que o evento possa trazer frutos para o trabalho de todos.
At a prxima!
iii
COMISSO ORGANIZADORA
Coordenao Geral:
Athnio de S. Silveira, Instituto Federal do Piau (IFPI)
Francisco das Chagas C. do Nascimento, Centro Estadual de Educao Profissional (CEEP)
Rodrigo Augusto R. S. Baluz, Faculdade Piauiense (FAP)
Thiago C. de Sousa, Universidade Estadual do Piau (UESPI)
Equipe de Apoio:
Antnio 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 Flvio G. Barros, Faculdade Piauiense (FAP)
Mayllon V. da Silva, Faculdade Piauiense (FAP)
Ncio de L. Veras, Instituto Federal do Cear (IFCE)
Rgis P. Magalhes, Instituto Federal do Piau (IFPI)
Comit de Programa:
Andr Fujita, Universidade de So Paulo (USP)
Aryldo Russo Jnior, Grupo AeS
Atila Lopes, Universidade Estadual do Piau (UESPI)
Carlos Giovanni Nunes, Universidade Estadual do Piau (UESPI)
Celina Takemura, Embrapa
Christian Paz-Trillo, Centro Universitrio SENAC-SP
Claudia Melo, Thought Works
David Pereira, Banco Central do Brasil (BCB)
Eduardo Guerra, Universidade Federal do Par (UFPA)
Eduardo Ueda, Petrobras
Esdras Bispo Jnior, Universidade Federal de Gois (UFG)
Eyder Rios, Universidade Estadual do Piau (UESPI)
Fbio Kepler, Universidade Federal do Pampa (UNIPAMPA)
Fbio Siqueira, Programa de Educao Continuada da Escola Politcnica da USP (PECE)
Flvio Coutinho, Universidade de So Paulo (USP)
Harilton Arajo, Centro de Ensino Unificado de Teresina (CEUT)
Jos Flvio 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 So Paulo (USP)
Mrcio Monteiro, IBM do Brasil
Marcos Couto, Oracle do Brasil
Mayllon Silva, Faculdade Piauiense (FAP)
iv
SUMRIO
vi
Figura 1.2 - Atari Night Driver, um jogo arcade que tambm fez bastante sucesso nos consoles.
Os consoles surgiram aps o sucesso dos arcades, e visavam expandir o mercado para o ambiente
domstico, no que sucederam. Os principais exemplos dessa primeira gerao so o Odissey e o
2
Atari, mostrado na Figura 1.3, je um de seus maiores sucessos, o jogo Space Invaders, tambm
lanado originalmente como um arcade, mostrado na Figura 1.4.
Figura 1.3 - O Atari VGS 2600, de 1978, o primeiro console de grande sucesso.
No final dos anos 1980, o mercado de jogos eletrnicos para computador se iniciou atravs de
empresas de garagem, principalmente na Inglaterra. Em meados da dcada de 1990, comearam
a surgir jogos com o uso de ponto de vista de primeira pessoa, onde a imagem aparenta ser a
viso do personagem. Exemplos desses jogos so o Wolfenstein 3D, Doom e Duke Nukem.
Entretanto, o advento dos jogos em perspectiva 3D real (trs dimenses) s ocorreu realmente
com o lanamento do jogo Quake (Figura 1.7), de 1996. Desde ento, muitos jogos de sucesso
usam essa tcnica de visualizao.
Explorao - o ser humano curioso por natureza, e em jogos isso pode ser explorado
atravs da criao de ambientes interessantes, o que faz o jogador ter vontade de
continuar jogando para descobrir as novas reas, paisagens e personagens. Essa
caracterstica mais marcante nas mulheres, mas muitos homens tambm gostam de
explorao;
Aprendizado - ns somos recompensados quimicamente quando aprendemos algo novo,
quando desenvolvemos uma nova habilidade que antes no tinhamos. Esse instinto
responsvel por grande parte do desenvolvimento tcnico da humanidade. Em jogos,
importante estimular o jogador a aprender novas aes que lhe permitam vencer os
desafios;
Desafios - vencer desafios em si tambm uma atividade recompensadora, especialmente
para os homens, que so normalmente mais competitivos.
Mecnicas de jogo
Mecnicas de jogo so os elementos mais bsicos que definem a atividade. Ao se projetar um
jogo, so as primeiras decises a serem tomadas. Para entender o que so as mecnicas, podemos
fazer um exerccio simples: remova tudo o que puder de um jogo que voc conhece, como
grficos, msica, estria, personagens. Substitua tudo por elementos visuais simples, como
crculos, caixas, etc. O que sobram so as mecnicas, ou seja, a coordenao entre os controles, o
visual e o tempo (para atingir alvos, pular em plataformas, evitar obstculos, tudo no momento
exato).
Em alguns jogos, as mecnicas podem envolver udio, como em jogos musicais de ritmo, mas
mesmo nesses casos, podemos substituir as msicas em questo por batidas ritmadas,
coordeanadas com o visual da tela, onde o jogador deve apertar a tecla de cor correspondente no
momento exato para ganhar os pontos.
Na Figura 1.8 temos uma viso simplificada do que poderia ser o prottipo de um jogo de
plataforma usando apenas elementos visuais simples. Um prottipo desses permite que se testem
as mecnicas rapidamente, antes de se comprometer com o design visual. Se o jogo for divertido
apenas com caixas simples, ser tambm divertido com visual apurado. Entretanto, se o jogo no
for divertido dessa forma, dificilmente ser aps a adio da arte.
Figura 1.8 - Um prottipo 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 como
se apresentam as regras para o jogador. Todo jogo uma repetio da seguinte sequncia:
apresenta-se um desafio ao jogador; o jogador realiza uma ao; atravs das regras, se verifica se
o jogador venceu o desafio; caso afirmativo, o jogador recompensado (usando os instinto
citados anteriormente), caso negativo, o jogador punido; volta-se ao passo de apresentar um
desafio. A Figura 1.9 mostra um desenho esquemtico desse conceito.
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 ele
inicia. Como o jogo em turnos, a sala composta por um conjunto de casas (clulas quadradas)
em um tabuleiro, e o jogador deve usar o mnimo de movimentos possveis para chegar ao
destino final.
O problema que a sala est infestada de monstros que o jogador no pode ver. Se o jogador
parar numa casa que possui um monstro, ele perde a partida. Felizmente, ele pode perceber a
presena de um monstro em uma casa adjacente, quando isso ocorrer. A estratgia ento recuar
e buscar outro caminho, ou ento arriscar para tentar no perder movimentos. A Figura 1.9
mostra uma imagem do prottipo desenvolvido em HTML dinmico.
Figura 1.9 - Prottipo do jogo. A casa verde a sada, a casa amarela onde o jogador est, e as
casas pretas mostram onde ele j passou. Ao chegar numa casa prxima a um monstro, um aviso
emitido.
O prottipo do jogo foi todo criado em HTML 4 dinmico, usando a linguagem Javascript, sem
necessidade de uso de tecnologias de servidor, como PhP, Ruby ou Java. Na Figura 1.10
podemos ver o cdigo base HTML que carrega a pgina do jogo. Observe que apenas fazemos
carga da biblioteca jQuery, para facilitar o trabalho em HTML dinmico, e dos arquivos
Javascript criados especialmente para o jogo.
Figura 1.10 - Arquivo HTML bsico do jogo. O elemento DIV chamado container servir
como tabuleiro, e seu contedo ser criado dinamicamente com Javascript.
A criao das casas do tabuleiro feita atravs da insero de elementos DIV diretamente no
HTML atravs de Javascript. Cada uma das 100 casas (tabuleiro 10x10) representada por uma
DIV de fundo cinza, a qual associada uma funo ligada ao evento clique. A Figura 1.11
mostra o trecho de cdigo Javascript que cria as DIVs para representar as casas do tabuleiro.
Figura 1.11 - Trecho de cdigo Javascript que cria as casas do tabuleiro. Cada casa uma DIV,
que posicionada proceduralmente, e tem uma funo associada ao evento clique.
A funo associada ao evento clique responsvel pela lgica do jogo. Os seguintes passos so
verificados sempre que o jogador clica em uma casa do tabuleiro:
9
O jogador pode se mover para essa casa? A funo s continua em caso afirmativo;
Move o jogador para a nova casa e conta o movimento;
A nova casa contm 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 lgica, o tabuleiro representado por uma matriz 10x10 de nmeros
inteiros, onde o valor zero (0) representa uma casa livre, e o valor um (1) representa a presena
de um monstro. As funes de checagem de derrota e presena de monstro usam essa matriz,
enquanto a funo de checagem de movimentao possvel apenas verifica se a casa clicada
adjacente atual. Na Figura 1.12 podemos ver o cdigo da funo que checa a validade do
movimento.
Figura 1.12 - Funo que checa se a casa clicada adjacente quela ocupada pelo personagem, o
que indica um movimento vlido.
O restante do cdigo fonte para as mecnicas est includo no DVD de anais do evento, num
arquivo chamado jogo.js. O arquivo zipado includo no DVD contm esse e os demais
arquivos que fazem parte do jogo desenvolvido.
1.6 - Integrao com o Facebook
Ao se criar um jogo para Facebook, ao contrrio do que muitos imaginam, no se est criando
um aplicativo web que ir rodar nos servidores dessa rede social. O que o Facebook permite a
autenticao, e o acesso remoto (via servios web) a vrios dados do perfil dos jogadores, seu
grafo de amigos, entre outras informaes.
Esses servios remotos podem ser acessados diretamente atravs de requisies em protocolo
HTTP, mas mais produtivo se utilizar uma das SDKs disponibilizadas, seja ela oficial, ou
mantida 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 a
sua aplicao no endereo http://developers.facebook.com/ e baixe uma das SDKs oficiais para
10
iniciar
programao.
Para o nosso exemplo, usaremos a SDK oficial Javascript para fazer a integrao diretamente do
browser. Iremos apenas fazer a autenticao/autorizao do jogador via Facebook, para, em caso
de vitria numa partida do jogo, publicar uma mensagem no mural do jogador. O arquivo
facebook-utils.js inclui todo o cdigo de acesso rede social, e bastante simples, sendo
baseado no exemplo incial de autenticao da documentao oficial.
A funo de inicializao contida no arquivo verifica se o jogador est logado no Facebook, e se
j autorizou o uso do aplicativo. Caso contrrio, o cdigo abre uma pequena janela para que o
jogador possa fazer isso. A funo mais interessante, mostrada na Figura 1.13, usa a API de
grafos do Facebook para postar a mensagem de vitria no mural do jogador.
Figura 1.13 - Funo que publica uma mensagem no mural do usurio logado no Facebook.
1.7 - Concluso e Outras Idias
Nesse captulo, mostramos alguns conceitos bsicos sobre o projeto de jogos, e um exemplo
simples, feito como um prottipo em HTML4 dinmico, de um jogo com elementos de rede
social. A tendncia que tem-se observado o uso cada vez mais acentuado dessas tecnologias
abertas que permitem a criao de jogos para diversos dispositivos diferentes (PC, Android, iOS,
Mac, Linux), especialmente com o novo padro HTML5.
Nesse exemplo preferimos utilizar HTML4 por ser uma tecnologia que funciona em browsers
antigos, como o IE 8 e inferior. Uma atualizao interessante seria desenvolver os grficos do
jogo para uso da tag CANVAS de HTML5, permitindo um melhor uso de animaes e efeitos.
Para tanto, recomenda-se o uso de alguma biblioteca que facilite o trabalho, tal como a CreateJS.
Tambm possvel se utilizar animaes e efeitos interessantes com HTML4. No jogo Cangao,
da Serto Games, utilizamos apenas HTML4 com a biblioteca Spritely, com resultados bastante
interessantes.
11
Outro aspecto que recomendamos explorar uma maior imerso nas caractersticas sociais dos
jogos, tal como o uso de desafio multiplayer, ou pelo menos contra um nico amigo, como
explorado nos jogos Song Pop, e Cangao Wargame.
Referncias
Cook, Daniel (2012). What are game mechanics? http://www.lostgarden.com/2006/10/what-aregame-mechanics.html. Acessado em 09/11/2012.
CreateJS (2012). A suite of Javascript libraries and tools for building rich, interactive
experiences with HTML5. http://www.createjs.com/#!/CreateJS. Acessado em 09/11/2012.
Facebook Inc. (2012). Facebook Developers Portal. http://developers.facebook.com. Acessado
em 07/11/2012.
Serto Games (2012). Stio oficial do Cangao Wargame. http://cangaco.com. acessado em
09/11/2012.
W3Schools (2012). Introduo ao padro HTML5.
http://www.w3schools.com/html/html5_intro.asp. Acessado em 09/11/2012.
12
Abstract
The game in our context is the electronic game, a simulation and interactive visual displays on a
screen. The interaction is such that the player must have some specific goal or how to go out
somewhere, destroy something, solve a problem, etc. The game developer should be aware of all
possible situations that will be experienced by the player, the knowledge and application of
specific techniques to create an immersive environment and free of errors typical of computer
graphics, as well as all processes that involve the creation of a game / animation, for use by
companies in disseminating their products through the adoption of "gamification" or for
personal entertainment.
Resumo
O jogo no nosso contexto o jogo eletrnico, uma simulao visual e interativa exibida numa
tela. A interao tal que o jogador deve ter algum objetivo especfico como ir ou sair para
algum lugar, destruir algo, resolver um problema, etc. O desenvolvedor de jogos deve estar
ciente de todas as situaes possveis que sero sentidas pelo jogador, o conhecimento e
aplicao de tcnicas especficas para criar um ambiente imersivo e livre de erros tpicos da
computao grfica, bem como todos os processos que envolvem a criao de um
jogo/animao, seja para uso de empresas na difuso de seus produtos por meio da adoo de
gamificao ou ainda para entretenimento pessoal.
Um jogo nos d um controle sobre um personagem ou um objeto virtual, de modo que possamos ter um
controle e uma imerso no ambiente virtual que se aproxime do nosso controle e imerso no ambiente
real s que com regras e motivaes diferentes.
13
2.2. O Jogador
O Jogador um participante do jogo. Um jogador pode ser uma pessoa real ou um jogador controlado
pelo prprio jogo. Neste artigo, estamos nos referindo a um jogador real, onde a interao do jogo com
o jogador feito com dispositivos de entrada e sada do jogo, geralmente a tela e um controle em que
na maioria das vezes, o jogador controla o personagem central do jogo.
2.3. Personagem
O personagem de um jogo de videogame personagem fictcio para que o jogador controle. Nos
primeiros jogos o personagem era apenas uma figura sem expresso, dotada de alguma caracterstica
especial (andar, pular) e no possuam uma histria ou motivao. O primeiro personagem de
videogame foi o Mario (ver figura 2.2), criado por Shigeru Miyamoto para a Nintendo. Com o tempo, os
personagens de videogame foram incorporados cultura pop. Com Mrio surgiu o conceito de mascote
do jogo. Esse tipo de personagem carismtico agrega um grande valor por sua importncia publicitria
graas a sua identificao com o pblico. Muitas ideias vm dos sonhos, surgem de pequenos conceitos
expandidos em Brainstorm. Grandes ideias poder parecer ridculas no comeo.
14
2.4. Menus
Os menus so interfaces de texto e/ou imagens onde o jogador deve fazer escolhas e ajustes. Antes de o
jogo comear, 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 mais
complexos. Nem todo jogo precisa de menus dentro do jogo, mas certamente vai precisar de um menu
antes do jogo comear .
2.5. HUD
Sigla para Head Up Display. um mtodo de representao visual de informaes importantes para o
jogador. So como menus no interativos. Em geral eles exibem informaes como munio, life, arma
selecionada, pontuao, dinheiro ou itens. O HUD (ver figura 2.3) desenhado por ltimo na tela, de
modo que ele fique sempre visvel para o jogador. Ele no deve se mover muito ou conter palavras para
que no distraia o jogador e sempre que possvel ser iconogrfico, ou seja, usando imagens que
representem a informao (cones).
Embora no sejam fundamentais no jogo, os sons existem nos jogos desde o primeiro jogo. Os sons
ajudam a caracterizar certas aes, aumentar o nvel de imerso do jogador e deixa-lo mais concentrado
no jogo. Os sons podem ser construdos por sonoplastia. Deve-se ter em mente que diferentes sons
provocam diferentes efeitos sobre o sistema sensorial do jogador. Os sons ligados a uma ao ou
personagem no precisam ser os mesmos sons ligados a estes no mundo real. Pose-se usar sons
diversos a fim de obter efeitos cmicos, criar tenses, fora ou simplesmente obter sensaes
agradveis.
A msica serve para se criar uma base para as imagens e os outros sons. Com a construo da
msica certa, pode-se criar ambientes agradveis, tensos, pode-se deixar o jogador mais nervoso com
uma msica mais rpida e pode-se at usar o recurso do silncio para criar um clima de suspense.
sempre bom ter algum repertrio de msicas no jogo, e ter msicas de durao razovel, caso contrrio,
15
2.6. Fsica
Um jogo uma simulao e na maioria das vezes, uma representao do mundo em que vivemos. Essa
representao, seja por limitaes de software e hardware ou por escolha esttica, no contm todos os
aspectos do mundo real. Porm, um aspecto que quase sempre est presente o fsico.
Esse aspecto se manifesta principalmente na deteco de coliso. Se o objeto A depois que ele
se mover colide em algo ento faz alguma coisa. Essa alguma coisa pode variar de jogo para jogo. Pode
ser que o objeto A seja um personagem e o algo seja uma parede. Ento o "faz alguma coisa pode ser
nada, ele bate na parede, portanto no anda, mas pode ser que o personagem tenho batido em algo
que o machuque como o fogo, ento o "faz alguma coisa" pode ser tirar vida do jogador. Uma tcnica de
coliso bem simples e que vamos usar aqui verificar se o retngulo que envolve o sprite toca o
retngulo que envolve o outro sprite (ver figura 2.4 e 2.5).
vivel game, envolve uma ampla variedade de habilidades e uma equipe especializada (ver figura
2.6).
2.7.1. Game Designer
Elabora os elementos do jogo bem como sua mecnica. Os elementos so os personagens e
o cenrio, a mecnica so as possibilidades que o jogador tem de interagir com o jogo.
Empresas que elaboram jogos de ponta modernos dividem as responsabilidades do game
designer com outros profissionais relacionados, sendo os principais, o combat designer e o
level designer.
2.7.2. Roteirista
Descreve como a trama do jogo, o perfil psicolgico dos personagens e a interao entre
eles (social e/ou psicolgica), a qual no necessariamente corresponde quela entre o
jogador e os personagens do jogo.
2.7.3. Tester
Trabalha na equipe de Q&A (Quality Assurance - Controle de qualidade). Testa diversos
aspectos do jogo e relata os pontos falhos ou a serem melhorados.
2.7.4. Programador
Elabora a programao do jogo, desenvolvendo cdigos para lidar com AI, msica,
interao, etc.
2.7.5. Engenheiro de software
Projeta os componentes de software do jogo envolvendo diversos aspectos como a
composio dos objetos, a interface deles, a interrelao existente entre eles, etc.
2.7.6. Programador Web e Programador de redes
Realiza toda a implementao e configurao necessria para a execuo do jogo em
navegadores e a disponibilizao de interatividade em rede nos jogos multiplayers on-line.
2.7.7. Programador de AI
Responsvel por programar os algoritmos de Inteligncia Artificial usados no jogo. Dentre
estes algoritmos esto o de planejamento estratgico de grupo num atirador de primeira
pessoa, a montagem da estratgia do time controlado pela CPU num jogo de esportes, o
planejamento de caminho para levar um personagem NPC (personagens no-jogveis) de
um local ao outro, etc.
2.7.8. Engenheiro de som
Produz os efeitos sonoros e a msica tema.
17
Faz o projeto da fase em que o jogador se encontra. Determina quais elementos compem a
fase, verifica a presena de alguma caracterstica 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 so os elementos que
devem estar presentes no combate, qual o papel destes elementos (dano, cobertura, etc).
18
2.9.1. PyGame
O Pygame um conjunto de mdulos que voc importa num cdigo em Python, os quais lhe
disponibilizam uma srie de funcionalidades auxiliares para criao de aplicativos
multimdia e games.
Segue abaixo algumas caractersticas da engine para programadores da linguagem
python:
Vrios processadores podem ser usados facilmente:
O uso de vrios ncleos adiciona um desempenho muito maior ao seu jogo.
As funes internas so implementadas em C e Assembly:
Cdigo em C costuma ser de 10 a 20 vezes mais rpido que Python. J
Assembly tem uma performance de mais de 100 vezes maior que Python.
Porttil:
Aplicativos programados em Pygame podem rodar tanto em plataformas Windows
(ver figura 2.9) quanto em Linux, Solaris, FreeBSD, Mac OS, Android, entre outros. O
cdigo ainda d suporte a Dreamcast e tambm pode ser usado em dispositivos mveis.
Simples:
O Pygame usado no projeto OLPC (One Laptop Per Child) para ensinar
programao a crianas. Ao mesmo tempo, tambm a preferncia de programadores
experientes.
19
2.9.2. Allegro
Allegro uma biblioteca de funes para jogos 2D feita em C. Apesar de ter algumas
funes para jogos 3D ela no indicada para isso, sendo no lugar dela uma API3d como
OpenGL ou DirectX. De acordo com a Companhia Oxford de Msica, Allegro o italiano
para "rpido, vivo e brilhante". Ele tambm um acrnimo recursivo que representa
"Allegro Low Level Game Routines" (Rotinas de jogo de baixo nvel Allegro).
Segue abaixo algumas caractersticas da engine para programadores da linguagem C:
Passando-se os valores dos tons (que variam de 0 a 255), de vermelho, verde e azul,
esta funo retorna o cdigo da cor. Exemplo de uso: makecol (255, 0, 0 );
PyGame: Realizada de forma similar
2.12. Temporizadores
Interrompe a execuo do programa durante um intervalo de tempo igual ao passado
como parmetro, em milisegundos:
Allegro: void rest(unsigned int uiTime);
PyGame: Clock = pygame.time.Clock()
Clock.tick(int Time)
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 funo desenha um retngulo sem preenchimento, com o contorno colorido,
enquanto a segunda funo desenha um retngulo 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 funo desenha um crculo sem preenchimento, com o contorno colorido,
enquanto a segunda funo desenha um crculo 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 funo desenha uma elipse sem preenchimento, com o contorno colorido,
enquanto a segunda funo 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
Funo para exibir um texto na tela, o sexto parmetro deve ser -1 para um fundo
transparente:
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)
valor
de
card
usualmente
GFX_AUTODETECT,
ou GFX_AUTODETECT_WINDOWED;
GFX_AUTODETECT_FULLSCREEN
2.18.2 Mouse
Para inicializar as rotinas do mouse:
Allegro: install_mouse();
PyGame: Realizada de forma similar
24
O Problema:
Como dar movimento ao personagem e aos objetos envolvidos?
A Soluo:
Movimento de cenrio. O scrolling consiste em movimentar o fundo do cenrio e,
normalmente, deixar o personagem controlado parado, o que causa uma sensao de movimento.
O scrolling pode ser horizontal, vertical ou em ambas as direes.
diagonalmente, eles iro colidir antes de atingirem um ao outro de verdade. Isso est ocorrendo
justamente por utilizarmos caixas para representar a forma geomtrica das esferas, e agora?
A Soluo:
Quando queremos testar colises entre esferas, teremos que verificar se a distncia entre
os centros delas so menores que a soma dos seus raios. Em caso positivo, ento uma coliso
ocorreu. Essa a forma mais eficiente de detectar colises entre duas esferas. Para detectar a
coliso entre duas formas circulares, usamos o teorema de Pitgoras: (r2 = x2 + y2) (ver figura
2.12).
Referncias
Andrade, Kleber de Oliveira, Introduo 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.
26
Abstract
Lack of maturity concept of information security, both as managers from the IT technical staff
about potential problems that may occur due to the lack of correct management of sensitive
information of the company and the impacts that may cause the image of the corporation. Many
administrators with little security experience preparing their servers with a basic installation
and after their applications are already in operation they leave the way it is, the adoption of
hardening techniques in the UNIX solutions come with standard ISO27002 controls. Having as
its main objective to show how to seek compliance of best practices suggested in the standard.
Resumo
Falta amadurecimento do conceito segurana da informao, tanto de gestores como por parte da
equipe tcnica de TI sobre possveis problemas que podem ocorrer pela falta do gerenciamento
correto das informaes sigilosas da empresa e os impactos que possam causar a imagem da
corporao. Muitos Administradores sem muita experincia em segurana preparam seus
servidores com uma instalao bsica e, depois que suas aplicaes j esto em funcionamento
eles deixam da maneira que est, a adoo de tcnicas de Hardening em ambientes UNIX
provem solues de controles com a norma ISO27002. Tendo como seu principal objetivo
mostrar como buscar a conformidade das boas prticas sugeridas na norma.
3.1.Introduo
A segurana da informao possibilita que o negcio da empresa seja realizado e sua
misso alcanada, fazendo com que a informao seja um ativo de grande importncia que
necessita ser protegida, independente do formato em que ela se encontra como, por exemplo:
impressa ou escrita em papel, armazenada eletronicamente, apresentada em filmes ou atravs de
conversas.
Investir em segurana da informao no apenas uma questo de investimento
tecnolgico, mas tambm de gesto de pessoas, o que faz com que esse aspecto seja um dos mais
difceis de ser abordado e que merece bastante ateno dos especialistas na tentativa de mitigar
os riscos sofridos pelas empresas, pois so as pessoas que executam e suportam os processos de
uma organizao.
A necessidade do uso das informaes e os riscos esto presentes em todos os negcios
sendo preciso saber conviver com eles e administr-los com competncia, pois uma
indisponibilidade pode causar danos irreparveis e as pessoas ainda no possuem conscincia ou
27
3.2.Ambiente Organizacional
O aumento da competitividade fez com que as empresas buscassem novos modelos de
negcio, com maior rapidez, eficincia e qualidade nos servios prestados e nos produtos. A
informao passou a ser o ativo mais valioso da organizao, exigindo um controle mais rgido e
complexo.
Diante desse novo cenrio, a segurana da informao, que antes era de conhecimento
apenas de grandes empresas e profissionais especializados, passou a ser conhecida por um
nmero maior de pessoas, porm a maioria das organizaes toma uma postura reativa em
relao segurana, tomando decises aps a ocorrncia de um incidente ou at mesmo
chegando a ignor-lo dependendo do seu impacto nos negcios.
Devido s constantes mudanas nas organizaes e ambientes de TI comum o
surgimento de diferentes formas de ameaas e vulnerabilidades, tornando a sua gesto uma tarefa
complexa e bastante abrangente.
Para auxiliar no processo de implementao e manuteno do sistema de gesto de
segurana da informao as empresas utilizam as principais normas srie 27000 que so a NBR
ISO/IEC 27001:2006 - Tecnologia da Informao - Tcnicas de Segurana - Sistema de Gesto
de Segurana da Informao (SGSI) - requisitos, norma que trata da definio de requisitos para
SGSI, e a NBR ISO/IEC 27002:2005 - Tecnologia da Informao - Tcnicas de Segurana Cdigo de Prtica para Gesto de Segurana da Informao, que o cdigo de melhores prticas
para gerncia da segurana da informao.
De acordo com Fontes (2000, p.53), h oito dimenses da segurana da informao (SI)
que podem auxiliar em todos os aspectos e facilitar esse processo. So elas:
a) Organizacional: deve abranger as polticas, os termos de compromisso e as auditorias de
acordo com a filosofia e a cultura da empresa;
b) Controle de acesso a informao: envolve a identificao e autenticidade dos usurios nos
sistemas computacionais e como ele dever ser feito. Tambm identifica o gestor e o responsvel
pelo controle de acesso informao;
c) Desenvolvimento e a manuteno de sistemas: define os procedimentos, padres,
metodologias e regras de desenvolvimento, aquisio e manuteno de sistemas;
d) Ambiente fsico: envolve o controle de acesso e monitoramento do ambiente, alm das
condies tcnico/ambientais para os equipamentos de informtica funcionem corretamente;
e) Ambiente descentralizado: deve levar em considerao a importncia que os micros e redes
locais esto ganhando nas empresas;
28
29
Segundo a Mdulo Security (2006), apenas 25% das empresas preferem no terceirizar a
rea de Segurana da Informao, enquanto que aquelas que terceirizam do a preferncia aos
servios de administrao e suporte a firewall e IDS (16%), help desks (13%) e anlise de riscos
(9%).
3.3.Segurana da Informao
3.3.1. Uma Viso Geral
O contedo publicado nas redes sociais nem sempre so relevantes aos negcios da
organizao e muitas vezes podem reduzir a produtividade dos profissionais. A disponibilizao
de informaes e a sensao de conforto, gerados pela liberao da utilizao dessas ferramentas,
pode favorecer o trabalho de pessoas maliciosas que utilizam de estratgias como a de
Engenharia Social para obter informaes sigilosas.
De acordo com Frank Wazmer, ChiefInformation Officer (CIO) da rede hospitalar norteamericana Health First, explica que a ameaa imagem das companhias latente quando seus
funcionrios fazem parte de redes sociais. Esses sites tornam-se plataforma para que eles
possam fazer reclamaes, comentrios impertinentes ou at divulgar dados confidencias de
forma macia, Tendo como nica soluo a conscientizao dos usurios e a definio das
regras que devem ser aceitas por todos que fazem parte da empresa. o nico caminho
eficiente que conheo, j que nenhuma ferramenta at agora consegue deter os criminosos
virtuais, conclui (COMPUTERWORLD, 2010, p.55).
Dawel (2005, p.26) acredita que h no mnimo trs explicaes para que isso ocorra:
desconhecimento do perigo que pode estar dentro da empresa, negligncia em tratar as ameaas
30
internas e a impercia em lidar com assuntos relativos segurana e trat-las de forma amadora,
achando que est sendo profissional.
Em uma pesquisa realizada pela empresa Mdulo Security com Guelman (2006) foi
publicado que uma das principais constataes de um estudo realizado pelo "CSI/FBI Computer
Crime and Security Survey" que a segurana da informao muito mais uma questo gerencial
do que tecnolgica, pois de nada adianta investir em tecnologia e proteo fsica se no temos a
colaborao e o comprometimento das pessoas.
A 10 Pesquisa Nacional de Segurana da Informao, realizada em 2006, pelo Mdulo
Security Solutions, empresa especializada em segurana da informao, com cerca de 600
profissionais ligados a rea de tecnologia e segurana da informao de diversos segmentos de
negcio, revelou que apesar de haver uma maior preocupao com investimentos em SI para
ajudarem as empresas a estarem mais bem preparadas pra enfrentar algumas falhas de segurana,
ainda grande o nmero de empresas (33%) que no sabem quantificar as perdas ou sequer
identificar os responsveis pelo problema (21%). Porm a maioria das corporaes (55%)
considera como principal obstculo para a implementao da segurana da informao a falta de
conscientizao dos executivos e usurios (Figura 3.2).
Para ajudar a melhorar esse cenrio fundamental que a alta gerncia tenha claro que a
conscientizao de seus funcionrios um fator crtico de sucesso no plano de segurana da
informao. Para isso necessrio que seja realizada uma avaliao do nvel de conhecimento
que a direo da empresa possui sobre o assunto e que seja feito um nivelamento de informaes
utilizando as recomendaes das normas, as melhores prticas e cases de sucesso, tendo como
apoio, caso se faa necessrio, uma consultoria especializada no assunto.
31
Figura 3.3. Nvel de capacitao dos profissionais que lidam com a Segurana da Informao na
corporao
Fonte: Mdulo Security Solutions 10 Pesquisa Nacional de Segurana da Informao
(2006, p.14)
3.3.3. Objetivos
A segurana da informao tem como objetivo a proteo das informaes atravs de um
conjunto de orientaes, normas, procedimentos, polticas e demais aes para garantir a sua
32
preservao contra possveis danos, perdas, furtos e mau uso, afetando a continuidade do negcio
e alcance de seus objetivos.
De acordo com a norma ABNT NBR ISO/IEC 27002:2005 a informao um ativo e
como outro qualquer ativo importante, essencial para os negcios de uma organizao e,
consequentemente, necessita ser adequadamente protegida. Isto especialmente importante no
ambiente dos negcios, cada vez mais interconectado. Como um resultado desde o incrvel
aumento da interconectividade, a informao est agora exposta a um crescente nmero e a uma
grande variedade de ameaas e vulnerabilidades (ABNT, 2005).
Um ativo qualquer coisa que tenha valor para empresa, como servios, equipamentos,
pessoas, conhecimentos, sua imagem e reputao.
Segundo a NBR ISO/IEC 27002-2005 (ABNT, 2005) para que a informao possa estar
protegida necessrio que ela possua os trs princpios bsicos da segurana, que so:
Confidencialidade, Integridade e Disponibilidade.
Confidencialidade: somente indivduos autorizados possuem acesso a esse ativo,
impedindo que a informao acabe sendo acessada por pessoas erradas ou divulgada sem
autorizao prvia. Exemplo: Acesso folha de pagamento do RH por um funcionrio no
autorizado.
Integridade: o ativo ou a informao devem estar em seu formato original preservando a
sua exatido e completeza, ou seja, a informao no pode ter sofrido alterao.
Disponibilidade: o ativo deve estar disponvel e acessvel para o individuo autorizado
sempre que necessrio.
Alm desses princpios bsicos, a proteo tambm pode ser obtida atravs da
auditabilidade (registro do acesso e uso da informao para posteriores consultas e
averiguaes), da legibilidade (de acordo com as leis aplicveis, regulamentos, licenas e
contratos para o negcio), do no repdio (garantia de que o usurio da informao no possa
negar as suas responsabilidades pelo seu uso) (TI EXAMES ISO/27002 FOUNDATION, 2011).
Para que sejam elaboradas as normas e diretrizes, como polticas de segurana da
informao, de acordo com o tipo de negcio da empresa e o seu porte, tendo que haver um total
comprometimento de toda a organizao com nesse processo, desde a alta direo at os
estagirios, prestadores de servio e/ou partes envolvidas.
3.3.5. Vulnerabilidades
A vulnerabilidade pode ser considerada uma falha no sistema computacional que cria
deficincias na segurana e que pode ser ocasionadas por configuraes incorretas do
computador ou de segurana (FONTES, 2000).
Segundo Smola (2002) e Moreira (2001) respectivamente, a fragilidade presente ou associada a
ativos que manipulam e/ou processam informaes que, ao ser explorada por ameaas, permitem
a ocorrncia de um incidente de segurana, afetando negativamente um ou mais princpios da
segurana da informao: Confidencialidade, Integridade e Disponibilidade.
A vulnerabilidade o ponto onde qualquer sistema suscetvel a um ataque, ou seja,
uma condio encontrada em determinados recursos, processos, configuraes, etc. Condio
causada muitas vezes pela ausncia ou ineficincia das medidas de proteo utilizadas com o
intuito de salvaguardar os bens da empresa (SMOLA, 2002).
As vulnerabilidades podem ser encontradas em praticamente todos os ambientes,
podendo ser de vrios tipos, como: fsicas, naturais, hardware, software, mdias, comunicao e
humana. A identificao dessas vulnerabilidades e a implantao de medidas de segurana
diminuem o grau de ameaa e aumenta a possibilidade da continuidade do negcio (MOREIRA,
2001).
Em relao a segurana da informao, a vulnerabilidade humana um dos pontos mais
frgeis e ela pode ser causada devido a negligncia ou no conhecimento das polticas de
segurana, falta de treinamento, sabotagens, compartilhamento de informaes confidenciais
34
3.6. Ameaas
Para Arajo (2005), as ameaas so muitas das vezes consequncias das vulnerabilidades
existentes, 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 informaes e a descoberta da senha de um usurio. Quando a informao
acessada por pessoas no autorizadas e h alteraes dessas informaes ocorre a perda da
integridade. J a perda de disponibilidade quando, por exemplo, a informao no est
acessvel a quem precisa dela, ou por motivos acidentais, fatores internos ou externos, m
inteno ou ainda falha nos equipamentos (ARAUJO, 2005).As ameaas podem ser naturais,
quando so causadas devido a fenmenos da natureza e no naturais quando so causadas pelo
ser humano.
O erro humano a causa mais comum para a perda de dados, que pode ocorrer de forma
acidentalmente por apagar ou sobrescrever um arquivo existente na rede. Usurios
frequentemente utilizam seus computadores com configuraes pr-configuradas sem entender o
que elas significam o que pode causar srios danos. Muitos problemas originados nos
computadores das empresas so causados por atividades executadas por seus prprios
funcionrios.
Kevin Mitnick, um dos maiores cyber criminosos dos EUA, que atualmente trabalha em
prol da segurana da informao considera as pessoas como o elo mais fraco da segurana,
devido falsa sensao de segurana ocasionada pelo desenvolvimento e utilizao de melhores
tecnologias de segurana, tornando mais difcil a explorao de vulnerabilidades tcnicas. Para
Mitnick (2006), a quebra do "firewall humano" quase sempre fcil, no exige nenhum
investimento alm do custo de uma ligao telefnica e envolve um risco mnimo.
As empresas esto se preocupando cada vez mais com a proteo da informao, pois
esto convencidas de que ela um ativo de grande importncia e valor. Um dos pontos
relevantes para que a proteo dessa informao ocorra a conscientizao dos seus funcionrios
quanto utilizao desse ativo.
De acordo com Fontes (2006) conscientizao mais do que um simples conhecimento:
estar conscientizado em proteo da informao internalizar os conceitos e agir com
naturalidade no cumprimento dos regulamentos. Significa que a segurana da informao deve
fazer parte do dia-a-dia e no ser considerada um peso em nossas responsabilidades profissionais
para a organizao. Significa tambm que os executivos da organizao devem avaliar e testar
comprometidos com o nvel estabelecido para a proteo.
Fontes (2006, p.32) destaca que vulnerabilidade humana pode ocorrer por diversos tipos
de problemas, como descritos a seguir.
Pouco ou nenhum entendimento sobre segurana: segurana no um instinto e deve ser
ensinada s pessoas.
35
As ameaas devem ser claramente explicadas: muitas pessoas no acreditam que um problema
realmente exista por nunca terem sofrido ou conhecerem algum que j tenha sido de algum tipo
de fraude eletrnica.
Questes culturais: o comportamento das pessoas no muda facilmente. O hbito de usar regras
de segurana no deve ser utilizado apenas dentro da organizao. As pessoas tambm devem ter
hbitos fora do ambiente empresarial, fazendo com que a segurana seja uma rotina em seu diaa-dia.
Resistncia s medidas de segurana: as pessoas costumam ter a falsa sensao de perda de
liberdade ao se submeterem s polticas de segurana, ou ainda, que so pessoas no confiveis
perante a organizao.
Necessidades: geradas principalmente pela necessidade financeira.
Oportunidades: os funcionrios tm o conhecimento de como a organizao funciona
diariamente, consequentemente possuem o conhecimento das fragilidades dos controles internos.
Racionalizao: a conduta da pessoa a faz acreditar e a tornar a fraude como algo justo.
O fator humano no desenvolvimento e implantao das polticas de segurana da
informao o ponto mais problemtico para a organizao, pois o nico aspecto que no pode
ser diretamente controlado, como ocorre com os diversos tipos de sistemas e computadores que
so programados a executar com fortes polticas de segurana.
A organizao deve desenvolver um plano de conscientizao dos usurios, como o objetivo de
introduzir a preocupao com a SI na cultura organizacional. Deve envolver todos os
funcionrios da organizao e, caso se faa necessrio, fornecedores e terceiros.
O processo de seleo dos profissionais tambm deve ser realizado de maneira criteriosa,
levando-se em considerao a importncia do ativo pelo qual o colaborador ser responsvel,
alm dos seus conhecimentos e da titularidade exigida pela funo.
Os riscos considerados ativos podem ser mais bem gerenciados de acordo com as
vulnerabilidades humanas se todas as pessoas reconhecerem o seu papel, suas responsabilidades
e habilidades, fazendo a diferena na prtica e contribuindo para a SI.
A empresa deve estabelecer regras que sejam claras e objetivas, medir a adeso s
polticas de segurana da informao periodicamente, ter um criterioso processo de seleo,
prover treinamento, atualizaes e reciclagens, fornecer informaes de como se defender de
ataques tecnolgicos e engenharia social alm de possuir um conjunto de tecnologias aplicadas a
SI.
Para Mitnick (2003) no existe um computador 100% seguro, pois um criminoso far de
tudo para conseguir a informao desejada.H um ditado popular que diz que um computador
seguro aquele que est desligado. Isso inteligente, mas falso: o criminoso convence algum
37
a entrar no escritrio e ligar aquele computador. Tudo uma questo de tempo, pacincia,
personalidade e persistncia. nesse ponto que entra a arte da fraude (MITNICK, 2003).
O conhecimento das causas e riscos que as ameaas trazem se faz necessrio, pois os
usurios repetem seus comportamentos domsticos dirios nos ambientes corporativos,
comprometendo igualmente a segurana dos computadores utilizados.
Fonte: http://www.cert.br/stats/incidentes/2011-jan-mar/total.html
38
no haver o conhecimento do seu objeto e por tomar as pessoas vulnerveis por no conhecer a
identidade dos hackers.
Em dezembro de 2009 um e-mail circulava pela internet oferecendo vacina para antigripe
H1N1. Atravs desse e-mail os hackers maliciosos redirecionavam o usurio para um site falso
que baixava automaticamente programas maliciosos para o computador da vtima. O computador
contaminado era utilizado para furtar dados cadastrais, atacar outros computadores e transformar
a mquina em um servidor de "spam" (REUTERS, 2009).
los pela internet infectando um nmero maior de pessoas e se espalhando pela rede mundial
quase que instantaneamente, porm o maior problema surgiu em 2003 quando esses
desenvolvedores perceberam as possibilidades de fazer dinheiro com o uso desses malwares. O
risco passou a aumentar de forma gradativa e a conscientizao dos usurios no acompanhou
esse processo.
Dessa forma, a conscientizao passa novamente a ser um fator importantssimo para as
empresas na mitigao de riscos e vulnerabilidades em seus ativos, conforme Slade (2006)
recomenda em um trecho de sua entrevista citando sobre as tendncias para o futuro e o que as
empresas poderiam fazer para melhor se protegerem.
Ns no podemos saber como as tecnologias perigosas podem ser, mas sabemos que
sero como aplicaes que colaboram para a "convenincia do usurio". Muito provavelmente,
se relacionaro com ferramentas que existam. Em termos de proteo a conscientizao
continuar sendo a melhor defesa. Organize palestras para seus funcionrios, ensine o que
perigoso e que todos os atalhos geralmente resultam em infeces. apontado tambm que
seminrios para os usurios em geral so uma das mais efetivas protees, em termos de custobenefcio: ensinando usurios que no trabalham para voc, voc ajuda na proteo. Os vrus que
atingem usurios infectados enviam cpias 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 email, mas mensagens de publicidade e em web sites tambm so consideradas como spam.O
nmero de spams reportados para o CERT.br, rgo responsvel por receber, analisar e
responder a incidentes de segurana envolvendo redes conectadas internet, chegou a um total
de 31.367,42 somente entre janeiro e junho de 2011 e esse nmero vem crescendo
exponencialmente a cada ano (Figura 3.5).
41
e)evitar a divulgao dos telefones diretos dos CEOs ou diretos para pessoas desconhecidas.
Elaborar uma poltica de identificao positiva pode auxiliar no fornecimento dessas
informaes somente aos colaboradores da empresa;
f) ter uma poltica escrita e bem divulgada sobre a divulgao de informaes de cdigo
contbeis dos grupos de trabalho e departamentos;
g)verificar sempre a identidade do solicitante juntamente com a necessidade que o requisitante
tem que saber;
h) os funcionrios devero ser treinados a negar educadamente alguma informao at que a
solicitao possa ser verificada. As polticas e procedimentos da empresa com relao
divulgao de informao no pblica devem ser sempre seguidos.
Portanto, trazendo isso realidade corporativa, fica evidente que combater um
engenheiro social um dos mais difceis papis, at mesmo para os mais experientes CSO, pois
depende da colaborao de todos da empresa. Essa colaborao s possvel de acontecer com
um mnimo nvel de maturidade em segurana da informao, e para alcanar isso, uma das
aes que mais apresenta resultado so as polticas de conscientizao de usurios (CORREIA,
2011).
Segurana
Risco
46
Flexibilidade
No h uma regra direta para esses trs fatores representados na Tabela 5.2, isso vai
depender de cada situao, de acordo com o tipo de necessidade. Por isso toda implentao de
um servidor deve ser bem definida antes de ser feita, nem que ela tenha que ser desenhada no
papel e analisada por vrias vezes.
Embora as tcnicas de hardening sejam de extrema importncia, elas no se aplicam em
todas as situaes. Cada caso um caso. preciso analisar e descobrir o procedimento que ser
mais adequado para a necessidade em questo. Outro ponto importante que ela focada na
camada de userland. Hardening composto por 4 etapas bem definidas so elas:
1 Mapeamento das ameaas
Ameaas qualquer evento que possa gerar impacto negativo em nossos ativos. Ex:
usario insatisfeito, incndio, falata de recurso. Pra uma ameaa poder se concretizar ela
necessita de uma vulnerabilidade. Mesmo porque vulnerabilidade sozinha no faz nada. Quando
se tem diversas vulnerabilidades e ameaas que possam comprometer nosso ambiente
explrorando essa vulnerabilidade, temos um risco.
Dessa forma, entto ameaas so circunstncia e incidentes que podem gerar impactos
negativo explorando uma vulnerabilidade tornando um potencial risco.
2 Mitigao do Risco
Visa reduzir/eliminar os riscos ao nvel aceitvel, mas qual o nivelaceitavel ?aquele que
meu ambiente pode trabalhar adequadamente de forma segura a zelar pelos 3 pilares da
segurana da informao e que esteja proteigo contra ataques.
H 3 formas de lidar com os riscos:
Evitar o risco: Medidas so tomadas para eliminar a ameaa de tal forma que a ameaa
no leve a um incidente.
Suportar / Aceitar o risco: Considera que certos riscos so aceitos. Isto pode acontecer
quando o custo da medida de segurana execede o dano. Nesta estratgia a organizao vai optar
por medidas de segurana repressivas. Ex: se houver um incndio na sala deve-se apagar o fogo
com o extintor de incndio.
ocorrncia do Risco. Por outro lado as aes corretivas so ativadas ps-ocorrncia do Risco.
Podem ser o ltimo estgio antes do acionamento de um Plano de Contingncia.
Aes corretivas em demasia podem ser o resultado de um planejamento ou operaes
inadequadas ou mesmo a falta deles. Aes corretivas, na maioria das vezes ocorrem de forma
emergencial, sem planejamento e dependendo do procedimento e das ferramentas adotados
podem ser mais nocivas para o ambiente de Tl do que benficas.
Podem ser evitadas caso haja aes Preventivas.Um exemplo clssico a gesto de
servidores: requerido que este passe por manutenes preventivas de hardware peridicas
(disco, memria, capacidade, performanceetc), assim como requerido tambm que seu
ambiente operacional (sistema operacional, software gerenciador de banco de dados etc) seja
atualizado permanentemente de acordo com as orientaes do fornecedor. No havendo
manutenes e atualizaes preventivas Hardware e Software, riscos de indisponibilidade do
ambiente
so
potencializados.
As aes preventivas possibilitam uma gesto de menos risco. No caso citado, contratos
de manuteno e suporte tcnico junto a fornecedores e terceiros; treinamento tcnico ao pessoal
interno e outras aes impedem que haja exposio e perdas financeiras da empresa em funo
de indisponibilidade dos sistemas/servios (IETEC-Instituto de Educao Tecnolgica).
4 Estratgia de Segurana
Antes de decidir implementar um sistema de segurana um firewall por exemplo
importante ter o conhecimento de algumas estratgias bsicas empregadas na construo destes,
visando uma maior segurana e confiabilidade no firewall so mtodos que podem e devem ser
analisados.
Privilgio Mnimo: Garantir que o usurio s tenha acessoaos recursos que ele necessita ter
acesso. Tomando o cuidado de no atribuir privilgios menores que o necessrio, pois desta
forma, tal objeto no conseguir realizar suas tarefas. Este mtodo largamente utilizado,
sendo importante para eliminar ou amenizar os danos causados por pessoas mal
intencionadas.
No contexto de Internet, existem vrios exemplos:
Muitos dos problemas se segurana comuns na internet podem ser evitados com a
utilizao deste princpio. Por exemplo, o Sendmail um alvo muito visado pelos atacantes,
devido sua complexidade e o fato de que ele funciona acoplado ao root. O nvel de complexidade
deste daemon aumenta a ocorrncia de bugs, isto implica que, programas privilegiados devem
ser to simples quanto possveis. Caso um programa complexo exija privilgios acentuados,
48
devemos procurar meios de separar e isolar as partes que necessitam destes privilgios das que
no precisam (MELO, 2006).
colocar uma mquina na Internet e achar que ningum tentar invadi-la, simplesmente
porque voc no contou a ningum sobre ela;
abrir um servidor Apache em uma porta diferente para que ningum o utilize, a no ser as
pessoas que voc informou sobre sua existncia;
configurar sua rede de forma que usurios internos vejam as informaes de uma maneira
e usurios externos (Internet) no consigam ver tais informaes, como portas e servios
prestados em seus servidores.
sempre utilize esta tcnica em conjunto de outras, pois manter a segurana apenas atravs
da obscuridade muito ruim;
49
50
OBS.: Recomenda-se, para fins de melhor conhecimento do sistema, que esse teste seja feito
em todas as shells disponveis.
Para resolvermos isso, vamos remontar a partio onde est montada o /home, mas agora
com a opo de nosuid.
# mount -o remount,rw,nosuid /home
# mount
O camandomountsem parmentros nos mostra quais as parties esto montadas e suas
respectivas opes.
Com a partio remontada com nosuid, faa o teste novamente e veja que as asshells
continuam com o suid bit ativado. Entretanto, quando forem executadas, no vo mais
possibilitar o acesso no nvel de root.
Outra opo que pode ser utilizado o noexec, que impossibilita a execuo de qualquer
binrio ou arquivo executvel dentro da partio na qual essa opo est ativa.
Essa opo pode ser aplicada a todos os diretrios, mas um clssico exemplo aplic-la
aos diretrios /home e /tmp. Crackerspodem ser aproveitar do diretrio /tmp, onde por padro
qualquer usurio pode introduzir backdoors ou qualquer outro programa malicioso para ter um
acesso completo ao seu sistema.
O mesmo exemplo realizado com o nosuid.Agora ser remontar a partio com a opo
noexece tentar executar umas shells que copiamos para o /home.
# mount -o remount, rw,noexec /home
# mount
# ./sh
Observe que no foi possvel executar a shell. Na tentativa de execut-las, retornou a
mensagem permisso negada; nessa partiao, nada de execuo.
Uma ltima opo que podemos utilizar o noatime. Ele no especificamente uma
opo para a questo de segurana, mas sim para a questo de performace, pois faz com que o
kernel do linux execute uma rotina a menos quando o noatime esta definido e destinado
atuaizao do tempo de acesso de arquivo.
Primeiro conhecer o comando stat, utilizado para verificar o status de um arquivo ou de
um sistema de arquivos.
# stat /etc/passwd
A saida desse comando nos retorna informaes importantes, mas vamos nos focar nas
informaes do Access(atime), do Modify (mtime)e do Change (ctime).Veremos suas
diferenas.
Ser criado dois arquivos, um no diretrio /root e outro no /tmp, assumindo que o /root e
o /tmp esto em partioes diferentes.
# touch /root/teste1
51
# touch /tmp/teste2
Verificar o seu status, mas focando nas informaes do Access,do Modifye do Change.
# stat /root/teste1
# stat /tmp/teste2
Diante das primeiras informaes, vamos fazer os testes e ver o que ser mudado. Vamos
visualizar o contedo dos arquivos, supondo que eles tenham algum contedo, e logo em seguida
ser verificado o status dos arquivos.
# cat /root/teste1
# cat /tmp/teste2
# stat /root/teste1
# stat /tmp/teste2
Veja que os Accessdos arquivos esto diferentes. Quando ns visualizamos o contedo
dos arquivos, fizemos um acesso a ele, logo o seu tempo de acesso (Access) foi modificado.
Agora mais um teste nesses arquivos. Ser modificado sua permisso e logo em seguida
visualizar o seu status.
# chmod 777 /root/teste1
# chmod 777 /tmp/teste2
# stat /root/teste1
# stat /tmp/teste2
Com ateno observer que o Access dos arquivos esto diferentes. Quando
visualizado o contedo dos arquivos, feito um acesso a ele, logo o seu tempo de acesso
(Access) foi modificado.
Ser feito um teste nesses arquivos. Modificar sua permisso e logo em seguida visualizar
o seu status.
# chmod 777 /root/teste1
# chmod 777 /tmp/teste2
# stat /root/teste1
# stat /tmp/teste2
Percebe-se que agora o Access no foi modificado, mas o Changefoi. Sempre que
mudarmos a permisso de um arquivo, o Change ser mudado, registrando a ltima data e hora
da mudana.
Agora ser inserido um contedo nesses arquivos e logo em seguida verificar o que foi
modificado.
# echo abc> /root/teste1
52
53
Tabela 5.3 : bom exemplo da maneira pela qual podemos aplicar essas opes aos nossos
diretrios que esto montados em parties diferentes.
awk
$2,$3}
sed
1,7d
>
Com esse commando, estaremos pesquisando todos os pacotes instalados. Com o dpkg
feito um filtro somente na segunda e na terceira coluna, que so os nomes dos programas e as
verses. O sed remover as sete primeiras linhas que so importantes para a nossa pesquisa e a
direcionar isso para o arquivo de pacotes dentro do /root.
A retirada dos programas desnecessrios ser de acordo com a situao com que se est
trabalhando. Pode ser que, para um caso especfico, seja necessrio algum programa que, em
outros casos, no seja obrigatrio. importante que isso seja minunciosamente analisado.
Um exemplo o programa wget, que utilizado para fazer download sem a interao do
usurio. Isso pode ser um grande risco para um servidor, j que um cracker pode aproveitar-se de
problemas conhecidos do seu sistema e utilizar o wgetpara baixar programas maliciosos para seu
54
servidor, tais como exploits, backdoors, entre outros. Isso impossibilitar que ele tenha um fcil
acesso ao servidor ou que mesmo o danifique.
Concluindo o exemplo, se o seu Linux tem o wget, podemos ento remov-lo,
# apt-getremove purgewget
Faa uma anlise completa dos programas que esto instalados por padro no seu Linux e
verifique o que realmente necessrio. Lembre-se de cada caso um caso.
DICA: O sistema Operacional Windows tambm vem com um programa semelhante
ao wget, o tftp. Caso esteja utilizando o Windows, tambm tome cuidado com esse
programa, pois muitos Spywares se aproveitam dele.
Podemos ver que, mesmo o sistema seja instalado no seu modo bsico, ainda existe
programas que podemos ser retirados, pois talvez sejam at brechas de segurana em seu sistema
se forem bem explorados.
55
Para remover todas as permisses de suid bit dos binrios, temos que fazer uma pesquisa
no sistema e gerar uma lista com todos eles para uma melhor anlise.
Ser criado um diretrio chamado teste dentro do /root para fazermos os nossos testes e em
seguidautilizaremos o comando findpara localizar com Suid bit.
# cd /root
# mkdirteste
# find / -perm -4000 > /root/teste/lista.suid
OBS.: O nmero 4000 representa a permisso de Suid bit, sendo que os trs zeros
so as permisses padres do sistema ( 0 para usurio, 0 para grupo e 0 para outros),
e o 4 representa a permisso a permisso Suid bit. Podemos ter tambm, no lugar do
4, o 2, que Sgid bit, e o 1, que Sticky bit, mas no vamos falar sobre eles aqui.
Faa uma listagem detalhada em um desses binrios para ver como a permisso de suid bit
aparece.
# ls - l /bin/su
Vemos que nas permisses do usurio aparece um s no lugar do x. Isso representa que a
permisso de Suid bit est ativada, mas a permisso de execuo (x) continua-l.
Com a lista gerada, podemos ver qual desses binrios precisa continuar com a permisso
de suid bit. Vamos pegar um exemplo de um Bastion Host, que o Firewall da sua rede.
Podemos deixar dois binrios com o Suid bit setado, que so o passwde o su. Podemos deixar o
passwd para que o usurio possa mudar a sua senha de acesso caso ele seja um administrador e
acesse essa mquina remotamente. Se estamos pensando em um firewall, mas no h motivos
para um usurio comum acessa-lo. J o suvai ser de vital importncia, pois podemos fazer que
tanto local ou remotamente o usurio root no tenha acesso direto. Assim, o administrador vai
logar com seu usurio comum, que pode ter alguns privilgios a mais, e depois utilizar o supara
se tornar o usurio root.
Vamos retirar todas as permisses de Suid bit dos binrios.
# chmod -s -Rv /
Onde:
s - retira a permisso 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 permisso de Suid bit somente para os dois binrios que desejamos.
56
# chmod +s /usr/bin/passwd
# chmod +s /bin/su
# ls l /usr/bin/passwd
# ls l /bin/passwd
Com esses comandos, as permisses de Suid bit foram setadas novamente para esses dois
binrios.
Pode ser que, para o servidor que voc esteja configurando s o passawd e o suno seja
suficiente, talvez outros binrios precisem estar com o Suid bit ativado. Cabe analisar o que ser
necessrio para cada tipo de servio.
Uma soluo alternativa que podemos adotar o comando sudo. Como ele podemos definir
somente os comandos queremos para o usurio comum executar como se fosse root.
Instalando o sudo.
#apt-getinstallsudo
Depois que o sudo estiver instalado, editaremos o arquivo /etc/sudores, que onde
definimos quais usurios 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 usurio teste, possa executar os comandos
ifconfig e iptablescomo se fosseroot. Dessa maneira, entretanto, ele vai pedir a senha do usurio
na 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 usurio teste, possa executar os comandos reboot e halt, mas
dessa vez sem que seja necessrio que ele digite a senha (NOPASSWD).
Exemplo 3:teste ALL= /usr/bin/passwd [A-z]*, !/usr/bin/passwd root
Este commando permite que o usurio teste mude a senha de qualquer usurio cujo login
esteja no interlavo de A a Z, exceto o root.
No sistema Linux j vem com a permisso de suid bit ativado em muitos binrios para
facilitar a utilizao deles para outros usurios, mas vimos tambm que nem sempre essa
facilidade uma boa, pois pode gerar brechas de segurana. Fiquemos atentos para esses tipos de
permisses.
57
Desabilitar o Ctrl+Alt+Del no sistema Linux pode ser uma boa idia, pois no permitir
que algum pressione uma sequencia de teclas e faa com que o servidor reinicie. Isso bom
principalmente quando seu servidor Linux est no mesmo armrio que um servidor com o
sistema Windows, assim se evita que em algum momento voc pressione Ctrl+Alt+Del no
teclado 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 now
Voc pode tambm mapear as teclas para executar um outro comando qualquer, por
exemplo.
#ca:12345:ctrlaltdel:/bin/echo
desabilitado por segurana
Esse
recurso
foi
Depois das alteraes, precisamos atualizar o arquivo /etc/inittab. Isso feito com o comando
seguinte:
# init q
2.
# 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 alteraes, precisamos realizar novamente o arquivo /etc/inittab
# init q
3.
No sistema Linux, temos uma varivel que no vem setada por padro. Essa varivel a
TMOUTque 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 varivel para 15 segundos. Logo, se o terminal no for
utilizado durante os 15 segundos, ele ser deslogado e o usurio ser obrigado a logar-se
novamente.
Para melhorar, podemos colocar essa varivel dentro do arquivo global da varivel, para
que 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:/b
in:/usr/bin/X11
else
PATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games
fi
if [ $PS1 ]; then
if [ $BASH ]; then
PS1= \u@ \h: \w \$
else
if [ id u eq 0 ]; then
PS1=#
else
PS1=$
fi
fi
fi
59
TMOUT=180
Export PATH
TMOUTumask 022
Dessa maneira, o sistema voltar para a tela de login se nenhum commando for executado
num intervala de 180 segundo (3 minutos).
4.
Com a varivel TMOUT, fizemos com que o terminal seja deslogado automaticamente
depois de um determinado tempo. Podemos fazer isso tambm manualmente com um programa
chamado Vlock, que pode travar todos os terminais no momento em que quisermos.Instalao do
programa:
# apt-getinstallvlock
Para travar todos os terminais, digite:
# vlock a
O Vlockexecutado com o parmetro a bloqueia o uso de todos os terminais. Os
terminais s sero liberados mediante autenticao com senha do usurio que os travou.
Pequenos detalhes em configuraes, uma varivel e um simples programa podem nos
ajudar a manter nosso servidor seguro, com todos os nossos terminais protegidos.
60
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 esto comentadas, podemos tentar nos logar em outro
terminal com o usurio root. Veremos que no teremos sucesso.
Como dissemos, essa uma das maneiras pelas quais se pode bloquear o acesso do root
pelos terminais.
2. Determinar datas de expirao para contas de usurios
Se o nosso servidor for alocar uma grande quantidade de usurios, podemos especificar
datas de expirao para as contas dos usurios. Dessa maneira, se aquele usurio utiliza a sua
conta todos os dias, quando sua senha expirar ele poder modifica-la e renovar a conta. Mas, se
por algum motivo uma conta de um usurio no est sendo utilizada, ela ser desativada no
tempo especificado, dando-nos uma segurana de que essa conta no ser usada com ms
intenes.
Utilizaremos o comando chage, que modifica os parmetros do arquivo /etc/shadown,
onde so feitos esses controles.
Primeiro vamos visualizar a configurao padro de uma conta de um usurio, por
exemplo, o usurio teste.
# chage l teste
E agora faremos algumas modificaes para esse usurio.
# chage M 30 W 5 I 2 teste
# chage l teste
Onde:
-M o tempo mximo da validade da conta.
61
-W o tempo de aviso.
-I o tempo antes de uma conta ser desativada.
Com essa configurao, estamos dizendo que a conta do usurio vlida por 30 dias.
Quando estiverem faltando 5 dias para a conta expirar, o usurio comear a ser avisado quando
for logar. Depois desses 30 dias, o usurio ter 2 dias para poder modificar a senha e para que a
conta seja renovada. Enquanto ele no fizer isso, no conseguir logar no sistema. Se nesses 2
dias o usurio no modificar a senha, a conta ser desativada e somente o usurio root poder
realtiv-la.
3. Remover shells vlidas de usurios que no precisam delas.
Usurios que no utilizam shell no tm necessidade de t-la. Vamos remover as shells
vlidas de todos os usurios que no voexecutar oficialmente login no sistema atravs do
terminal local (tty) ou via ssh. Combinado a isso, criaremos um usurio estratgico pertencente
ao grupo de administradores, que tambm criaremos. Os usurios pertencentes a esse grupo tero
permisso para realizar o logine posteriormente usar o su para se tornar root.
Primeiro vamos criar o grupo administradores. Logo em seguida, criaremos um usurio
administrador e o adicionaremos ao grupo.
# groupadd administradores
# addusertoor
# gpasswd atoor administradores
Vamos visualizar o arquivo /etc/passwd. Veja que todos os usurios de sistema tambm
possuem shells vlidas.
# cat /etc/passwd | less
Criaremos um script para remover todas as shells vlidas dos usurios, menos daqueles
que ns especificamos.
# cd /root
# vi invlidos.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 $USER
done
# ./invlidos.sh
Esse script, ele executa um for que pegar somente a primeira coluna do arquivo
/etc/passwd, que so os nomes dos usurios que no esto especificados no grepv. Isso
armazenado dentro da varivel USER. Logo depois, com o comando usermod, esse script passa
todas as shells dos usurios que esto na varivel USER para /bin/false, ou seja, uma shell
invlida.
62
3.20.Concluso
O ambiente computacional e todas as suas tecnologias, com as mais modernas
arquiteturas, plataformas e inmeras formas de garantir mais segurana da informao ainda no
, e provavelmente no ser, suficiente para conter o mpeto curioso, criativo e astuto do crebro
humano.
A engenharia social, combinada com a fragilidade humana, contribui para um dos pontos
mais vulnerveis que esto presentes em todas as organizaes e que sempre existiro, pois no
h uma receita milagrosa de como transformar um ambiente que manipulam informaes em um
local totalmente seguro.
Uma medida para dificultar o roubo ou o acesso indevido a essas informaes so as
condutas, os treinamentos, os hbitos e o conhecimento de tcnicas deHardening em servidores,
alm da responsabilidade que se deve ter ao manipular, transmitir e descartar informaes, sejam
elas confidenciais ou no.
Se a informao no for considerada uma fonte preciosa ser preocupante o agravamento
da falta de instrues e conscientizaes por parte dos funcionrios e se tornar cada vez mais
difcil a implementao da segurana da informao, pois o desafio de manter as informaes
confidenciais est cada vez menor e est cada vez mais fcil de encontr-las e utiliz-las.
63
Referncias
AMARAL,
Bruno
do.
Segurana
proativa.
Disponvel
em
<http://www.decisionreport.com.br/publique/cgi/cgilua.exe/sys/start.htm?infoid=9819&sid=4
2> Acesso em: 12 de Outubro de 2012.
ARAUJO, Eduardo Edson de. A vulnerabilidade humana na segurana da informao. 2005.
Disponvel em
<http://svn2.assembla.com/svn/GSIDEI/
Bibliografia/Monografia%20Interven%C3%A7%C3%A3o%20humana%20Seguran%C3%A7
a.pdf>. Acesso em: 01 de Outubro de 2012.
ASSOCIAO BRASILEIRA DE NORMAS TCNICAS. ABNT NBR ISO/IEC 27001:2006.
Rio de Janeiro, 2006.
ASSOCIAO BRASILEIRA DE NORMAS TCNICAS. ABNT NBR ISO/IEC 27002:2005.
2.ed. Rio de Janeiro, 2005.
BR-LINUX.ORG. Pane na telefnica: funcionrios suspeitam de sabotagem. Disponvel em:
<http://br-linux.org/2008/pane-na-telefonica-funcionarios-suspeitam-de-sabotagem/> Acesso
em: 15 de outubro de 2012.
CERT.BR. Incidentes reportados ao CERT.br janeiro a maro de 2011. Disponvel em:
<http://www.cert.br/stats/incidentes/2011-jan-mar/total.html> Acesso em: 01 de Outubro de
2012.
COMPUTERWORLD. Falhas de segurana em redes sociais geram risco para o negcio. Maro
2010. Disponvel em: <http://computerworld.uol.com.br/gestao/2010/03/04/falhas-de
seguranca-em-redes-sociais-geram-risco-para-o-negocio/> Acesso em: 10 de Outubro de
2012.
CORREIA, Marco. Engenharia social no Governo do Rio de Janeiro percebeu?. Disponvel em:
<http://marcoacorreia.wordpress.com B/2011/04/03/engenharia-social-no-governo-do-rio-dejaneiro-percebeu/>Acesso em: 18 de Outubro de 2012.
CORREIA, Marco. Segurana da informao novidade nas empresas. Disponvel em:
<http://marcoacorreia.wordpress.com/ 2011/10/12/seguranca-da-informacao-e-novidade-nasempresas/>Acesso em: 14 de Outubro de 2012.
64
CORREIO 24 HORAS. Luciano Huck tem senha do Twitter roubada e brinca com a situao.
Disponvel
em:
<http://correio24horas.globo.com/noticias/noticia.asp?codigo=57227&mdl=49>. Acesso em:
15 de Outubro de 2012.
DAWEL, George. A segurana da informao nas empresas. Rio de Janeiro: Editora Cincia
Moderna Ltda., 2005.
DECISION REPORT. A evoluo das atividades maliciosas.Disponvel em
<http://www.decisionreport.com.br/publique/cgi/cgilua.exe/sys/start.htm?from_info_index=1
53&infoid=8903&sid=4> Acesso em: 27 de Outubro 2012.
ESTADO. Hackers espalham vrus com oferta de vacina antigripe H1N1. Disponvel em:
<http://www.estadao.com.br/noticias/geral,hackers-espalham-virus-com-oferta-de-vacinaantigripe-h1n1,475155,0.htm> Acesso em: 15 de Outubro de 2012.
FONTES, Edison Luiz Gonalves. Segurana da informao:o usurio faz a diferena. So
Paulo : Saraiva, 2006.
FONTES, Edison Luiz Gonalves. Vivendo a segurana da informao:orientaes prticas para
as organizaes. So Paulo :Sicurezza Brasiliano & Associados, 2000.
GUELMAN, Luiz. Conscientizao de usurios: como envolver seu pblico com a Segurana da
Informao. 2006. Disponvel em: <http://www.modulo.com.br/comunidade/entrevistas/616conscientizacao-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. So Paulo : Pearson Education do Brasil Ltda, 2003.
MITNICK, Kevin D.; SIMON, Willian L. A arte de invadir. So Paulo: Pearson Education do
Brasil Ltda 2006.
MDULO SECURITY SOLUTIONS.10 Pesquisa Nacional de Segurana da Informao.2006,
Disponvel em <http://www.modulo.com.br/media/10a_pesquisa_nacional.pdf> Acesso em:
24 de Outubro de 2012.
MOREIRA, Nilton Stringasci. Segurana mnima: uma viso corporativa da segurana de
informaes. Rio de Janeiro: Axcel Books, 2001.
REUTERS. Hackers espalham vrus com oferta de vacina antigripe H1N1. 2009, Disponvel em
<http://br.reuters.com/article/internetNews/idBRSPE5B00SZ20091201?sp=true> Acesso em:
24 Outubro 2012.
MELO, Sandro. BS7799 Linux da Ttica Prtica em Servidores. So Paulo: Alta Books, 2006
SEMOLA, Marcos. Gesto da Segurana da Informao: uma viso executiva. Rio de Janeiro:
Campus, 2002.
SLADE, Robert. Exclusivo: entrevista com Rob Slade especialista em vrus de computadores.
Jun
2006.
Disponvel
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, Disponvel
<http://www.symantec.com/threatreport/#> Acesso em: 24 de Outubro de 2012.
65
em:
TECHOJE.
Planos
de
Contingncia
em
TI.
<http://www.ietec.com.br/site/techoje/categoria/detalhe_artigo/219>
novembro de 2012.
Disponvel
em
Acesso em: 01 de
66
Abstract
This chapter describes the contents discussed in short course about Web Applications
Development using the framework Primefaces. To this, it is presented a theoretical context of the
technologies used for the construction of systems in order to situate and connect the roles in
development. Understanding the characteristics of JavaServer Faces provides a deeper
understanding of how Primefaces components work and how is their communication with each
other and with the application logic. It is presented the set of elements of the JSF libraries,
HTML and Primefaces.
Resumo
Este captulo descreve os contedos discutidos em minicurso sobre o Desenvolvimento de
Aplicaes Web com utilizao do framework Primefaces. Para isso, feito a contextualizao
terica das tecnologias empregadas para a construo dos sistemas, no sentido de situar e
relacionar o papel de cada uma no desenvolvimento. Compreender as caractersticas do
JavaServer Faces possibilita entender mais profundamente como funcionam os componentes do
Primefaces e como se d a comunicao deles entre si e com a lgica da aplicao. Apresentase o conjunto de elementos das bibliotecas JSF, HTML e do Primefaces.
As aplicaes web surgiram e agregaram benefcios sobre os modelos de sistemas at ento existentes.
Isso ocorreu devido ao estabelecimento da rede mundial de computadores e do grande fluxo de
informaes que constantemente flui dentro das organizaes, e entre as instituies e as pessoas. Esse
tipo de aplicao, geralmente, implementa caractersticas de dinamismo, rapidez, disponibilidade,
atualizao e portabilidade, que so propriedades necessrias para sobreviver frente ao mercado e ao
modelo social atual. Por isso, as experincias na utilizao de tecnologias de desenvolvimento, levam
criao de modelos e padres que agregam as melhores prticas e tecnologias que proporcionam a
concepo de produtos que atendam a todas essas demandas de forma simples e segura.
Mantido pelo comit JCP (Java Community Process) com o Java Specification Request (JSR 314), o
JavaServer Faces uma tecnologia que se apresenta no formato de um framework, utiliza o padro de
arquitetura MVC para o desenvolvimento de aplicaes web em Java e emprega um modelo de
interfaces grficas baseado em eventos. Divulgado inicialmente em 2004, atualmente est em sua
verso 2.
Ele possui dois grupos de componentes: a primeira so as Java APIs que modelam e definem os
componentes UI; a segunda so as taglibs JSP que realiza a representao dos componentes em uma
pgina JSP e tambm a conexo dos objetos no backend da aplicao. A API ainda responsvel pela
manipulao dos componentes e seu ciclo de vida (estados), handle-event, validao server-side,
converso de dados, acessibilidade, alm do suporte a internacionalizao.
De acordo com diversos autores [Marafon 2006], [Rossi 2012], utilizar o padro JSF proporciona
diversos ganhos no desenvolvimento de aplicaes web, dentre esses benefcios, cita-se: reusabilidade
de componentes nas pginas, possibilidade de extenso pela utilizao de bibliotecas de terceiros, a
existncia de IDEs e plugins adaptados para o desenvolvimento de sistemas que utilizam o framework;
facilidade de construo de novos componentes, entre outros.
A primeira proposta de especificao para o JSF prope oito principais metas:
Criar um framework de componentes GUI (Graphical User Interface) padro que pode ser
aproveitado para a criao de ferramentas de desenvolvimento, que permitam criar interfaces
grficas de alta qualidade e gerenciar as conexes entre os componentes e o comportamento da
aplicao;
Definir um conjunto de classes base simples para os componentes GUI, estados dos
componentes, e eventos de entrada. Estas classes controlaro o ciclo de vida dos componentes
e a persistncia de dados referentes a eles;
Fornecer um modelo JavaBeans para emitir os eventos acionados no lado do cliente para a
aplicao no lado do servidor, onde ocorre o controle do comportamento da aplicao;
Definir API's para validao de dados de entrada, incluindo suporte para a validao no lado do
cliente;
Gerar automaticamente sadas apropriadas para o cliente, de acordo com os dados disponveis
de configurao, como verso do navegador e etc.;
68
Gerar automaticamente sadas que contenham suporte de acessibilidade, como definido pela
WAI (Web Accessibility Iniciative).
O padro de arquitetura MVC (Model, View e Controller) permite a separao entre a lgica de negcio
e as interfaces de visualizao, pela diviso do sistema em trs partes com responsabilidades distintas.
Essas so denominadas de modelo, viso e controle.
O modelo responsvel por representar os dados, manter o estado da aplicao pela definio
dos dados armazenados e fornecer o acesso s informaes quando necessrio. A visualizao
responsvel por exibir as informaes vindas do modelo e por captar e enviar aos controles, as aes
dos usurios sobre os dados apresentados. O controle faz a ligao entre a viso e os modelos,
acionando um ou outro, de acordo com as requisies recebidas. Essa interao produz modificaes no
estado do sistema que ento provoca respostas diferenciadas ao cliente.
Ao dividir em grupos as diversas tarefas de um sistema, o padro MVC faz com que a aplicao
passe a ter uma arquitetura onde a interface pode ser modificada sem preocupaes com alteraes na
camada de lgica do negcio [Engholm Jnior 2010]. A Figura 4.1 [Algaworks 2010], logo abaixo, mostra
a interao entre os componentes do MVC, nela possvel perceber como os componentes interagem
para montar a dinmica de funcionamento das aplicaes que implementam esse padro.
Em JSF, a camada de controle composta por alguns elementos distintos. O servlet chamado de
FacesServlet quem recepciona e redireciona as requisies vindas da web e ele tambm que envia a
resposta que ser exibida pela viso; os arquivos de configurao mapeiam as aes realizadas e
definem as regras de navegao; e os manipuladores de aes e observadores de eventos so quem
recebem os dados vindos das interfaces, realizam o acesso ao modelo quando necessrio e retornam o
resultado para o FacesServlet.
J as views so providas pelos componentes de interface do JSF, que incluem componentes de
layout desde os mais simples, at outros mais complexos. Os componentes UI possuem propriedades,
69
As aplicaes Java para a web quando construda de acordo com a especificao J2EE, possui um
conjunto de padres e modelos caractersticos bem definidos. Na figura 4.2 [Algaworks 2010], possvel
ver a forma como o JSF est relacionado com outras tecnologias na construo das aplicaes dentro
desse padro.
O Java Servlet a base para as aplicaes Java e so responsveis pela recepo de requisies
do cliente e envio de respostas, geralmente por meio do protocolo HTTP. J o JavaServer Pages (JSP)
pode ser compreendido como uma abstrao do Java Servlet e torna possvel a utilizao de cdigo Java
nesses sistemas web. As pginas JSP so executadas nas views e utilizam Java do lado do servidor para a
criao de contedo dinmico junto com as tags HTML. O JSP no oferece nada que no possa ser
criado com servlets puros, porm ele oferece a vantagem de ser facilmente codificado, facilitando assim
a elaborao e manuteno de uma aplicao 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 requisio, enviada pelo navegador, o Faces Servlet
recepciona essa requisio e d inicio execuo dos seis passos mostrado na imagem: Restore View
(Restaurar a view), Apply Request Values (aplicar os valores do request), Process Validations (processar
as validaes), Update Model Values (atualizar os valores do modelo), Invoke Application (invocar a
aplicao) e Render Response (renderizar a resposta).
70
Descrio
f:actionListener
f:ajax
f:attribute
f:convertDateTime
f:convertNumber
f:converter
f:event
f:facet
f:loadBundle
f:metadata
f:param
http://www.jsftoolbox.com/documentation/help/12-TagReference/
71
f:phaseListener
f:selectItem
f:selectItems
f:setPropertyActionListener
f:subview
Cria um componente container que ter todo o core JSF e as tags aninhadas via
jsp:include ou outra tag dinmica
f:validateBean
f:validateDoubleRange
f:validateLength
f:validateLongRange
f:validateRegex
f:validateRequired
f:validator
f:valueChangeListener
f:verbatim
f:view
A tag View tag o container para todo componente JavaServer Faces usado na
pgina
f:viewParam
Descrio
h:body
h:button
Renderiza um Button
h:column
h:commandButton
Renderiza um button que pode est associado a um backing bean ou a uma classe
ActionListener
h:commandLink
h:dataTable
h:form
72
h:graphicImage
h:head
h:inputHidden
h:inputSecret
h:inputText
h:inputTextarea
h:link
Configura links
h:message
h:messages
h:outputFormat
h:outputLabel
h:outputLink
h:outputScript
h:outputStylesheet
h:outputText
h:panelGrid
h:panelGroup
Container de componentes
h:selectBooleanCheckbox
h:selectManyCheckbox
h:selectManyListbox
h:selectManyMenu
h:selectOneListbox
h:selectOneMenu
h:selectOneRadio
73
A Java Persistence Query Language (JPQL) uma linguagem de consulta ORM que permite a realizao
de consultas sobre classes e objetos. A linguagem suporta consultas de campos individuais de uma
entidade e operaes como update e delete, subqueries, join, group by, e having. A linguagem uma
extenso da EJB Query Language (EJB QL), e inclui outras funcionalidades no presentes nesta
linguagem que a antecede. Todas as operaes em JPQL podem ser realizadas no modo de consultas
dinmicas ou estticas.
4.5. Facelets
At a verso 1.2 do JSF, existem algumas deficincias que dificultam a vida do programador de pginas,
como a falta de um mecanismo para criao de templates de telas integrado ao JSF e tambm para
criao de novos componentes visuais a partir da composio de outros componentes j existentes
[Algaworks 2010], a partir disso, foi desenvolvido um framework denominado Facelets para facilitar o
gerenciamento das telas criadas. Na verso 2 do JSF, o Facelets o engine padro que gerencia as
interfaces.
Ao se utilizar Facelets, as pginas devero ser construdas usando XHTML (eXtensible HyperText
Markup Language), e no mais JSP, pois o framework possui um compilador XHTML responsvel pelo
gerenciamentos e reaproveitamento dos templates criados. A tag do Facelets possui as bibliotecas a
seguir: component, composition, debug, decorate, define, fragment, include, insert, param, remove e
repeat.
4.6. Primefaces
O Primefaces, em sua verso atual 3.4, um framework composto por mais de 100 componentes para o
JSF, com suporte nativo a Ajax e HTML5. Possui boa documentao e ricos exemplos de cdigos
disponibilizados na web para auxlio na utilizao dos mesmos. Para utilizar o Primefaces em um
projeto Java que implemente JSF 2, preciso fazer o download do arquivo primefaces-{version}.jar no
74
75
4.7. Concluso
O framework aqui estudado uma ferramenta utilizada em muitos projetos relatados na
internet, sempre com crticas positivas da sua utilizao. As atualizaes de verses so
frequentes, o que vai permitindo a melhoria e o incremento dos componentes
disponibilizados.
Referncias
Algaworks. (2010) DWJSF Desenvolvimento Web com JavaServer Faces,
http://www.algaworks.com/treinamentos/desenvolvimento-web-com-jsf
Engholm Jnior, H. (2010) Engenharia de Software na Prtica. So 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 de
Janeiro: Cincia Moderna.
76
77
Abstract
Perform real experiments with computer networks is often not a trivial task, because, as you
know, in many cases can have a complex and heterogeneous environment such networks, which
can cause a significant impact on development time of this study. Therefore, computer simulation
is a technique used very often because it enables the performance evaluation of various
scenarios, including the use of new technologies and protocols, plus the ability to evaluate the
impact 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 research
computer network, using examples of network simulation with the software NS-2 (Network
Simulator).
Resumo
Realizar experimentos reais com redes de computadores muitas vezes no uma tarefa trivial,
pois, como se sabe, em muitos casos pode se ter um ambiente complexo e heterogneo dessas
redes, o que pode causar um impacto significativo no tempo de desenvolvimento desse estudo.
Por esse motivo, simulao computacional uma tcnica utilizada com muita frequncia, pois
possibilita a avaliao de desempenho de vrios tipos de cenrios, incluindo a utilizao de
novos protocolos e tecnologias, alm da possibilidade de avaliao do impacto de diferentes
topologias no ambiente. Este artigo tenta transpor, para alunos, professores e profissionais, a
ideia da utilizao da simulao computacional no ensino e pesquisa de redes de computadores,
utilizando-se para isso exemplos de simulao de redes com o software NS-2 (Network
Simulator).
5.1. Introduo
Sigla para Open System Interconnection, um padro da ISO (Intenational Organization for
Stardardization) mundial que define um framework de rede para implementao de protocolos em sete
camadas. Esse padro ISO, criado em 1984, afeta a forma de como a indstria de TI deve criar
protocolos de redes de computadores [Surman 2002]. Com base na teoria de "Dividir para conquistar", o
modelo foi criado com objetivo de traar todas as partes de desenvolvimento de uma arquitetura ou
protocolo de comunicao que usa redes de computadores e mquinas heterogneas em seu
funcionamento. O modelo composto de vrias camadas distribudas desde o nvel do usurio (camada
de aplicao) ao nvel fsico (camada fsica). A figura 5.1 mostra como esto dispostas essas camadas.
79
80
A Arquitetura OSI foi elaborada pelas comisses da ISO, constitudas por representantes tcnicos da
maioria dos pases com experincia em comunicao de dados [Lima 2006]. O modelo OSI foi elaborado
seguindo mtricas determinadas no decorrer do processo. Enquanto que a Arquitetura TCP/IP foi
elaborada no ambiente da Internet de acordo com a demanda e as necessidades do mercado [Lima
2006]. Os estudos da ARPA foram os grandes precursores para o desenvolvimento desse modelo.
A criao dos protocolos TCP e IP deu incio a um novo paradigma de comunicao, baseado no
conjunto de vrios protocolos que fornecem a possibilidade de transferncia de dados por meio das
redes de computadores. A figura 5.3 mostra uma possvel comparao entre esses dois modelos de
comunicao de dados.
Critrio
Simulao
Benchmarking
1. Estgio de desenvolvimento
Qualquer
qualquer
ps-prottipo
Pequeno
mdio
varia
analistas humanos
linguagem de
computadores
instrumentao
4. Exatido
Baixa
moderada
varia
5. Avaliao de alternativas
Fcil
moderada
varia
6. Custo
Baixo
mdio
alto
7. Credibilidade do mtodo
Baixo
mdio
alto
82
Figura 5.5 Simulao contnua do estudo da temperatura do ch ao longo do tempo [Chwif and
Medina 2006].
83
Ao contrrio dessa, a figura 5.6 exemplifica uma simulao de eventos discretos, ou seja, eles
so disparados em instantes de tempo descontinuados, pois, no modelo discreto, a execuo dos
eventos ocorre em saltos.
Figura 5.6 Evoluo dos estados na simulao de eventos discretos da preparao de uma xcara
de ch [Chwif and Medina 2006].
estudos na rea de Redes de Sensores Sem Fio (RSSF). Num total de 46, todos os artigos
analisados na pesquisa foram retirados do portal de peridicos da capes.
Figura 5.7 Anlise do uso de simuladores em pesquisas na rea de RSSF entre os anos de 1998 e
2009.
(Cygwin);
- Orientado a objetos;
- Estrutura modular;
- Suporte simulao de redes cabeadas e sem fio;
Percebe-se, portanto, sua grande abrangncia tanto em relao ao desenvolvimento do
cenrio de simulao de redes quanto na utilizao de diferentes sistemas operacionais para
execuo do mesmo, facilitados pelo motivo de este ser de cdigo aberto e ter compatibilidade
com diferentes ncleos operacionais. Outra caracterstica bastante interessante a sua capacidade
de implementao em qualquer camada do modelo OSI, da aplicao fsica. Na literatura,
existem modelos prontos de diferentes camadas, propostos por pesquisadores da rea e
desenvolvedores do programa. O suporte simulao de redes cabeadas e sem fio tambm um
85
fator decisivo, pois, em ambientes reais, tanto pode-se ter um ambiente de simulao homogneo
de ns em rede como a fuso desses dois tipos, wired-cum-wireless, como exemplificado na
figura 5.8, retirado de [Fall and Varadhan 2007].
Figura 5.8 Topologia de rede mista, onde se encontram ns mveis e fixos cabeados e sem fio
[Fall and Varadhan 2007].
86
Figura 5.9 Ligao one-to-one entre as classes compiladas e interpretadas, das linguagens C++ e
Otcl [Issariyakul and Hossain 2011].
A correspondncia entre essas duas linguagens melhor descrita por meio da imagem
5.10, retirada de [Rodolfo 2009], na qual so apresentados trs nveis: O cenrio de simulao, o
script Tcl e a implementao C++. O primeiro, representa um ambiente de simulao constitudo
de 2 ns e comunicao sem fio. O script Tcl contm a instanciao e criao de um array de ns
e de um objeto simulador, pelas declaraes das variveis node_ e ns_. A implementao da
classe dos ns, chamada MobileNode (n mvel), que contm todos os atributos e mtodos
referentes a eles, feita na linguagem C++, e compilado somente um vez, na criao do
ambiente de simulao.
Figura 5.10 Interao entre as implementaes Tcl e C++ no NS-2 [Rodolfo 2009].
A definio dos ns est diretamente ligada criao do enlace, que uma estrutura que
conecta os ns, objetivando formar a topologia. Outro detalhe importante que se deve ter cincia
o fato de a camada de enlace implementar as polticas de fila, ao contrrio do que acorre em
ambientes reais, cujo gerenciamento de buffer no prprio host. Portanto, o atraso no
encaminhamento dos pacotes de um n a outro se d pela soma do atraso do pacote na fila com o
atraso default do prprio enlace, o qual definido pelo usurio. A camada de enlace tambm
guarda informaes e gerencia o TTL do pacote, valor que vai decaindo com cada salto do
mesmo. Toda a estrutura dessa camada pode ser observada na figura 5.12, retirada de [Coutinho
2007].
88
O NS-2 suporta dois padres de encaminhamento de pacotes nos enlaces: O tipo simplex,
em que os dados so enviados apenas em um sentido (exemplo da figura 5.12) e no modo em que
os pacotes trafegam em ambos os sentidos, caracterizando o tipo duplex.
O comando bsico que define um enlace entre os ns $ns duplex-link n0 n1 1Mb 10ms
DropTail. O comando contm parmetros do tipo de encaminhamento do enlace (duplex ou
simplex), os ns que sero ligados (n0 n1), a largura de banda do link (1 Megabits/segundo), o
atraso do link (10 milissegundos) e a poltica de fila adotada para o enlace (DropTail).
5.6.1.3. NS-2 - Camadas de protocolos - Modelo Wireless
As camadas de protocolos do modelo wireless, no NS-2, descrevem a pilha de protocolos e
modelos referentes s camadas da arquitetura OSI, utilizadas pelo simulador. Qualquer
implementao de novos mdulos para algumas dessas camadas, tem de ser realizada na
linguagem C++, cujas implementaes esto na estrutura do prprio simulador. A figura 5.13,
retirada de [Rodolfo 2009] demonstra como funciona o modelo wireless no NS-2.
Iniciando pelo camada de mais alto nvel, a camada "Agent" se liga aplicao (ftp,
telnet, cbr, ...) e tem a funo de receber ou transmitir pacotes, funcionando como Src
(transmissor) ou Sink/Null (receptor). Logo aps, tem-se os componentes "Addr Demux" e "Port
Demux" que so os classificadores de endereo e porta, respectivamente, e cuja funo j foi
explicada anteriormente, a partir da figura 1.10. A camada "RTagent" faz a implementao do
protocolo de roteamento utilizado na simulao, no caso do exemplo da figura 5.13, foi usado o
protocolo DSDV. A camada "LL" implementa a camada de enlace, cuja funo executar os
protocolos da camada de ligao de dados, como fragmentao ou reagrupamento dos pacotes.
Essa camada est tambm ligada camada "ARP", que tem a funo de converter o endereo ip
89
91
exit 0
}
# Cria dois ns
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 trfego e anexa-a ao agente udp0
set cbr0 [new Application/Traffic/CBR]
# Define os parmetros 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
93
Figura 5.15 Visualizao dos fluxos de dados e estouro de fila, com o software NAM.
94
Figura 5.17 Anlise dos campos do arquivo trace de uma simulao cabeada, adaptada de [Chung
and 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 aps est o instante de tempo em
que ocorreu o evento, depois vm 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 so: Id do fluxo de dados do pacote ("fid"), o endereo do
n fonte ("src addr") e do n destino ("dst addr") e so representados por "n.porta", o nmero
de sequncia do pacote ("seq num") e o id do pacote ("pkt id"). A partir desses dados do arquivo
trace, possvel realizar diversas consultas com objetivo de receber informaes a cerca de
determinados parmetros de simulao, como exemplo:
- Vazo de um link (troughput);
- ndice de perdas de pacotes;
- Atraso mdio na entrega dos pacotes (latncia);
- Variao no atraso (jitter);
5.8.3. Simulando uma rede sem fio
A simulao de redes sem fio tambm segue os mesmos 5 passos para desenvolvimento do script
de simulao. A diferena est na criao dos parmetros de topologia, que na rede wireless,
tem-se desde informaes da camada fsica at a camada de enlace, definidas pelo usurio.
Abaixo segue um script de simulao, adaptado de [Rodolfo 2009] com dois ns sem fio (n n(0)
e n n(1)) que se movem, alm de haver transmisso de dados FTP, por meio do agente de
roteamento TCP, entre eles (do n n(0) ao n n(1)), em um ambiente com dimenso 500x500m
(eixo z definido como z=0). A figura 5.18, retirada de [Rodolfo 2009], mostra o modelo de
simulao utilizado.
95
Channel/WirelessChannel;
# tipo do canal
set val(prop)
Propagation/TwoRayGround;
# modelo de radio-propagao
set val(netif)
Phy/WirelessPhy;
set val(mac)
Mac/802_11;
# tipo MAC
set val(ifq)
Queue/DropTail/PriQueue;
set val(ll)
LL;
set val(ant)
Antenna/OmniAntenna;
# modelo da antena
set val(ifqlen)
50;
set val(nn)
2;
# numero de ns mveis
set val(rp)
DSDV;
# protocolo de roteamento
[new Simulator]
[open simple.tr w]
96
[new Topography]
}
# Define coordenadas iniciais para os ns (X,Y, Z=0)
$node_(0) set X_ 5.0
$node_(0) set Y_ 2.0
$node_(0) set Z_ 0.0
Figura 5.18. Exemplo de parte do arquivo trace de uma simulao de redes wireless.
docentes, que desejam repassar seus conhecimentos em sala de aula, como para pesquisadores
em geral, que necessitam desse contedo para o desenvolvimento de projetos na rea.
Referncias
Surman, 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". Technical
Report CS-SYS-91-01, University of Southern California.
Lima, S. H. (2006) "Comunicao de Dados - Arquitetura TCP em rede de dados", Engenharia
de Telecomunicaes, Universidade de Santa Ceclia - UNISANTA.
Marcari, E., Manacero, A. (2002) "Classificao de Tcnicas para Anlise de Desempenho de
Sistemas Paralelos e Distribudos", FAPESP - Fundao de Amparo Pesquisa do Estado de
So Paulo.
Freitas, P. J. F. (2008) "Introduo Modelagem e Simulao de Sistemas: com Aplicaes em
Arena", 2. ed. Florianpolis: Visual Books Ltda. 372p. ISBN 978-85-7502-228-3.
Chwif, L., Medina, A. C. (2006) "Modelagem e Simulao de Eventos Discretos: Teoria e Aplicaes", 1
ed. So Paulo: Bravarte. 254 p. ISBN 85905978-1-4.
Jain, R. (1991) "The Art of Computer Systems Performance Analysis: Techniques for
Experimental Design, Measurement, Simulation, and Modeling", John Wiley & Sons, 2nd
edition.
Longman Dictionary of Contemporary English (2003), 3a Edio, Pearson Education do Brasil
LTDA.
Law, M. A., Mccomas, M. G. (1999) "Simulation of Manufacturing Systems", Proceedings of
the Winter Simulation Conference. Tucson.
Banks, J., (1999) "Introduction to Simulation", Proceeding of the Winter conference, Atlanta.
Duarte, R. N. (2003) "Simulao computacional: Anlise de uma clula de manufatura em lotes
do setor de auto-peas", Dissertao (Mestrado em Engenharia de Produo) Programa de
Ps-Graduao em Engenharia de Produo, Itajub, MG, UNIFEI.
Filho, C. P. (1995) "Introduo simulao de sistemas", 159f. Campinas, SP: Editora da
UNICAMP.
Barr, R., Haas, Z. J.
http://jist.ece.cornell.edu/.
(2004)
"JiST/SWANS
Sinalgo
(2007)
"Sinalgo
Simulator
http://disco.ethz.ch/projects/sinalgo/index.html.
Fall, K., Varadhan, K. (2007)
documentation.html, August.
"The
ns
Java
for
manual",
in
Simulation
Network
Time",
Algorithms",
http://www.isi.edu/nsnam/ns/ns-
Levis, P., Lee N., Welsh M., Culler, D. (2003) "TOSSIM: Accurate and Scalable Simulation of
Entire TinyOS Applications", In: Proceedings of the First ACM Conference on Embedded
Networked Sensor Systems.
Issariyakul, T., Hossain, E. (2012) "Introduction to Network Simulator NS2",
DOI
10.1007/978-1-4614-1406-3
3, Springer Science+Business Media, LLC.
Nabble. (2012) "Network Simulator ns-2 - The Official Discussion List", Research on errors in
the
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 of
the 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 the
module Mannasim in
Ns-2.
http://search.gmane.org/?query=mannasim+error+installation&author=&group=gmane.netwo
rk.simulator.isi&sort=relevance&DEFAULTOP=and&xP=Zmannasim%09Ze
rror&xFILTERS=Gnetwork.simulator.isi---A
The Mail Archive. (2012) "Discussion list of the ns-users" Research on errors in the installation
of modules on the ns-2. http://www.mail-archive.com/search?l=nsusers%40isi.edu&q=error+installation+module.
Lustosa, M., Singh S. (2012) "Liowsn Project: An Operating System Remastered for Works with
Simulation of Wireless Sensor Networks", In: International Journal of Computer Applications
52(12):32-37, August 2012. Published by Foundation of Computer Science, New York, USA.
Greiss,
M.
(2012)
"Tutorial
for
http://www.isi.edu/nsnam/ns/tutorial/index.html.
the
network
simulator
ns,
Chung, J., Claypool, M. (2012) "NS by Example", Worcester Polytechnic Institute (WPI),
http://nile.wpu.edu/NS/purpose.
102
Abstract
With the evolution of mobile technology, mobile devices have become an important source of
transmission and reception of information, creating the need for more robust operating systems
and a considerable demand for the development of services and applications. The Google
Android platform was created in order to fill this gap. Thus, this mini-course aims disseminate
concepts about developing services and applications for the Google Android platform. Also we
will describe how mobile applications can consume web services via REST architecture.
Resumo
Com a evoluo da tecnologia mvel, os dispositivos mveis tornaram-se uma importante fonte
de transmisso e recepo de informaes, gerando a necessidade de sistemas operacionais
mais robustos e uma considervel demanda para o desenvolvimento de servios e aplicaes. A
plataforma Google Android surgiu para preencher esta lacuna. Dessa forma, este mini-curso
pretende disseminar conceitos envolvidos no desenvolvimento de servios e aplicaes para a
plataforma Google Android. Tambm ser abordado como aplicaes para dispositivos mveis
podem consumir servios web atravs da arquitetura REST.
6.1. Introduo
O Google Android OS, tambm chamado apenas de Android, um sistema operacional de cdigo aberto
para dispositivos mveis e utiliza uma verso modificada do Sistema Operacional Linux. Permite a
desenvolvedores criarem aplicaes Java que controlam o dispositivo atravs de bibliotecas
desenvolvidas pela Google. O Android tambm prov uma infra-estrutura robusta de execuo de
aplicaes Java. Apesar de ser recente (seu lanamento foi em 2008), o Android foi adotado rapidamente
por diversos fabricantes de dispositivos mveis e atualmente a plataforma que mais cresce no mundo.
Atualmente, a plataforma Google Android mantida pela OHA (Open Handset Alliance), um
grupo formado por mais de 40 empresas que se uniram para inovar e acelerar o desenvolvimento de
aplicaes e servios para dispositivos mveis, trazendo aos consumidores uma experincia mais rica em
termos de recursos e menos onerosa financeiramente para o mercado. Pode-se dizer que a plataforma
Google Android a primeira plataforma completa, aberta e livre para dispositivos mveis. O Android
SDK o kit de desenvolvimento que disponibiliza as ferramentas e APIs necessrias para desenvolver
aplicaes para a plataforma Google Android, utilizando a linguagem Java.
103
Este mini-curso visa abordar conceitos envolvidos sobre desenvolvimento de aplicaes para a
plataforma Google Android, apresentando os principais aspectos do desenvolvimento de aplicaes para
dispositivos mveis, com enfoque para o desenvolvimento de aplicaes que consomem servios web
utilizando a linguagem Java. Pretende-se capacitar os participantes no desenvolvimento de aplicaes
Java para plataforma Google Android com base no Android SDK e demonstrar a arquitetura REST
(Representational State Transfer) de desenvolvimento de aplicaes web. O curso procura explorar as
funcionalidades dessas tecnologias atravs do desenvolvimento passo a passo de aplicaes-exemplos.
1.
LINUX KERNEL: a base da pilha o kernel. O Google usou a verso 2.6 do Linux para construir o
kernel do Android, que inclui servios essenciais do sistema, tais como, gerenciamento de memria,
gerenciamento de processos, gerenciamento de energia, configuraes de segurana, configuraes
de rede e drivers. O kernel tambm atua como uma camada de abstrao entre o hardware do
dispositivo e os outros nveis da pilha de software.
2.
prpria instncia da mquina virtual Dalvik. Dessa forma, nenhuma aplicao dependente de outra;
se uma aplicao pra, ela no afeta quaisquer outras aplicaes executando no dispositivo e isso
simplifica o gerenciamento de memria. Dalvik foi escrito de modo que um dispositivo possa
executar vrias VMs eficientemente. Android possui um conjunto de bibliotecas C/C ++ usado por
diversos componentes da plataforma. As principais bibliotecas so listadas abaixo:
3D libraries uma implementao baseada nas APIs OpenGL ES 1.0; estas bibliotecas usam
acelerao de hardware 3D (quando disponvel) ou o software embutido no sistema.
3.
4.
A maioria do cdigo que escreveremos para uma aplicao Android ir executar no contexto de
uma activity. Activities normalmente correspondem a telas: cada activity mostra uma tela para o usurio.
Quando esta no est em execuo, o sistema operacional pode elimin-la para liberar memria.
6.3.1.1. Ciclo de vida de uma Activity
Ao longo de sua criao at o momento de sua eliminao da memria, uma activity atravessar seis
estados, podemos referenciar cada estado pelos mtodos:
OnCreate
chamado quando a activity criada. Ela obrigatria e chamada apenas uma vez, deve referenciar a tela
que ser apresentada ao usurio.
OnStart
chamado quando a activity est ficando visvel e j tem uma tela definida.
OnResume
chamado quando a activity foi parada temporariamente e est retornando execuo.
OnPause
chamado quando a activity est sendo tirada do topo da execuo. Geralmente utilizado para salvar o
estado da aplicao.
OnStop
chamado quando a activity no est mais visvel e est em segundo plano.
OnDestroy
Executa os ltimos processamentos antes da activity ser literalmente encerrada.
106
6.3.2. Services
So programas que executam em segundo plano. No interagem diretamente com o usurio e podem ficar
executando por tempo indefinido.
6.3.3. Broadcast e Intent Receivers
So componentes que ficam aguardando a ocorrncia de um determinado evento, pode-se entender como
evento a inicializao do sistema operacional, uma chamada de voz, a chegada de um SMS, um evento
disparado por uma aplicao (MEIER,2009).
Intents so elementos chave no Android, porque facilitam a criao de novas aplicaes a partir
de aplicaes j existentes. Precisaremos utilizar Intents para interagir com outras aplicaes e servios
que proporcionaro informaes necessrias para nossa aplicao.
6.3.4. Content Providers
107
JDK: http://www.oracle.com/technetwork/java/javase/downloads/index.html
ADT: http://developer.android.com/sdk/eclipse-adt.html
6.4.1. Conceitos bsicos do Android
6.4.1.1 Criando uma Activity
A classe android.app.activity utilizada para criar uma tela na aplicao. Essa tela composta de vrios
elementos visuais, os quais no Android so representados pela classe android.view.View (LECHETA,
2010).
A classe android.view.View pode representar algo simples como um boto, um checkbox ou
imagem, como tambm pode representar algo complexo como um gerenciador de layout, a qual pode
conter vrias views aninhadas para organizar na tela.
108
O mtodo setContentView(view) o que faz a ligao entre a activity e a view e recebe como
parmetro a view que ser exibida na tela.
6.4.1.2 A classe R
A classe R criada automaticamente pelo ADT e no pode ser alterada manualmente. Nela existem
constantes para os recursos do projeto. Cada constante nomeada com o nome do recurso, que deve ser
escrito com letra minscula e sem espao, e recebe um valor inteiro.
6.4.1.3 O arquivo AndroidManifest.xml
Toda aplicao Android deve ter um arquivo AndroidManifest.xml em seu diretrio raiz. Esse arquivo
apresenta informaes essenciais sobre a aplicao para o sistema operacional, que deve possuir
informaes do sistema antes que possa executar qualquer solicitao do cdigo do aplicativo
(MEDNIEKS,2009).
Ele armazena informaes como o nome do pacote da aplicao, descreve os componentes da
aplicao, determina qual processo da aplicao vai armazenar os componentes, declara de que formas as
solicitaes devem ter permisses para acessar partes protegidas da API e interagir com outras aplicaes.
Declara tambm as permisses que os outros processos sero obrigados a ter, fim de interagir com os
componentes da aplicao, enumera classes e perfis e fornece outras informaes sobre como a aplicao
ser executada, declara qual o nvel mnimo da API que o aplicativo exige e enumera bibliotecas que
estaro relacionadas com a aplicao.
109
110
Podemos observar que foram utilizados trs tipos de widgets e um layout. Dois TextView que so
utilizados para renderizar strings na tela e dois EditText que so caixas para receber texto. Foi utilizado,
tambm, um Button para enviar os dados e um LinearLayout para organiz-los na tela.
Podemos observar, tambm, alguns atributos como o id que serve como identificador de cada
componente, o text que tem o funcionamento semelhante ao value do HTML e o atributo password que
esconde os caracteres digitados no nosso EditText.
Ao construir uma tela usando um arquivo XML de layout, surge a necessidade de recuperar os objetos
definidos no arquivo dentro do cdigo-fonte da aplicao para obter seus valores ou definir atributos
(LECHETA, 2010).
Podemos recuperar um objeto de viso atravs do seu identificador nico (android:id), passando-o
como parmetro no mtodo findViewById(id). Esse mtodo recebe o id do componente desejado e
retorna uma subclasse de android.view.View, como as classes Button, TextView e EditText.
Na figura a seguir mostrado como recuperar a senha inserida pelo usurio atravs do mtodo
findViewById(id) e uma pequena ajuda da classe R.
6.4.2 Intent
Uma intent representa uma inteno da aplicao em realizar alguma ao. Ela envia uma mensagem ao
sistema operacional chamada de broadcast. Ao receber essa mensagem, o sistema operacional tomar as
decises necessrias (LECHETA, 2010).
Uma intent representada pela classe android.content.Intent e pode ser utilizada para enviar
uma mensagem ao sistema operacional, abrir uma nova tela da aplicao, utilizando o mtodo
startActivity(intent), solicitar ao sistema operacional que ligue para determinado nmero de celular, abrir
o browser em um determinado endereo da internet, exibir algum endereo, localizao ou rota no Google
Maps dentre outros.
6.4.2.1 Navegao entre telas com passagem de parmetros
112
Existem dois mtodos de se iniciar uma nova tela (activity), atravs dos mtodos startActivity(intent) e
startActivityForResult(intent,codigo) que apenas inicia uma nova activity ou inicia uma nova activity e
cria um vnculo para ser utilizado ao retornar respectivamente (PEREIRA, 2009).
Para que o sistema operacional possa reconhecer nossa nova activity, necessrio adicionar seu
endereo no arquivo AndroidManifest.xml.
Figura
Podemos observar na figura 6.9, que criada uma intent com a activity da tela-alvo, passado
como parmetro atravs do mtodo putExtra() o texto contido no EditText referente ao usurio para a
prxima tela, e finalmente, a nova activity iniciada atravs do mtodo startActivity(intent).
113
Observando essa classe, vemos que a intent capturada atravs do mtodo getIntent() e
recebemos o parmetro do login atravs do mtodo getStringExtra(string). O contedo da tela apenas
um TextView com uma mensagem de boas vindas.
6.4.2.2 Intents Nativas do Android
Vimos no exemplo anterior que possvel iniciar uma nova activity atravs das intents. O Android possui
alguns tipos de intents pr-definidas que podemos utilizar para enviar mensagens ao SO, porm, algumas
delas necessitam de permisses para executar, tais permisses precisam ser registradas no arquivo
AndroidManifest.xml (PEREIRA,2009).
Vrias 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, so utilizadas em aplicaes Android.
A seguir veremos um exemplo de como chamar o navegador atravs de uma intent pr-definida
no Android.
O exemplo demonstra a utilizao da intent ACTION_VIEW, mas, para usar essa intent
necessria a permisso INTERNET que deve ter sido registrada previamente.
114
Logicamente, algum tem que responder por essa ao. Para isto, precisamos mapear um Intent
Filter no arquivo AndroidManifest.xml, para escutar esse chamado e delegar a execuo uma activity.
115
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. No deve
ter interface grfica ou interao com o usurio (LECHETA, 2010).
utilizada normalmente para executar algum processamento sem que o usurio perceba, em
segundo plano.
Assim como uma activity, devemos declar-lo no arquivo AndroidManifest.xml atravs da tag
<receiver>, deve ser declarada, tambm, um Intent Filter para o broadcast, ou podemos registr-lo
dinmicamente, utilizando o mtodo registerReceiver(receiver,filtro), que tem como parmetros uma
classe-filha de IntentReceiver e uma instncia da classe IntentFilter que possui a configurao da ao e a
categoria (LECHETA, 2010).
O mtodo para enviar uma mensagem para um broadcast diferente do utilizado para uma intent
que chama uma activity. O mtodo utilizado o sendBroadcast(intent) que envia uma mensagem para
todas as aplicaes instaladas no celular.
Para implementar um BroadcastReceiver deve-se extender a classe BroadcastReceiver e
implementar o mtodo onReceive() que ser executado assim que o IntentFilter receber a mensagem.
116
Figura
6.17.
Exemplo de um BroadcastReceiver.
Apenas por motivos didticos foi utilizado a classe Toast para verificar o funcionamento do
BroadcastReceiver. Recomenda-se que no tenha nenhum tipo de interao com o usurio.
117
6.4.5 Notification
A classe Notification utilizada para exibir informaes ao usurio sem que este seja interrompido se
estiver executando alguma atividade. O usurio pode escolher visualizar as informaes neste momento,
ou depois (LECHETA, 2010).
A notificao exibida na barra de status do celular para chamar a ateno do usurio. Ao ser
visualizada, a intent configurada pode uma abrir uma nova activity ou pode ser usada para iniciar um
servio por exemplo (MEIER, 2009).
Um exemplo de notificao a recepo de uma nova SMS, onde usurio pode decidir visualizla ou no.
Para criar uma notificao necessrio capturar um servio do Android chamado de
NOTIFICATION_SERVICE, ser necessrio, tambm utilizar a classe PendingIntent que criar uma
intent que ficar pendente at o usurio decidir visualizar a notificao:
118
Podemos observar, que o construtor da classe Notification recebe trs parmetros: o cone que
dever ser exibido, o ttulo da notificao e a hora que aparecer do lado da notificao.
Observamos, tambm, que deve-se informar atravs do mtodo setLatestEventInfo, a mensagem
que aparecer na barra de status assim que a notificao for reconhecida pelo servio de notificaes do
android, o ttulo da notificao e a intent que dever ser chamada quando o usurio visualizar a
notificao.
Figura 6.20. Classe que ser instanciada quando a notificao for visualizada.
A figura anterior mostra a classe que ser instanciada quando o usurio visualizar a notificao.
Capturamos o servio de notificaes do android, e pedimos para que a notificao no aparea mais na
barra de status atravs do mtodo cancel(int) que recebe como parmetro o id da notificao.
6.4.6 Service
Tm as mesmas caractersticas dos servios dos sistemas operacionais de computador.
So utilizados quando queremos executar algo por tempo indeterminado em segundo plano e que
exija um alto consumo de recursos, memria e CPU (LECHETA, 2010).
Geralmente so iniciados por um BroadcastReceiver para executar algum processamento
demorado, pois um BroadcasReceiver tem um tempo determinado para executar (PEREIRA, 2009).
interessante que os servios tenham suas prprias threads para que fiquem independentes do
programa hospedeiro. Eles tambm possuem um ciclo de vida prprio, semelhante ao de uma Activity,
mas possuem apenas trs estgios: o onCreate, onStart e onDestroy, que desempenham o mesmo papel
que o de uma Activity.
119
Para iniciar um servio necessrio criar uma activity que chame o mtodo startService(intent).
Para parar um servio existem duas maneiras: a primeira chamar o mtodo stopService(intent), a mesma
intent utilizada para iniciar o servio deve ser usada para par-lo, e a segunda forma o prprio servio
chamar o mtodo stopSelf().
120
Para exemplificar o funcionamento de um servio, utilizamos esta classe, que quando iniciada,
cria uma srie de logs. Podemos observar que mesmo fechando a aplicao que iniciou o servio, ele
continua criando logs at chamar o mtodo stopSelf().
121
6.4.7 AlarmManager
So eventos agendados no sistema operacional para serem executados no futuro (LECHETA, 2010).
utilizado quando necessrio executar algo uma vez em determinado horrio ou ficar repetindo
de tempos em tempos.
Quando agendados, ficam ativos no sistema at que sejam explicitamente cancelados, ou o
sistema 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 servio do Android responsvel pelo
gerenciamento dos alarmes, o AlarmManager.
122
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 vm de servios web.
A Web uma plataforma orientada a recursos. Um Recurso pode ser definido como qualquer
coisa que exposta a Web atravs de um identificador e que possamos manipular (ler e/ou escrever)
(WEBBER; PARASTATIDIS, 2010)..
Desde sua formalizao REST2 vem sendo um termo e, mais adequadamente, uma arquitetura de
software de sistemas Web cada vez mais utilizado, estudado e discutido. Esta arquitetura foi proposta pelo
Dr. Roy T. Fielding em 2000 e desde ento vem sendo adotada em vrios sistemas de grande porte como
Twitter, Facebook, Flickr e todas as APIs de servios pblicos do Google como Google Agenda, Google
Health, 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 Definio
O protocolo HTTP, e consequentemente servidores HTTP, um protocolo simples e sem muitos recursos.
Em sua primeira verso ele apresentou endereamento e statelessness: duas caractersticas de seu projeto
que o tornou um avano perante seus rivais e que ainda o mantm escalvel mesmo nos mega-sites de
hoje (RICHARDSON; RUBY, 2007).
Sistemas com esta arquitetura so sistemas Clientes-Servidores comuns, entretanto suas
requisies e respostas so construdas ao redor da transferncia da representao de recursos. Recursos
so os blocos fundamentais de sistemas baseados na web, ao ponto que a Web considerada como
orientada a recursos (WEBBER; PARASTATIDIS, 2010). A abstrao chave de informao do REST
so os recursos. Qualquer informao que pode ser nomeada pode ser um recurso: documentos, imagens,
informaes sobre o tempo, uma pessoa, e assim sucessivamente (FIELDING, 2000). Um dos recursos
mais comuns da Web so pginas HTML, que em sistemas so comumente a representao de um recurso
interno do sistema, por exemplo, uma pgina de exibio de um vdeo do YouTube a representao do
recurso vdeo do sistema.
Um mesmo recurso pode ter vrias representaes diferentes. Utilizando o exemplo do vdeo do
YouTube, uma representao a pgina HTML onde mostrado o vdeo, comentrios, etc. outra
representao vista quando o vdeo incorporado em outra pgina. Nessa representao vemos apenas
um player que carrega o vdeo em questo. Outra representao, um pouco menos conhecida, a
representao em XML3 ou mais recentemente JSON4, ambas tecnologias de transio de dados
hierrquicos.
Devido a essas caractersticas REST tambm requer que as aplicaes faam total distino entre
cliente e servidor atravs da implementao das seguintes caractersticas:
124
1.
Cliente-Servidor: Clientes so separados dos Servidores por uma interface uniforme. Essa diviso
faz com que o cliente no se preocupe com, por exemplo, armazenamento de dados ao passo que o
servidor no se preocupa com interface com o usurio;
2.
Stateless (Sem Estado): A comunicao cliente-servidor ocorre sem que nenhum contexto relativo
ao cliente seja armazenado no servidor entre as requisies. Cada requisio de cada cliente contm
toda informao necessria para atender aquela requisio e a reposta deve conter toda a
informao para satisfazer a requisio;
3.
Cache: Como comum na Web, o cliente pode manter um cache das respostas do servidor,
portanto recomendado que as respostas contenham informaes sobre se podem e como deve ser
feito o cache a fim de evitar que clientes requisitem um mesmo recurso repetidamente. Um bom
cache elimina vrias interaes cliente-servidor desnecessrias o que proporciona escalabilidade e
performance;
4.
5.
Cdigo sob demanda (opcional): Servidores podem ser capazes de estender a funcionalidade de
um cliente transferindo lgica para que ele execute. Exemplos disso so componentes compilados
como Applets Java ou scripts no lado cliente como JavaScript;
6.
Interface uniforme: Todo cliente obedece ao mesmo formato de requisio e recebe o mesmo
formato de resposta.
A arquitetura REST est fundamentada sob o protocolo HTTP e seus mtodos. Clientes que
acessam recursos informando sua inteno atravs do mtodo que executam sob o recurso. A maioria dos
sistemas hoje em dia segue a seguinte conveno de mtodos HTTP, concebidos para simular operaes
de CRUD:
GET: Leitura;
POST: Escrita;
DELETE: Remoo.
Muitas aplicaes novas esto utilizando os princpios REST a fim de obterem um bom nvel de
escalabilidade. Normalmente essas aplicaes disponibilizam a seus usurios uma API dos mtodos
REST disponveis, suas entradas e suas sadas.
Para compreender melhor, vejamos a API de um sistema referncia em tecnologia REST: o
Twitter.
O Twitter disponibiliza em seu website uma extensa e detalhada documentao da API de seu
sistema . uma plataforma de apoio aos desenvolvedores que desejam criar clientes para o Twitter com
5
125
pginas de ajuda onde so descritos os mtodos da API, um guia ao desenvolvedor e ferramentas para
ajud-lo.
Chamadas a alguns mtodos da API podem ser feitas, para testes, atravs de um navegador web
qualquer.
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 este
mtodo da API basta abrir esta URL em qualquer navegador web.
Ao abrir esta URL em um navegador, o que feito uma chamada a API atravs do mtodo
HTTP GET. Chamadas a qualquer API REST na Web so compostas de 3 partes:
1.
2.
3.
A URL uma chamada ao mtodo 1/users/show da API do Twitter. Uma particularidade dessa
API a possibilidade de escolha do formato de representao do recurso: XML ou JSON, representado
pela extenso do arquivo na URL.
servidor. Normalmente um cdigo de resposta 200 significa que tudo ocorreu como esperado. Outros
cdigos de resposta podem ser especificados pela API.
if (conn.getResponseCode() == 200) {
// Tudo ocorreu como esperado.
}
Dessa forma podemos tomar alguma providncia caso ocorra algum erro, e garantir um bom
funcionamento da aplicao.
Aps a confirmao do sucesso da chamada o prximo passo ler os dados da resposta do
servidor. necessrio um cuidado especial com o tipo de dado esperado pois a resposta da API pode ser
uma imagem, ou um documento, ou at mesmo um Stream de dados. Vamos considerar que a resposta a
nossa chamada est em formato textual, caso qual podemos utilizar a seguinte tcnica para captar o
resultado num formato mais cmodo para manipulao:
BufferedReader reader = new BufferedReader(new
InputStreamReader(conn.getInputStream()));
StringBuilder str = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
str.append(line);
}
reader.close();
Aps o recebimento da resposta, uma boa prtica sempre fechar a conexo junto ao servidor
invocando o mtodo disconnect():
conn.disconnect();
Dessa forma podemos fazer chamadas a quaisquer API REST utilizando Java.
Existem vrias bibliotecas disponveis para se trabalhar com os formatos XML e JSON, algumas
bastante sofisticadas e simples de usar. Para XML temos, por exemplo, uma biblioteca chamada jDOM6
que interpreta XML e d ao desenvolvedor uma representao do documento XML na forma de um grafo
de objetos com uma interface nativa Java que podem ser facilmente percorridos e manipulados. Para
JSON h uma biblioteca chamada Gson7 disponibilizada pelo Google que pode transformar Objetos Java
em sua representao JSON e vice-versa:
Gson gson = new Gson();
String json = gson.toJson(meuObjeto);
MeuObjeto obj = gson.fromJson(json, MeuObjeto.class);
Atravs do uso de bibliotecas auxiliares possvel criar objetos concretos Java a partir de
representaes textuais dos mesmos.
A utilizao de JSON recomendada nestes casos pois grande parte dos sistemas REST atuais
so voltados para a interatividade entre sistemas de Websites, os quais so em sua maioria feitos
utilizando JavaScript, linguagem-me da notao JSON e que d suporte nativo a interpretao e
construo de objetos a partir de sua representao textual e vice-versa.
Referncias
ABLESON, W. Frank; Unlocking Android - A Developers Guide. Ed. Manning, 2007.
BURNETTE, Ed.Hello, Android:Introducing Google`s Mobile Development Plataform. Pragmatic
Bookshelf, 2008.
Google Android. Disponvel em <http://developer.android.com/guide/basics/what-is-android.html>.
Acesso em 12 outubro 2011.
LECHETA, Ricardo R. Google Android. So Paulo: Novatec, 2010, 2 ed.
MEDNIEKS, Zigurd; MEIKE, Blake. Desenvolvimento de Aplicaes Android. So Paulo: Novatec,
2009, 1 ed.
MEIER, Reto. Professional Android Application Development. Indianapolis: Wiley Publishing, 2009, 1.
ed.
PEREIRA, Lcio C. Oliva. Android para Desenvolvedores. So Paulo: Brasport, 2009, 1 ed.
WEBBER, Jim; PARASTATIDIS, Savas; ROBINSON Ian. REST in Practice: Hypermidia and Systems
Architecture. OReilly Media, 2010.
6
128
RICHARDSON, Leonard; RUBY Sam. RESTful web services. OReilly Media, 2007.
FIELDING, Roy; Architectural Styles and the Design of Network-based Software Architectures.
Dissertao de Doutorado, University of California, 2000.
129
I. INTRODUO.
130
131
132
133
134
135
136
137
REFERENCIAS
[1]
[2]
[3]
[4]
[5]
[6]
[7]
Figura 6. Interao entre visitante e o museu a partir da atuao de agentes de
software.
[8]
[9]
[10]
[11]
VI. CONCLUSES
Neste artigo, foi descrita a implementao de um museu
virtual 3D que utilizou tecnologias como a ferramenta de
modelagem Blender para a modelagem do museu e das peas
que o compe, alm do padro X3D e do browser Xj3D para
disponibilizar o contedo do museu na web. Alm disso,
tambm utilizou a linguagem de programao Java, agentes
inteligentes e ontologias para a realizao da recomendao
inteligente de contedos do acervo. Desta forma, a soluo
proposta objetiva tornar a aprendizagem, a partir das visitas ao
museu, adequada s necessidades de cada visitante.
Desta forma, como trabalhos futuros, pretende-se submeter
o ambiente desenvolvido avaliao de um muselogo, para
que a aplicao tenha uma melhor abordagem no que tange o
aspecto do contedo descritivo das peas recomendadas. Temse tambm como proposta futura a integrao do sistema com
redes sociais ou outros mecanismos de identificao para
ajudar no levantamento do perfil do usurio e ajudar a
melhorar a formar como os dados de cada usurio so obtidos,
evitando o preenchimento de formulrios antes de utilizar o
ambiente. Alm disso, objetiva-se mensurar o quanto a
abordagem eficaz na realizao da recomendao sob a tica
educacional, tendo em vista que testes preliminares mostram
que o ambiente realiza a recomendao de forma satisfatria
obedecendo todos os critrios apresentados anteriormente.
Com base nisso, objetiva-se realizar um estudo de caso com
uma turma de um curso de ensino a distncia para verificar o
impacto da abordagem proposta na adequao do contedo.
[12]
[13]
[14]
[15]
[16]
[17]
[18]
[19]
[20]
138
[21]
[22]
[23]
[24]
[25]
[26]
[27]
[28]
[29]
[30]
[31]
[32]
[33]
[34]
[35]
[36]
[37]
[38]
139
I. INTRODUO
Figura 1. Trecho final da string retornada pela funo tostring, seguida de seu
tamanho mostrado pela funo len.
Cmera
Objetivo
Pygame
Pygame
Figura 3. Programa em Python que captura um frame de uma Webcam e o
envia convertido em texto atravs de socket.
socket
socket
Ubuntu
Ubuntu
Rede
Rede
TABELA I
TABELA DE VELOCIDADE DA CONEXO POR RESOLUO DE VDEO
Tipos de sinais
TV vdeo
(PAL/NTSC)
TV vdeo
compactado
(Qualidade de
DVD)
Vdeo stereo
(No
compactado)
Vdeo stereo
compactado
(Qualidade de
DVD)
Tamanho do
quadro
Frames por
segundo
720x480
25 30 fps
720x480
25 30 fps
5,2 Mbps
640x480
30 70 fps
147 344
Mbps
640x480
30 70 fps
6,3 14,6
Mbps
Largura de
banda
165,9
Mbps
142
REFERNCIAS
[1]
[2]
[3]
[4]
[5]
143
I INTRODUO
144
F (t )=
t
v
(1)
So variveis da Frmula 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 sensvel disponvel na rede.
Apesar da largura de banda corresponder a uma faixa de
frequncia fixa, a taxa de transmisso alterada de acordo
com diversas variveis, entre elas a quantidade de downloads.
Enquanto as requisies de downloads gerarem um consumo
na rede menor que a largura de banda disponvel nenhum
usurio ir competir e atrapalhar a atividade do outro.
medida que o nmero de downloads aumente o tempo de
download de um arquivo ir aumentar.
n
S (t )= F (t )
TABELA 1
COMPARAO ENTRE VRIOS MEIOS DE COMPARTILHAMENTO DE ARQUIVOS
Questes
1. Necessita de um Servidor?
2. Necessita de um
administrador de rede:
3. Gerencia a admisso de
downloads duplicados?
4. Transparente para o
usurio?
5. Transparente quanto a
localizao de rede?
6. Ponto nico de falha?
7. Gerencia o download sobdemanda em tempo real?
FTP
Sim
Sim
Web Cache
Sim
Sim
Squirrel
No
No
Ourdown
No
No
No
No
Sim
Sim
Sim
No
Parcialmen
te
Parcialmen
te
No
Sim
Sim
Sim
No
Sim
No
No
No
No
Sim
No
(2)
146
147
148
149
V. DESENVOLVIMENTO E CODIFICAO
5.1 Componente no Firefox
Todo o processo da construo do componente para o
Firefox extenso. Abaixo apresentado o cdigo do arquivo
browser.xml responsvel pela mudana visual do Firefox
quando se clica com o boto 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>
150
REFERNCIAS
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
[12]
[13]
[14]
[15]
[16]
[17]
[18]
[19]
[20]
[21]
[22]
[23]
[24]
151
I.
INTRODUO
II.
A ABORDAGEM SENSERDF
152
http://dados.gov.br/
http://www.w3.org/RDF/
http://www.w3.org/TR/rdf-sparql-query/
Extraode
Metadados
Extraode
PDF
Instncias
RDF
GeradorRDF
XML
Identificaode
Termos
Identificaode
Correspondncias
FOAF
Arquivo de
Correspondncias
SKOS
Ontologia
Res
DC
Repositrio de Vocabulrios
153
http://www.foaf-project.org/
http://dublincore.org/documents/dcmi-terms/
III.
http://jena.apache.org/
http://www.jdom.org/
8
http://api.itextpdf.com/
9
http://alignapi.gforge.inria.fr/align.html
10
http://owlapi.sourceforge.net/
7
154
155
IV.
TRABALHOS RELACIONADOS
CONSIDERAES E TRABALHOS
FUTUROS
[2] Berners-Lee T., Hendler J., Lassilia O. 2001. The semantic web.
Scientific American. 284(5):3444, Mai 2001.
[3] Bizer C., Heath T., Berners-Lee T. 2009. Linked data - the story so
far. Int. J. Semantic Web Inf. Syst. 5(3):122, 2009.
[4] Heath, T., Bizer, C. 2011. Linked Data: Evolving the Web into a
Global Data Space (1st edition). Synthesis Lectures on the
Semantic Web: Theory and Technology, 1:1, 1-136. Morgan &
Claypool, 2011.
[7] Lscio, B., Cunha, D.; Souza, D. 2011. Linked Data: da Web de
Documentos para a Web de Dados. Escola Regional Cear,
Maranho e Piau 2011. Teresina: ERCEMAPI. 2011, v. 1, p. 7999.
[8] Travassos W., Silva A., Frana N., Dantas R., Souza D. 2011.
RDF, RDF(S) e OWL: Uma Anlise Comparativa Visando Atingir
o Padro Linked Data. In: Anais Cincias Exatas e da Terra do VI
Congresso de Pesquisa e Inovao da Rede Norte e Nordeste de
Educao Tecnolgica CONNEPI. Pg. 413-423. Natal, RN.
157
[13] Schandl, B., & Popitsch, N. 2010. Lifting File Systems into the
Linked Data Cloud with TripFS. 3 International Workshop on
Linked Data on the Web, Raleigh, North Carolina, USA. DOI=
http://eprints.cs.univie.ac.at/69/
I. INTRODUO
159
160
V. QUALCOMMVUFORIA
A Qualcomm um instituto de pesquisa que atua
desenvolvendo solues paradiversos tipos de tecnologias
voltadas a informao. [4]. Dentre suas reas de atuao est
a RA, atravs do projeto denominado Vuforia. Esta sesso
dedica-se em apresentar os principais aspectos desta SDK
disponibilizada pela Qualcomm.
A. Elementos do ncleo Vuforia
Este tpico apresenta todos os elementos que caracterizam o
ncleo de elementos da Vuforia [4]:
Cmera: Comunica com hardware de cmera e assegura
que as imagens capturadas foram transferidas eficientemente
ao tracker. O desenvolvedor apenas tem controle de informar
quando iniciar e quando pausar a captura de vdeo.
Image Converter: Converte a imagem obtida pela cmera
em um formato padronizado que seja compatvel com o render
utilizado.
Tracker: Algoritmos de viso computacional que detectam
objetos do mundo real analisando os frames da cmera. Podem
ser dos tipos Target, Markers ou Buttons.
Vdeo Background Render:Renderiza a imagem da
cmera.
Cdigo da Aplicao: Deve instanciar e inicializar todos os
elementos bsicos do ncleo (descritos nesta sesso) alm de
manipular os marcadores, a lgica da aplicao e atualizar o
render da camada grfica (virtual) do sistema.
Target Resources: Criados utilizando uma plataforma
online disponvel no site da Qualcomm. So estruturas
utilizadas para representar os marcadores dentro do sistema.
Trackables: Classe base que representa todo objeto do
mundo real que a Vuforia pode rastrear. Todo marcador
suportado pela SDK origina desta classe.
B. Tipos de Trackers
A SDK Vuforia permite desenvolver sistemas de realidade
aumentada utilizando trs tipos de marcadores: ImageTargets,
Frame Markers e Buttons. O primeiro tipo de tracker
reconhece qualquer imagem fornecida ao mesmo. O Segundo
tipo reconhece marcadores fiduciais com cdigos e o terceiro
reconhece formas dentro de ImageTargets como botes de
interao virtual com o usurio. A seguir apresentamos cada
tipo de tracker.
161
(a)
(b)
Figura 4.Imagens (a) superior e (b) lateral da cabea do extensmetro de
haste mltipla utilizado para realizar os testes.
Figura 5.Screenshoot da aplicao rodando em sistema Android,
reconhecendo o marcador FrameMarker.
fortemente
voltada
para
o
reconhecimento do ambiente via marcadores, ou seja,
necessrio que o ambiente seja modificado com a adio de
marcadores para que o mesmo possua desempenho relevante.
Para correo deste problema e dar continuidade ao
desenvolvimento do sistema, optou-se por utilizar os
marcadores do estilo Frame Markers. Tal deciso ir
introduzir os benefcios de apresentar melhor desempenho em
laboratrio e consequentemente in-situ (ambientes externos ao
laboratrio possuem maior nmero de condies adversas
como, por exemplo, iluminao e clima, que dificultam a
deteco da imagem) e ir introduzir como ponto negativo a
necessidade de adicionar ao extensmetro um marcador
fiducial padronizado para reconhecimento pelo sistema. A
figura 5 apresenta telas de uso do sistema em testes de
laboratrio.
VIII. CONCLUSO
Os esforos realizados para o desenvolvimento do trabalho
at ento identificaram que necessrio um entendimento
maior sobre a diferena de uso pelo tcnico de Itaipudo
sistemas utilizandomarcadores fiduciais e os que no
necessitam.
Foi descoberto que a SDK da QualcommVuforia em sua atual
verso no suporta reconhecimento sem marcadores,
denominados pelo mercado marklesstracking, que permitem
reconhecimento de objetos 3D do mundo real. Durante todo o
processo tentamos utiliza a soluo ImageTargets como
tecnologia para substituir o uso de marcadoresmarcadores, o
que resultou em um sistema que no reconhecia o aparelho,
obrigando a mudana para FrameMarkers, que so marcadores
fiduciais tradicionais.
Como proposta para evoluo est sendo proposto o estudo
da diferena das abordagens, algoritmos envolvidos e casos de
uso.
O resultado final tambm possibilitou constatar que a
ferramenta QualcommVuforia no implementa algoritmos de
ocluso de objetos, fazendo com que no efeito final o objeto
3D sempre aparea sob a imagem real, neste caso, prope-se o
estudo de algoritmos de ocluso para adio futura na
ferramenta.
A maior dificuldade encontrada durante a produo foi
definir de forma sistemtica a posio relativa do objeto 3D
com o objeto real. Atravs da Vuforia o programador apenas
tem acesso a posio no espao 3D do marcador e pode
posicionar objetos 3D partindo desta posio relativa, no
levando em considerao particularidades do extensmetro.
Neste caso foi posicionado atravs de tentativa e erro os
objetos no espao 3D at se alcanar uma posio relativa
aceitvel pelo usurio. Esta questo pode ser foco de
desenvolvimento de novas tecnologias pois uma demanda de
incremento que se fosse implementada pouparia grande
esforo no desenvolvimento (cerca de 30% do tempo gasto no
163
164
I. INTRODUO
1
2
http://protege.stanford.edu/
http://protege.stanford.edu/plugins/owl/jena-integration.html
DESCRIO
VALORES
N de ns
At 1000
Tamanho do Pacote
1500 bytes
Atraso
20ms
1 Mbps
300 Kbps
V. CONCLUSO
As mudanas trazidas pela TV Digital no se resumem
apenas aos ganhos em relao qualidade de udio e vdeo.
As aplicaes interativas j esto sendo trabalhadas dentro do
novo padro de TV, associada s tecnologias de acesso, que
criam um caminho para a troca de informaes suscitando
maior participao do telespectador.
A aplicao semntica QoSTVApp, permite inferir sobre a
exequibilidade da interatividade considerando requisitos da
aplicao e do ambiente de execuo. Utilizou-se o
conhecimento representado no modelo e os dados obtidos na
fase de validao para a construo de uma ontologia de
domnio, a partir da qual os desenvolvedores de aplicativos
interativos ou provedores de servios podem usar os
resultados do QoSTVApp para avaliar os parmetros de QoS
da comunicao.
Como trabalho futuro pretende-se fazer a incluso de regras
de inferncia para ampliar o raciocnio e a preciso das
informaes apresentadas pela aplicao semntica.
REFERNCIAS
[1]
[2]
[3]
[4]
[5]
Campista, Miguel Elias M.; Moraes, Igor M.; Esposito, Pedro Miguel;
Amodei Jr., Aurlio; Cunha, Daniel de O.; Costa, Lus Henrique M. K.;
Duarte, Otto Carlos M. B.The Ad Hoc Return Channel: a Low-Cost
Solution for Brazilian Interactive Digital TV. Grupo de Teleinformtica
e Automao, PEE/COPPE DEL/POLI. Universidade Federal do Rio
de Janeiro, Brasil. 2006.
Gosciola, V. Roteiro para as novas mdias: do game TV Interativa.
So Paulo: Editora Senac, 2003.
Margalho, M., Frances, R. and Wely, J. Return path in Brazilian digital
television with interactivity based on continuous signalization
mechanism and qos bandwidth control, Latin America Transactions,
IEEE (Revista IEEE America Latina), 5(5):367 372, Sep. 2007.
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 interactive
applications for SBTVD. Information Systems and Technologies
(CISTI), 2012 7th Iberian Conference on Publication 2012.
Montez, C.; Becker, V. TV Digital Interativa: conceitos, desafios e
perspectivas para o Brasil. Florianpolis: Ed. Da UFSC, 2005. 2 edio.
168