Simulação em RSSF para Protocolos de Roteamento usando uma Abordagem Geocast

Tamanho: px
Começar a partir da página:

Download "Simulação em RSSF para Protocolos de Roteamento usando uma Abordagem Geocast"

Transcrição

1 Capítulo 3 Simulação em RSSF para Protocolos de Roteamento usando uma Abordagem Geocast Harilton da Silva Araújo, Wagner Luis T. de Castro, Raimir Holanda Filho Abstract The Wireless Sensor Networks (WSN) can be utilized as powerful tools in order to monitor and, eventually, control an environment. The applications, in that type of network, impose specific requisites related to the energy consumption and reliable delivery. The routing protocols, for the WSN, must have self-configuration characteristics aimed at discovering which is the best way for transferring the information, with delivery assurance and with minimum energy consumption, among the nodes that compose the network. This article proposes a modification of the Directed Diffusion routing protocol so as to reduce the energy consumption in the network when there is an occurrence of failures. The proposal utilizes a Geocast approach to repair broken paths by constructing a new routing tree. The performed simulations demonstrated that our proposal is more efficient from the energy viewpoint. Resumo As Redes de Sensores Sem Fio (RSSF) podem ser utilizadas como ferramentas poderosas para monitorar e, eventualmente, controlar um ambiente. Aplicações nesse tipo de rede impõem requisitos específicos relacionados ao consumo de energia e confiabilidade de entrega. Protocolos de roteamento para as RSSF devem possuir características de auto-configuração para descobrir qual a melhor forma de transferir, com garantia de entrega e com consumo mínimo de energia, a informação entre os nós que compõem a rede. Este trabalho propõe uma alteração ao protocolo de roteamento Difusão Direcionada (Directed Diffusion), de forma a reduzir o consumo de energia na rede quando há ocorrência de falhas. A proposta utiliza uma abordagem geocast para reparar caminhos quebrados construindo uma nova árvore de roteamento. Simulações realizadas demonstraram que nossa proposta é mais eficiente do ponto de vista de energia.

2 3.1. Introdução Uma rede de sensores é constituída por um grande número de nós, utilizados sob demanda em uma área de interesse. Cada nó possui um ou mais sensores, além da capacidade de processamento, armazenamento e comunicação. As redes de sensores sem fio têm despertado o interesse da comunidade científica devido a sua aplicabilidade que abrange diversas áreas, tais como militar, ambiental, médica e industrial. Essas redes diferem de redes tradicionais em vários aspectos. Algumas características são: composta por um grande número de nós sensores; os sensores possuem altas limitações de energia, baixa capacidade de processamento e memória. Além disso, algumas aplicações de RSSF requerem características de auto-organização, podendo se ajustar de forma autônoma às possíveis mudanças estruturais devido a intervenções externas, tais como alterações da topologia causadas por falhas, inclusão de nós ou por uma solicitação feita por uma entidade externa (usuário). O objetivo de uma RSSF é coletar dados de uma região sensoriada e permitir a extração destes por uma entidade externa através do nó sink. O principal requisito da rede, que afeta todas as fases de seu ciclo de vida e independe da aplicação, é o consumo de energia. A comunicação em RSSF consome mais energia do que o processamento e o sensoriamento realizado pelos nós da rede. Esta característica requer protocolos de roteamento que possibilite que os nós sensores se comuniquem de forma eficiente e eficaz com o mínimo de consumo de energia. Os protocolos de roteamento para redes de sensores devem possuir características de auto-configuração para descobrir qual a melhor forma de transferir, com garantia de entrega, a informação de um para o outro, com consumo mínimo de energia com finalidade de prolongar o tempo de vida da rede. Se um nó por onde trafega uma dada informação falhar, terá que ser feito um novo roteamento para que a informação a ser coletada consiga atingir o nó destino. A comunicação entre os nós da rede deve ser feita de maneira que seja otimizado o consumo de energia. Neste sentido, alguns protocolos têm o papel fundamental de aumentar o tempo de vida útil da rede. Este trabalho propõe uma alteração ao protocolo de roteamento Difusão Direcionada (Directed Diffusion), com a finalidade de reduzir o consumo de energia na rede mediante a presença de falhas. Uma abordagem geocast, foi utilizada para reduzir o número de mensagens de controle enviadas e recebidas. Essa redução foi alcançada através da construção de uma nova árvore de roteamento limitada e direcionada a uma região específica da rede mediante ocorrência de falhas. O capítulo é organizado da seguinte forma: o item 3.2 apresenta os trabalhos relacionados. O item 3.3 descreve as modificações que fizemos no protocolo Difusão Direcionada. A avaliação do algoritmo é discutida no item 3.4. Os itens 3.5 e 3.6 tratam aspectos relacionados à simulação, seguidos de conclusões no item Trabalhos Relacionados Uma proposta de otimização do consumo de energia é tratada em [Chen et al., 2001]. A idéia desta proposta é colocar determinados nós no modo sleep (desligado) para conservar a energia, enquanto mantêm a conectividade da rede garantindo a comunicação.

3 Em [Shah and Rabaey 2002] é descrito o protocolo EAR (Energy Aware Routing). O EAR é um protocolo reativo que busca caminhos de mínimo dispêndio de energia pela rede. O funcionamento básico consiste no uso ocasional de um conjunto de caminhos escolhidos através de uma função de probabilidade (a qual é dependente do consumo de energia de cada caminho). Desta forma, evita que o melhor caminho tenha a sua energia esgotada, aumentando o tempo de sobrevida da rede. Assume-se que cada nó possui um endereço e informação sobre sua localização. Em [Lee et al., 2003] é proposto um algoritmo que utiliza GPS para restringir a área de inundação dos pacotes. Este algoritmo utiliza duas abordagens para determinar que nós devem propagar as mensagens de controle. A primeira é determinada pela posição e o tamanho da área. A segunda é pela distância e a localização do destino. Um protocolo de roteamento que limita a pesquisa para busca de novas rotas em redes ad hoc é descrito em [Ko and Vaidya 2000]. Nessa proposta é utilizada uma abordagem baseada em flooding e na localização dos nodos para limitar a área da inundação. Ao enviar uma mensagem, o nodo emissor define uma zona esperada do nó destino. Se algum nodo que receber a mensagem estiver fora dessa zona, ela é descartada. O objetivo é reduzir o custo das retransmissões de cada mensagem pela rede inteira. Definições alternativas de zonas de requisição ciente de localização são tratadas em [Ko and Vaidya 1998]. Essas definições objetivam otimizar o desempenho delimitando as áreas de interesse. Para isso, são abordadas as zonas em formato retangular, circular e cone. Em [Intanagonwiwat et al., 2000] é descrito um algoritmo de disseminação de dados (Directed Diffusion), onde é proposto um esquema de roteamento centrado em dados, não havendo semântica de endereçamento. Ele também tenta atender redes dinâmicas através de um esquema de negociação com disseminação de interesses e reforços de caminhos, permitindo a rede convergir perante qualquer alteração topológica. Além disso, o Directed Diffusion utiliza como métrica para a escolha da rota aquela que possui menor retardo, o que geralmente leva à rota com menor quantidade de saltos. Uma desvantagem desta abordagem é o alto custo de comunicação para reparo de caminhos quando há ocorrência de falhas, devido à necessidade de realizar periodicamente um inundamento na rede para reforçar outros caminhos. Neste trabalho apresentamos uma proposta de protocolo de roteamento para redes de sensores sem fio. A proposta é implementada como uma modificação do protocolo de difusão direcionada (Directed Diffusion), e diferencia-se das soluções apresentadas na literatura pelo fato de usar uma abordagem para minimizar o consumo de energia durante a recuperação de falhas. São utilizadas informações de localização para redução do consumo de energia. O algoritmo é descrito em detalhes na próxima seção Proposta do Protocolo Ciente de Energia Neste trabalho, nós propomos uma extensão a um protocolo de roteamento centrado em dados já existente, o Directed Diffusion [Intanagonwiwat et al., 2000]. O principal objetivo da nossa proposta é desenvolver um protocolo tolerante a falhas com um mínimo de consumo de energia. Para alcançar simultaneamente esses

4 requisitos, foi utilizado, em nosso algoritmo, uma abordagem baseada no método de roteamento geocast. A abordagem consiste em reparar caminhos quebrados construindo uma nova árvore de roteamento limitada e direcionada. A abordagem utilizada no algoritmo de roteamento proposto é descrita a seguir: Abordagem Geocast Limitada e Direcionada Inspirado em [Ko and Vaidya 1998a, Ko and Vaidya 1998b, Ko and Vaidya 1998c], a abordagem geocast limitada e direcionada foi criada a fim de realizar a construção de uma nova árvore de roteamento limitada e direcionada a uma região específica da rede, denominada de região geocast. Para tanto, o uso de informações de localização geográfica dos nós faz-se necessário, o que permiti direcionar o roteamento das mensagens. A abordagem adotada neste trabalho restringe, em formato retangular, a região que contem a área de incidência de eventos. Cada nó ao receber uma mensagem, verifica se pertence à região geocast. Se pertencer, envia novamente a mensagem para seus vizinhos; caso contrário, ignora a mensagem de controle. É assumido que todos os nós conhecem suas posições geográficas. O esquema que restringe a região geocast é semelhante ao esquema de otimização citado em [Akyildiz et al., 2002]. Esta abordagem restringe a área de inundação pelas retas,,. Assume que o nó ( ) conhece a localização (, ) do nó ( ). Seja a reta que passa pelos pontos e. A distância entre os pontos e é representada por,. é o ponto médio entre e. O raio é a distância utilizada para traçar as retas paralelas ( ) e perpendiculares ( ) a reta. A distância entre e é representada por:, =2 +, (1) Se a distância entre e é representada por (1), então a distância entre e P é denotada por:, =, A figura 1 mostra um exemplo da área geocast restringida. (2) Figura 1. Esquema de restrição da região geocast Um campo, denominado, foi criado para calcular o número de hops a partir do nó sink. O valor do raio é calculado como sendo a distância entre o sink e o nó mais distante que puder ser alcançado com saltos. A mensagem de construção de raio é enviada utilizando um determinado número inteiro, armazenado no campo, que será decrementado em uma unidade a

5 cada retransmissão e quando chegar a zero, a mensagem de construção de raio será descartada e uma mensagem informando a posição geográfica desses nós é enviada para ( ) a fim de determinar qual o nó mais distante. Dessa forma, a mensagem de construção de raio terá cumprido a sua meta, ou seja, alcançar os nós atendendo o número de saltos pré-determinado na fase de configuração. O tamanho da região geocast é calculada com base em e,. A redução da área para a construção de uma nova árvore de roteamento obtém vantagens, pois o número de mensagens de controle a serem trocadas será reduzido. Quanto menor for o, menor será o tamanho da zona de broadcast. Seguindo esse esquema de restrição da área, os nós devem propagar as mensagens de controle somente para os nós que pertencem à região geocast, conforme mostra a figura 2. Figura 2. Propagação de mensagens As informações para criar a região geocast são enviadas na mensagem de controle; O nó ao receber uma mensagem de controle verifica se pertence à zona restringida; Se pertencer, propaga a mensagem aos vizinhos, caso contrário, descarta a mesma, como é o caso dos nós J e K. Apenas os nós dentro da região geocast propagam as mensagens; O nosso algoritmo de roteamento é realizado em quatro fases: A. Fase de Configuração O sorvedouro realiza inundações com mensagens de interesse para seus vizinhos em cada rodada do protocolo. As mensagens de interesse descrevem a tarefa através de um par atributo-valor [Akyildiz et al., 2002]. Quando um nó recebe um interesse, ele verifica se o interesse existe no cache. Se não existe associação com nenhum dos interesses distintos armazenados, o nó cria uma nova entrada de interesse. Cada entrada no cache do nó possui um gradiente que aponta para o vizinho que o enviou o interesse. Utilizando interesses e gradientes, caminhos são estabelecidos entre o sink e os nós fontes. Após receber um interesse, um nó re-envia este interesse utilizando um gradiente. Para os seus vizinhos, o interesse parece ser originado pelo nó emissor da

6 mensagem, embora possa vir de outro nó distante. Assim, este protocolo realiza apenas interações locais para a disseminação dos interesses. B. Fase de Estabelecimento de Rota Quando o interesse chega a uma região apropriada, através das mensagens exploratórias, um ou mais sensores são ativados, tornando-se fontes. Os nós fontes enviam dados para os vizinhos que têm um gradiente. Os primeiros dados são chamados de dado exploratório. Na difusão direcionada, os nós re-enviam o primeiro dado exploratório recebido até chegar ao nó sorvedouro, favorecendo os caminhos de baixa latência. Conforme citado em [Akyildiz et al., 2002], a rota com baixa latência não é uma métrica eficaz em RSSF. Em nosso protocolo, cada nó insere na mensagem exploratória o número de saltos e o somatório das energias residuais de cada nó que compõe o caminho entre a fonte e o destino. Em seguida, a mensagem de dados é enviada para seus vizinhos. As mensagens exploratórias são armazenadas em um cache local para que seja feita a seleção de rotas. Um temporizador é criado em cada nó na rede e utilizado após a recepção das mensagens exploratórias. O uso do temporizador é adequado para fazer com que as mensagens exploratórias dos nós mais distantes cheguem e possam também fazer parte da seleção do caminho. A seleção das rotas é feita utilizando o mesmo mecanismo adotado em [Teixeira et al., 2004], que permite os nós decidirem localmente por qual rota encaminhar os dados sem incorrer em altos custos relacionados ao conhecimento de toda a topologia da rede. Pode-se representar o processo de seleção de rotas como a seguir. Seja =(, ) um grafo direcionado onde é um conjunto de vértices (nós sensores) e é o conjunto de pares (, ) não ordenados de elementos em (conexões). Se for encaminhada uma mensagem por um caminho =( 1, 2,,, ) em um grafo, onde,..., são vértices e (, ),..., (, ) são arestas, então cada nó em perde uma parcela de sua energia associada ao custo de envio de mensagens. Seja o custo de envio da mensagem de, a energia inicial de e a energia residual de após o envio de uma mensagem. Então, =, para =1,, 1. Portanto, a energia do caminho é denotada por, onde: = (3) A regra implementada no protocolo não escolhe apenas o caminho que possui o maior valor de energia residual disponível por todos os nós, mas também o número de nós que compõem o caminho. Como a solução utiliza apenas interações localizadas, é usada a razão λ para obtenção do melhor caminho. A razão λ é obtida através da divisão entre o somatório da energia residual ( ) e o número de saltos que compõem o caminho ( 1), conforme mostra a equação (4). λ= Considera-se, portanto, que o melhor caminho a ser escolhido é aquele que dentre todos os caminhos disponíveis de um dado par de vértices de origem e destino obtiver o maior valor correspondente a razão λ. (4)

7 Com base nas mensagens exploratórias e no mecanismo de seleção de rotas, o melhor caminho é selecionado, o que significa que é o caminho que possui maior energia residual com menor número de saltos. C. Fase de Comunicação de Dados A fase de comunicação de dados ocorre utilizando um gradiente entre o nó receptor e o nó que enviou a mensagem. O gradiente é estabelecido pela mensagem exploratória. Assim que o nó fonte começar a enviar seus dados, as mensagens são encaminhadas pelos nós intermediários seguindo a direção apontada pelo gradiente pré-determinado na fase anterior. Cada um dos nós intermediários encaminha o pacote de dados até chegar ao nó sorvedouro. D. Fase de Reconstrução de Caminhos Em caso de ocorrência de falha de um caminho entre o nó fonte e o sorvedouro, uma rota alternativa deve ser estabelecida. Para isso, o protocolo Directed Diffusion basicamente reinicia o mecanismo de reforço para procurar outros caminhos. Entretanto, o esquema de reparo de caminhos no Directed Diffusion possui um alto custo com relação ao consumo de energia, pois exige um inundamento da rede para reforçar outros caminhos. No caso de ocorrência de falhas nos nós que perfazem os trajetos, o nosso algoritmo, ao invés de realizar um inundamento da rede para reforço de outros caminhos, utiliza uma abordagem geocast. Essa abordagem tem o objetivo de reparar caminhos quebrados construindo uma árvore de roteamento limitada e direcionada a uma região específica da rede na qual se encontra o conjunto de nós fonte, minimizando o número de mensagens de controle enviadas e recebidas. A abordagem restringe, em formato retangular, a área que será construída a nova árvore de roteamento, conforme mostra a figura 3. Cada nó ao receber um pacote, verifica se pertence à região geocast. Se pertencer, envia novamente a mensagem para seus vizinhos; caso contrário, ignora a mensagem de controle. Figura 3. Reconstrução de caminhos No momento de definição da região geocast, o protocolo ignora o nó que falhou a fim de que este não faça parte da nova árvore de roteamento que será criada. Ao término do envio do evento que foi interrompido por falha da rota, o protocolo reinicia a

8 fase de configuração. As falhas nas rotas são identificadas quando o sorvedouro deixa de receber os eventos associados ao interesse atendido. A abordagem utilizada nesse algoritmo garante a reconstrução rápida de caminhos na presença de falhas, e a redução do consumo de energia, pois evita o inundamento em toda a rede para a reconstrução de novas rotas. A diferença principal entre a abordagem utilizada no Directed Diffusion e a que está sendo proposta neste trabalho, é a construção da árvore de roteamento mediante a ocorrência de falhas. Na primeira abordagem, o broadcast para a construção da árvore tem alcançabilidade máxima, ou seja, atinge todos os nós da rede. Na segunda, é efetuada a construção limitada e direcionada da árvore de roteamento, com o objetivo de alcançar apenas os nós que estão próximos a ocorrência de eventos Avaliação de Desempenho Para avaliação do desempenho da nossa proposta, utilizamos o simulador Sinalgo [Sinalgo 2007]. Sinalgo é um framework, escrito em Java, que permite a simulação de redes sem fio abstraindo-se das camadas mais baixas da pilha de protocolo Cenário de Simulação e Métricas Utilizadas O cenário de simulação foi construído para permitir uma compreensão didática do algoritmo proposto. A topologia do nosso cenário permite que cada nó se comunique com até 8 vizinhos. Há 121 nós, em uma topologia de rede 11 x 11. Figura 4. Topologia do Cenário Existe um fluxo de dados que consiste em uma fonte (Source) e um destino (Sink). O nó fonte gera um evento a cada segundo e está localizado conforme mostra a figura 4. O tempo total de simulação foi de 540 segundos e repetimos a mesma três vezes. As mensagens foram simuladas com pacotes de 500 bytes. A duração do interesse é de 150 segundos. O modelo de dissipação de energia adotado foi o mesmo utilizado em [Heinzelman et al., 2002]. A energia inicial dos nós foi ajustada para 1,5J. Foram escolhidas duas métricas para avaliar o desempenho da nossa proposta em relação ao protocolo Directed Diffusion: mapa de energia da rede e o consumo de energia. O mapa de energia da rede mostra a energia residual de cada nó sensor. O consumo de energia mede a taxa de energia total disponível em todos nós da rede Resultados Obtidos As distribuições energéticas da rede no tempo t=450s são mostradas nas figuras 5 e 6. Analisando a superfície observamos os seguintes resultados: no Directed Diffusion (Figura 5), a energia é consumida em todos os nós da rede, por isso, pode-se observar que a malha encontra-se posicionada em um nível mais baixo que o da nossa proposta

9 (Figura 6). Isso ocorre devido aos broadcasts periódicos para a reconstrução de rotas no Directed Diffusion, enquanto que na nossa proposta, os broadcasts são limitados a região geocast e direcionados a região de interesse. Figura 5. Mapa de energia (Directed Diffusion) Figura 6. Mapa de energia (Directed Diffusion + Abordagem Geocast) As depressões apresentadas nas figuras 5 e 6 referem-se à região entre o sink e o nó fonte. Percebe-se que com relação ao estado de energia inicial dos nós (1,5J) e não em relação ao posicionamento da malha, a nossa proposta apresenta uma depressão menos acentuada em decorrência do mecanismo de seleção de rotas utilizado, que propicia um balanceamento do consumo de energia. Figura 7. Consumo de energia

10 A Figura 7 mostra que o consumo de energia de toda a rede é reduzido utilizando nossa proposta. Isso é conseguido devido ao uso da abordagem geocast e do mecanismo de seleção de rotas, que escolhe o caminho que possui maior energia residual com menor número de saltos. Dessa forma, verifica-se que o algoritmo de roteamento apresentado neste trabalho objetiva reduzir o consumo de energia da rede. A proposta consiste na modificação do protocolo do Directed Diffusion. Foram implementadas no protocolo original duas modificações: a primeira é uma abordagem geocast e a segunda é um mecanismo de seleção de rotas. As modificações têm o objetivo de reduzir a inundação realizada pelo Directed Diffusion para recuperar caminhos quebrados e estabelecer a melhor rota para entrega do evento coletado. A avaliação da proposta por meio de simulação demonstrou que a utilização da abordagem geocast e do mecanismo de seleção de rotas apresenta resultados positivos para reduzir e balancear o consumo de energia da rede Simulação Anos atrás, Uzi Landman e seus colegas da Universidade da Georgia, Estados Unidos, descobriram algumas das regras que explicam porque um metal não-reativo como o ouro funciona como um catalisador quando ele se uni em agrupamentos de alguns poucos átomos. Eles não se utilizaram de experimentos reais com porções do metal precioso. Ao invés disso, eles simularam em computador e descobriram que o ouro é um catalisador muito efetivo quando se encontra na forma de partículas que contenham entre 8 e 24 átomos. Eles também descobriram que a absorção de cargas elétricas pelo metal tem um papel crucial em seu funcionamento como catalisador [Zhang et al., 2008]. Apenas seis anos mais tarde, a tecnologia disponibilizou o aparato técnico que permitiu que a equipe realizasse testes de suas previsões experimentalmente. A experiência mostrou que seus cálculos estavam corretos. Landman e seus colegas utilizaram-se da metodologia científica para validar seu trabalho. Tal metodologia orienta-se sobre os seguintes passos: observação, formulação de pergunta, formulação de hipótese, experiência controlada e análise conclusiva dos dados. Com base no trabalho de Landman e na realidade atual, percebe-se que a simulação tornou-se uma ferramenta importante para a verificação de uma hipótese formulada. Geralmente, o experimento valida uma hipótese. Entretanto, em cenários de redes, uma hipótese pode ser validada utilizando-se de um ou mais dos seguintes métodos: analítico, simulação e experimento controlado; como pode-se observar na figura 8.

11 Figura 8. Etapas do método científico para cenários de rede. Para a validação de uma hipótese, o modelamento matemático analítico se utiliza de modelos matemáticos e equações, já o experimento, utiliza-se de uma situação real controlada. Nas simulações, cria-se um modelo virtual próximo à realidade onde se pode, com o auxílio de computador, testar e colher resultados antes de conduzir algum experimento real. Para a realização de simulações em redes, são utilizadas ferramentas de simulação ou simuladores. Destes, podemos citar o NS2 [NS2 2008], o NS-3[NS3 2009] e o [Sinalgo 2007] Simulação com framework Sinalgo Abordaremos neste item, um framework para simulação e validação de algoritmos de rede, o Sinalgo. Diferentemente de outros simuladores, este tem um foco voltado para os algoritmos de rede, abstraindo-se, desta forma, das camadas inferiores à de rede presentes na pilha de protocolos, tais como a camada de enlace, por exemplo. Desenvolvido em Java, o Sinalgo permite uma prototipagem rápida de algoritmos de rede, possibilitando a realização de simulações com até nós em tempo aceitável, o que lhe confere um excelente desempenho. É possível, também, simular cenários em duas ou três dimensões. Quanto ao tipo de simulação, pode-se realizar simulações síncronas, onde todos os eventos têm seus inícios sincronizados com um clock, similar ao clock de um processador de computador, por exemplo; ou assíncronas, onde os eventos dependem uns dos outros para seus inícios e realizações. Publicado sobre a licença BSD, esta ferramenta pode ser utilizada gratuitamente, se respeitados os direitos de tal licença. Do ponto de vista da interação com o usuário, o Sinalgo oferece dois modos de simulação: modo GUI, que oferece uma interface gráfica; e o modo Batch, que possui apenas linhas de comando e quase nenhuma interação com o usuário. O modo GUI é muito útil para observar o funcionamento do algoritmo e interagir com o mesmo em tempo de execução, o que não é possível com o modo Batch. Este último é ideal para colher resultados rapidamente, uma vez que sem a interface gráfica, o desempenho da

12 simulação aumenta. O modo Batch deve ser utilizado quando já houver um projeto totalmente livre de falhas e uma simulação bem definida e automática. Figura 9a. Modo GUI Figura 9b. Modo Batch Basicamente, para simular algo simples e básico com o Sinalgo, é necessário conhecer apenas 3 classes deste framework. Estas classes são abstratas, portanto, deve- se criar extensões para elas a fim de que assumam um comportamento desejado para cada simulação. Estas classes são: Node, Message e Timer. A) Node Esta classe representa qualquer entidade de rede, que no escopo deste trabalho é representada pelos nós sensores. Então, seja para nós sensores fonte ou para o sink, ambas as implementações devem ser extensões desta classe. Vejamos alguns dos atributos e métodos mais importantes: Tabela 3.1. Atributos importantes da classe Node e suas s descrições. Atributo Descrição int ID Connections outgoingconnections Um número único que é dado automaticamente a cada objeto quando criado. Coleção de objetos Edge, que representam, cada um, a conexão entre dois nodos. Tabela Métodos importantes da classe Node e suas descrições. Método void send(message m, Node target) throws NoConnectionException; void senddirect(message msg, Node target); void broadcast(message m); Position getposition(); void setcolor(color c); Descrição Envia uma mensagem a um nó vizinho. Envia uma mensagem a qualquer nó da rede, independente da existência de conectividade. Envia uma mensagem a todos os nós vizinhos. Retorna a posição corrente do nó Altera a cor do nó

13 Color getcolor(); void draw(...); Retorna a cor do nó Implementa a maneira como o nó será desenhado na GUI. Você pode sobrescrever este método em sua subclasse de sinalgo.node.node para definir um desenho customizado. B) Message Esta classe abstrai o conceito de mensagem e pacote que são utilizados no mundo real. Como em uma situação real, na simulação, toda e qualquer informação trocada entre os nós deve ser por meio de mensagens. A classe Message não possui atributos, pois estes atributos correspondem aos cabeçalhos e informações contidas em um pacote de rede. Desta forma, estes atributos são específicos de cada aplicação e tipo de mensagem. Vejamos na tabela abaixo suas características: Tabela 3.3. Métodos importantes da classe Message e suas descrições. Método Descrição Message clone() Utilizado para clonar os atributos do objeto. Este método é chamado quando a mensagem é enviada a outro nó. C) Timer Esta classe abstrai um temporizador que, diferentemente dos nativos do Java, possui métodos para se trabalhar com o tempo de simulação, que é, geralmente, diferente do tempo real. A classe Timer também não possui atributos visíveis e significativos. Alguns métodos importantes e suas funções podem ser observados na tabela abaixo: Tabela 3.4. Métodos importantes da classe Timer e suas descrições. Método Descrição void fire() void startglobaltimer(double relativetime) void startrelative(double relativetime, Node n) Este método deve ser sobrescrito. Ele deve conter a tarefa a ser executada quanto este timer for disparado. Este método dispara a ação de acordo com o tempo relativo, ou seja, se o relativetime = 10, então a ação iniciará no round 10. Dispara a ação em um tempo relativo a determinado nó Instalando o Sinalgo O framework constitui um projeto Java que deve ser importado por qualquer IDE para programação Java. Neste capítulo, será utilizado como IDE padrão o Eclipse [Eclipse 2009]. Recomenda-se a utilização da versão regular release do Sinalgo que pode ser adquirida em [Sinalgo 2007]. A seguir, veremos os passos para realizar a instalação do Sinalgo. Passo 1 Instalar o Sinalgo. Considerando que o Eclipse já encontra-se instalado, deve-se, neste passo, realizar o download da versão do Sinalgo descrita anteriormente. De posse do projeto

14 compactado, o mesmo deve ser descompactado em qualquer diretório do sistema operacional. Recomenda-se que seja descompactado dentro do workspace do Eclipse. Passo 2 Importar o projeto instalado para o Eclipse. Com o projeto Sinalgo descompactado e de posse do caminho de seu diretório, deve-se neste momento, fazer com que o Eclipse importe o projeto descompactado. Para isso, deve-se iniciar o Eclipse e criar um novo projeto conforme mostra a figura 10. Figura 10. Criação de um novo projeto Eclipse. Na tela subseqüente, deve-se escolher Java Project e clicar em next. Em seguida, conforme mostra a figura 11, define-se um nome para o projeto e marca-se a opção Create project from existing source selecionando o diretório onde o projeto Sinalgo foi descompactado. Clica-se em finish para finalizar este passo. Figura 11. Criação de um novo projeto: Detalhes. Passo 3 Executar o Sinalgo pela primeira vez. Deve-se clicar com o botão direito na pasta src dentro da aba Project Explorer ou Navigator do Eclipse, e escolher a opção Run As Java Application. Em seguida, na tela Select Java Application, seleciona-se a classe Run e clica-se em OK Um Modelo de Simulação Básico A simulação tratada neste item é simples e deve ser considerada apenas para efeito didático. O objetivo é compreender como deve-se relacionar as classes, descritas no item anterior, a fim de alcançar um resultado desejado.

15 A simulação que será mostrada neste item deve atender aos seguintes requisitos: Possuir um sink e alguns nós fonte. Para que haja rotas até o nó sink, este deve criá-las. Para isso, clicando-se com o botão direito sobre o sink, deve haver uma opção construir roteamento até o sink para que se inicie o processo de construção destas rotas. A construção de rotas deve se dar da seguinte forma: cada nó fonte deve possuir em sua tabela de roteamento, apenas uma rota e esta deve ser apontada para o sink; este deve enviar, em broadcast, uma mensagem especial de construção de rotas; a cada nova construção de rotas, o sink deverá enviar uma mensagem de construção de rotas distinta das anteriores já enviadas; cada nó fonte ao receber esta mensagem, deve apontar o vizinho imediato que lhe entregou primeiro esta mensagem como rota até o nó sink e esta deve ser repassada adiante em forma de broadcast; para evitar loop, caso a mesma mensagem seja recebida e a rota já estiver estabelecida, a mesma deve ser descartada e não deve ser repassada. Clicando-se com o botão direito sobre o nó fonte, deve haver uma opção enviar mensagem para que seja enviada uma mensagem até o nó sink. O roteamento de mensagens até o sink deve funcionar da seguinte maneira: de posse de uma mensagem, sua ou de outro nó fonte, o nó deve enviá-la para o vizinho correspondente a uma rota, presente em sua tabela de roteamento, que aponta para o sink. Caso não haja rota para o sink em sua tabela de roteamento, o nó deverá descartar esta mensagem e nada fazer. No passo-a-passo a seguir, será montada uma simulação básica atendendo ao requisito acima. No passo 1, será explanado como criar um novo projeto. No passo 2, serão criadas as mensagens que serão utilizadas na simulação. No passo 3, será criado um temporizador que disparará uma mensagem quando o usuário clicar em algum nó e escolher alguma opção correspondente ao envio de mensagem, seja ela de construção de rotas, por parte do sink, seja ela uma mensagem comum, por parte do nó fonte. O passo 4 mostrará como implementar o nó sink. No passo 5 é implementado o nó fonte. Por último, o passo 6 mostrará como executar uma simulação e como visualizar seu funcionamento. Passo 1 Criando um novo projeto Com apenas uma instalação do Sinalgo, é possível realizar várias simulações distintas. Para distinguir entre as diferentes simulações, os arquivos pertencentes a uma simulação são agrupados em um projeto que deve estar dentro do diretório src/projects do classpath do Sinalgo. O nome do projeto é definido pelo nome do diretório contido nesse caminho. Para criar-se então um novo projeto, basta realizar uma copia do projeto src/projects/template para src/projects/ercemapisimulacaobasica, por exemplo, e utilizar a estrutura já pronta. Assim, o projeto automaticamente foi nomeado como ercemapisimulacaobasica. Agora, devem ser corrigidos os imports de duas classes, a classe projects. ercemapisimulacaobasica.customglobal.java e projects. ercemapisimulacaobasica.logl.java. Para isso, altera-se estes dois arquivos incluindo a linha de código:

16 Código: package projects.template para Código: package projects.ercemapisimulacaobasica Feito isto, tem-se agora um esqueleto de projeto pronto para ser modificado para atender aos requisitos deste item. Passo 2 Implementar as mensagens Para atender aos requisitos, acima já descritos, serão utilizados dois tipos de mensagem: uma mensagem especial para construção de rotas, que dever ser utilizada sempre que o nó sink desejar construir ou reconstruir as rotas em direção a si mesmo, e uma mensagem comum, que deve ser utilizada sempre que um nó fonte queira se comunicar com o nó sink. Para isso, serão criadas, respectivamente, as classes RoteamentoMessage e ComumMessage para representar estes tipos de mensagens. Ambas as classes, devem possuir algum atributo que referencie o último nó por onde a mensagem passou, que será chamado de idlast. Em especial, a classe RoteamentoMessage deve possuir um atributo que será usado para a comparação entre mensagens, ou seja, mensagens com o mesmo valor neste atributo serão consideradas mensagens iguais, este atributo será chamado serialnum. Sempre que um novo processo de construção de roteamento for iniciado, uma mensagem com um novo serialnum deve ser criada e enviada. Toda e qualquer classe de mensagem no Sinalgo, deve ser uma herança da classe abstrata Message e deve ser criada no pacote projects.<nome do seu projeto>.nodes.messages. Desta forma, seguem abaixo os exemplos das classes comentadas neste passo: Código: package projects.ercemapisimulacaobasica.nodes.messages; import sinalgo.nodes.messages.message; public class ComumMessage extends Message { /** * Id do último nó que repassou a mensagem. */ protected int idlast; /** * Id do nó que originou a mensagem */ protected int idorigem; public ComumMessage(int idorigem) { super(); this.idorigem = idorigem; this.idlast = idorigem; protected ComumMessage(int idorigem, int idlast) { super(); this.idorigem = idorigem; this.idlast = idlast;

17 @Override public Message clone() { return new ComumMessage(idOrigem, idlast); public int getidlast() { return idlast; public int getidorigem() { return idorigem; public void setidlast(int idlast) { this.idlast = idlast; Código: package projects.ercemapisimulacaobasica.nodes.messages; import sinalgo.nodes.messages.message; public class RoteamentoMessage extends ComumMessage { /** * Variável é incrementada a cada novo objeto criado por métodos * públicos. */ private static int contador; /** * Número usado para saber se uma mensagem é igual à outra. Será igual se * possuir o mesmo serialnum. Isso é necessário por conta do método * clone(). */ private int serialnum; public RoteamentoMessage(int idorigem) { super(idorigem); this.serialnum = contador++; protected RoteamentoMessage(int serialnum, int idorigem, int idlast) { super(idorigem, idlast); this.serialnum = public Message clone() { return new RoteamentoMessage(serialNum, idorigem, public boolean equals(object obj) { return obj instanceof RoteamentoMessage && serialnum == ((RoteamentoMessage) obj).getserialnum(); protected int getserialnum() { return serialnum;

18 Passo 3 Implementar um temporizador para o envio de mensagens No Sinalgo por padrão, as simulações são feitas no modo síncrono, o que significa que todos os eventos acontecem sincronizados com uma unidade mínima de tempo em uma simulação: o round. Não há como dividir um round como podemos dividir um segundo em décimos de segundo, por exemplo. Desta forma, quando a simulação está em execução, existem ações que são disparadas em um round, mas seu efeito não pode ocorrer neste mesmo round. Existem, também, casos em que o usuário necessita interagir com a simulação. Nestes últimos, o Sinalgo não permite que esta interação ocorra com a simulação em andamento. Assim, faz-se necessário uma pausa na mesma para que ocorra a interação. Se esta interação disparar algum comportamento em um nó, por exemplo, este só poderá executar o comportamento quando a simulação retomar sua execução. Para estes e outros casos mais específicos, devemos criar um temporizador para agendar o inicio de um comportamento, utilizando-se heranças da classe abstrata Timer. Em nossos requisitos de simulação, existem duas interações do usuário com a simulação para enviar mensagens. Para isso, deve-se criar um ou mais temporizadores. Estas interações, caracterizam dois tipos e sentidos de envio de mensagens, um por parte do sink, que enviará uma mensagem de construção de rotas no sentido do nó sink para todos os nós fonte; e outro por parte do nó fonte que enviará uma mensagem comum no sentido do nó fonte em direção ao sink. Assim, percebe-se que no primeiro caso, o sink deve enviar uma mensagem para quem estiver ao seu redor, o que caracteriza um broadcast, que é representado no Sinalgo através método broadcast() da classe Node. Já no segundo, o nó fonte deve enviar uma mensagem apenas a um nó vizinho, o que caracteriza um unicast, representado no Sinalgo através do método send() da classe Node. Para criar-se uma classe que atenda a estas duas necessidades, pode-se seguir o exemplo abaixo: Código: package projects.ercemapisimulacaobasica.nodes.timers; import sinalgo.nodes.node; import sinalgo.nodes.messages.message; import sinalgo.nodes.timers.timer; public class EnvioTimer extends Timer { private Message msg; private boolean isbroadcast; private Node destino; /** * Este construtor cria um timer que enviará a mensagem via * broadcast, ou seja, todos os vizinhos do nó que está enviando a * receberam. * msg * Mensagem a ser enviada em broadcast */ public EnvioTimer(Message msg) { this.msg = msg; this.isbroadcast = true;

19 /** * Este construtor criar um timer que enviará a mensagem * diretamente ao destino, sem que outros a recebam. * msg * Mensagem a ser enviada destino * Nó vizinho para onde a mensagem deverá seguir. */ public EnvioTimer(Message msg, Node destino) { this.msg = msg; this.destino = destino; this.isbroadcast = public void fire() { if (isbroadcast) node.broadcast(msg); else node.send(msg, destino); Passo 4 Implementar o nó sink De uma maneira geral, em RSSF, o papel do nó sink é de receber e concentrar todas as informações geradas pelos nós fonte. Porém, em muitos casos, o nó sink também envia comandos à rede. Obedecendo aos requisitos desta simulação, o nó sink proposto deve utilizar-se de ambos os papéis. Neste passo, devemos implementar um mecanismo para envio de mensagens e outro para o recebimento. Para o recebimento, recomenda-se fortemente a criação de um método para tratar cada tipo de mensagem, onde, a escolha de cada método é feita dentro do método handlemessages() da classe Node, com base nos diferentes tipos de mensagens, conforme mostra o exemplo deste passo. Já para o envio de mensagens, deve-se utilizar alguma forma para que o usuário clique com o botão direito sobre um nó e escolha uma opção correspondente ao método de envio de uma mensagem de construção de rotas. Para isso, pode-se utilizar a que faz com que apareça uma determinada opção para o usuário (figura 12) e que, escolhendo-a, o método que possui esta notação é executado. Figura 12. Exemplo de uso da

20 Conforme abordado no passo anterior, para que haja a interação acima, é necessário pausar a simulação, interagir e retomar a execução da simulação novamente. No entanto, a faz com que o método que a possui, seja executado no momento exato do clique, ou seja, quando a simulação está pausada. Ao clicar na opção Construir rotas até o sink, deve ser realizado um envio de mensagem para todos os vizinhos. Para isso, o método broadcast() deve ser chamado. Porém, se ele for chamado com a simulação pausada, causará um erro crítico. Dessa forma, faz-se necessário o uso de um temporizador. O temporizador utilizado será o do passo anterior, onde este é quem invocará o método broadcast(). Baseado nos requisitos e comentários deste passo, pode-se utilizar o código abaixo: Código: import java.awt.graphics; import projects.*; import sinalgo.*; public class Sink extends Node { /** * Sobrescrevendo este método, podemos mudar a forma como o nó aparecerá * na GUI durante a simulação. public void draw(graphics g, PositionTransformation pt, boolean highlight) { drawnodeassquarewithtext(g, pt, highlight, "Sink", 16, Color.WHITE); = "Construir rotas até o sink") public void enviarroteamentomessage() { Message m = new RoteamentoMessage(ID); EnvioTimer timer = new EnvioTimer(m); timer.startrelative(1, public void handlemessages(inbox inbox) { while (inbox.hasnext()) { Message msg = inbox.next(); if (msg instanceof RoteamentoMessage) tratarroteamentomessage((roteamentomessage) msg); else if (msg instanceof ComumMessage) tratarcomummessage((comummessage) msg); private void tratarcomummessage(comummessage msg) { // Um exemplo de como exibir algum texto no output da GUI. Tools.appendToOutput("Sink recebeu msg de " + msg.getidorigem() + "\n"); private void tratarroteamentomessage(roteamentomessage msg) { // Aqui fica um exemplo de como tratar mensagens específicas.

21 Passo 5 Implementar o nó fonte Seguindo o requisito que explica como deve ser o roteamento nesta simulação, cria-se um atributo na classe fonte chamado rotasink, que corresponde a uma referência para um nó vizinho por onde devem ser encaminhadas as mensagens cujo destino é o sink. A construção em si do roteamento acontece nó a nó através do método tratarroteamentomessage(). O nó recebe a mensagem especial de roteamento, verifica se é igual à anterior. Se não for, armazena a referência do nó vizinho que enviou a mensagem no atributo rotasink, onde este, servirá de rota para qualquer mensagem destinada ao sink. Após isso, o nó repassa a mensagem para que os próximos nós também possam descobrir uma rota para o nó sink. Em RSSF, é comum haver um trabalho colaborativo entre os nós da rede, onde ora agem como origem de informações, ora agem como rota para seus vizinhos enviarem mensagens utilizando uma comunicação multi-salto. Nesta simulação não é diferente, portanto, deve-se implementar dois comportamentos distintos: originar uma mensagem enviando-a em direção ao destino final e repassar mensagens originadas por outros nós. Para originar a mensagem, utiliza-se a um método a ser disparado e um timer, como já descritos no passo anterior. Já para repassar uma mensagem comum recebida de um nó vizinho, utilizou-se o método tratarcomummessage(), que é chamado durante a manipulação de mensagens novas recebidas pelo método handlemessages(). Código: package projects.ercemapisimulacaobasica.nodes.nodeimplementations; import java.awt.*; import projects.ercemapisimulacaobasica.nodes.*; import sinalgo.configuration.wrongconfigurationexception; import sinalgo.gui.transformation.positiontransformation; import sinalgo.nodes.*; import sinalgo.tools.tools; public class Fonte extends Node { /** * Referência para o nó vizinho que representa um caminho para o sink. */ Node rotasink; /** * Última mensagem de roteamento recebida. */ RoteamentoMessage public void draw(graphics g, PositionTransformation pt, boolean highlight) { drawnodeasdiskwithtext(g, pt, highlight, "" + ID, 16, = "Enviar mensagem ao Sink") public void EnviarComumMessage() { // Se houver rota if (rotasink!= null) { ComumMessage msg = new ComumMessage(ID);

22 EnvioTimer timer = new EnvioTimer(msg, rotasink); timer.startrelative(1, public void handlemessages(inbox inbox) { while (inbox.hasnext()) { Message msg = inbox.next(); if (msg instanceof RoteamentoMessage) tratarroteamentomessage((roteamentomessage) msg); else if (msg instanceof ComumMessage) tratarcomummessage((comummessage) msg); private void tratarcomummessage(comummessage msg) { // Se houver rota if (rotasink!= null) // repassa a mensagem em direção ao sink send(msg, rotasink); private void tratarroteamentomessage(roteamentomessage msg) { // Se a mensagem não for igual a última recebida, então if (!msg.equals(lastroteamentomessage)) { // Atualiza a rota para o sink rotasink = Tools.getNodeByID(msg.getIdLast()); // Atualiza a mensagem msg.setidlast(id); // Repassa broadcast(msg); // Guarda a referencia lastroteamentomessage = msg; Passo 6 Executar a simulação e observar seu funcionamento. Ao seguir os passos anteriores, obtém-se uma simulação básica que atende aos requisitos propostos neste item. No entanto, ao executar tal simulação, não será possível observar o que realmente está ocorrendo durante a execução. Para visualizar os acontecimentos, o código abaixo deve ser incluído no arquivo de configurações src/projects/ercemapisimulacaobasica/config.xml dentro do nó Document/Framework. Código: <!-- ********** Configurações de Animação ************ --> <!--Desenha um envelope para cada mensagem envida--> <showmessageanimations value="true" /> <!--Largura do envelope (quando a animação de mensagem está ligada)--> <messageanimationenvelopewidth value="30.0" /> <!--Altura do envelope (quando a animação de mensagem está ligada)--> <messageanimationenvelopeheight value="20.0" /> <!--Cor do envelope (quando a animação de mensagem está ligada)--> <messageanimationenvelopecolor value="r=255,g=255,b=0" />

23 Feito esta inclusão, ao se executar o Sinalgo clicando em Run, no Eclipse, é possível construir a árvore de roteamento e enviar mensagens ao sink. Perceba que a velocidade do envelope ao trafegar na rede deve está alta. Então, para reduzi-la, procure no arquivo de configuração pela chave MessageTransmission e altere o atributo ConstantTime. Quanto maior o valor deste atributo, menor a velocidade do tráfego da mensagem Modelo de Simulação Utilizando uma Abordagem Geocast Para uma abordagem geocast, é necessária a utilização de coordenadas geográficas. Veremos adiante como fazer isso utilizando o Sinalgo. Neste item, será utilizada toda a simulação do item anterior, onde serão feitas algumas modificações nas classes Sink, RoteamentoMessage e Fonte, que devem atender a todos os requisitos do item e ao requisito abaixo: Ao receber uma mensagem especial de roteamento, o nó deverá consultar, com base nas informações da mensagem, se pertence à zona geocast ou não. Caso pertença, aplica-se o processo de construção de rotas do item anterior, caso contrário, a mensagem deve ser descartada. Para que a lógica geocast seja implementada totalmente, o funcionamento se dará da seguinte forma: o sink instanciará um objeto Zona Geocast com as informações que este objeto utilizará para calcular a zona geocast. Em seguida, ele deve colocar este objeto dentro de uma mensagem do tipo RoteamentoMessage e enviá-la em broadcast para a rede inteira; quando um nó fonte receber esta mensagem, este deve utilizar o objeto Zona Geocast, informando sua posição geográfica a ele, para testar se pertence ou não à zona geocast. Caso afirmativo, o nó dará continuidade ao procedimento de construção de rota normalmente, caso contrário, descartará a mensagem e nada mais fará até receber outra mensagem. No passo-a-passo a seguir, será montada uma simulação utilizando uma abordagem geocast, atendendo aos requisitos do item anterior e ao único deste item. No passo 1, serão feitas algumas orientações para reutilizar a simulação do item anterior. No passo 2, será mostrada uma classe que implementa toda a lógica da zona geocast. No passo 3, será realizada uma modificação na classe Sink. No passo 4, serão feitas as alterações necessárias na classe RoteamentoMessage. No passo 5, será realizada uma modificação na classe Fonte. No passo 6, será mostrado como testar a simulação. Passo 1 Reutilizar uma simulação Para se reutilizar a simulação do item anterior, pode-se seguir o passo 1 daquele item. Porém, ao invés de utilizar como projeto fonte o projeto src/projects/template, utilize a simulação básica anteriormente implementada. Passo 2 Implementar o objeto Zona Geocast A idéia principal deste passo é implementar toda a lógica de como calcular uma zona geocast e realizar testes para saber se uma dada coordenada pertence ou não a uma zona geocast. Esta lógica estará dentro de um objeto cuja classe foi aqui denominada de Zona Geocast. Segue abaixo o código da classe com a lógica da zona geocast.

24 Código: package projects.ercemapisimulacaogeocast.util; import java.awt.geom.point2d; import java.util.arraylist; import sinalgo.nodes.position; public class ZonaGeocast { private double r, d1, d2; private Point2D.Double a1, a2; private Point2D.Double[] vertices; private double[] eqa1, eqb1; private ArrayList<ZonaGeocast> gbs; public ZonaGeocast(double r, Point2D.Double a1, Point2D.Double a2) { eqa1 = geteqgeralreta(a1, a2); eqb1 = geteqgeralretaperpendicular(a1, a2); d1 = r; d2 = (2 * r + getdistanciaeuclidiana(a1, a2)) / 2; public ZonaGeocast(double r, Position a1, Position... a2) { this(r, new Point2D.Double(a1.xCoord, a1.ycoord), new Point2D.Double( a2[0].xcoord, a2[0].ycoord)); if (a2.length > 1) { System.out.println(a2 + " " + a2.length); gbs = new ArrayList<ZonaGeocast>(a2.length - 1); for (int i = 1; i < a2.length; i++) { gbs.add(new ZonaGeocast(r, a1, a2[i])); private double calcularcoeficienteangular(point2d.double A, Point2D.Double B) throws CoeficienteAngularException { if (A.x - B.x == 0) throw new CoeficienteAngularException(A, B); return (B.y - A.y) / (B.x - A.x); private double getdistanciaeuclidiana(point2d.double a1, Point2D.Double a2) { return Math.sqrt(Math.pow(a1.x - a2.x, 2) + Math.pow(a1.y - a2.y, 2)); public double getdistanciapontoreta(point2d.double ponto, double[] reta){ double a = reta[0], b = reta[1], c = reta[2], x = ponto.x, y = ponto.y; return Math.abs(a * x + b * y + c) / Math.sqrt(a * a + b * b); /** * Retorna a equação geral da reta ax + by + c. * A * Ponto A(x,y) B * Ponto B(x,y) Um array de 3 posições correspondentes a 'a', 'b' e 'c', * respectivamente, na equação geral da reta. CoeficienteAngularException

25 * Caso os pontos informados gerem uma reta paralela ao eixo * das ordenadas. */ private double[] geteqgeralreta(point2d.double A, Point2D.Double B) { try { double[] r = new double[3]; // coeficiente angular double k = calcularcoeficienteangular(a, B); // a = k; r[0] = k; // calculo do c r[2] = (k * (-1 * A.x)) + A.y; // calculo do b r[1] = -1; return r; catch (CoeficienteAngularException e) { // então é uma paralela ao eixo das ordenadas (y) return new double[] { 1, 0, (-1 * A.x) ; private double[] geteqgeralretaperpendicular(point2d.double A, Point2D.Double B) { try { double[] r = new double[3]; // coeficiente angular double k = -1 / calcularcoeficienteangular(a, B); // a = k; r[0] = k; // calculo do c Point2D.Double pm = getpontmedio(a, B); r[2] = (k * (-1 * pm.x)) + pm.y; // calculo do b r[1] = -1; return r; catch (CoeficienteAngularException e) { // então é uma paralela ao eixo das ordenadas (y) return new double[] { 0, 1, (-1 * A.y) ; private Point2D.Double getpontmedio(point2d.double A, Point2D.Double B) { return new Point2D.Double((A.x + B.x) / 2, (A.y + B.y) / 2); public boolean isinterno(point2d.double x) { return getdistanciapontoreta(x, eqa1) <= d1 && getdistanciapontoreta(x, eqb1) <= d2; public boolean isinterno(position x) { if (gbs == null) return isinterno(new Point2D.Double(x.xCoord, x.ycoord));

26 else { boolean acumulador = false; for (ZonaGeocast gb : gbs) acumulador = acumulador gb.isinterno(x); return isinterno(new Point2D.Double(x.xCoord, x.ycoord)) acumulador; Passo 3 Modificar a classe Sink Seguindo o funcionamento da lógica Geocast, este passo mostrará o que modificar na classe Sink. Será necessário um método, que pergunte qual a coordenada do ponto que indica a direção do geocast, a ser invocado pelo usuário quando este clicar com o botão direito sobre o nó sink. Em seguida, este mesmo método deve criar um objeto Zona Geocast, colocá-lo dentro de uma mensagem do tipo RoteamentoMessage e enviá-lo em broadcast a seu vizinho. Seguindo esta lógica, o código abaixo foi elaborado e deve ser acrescentado à classe Sink. = "Construir rotas com geocast") public void enviarroteamentomessagegeocast() { // Código para colher as coordenadas String resposta = JOptionPane.showInputDialog("Digite as coordenadas X e Y, respectivamente, da direção do geocast separadas por vírgula. ( Ex. 50,50 )"); String[] coordenadasstring = resposta.split(","); int x = Integer.parseInt(coordenadasString[0]); int y = Integer.parseInt(coordenadasString[1]); // Fim código para colher as coordenadas // Criando o gerenciador geocast ZonaGeocast zg = new ZonaGeocast(100.0, getposition(), new Position(x, y, 0)); // Criando a mensagem a ser enviada Message m = new RoteamentoMessage(ID, zg); // Criando o timer para enviar a mensagem EnvioTimer timer = new EnvioTimer(m); // Agendando o envio para o próximo round timer.startrelative(1, this); Passo 4 Modificar a classe RoteamentoMessage Neste passo, deve-se modificar a classe RoteamentoMessage para que as instâncias da mesma possam carregar, dentro de si, um objeto Zona Geocast. Para isso, deve-se acrescentar as seguintes linhas de código: Código: private ZonaGeocast zonageocast; public RoteamentoMessage(int idorigem, ZonaGeocast zonageocast) { super(idorigem); this.zonageocast = zonageocast; this.serialnum = contador++; protected RoteamentoMessage(int serialnum, int idorigem, int idlast, ZonaGeocast zg) { super(idorigem, idlast);

27 this.serialnum = serialnum; this.zonageocast = zg; public ZonaGeocast getgerenciadorgeocast() { return zonageocast; Passo 5 Modificar a classe Fonte A última modificação a ser feita é a da classe Fonte. O nó fonte deve, durante o processo de construção de rotas, testar se pertence ou não à zona geocast. Para que isso aconteça, pode-se modificar a classe Fonte substituindo o método tratarroteamentomessage pelo código abaixo: Código: private void tratarroteamentomessage(roteamentomessage msg) { // Se o nó está numa posição geográfica que satisfaça ao geocast e se a // mensagem não for igual à última recebida, então if ((msg.getgerenciadorgeocast()!= null && msg.getgerenciadorgeocast().isinterno(getposition()) &&!msg.equals(lastroteamentomessage)) (msg.getgerenciadorgeocast() == null &&!msg.equals(lastroteamentomessage))) { // Atualiza a rota para o sink rotasink = Tools.getNodeByID(msg.getIdLast()); // Atualiza a mensagem msg.setidlast(id); // Repassa broadcast(msg); // Guarda a referencia lastroteamentomessage = msg; Passo 6 Testar a simulação Com base nas modificações realizadas nos passos anteriores, pode-se agora direcionar um geocast na simulação proposta. Para isso, execute a simulação e clique com o botão direito sobre o sink e escolha a opção correspondente à construção de rotas com geocast. Surgirá então uma caixa conforme mostra a figura 13. Figura 13. Caixa de entrada das coordenadas do ponto que direciona o Geocast

Estudo de Caso 4.1 Coleta de Estatísticas

Estudo de Caso 4.1 Coleta de Estatísticas 4 Estudo de Caso Com o propósito de melhor apresentar a arquitetura NeMaSA, assim como melhor ilustrar seu funcionamento, dois exemplos práticos de testes desenvolvidos sobre a arquitetura proposta serão

Leia mais

Sistemas distribuídos:comunicação

Sistemas distribuídos:comunicação M. G. Santos marcela@estacio.edu.br Faculdade Câmara Cascudo - Estácio de Sá 16 de abril de 2010 Formas de comunicação Produtor-consumidor: comunicação uni-direccional, com o produtor entregando ao consumidor.

Leia mais

1.6. Tratamento de Exceções

1.6. Tratamento de Exceções Paradigmas de Linguagens I 1 1.6. Tratamento de Exceções Uma exceção denota um comportamento anormal, indesejado, que ocorre raramente e requer alguma ação imediata em uma parte do programa [GHE 97, DER

Leia mais

Micro Mídia Informática Fevereiro/2009

Micro Mídia Informática Fevereiro/2009 Micro Mídia Informática Fevereiro/2009 1 UML Introdução Fases de Desenvolvimento Notação Visões Análise de Requisitos Casos de Uso StarUML Criando Casos de Uso Orientação a Objetos Diagrama de Classes

Leia mais

Anexo III Funcionamento detalhado do Sistema Montador de Autoria

Anexo III Funcionamento detalhado do Sistema Montador de Autoria 1 Sumário Anexo III Funcionamento detalhado do Sistema Montador de Autoria Anexo III Funcionamento detalhado do Sistema Montador de Autoria... 1 1 Sumário... 1 2 Lista de Figuras... 5 3 A Janela principal...

Leia mais

Fundamentos de Redes de Computadores. Elementos de Redes Locais

Fundamentos de Redes de Computadores. Elementos de Redes Locais Fundamentos de Redes de Computadores Elementos de Redes Locais Contexto Implementação física de uma rede de computadores é feita com o auxílio de equipamentos de interconexão (repetidores, hubs, pontos

Leia mais

Guia de Fatores de Qualidade de OO e Java

Guia de Fatores de Qualidade de OO e Java Qualiti Software Processes Guia de Fatores de Qualidade de OO e Java Versã o 1.0 Este documento só pode ser utilizado para fins educacionais, no Centro de Informática da Universidade Federal de Pernambuco.

Leia mais

PLATAFORMA DE DESENVOLVIMENTO PINHÃO PARANÁ MANUAL DE UTILIZAÇÃO DO CVS NO ECLIPSE

PLATAFORMA DE DESENVOLVIMENTO PINHÃO PARANÁ MANUAL DE UTILIZAÇÃO DO CVS NO ECLIPSE PLATAFORMA DE DESENVOLVIMENTO PINHÃO PARANÁ MANUAL DE UTILIZAÇÃO DO CVS NO ECLIPSE Agosto 2007 Sumário de Informações do Documento Tipo do Documento: Manual Título do Documento: MANUAL DE UTILIZAÇÃO DO

Leia mais

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos MÓDULO 7 Modelo OSI A maioria das redes são organizadas como pilhas ou níveis de camadas, umas sobre as outras, sendo feito com o intuito de reduzir a complexidade do projeto da rede. O objetivo de cada

Leia mais

Manual do Usuário 2013

Manual do Usuário 2013 Manual do Usuário 2013 MANUAL DO USUÁRIO 2013 Introdução Um ambiente virtual de aprendizagem é um programa para computador que permite que a sala de aula migre para a Internet. Simula muitos dos recursos

Leia mais

MANUAL RASTREAMENTO 2013

MANUAL RASTREAMENTO 2013 MANUAL RASTREAMENTO 2013 Visão Geral O menu geral é o principal módulo do sistema. Através do visão geral é possível acessar as seguintes rotinas do sistema: Sumário, localização, trajetos, últimos registros.

Leia mais

Para que o NSBASIC funcione corretamente em seu computador, você deve garantir que o mesmo tenha as seguintes características:

Para que o NSBASIC funcione corretamente em seu computador, você deve garantir que o mesmo tenha as seguintes características: Cerne Tecnologia www.cerne-tec.com.br Conhecendo o NSBASIC para Palm Vitor Amadeu Vitor@cerne-tec.com.br 1. Introdução Iremos neste artigo abordar a programação em BASIC para o Palm OS. Para isso, precisaremos

Leia mais

Professor: Macêdo Firmino Disciplina: Sistemas Operacionais de Rede

Professor: Macêdo Firmino Disciplina: Sistemas Operacionais de Rede Professor: Macêdo Firmino Disciplina: Sistemas Operacionais de Rede O sistema de nome de domínio (DNS) é um sistema que nomeia computadores e serviços de rede e é organizado em uma hierarquia de domínios.

Leia mais

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto Engenharia de Software I Informática 2009 Profa. Dra. Itana Gimenes RUP: Artefatos de projeto Modelo de Projeto: Use-Case Realization-projeto

Leia mais

Na Figura a seguir apresento um exemplo de uma "mini-tabela" de roteamento:

Na Figura a seguir apresento um exemplo de uma mini-tabela de roteamento: Tutorial de TCP/IP - Parte 6 - Tabelas de Roteamento Por Júlio Cesar Fabris Battisti Introdução Esta é a sexta parte do Tutorial de TCP/IP. Na Parte 1 tratei dos aspectos básicos do protocolo TCP/IP. Na

Leia mais

s em Me d iç d l KlimaLogg Pro SOFTWARE

s em Me d iç d l KlimaLogg Pro SOFTWARE KlimaLogg Pro Ma n In s tr Soluç u çõ s em Me es ão d iç õe d l a u e SOFTWARE Software KlimaLogg Pro Registrador de umidade e temperatura Índice Visão geral...03 Guia Rápido...03 Configuração do dispositivo

Leia mais

Manual SAGe Versão 1.2 (a partir da versão 12.08.01)

Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Submissão de Relatórios Científicos Sumário Introdução... 2 Elaboração do Relatório Científico... 3 Submissão do Relatório Científico... 14 Operação

Leia mais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Arquiteturas Capítulo 2 Agenda Estilos Arquitetônicos Arquiteturas de Sistemas Arquiteturas Centralizadas Arquiteturas Descentralizadas Arquiteturas

Leia mais

CAMADA DE REDES. Fabrício de Sousa Pinto

CAMADA DE REDES. Fabrício de Sousa Pinto CAMADA DE REDES Fabrício de Sousa Pinto Introdução 2 Está relacionada a transferência de pacotes da origem para o destino. Pode passar por vários roteadores ao longo do percurso Transmissão fim a fim Para

Leia mais

3. Comunicação em Sistemas Distribuídos

3. Comunicação em Sistemas Distribuídos 3. Comunicação em 3.1.Troca de mensagens As mensagens são objetos de dados cuja estrutura e aplicação são definidas pelas próprias aplicações que a usarão. Sendo a troca de mensagens feita através de primitivas

Leia mais

Aula 30 - Sockets em Java

Aula 30 - Sockets em Java Aula 30 - Sockets em Java Sockets Sockets são estruturas que permitem que funções de software se interconectem. O conceito é o mesmo de um soquete (elétrico, telefônico, etc...), que serve para interconectar

Leia mais

Comunicação de Dados

Comunicação de Dados UNISUL 2013 / 1 Universidade do Sul de Santa Catarina Engenharia Elétrica - Telemática 1 Comunicação de Dados Aula 6 Agenda Projeto da camada de enlace de dados Detecção e correção de erros Protocolos

Leia mais

Redes de Computadores I Conceitos Básicos

Redes de Computadores I Conceitos Básicos Redes de Computadores I Conceitos Básicos (11 a. Semana de Aula) Prof. Luís Rodrigo lrodrigo@lncc.br http://lrodrigo.lncc.br 2011.02 v1 2011.11.03 (baseado no material de Jim Kurose e outros) Algoritmos

Leia mais

Programação de Computadores - I. Profª Beatriz Profº Israel

Programação de Computadores - I. Profª Beatriz Profº Israel Programação de Computadores - I Profª Beatriz Profº Israel Ambiente de Desenvolvimento Orientação a Objetos É uma técnica de desenvolvimento de softwares que consiste em representar os elementos do mundo

Leia mais

Tabela de roteamento

Tabela de roteamento Existem duas atividades que são básicas a um roteador. São elas: A determinação das melhores rotas Determinar a melhor rota é definir por qual enlace uma determinada mensagem deve ser enviada para chegar

Leia mais

Manual de Administração

Manual de Administração Manual de Administração Produto: n-server Versão: 4.9 Versão do Doc.: 1.0 Autor: Glauber Luiz Dias Barbara Data: 22/07/2011 Aplica-se à: Clientes e Revendas Alterado por: Release Note: Detalhamento de

Leia mais

7 Utilização do Mobile Social Gateway

7 Utilização do Mobile Social Gateway 7 Utilização do Mobile Social Gateway Existem três atores envolvidos na arquitetura do Mobile Social Gateway: desenvolvedor do framework MoSoGw: é o responsável pelo desenvolvimento de novas features,

Leia mais

BI Citsmart Fornece orientações necessárias para instalação, configuração e utilização do BI Citsmart.

BI Citsmart Fornece orientações necessárias para instalação, configuração e utilização do BI Citsmart. 16/08/2013 BI Citsmart Fornece orientações necessárias para instalação, configuração e utilização do BI Citsmart. Versão 1.0 19/12/2014 Visão Resumida Data Criação 19/12/2014 Versão Documento 1.0 Projeto

Leia mais

Conecta S_Line. 2.2 Downloads Para instalar o Conecta S_Line, basta acessar www.sline.com.br/downloads.aspx

Conecta S_Line. 2.2 Downloads Para instalar o Conecta S_Line, basta acessar www.sline.com.br/downloads.aspx 1 Introdução O Conecta S_Line permite que o laboratório envie à Central S_Line os resultados de exames gerados pelo Sistema de Informação Laboratorial (LIS) em forma de arquivos digitais. Todo o processo

Leia mais

1 REQUISITOS BÁSICOS PARA INSTALAR O SMS PC REMOTO

1 REQUISITOS BÁSICOS PARA INSTALAR O SMS PC REMOTO 1 ÍNDICE 1 REQUISITOS BÁSICOS PARA INSTALAR O SMS PC REMOTO... 3 1.1 REQUISITOS BASICOS DE SOFTWARE... 3 1.2 REQUISITOS BASICOS DE HARDWARE... 3 2 EXECUTANDO O INSTALADOR... 3 2.1 PASSO 01... 3 2.2 PASSO

Leia mais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Consistência e Replicação Capítulo 7 Agenda Razões para Replicação Replicação como técnica de escalabilidade Modelos de Consistência centrados

Leia mais

Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread.

Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread. 5 THREADS Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread. 5.1 VISÃO GERAL Uma definição mais abrangente para threads é considerá-lo

Leia mais

1 http://www.google.com

1 http://www.google.com 1 Introdução A computação em grade se caracteriza pelo uso de recursos computacionais distribuídos em várias redes. Os diversos nós contribuem com capacidade de processamento, armazenamento de dados ou

Leia mais

Sincronização. Sincronização de Relógios. Relógios Físicos

Sincronização. Sincronização de Relógios. Relógios Físicos Sincronização Embora a comunicação entre processos seja essencial em Sistemas Distribuídos, a sincronização de processos é também muito importante. Por exemplo: o É importante que vários processos não

Leia mais

Consulte a exposição. Qual declaração descreve corretamente como R1 irá determinar o melhor caminho para R2?

Consulte a exposição. Qual declaração descreve corretamente como R1 irá determinar o melhor caminho para R2? 1. Que duas declarações descrevem corretamente os conceitos de distância administrativa e métrica? (Escolha duas.) a) Distância administrativa refere-se a confiabilidade de uma determinada rota. b) Um

Leia mais

Exemplos práticos do uso de RMI em sistemas distribuídos

Exemplos práticos do uso de RMI em sistemas distribuídos Exemplos práticos do uso de RMI em sistemas distribuídos Elder de Macedo Rodrigues, Guilherme Montez Guindani, Leonardo Albernaz Amaral 1 Fábio Delamare 2 Pontifícia Universidade Católica do Rio Grande

Leia mais

Programação Orientada a Objetos em Java. Herança

Programação Orientada a Objetos em Java. Herança Universidade Federal do Amazonas Departamento de Ciência da Computação IEC481 Projeto de Programas Programação Orientada a Objetos em Java Herança Professor: César Melo Slides baseados em materiais preparados

Leia mais

Encaminhamento em redes instáveis. Localização de nós em redes Peer-to-Peer Napster Gnutella Chord

Encaminhamento em redes instáveis. Localização de nós em redes Peer-to-Peer Napster Gnutella Chord Encaminhamento em redes instáveis Encaminhamento em redes Ad Hoc Introdução Descoberta de rotas Manutenção de rotas Localização de nós em redes Peer-to-Peer Napster Gnutella Chord Encaminhamento em redes

Leia mais

A Camada de Rede. A Camada de Rede

A Camada de Rede. A Camada de Rede Revisão Parte 5 2011 Modelo de Referência TCP/IP Camada de Aplicação Camada de Transporte Camada de Rede Camada de Enlace de Dados Camada de Física Funções Principais 1. Prestar serviços à Camada de Transporte.

Leia mais

Capítulo 4 - Roteamento e Roteadores

Capítulo 4 - Roteamento e Roteadores Capítulo 4 - Roteamento e Roteadores 4.1 - Roteamento Roteamento é a escolha do módulo do nó de origem ao nó de destino por onde as mensagens devem transitar. Na comutação de circuito, nas mensagens ou

Leia mais

Análise e Projeto Orientados por Objetos

Análise e Projeto Orientados por Objetos Análise e Projeto Orientados por Objetos Aula 02 Análise e Projeto OO Edirlei Soares de Lima Análise A análise modela o problema e consiste das atividades necessárias para entender

Leia mais

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição Lista de Contas Lista de Contas: Assinatura null Quais são os métodos necessários? class ListaDeContas { void inserir (Conta c) { void retirar (Conta c) { Conta procurar (String num) { Listas de Contas:

Leia mais

Portal Contador Parceiro

Portal Contador Parceiro Portal Contador Parceiro Manual do Usuário Produzido por: Informática Educativa 1. Portal Contador Parceiro... 03 2. Acesso ao Portal... 04 3. Profissionais...11 4. Restrito...16 4.1 Perfil... 18 4.2 Artigos...

Leia mais

Integração de Dados Plataforma Hub Magento E-Commerce

Integração de Dados Plataforma Hub Magento E-Commerce Integração de Dados Plataforma Hub Magento E-Commerce Facilitando Negócios Conectando softwares com Magento Plataforma de E-Commerce Integração de Dados Plataforma Hub Magento E-Commerce Este documento

Leia mais

Roteamento e Comutação

Roteamento e Comutação Roteamento e Comutação Uma estação é considerada parte de uma LAN se pertencer fisicamente a ela. O critério de participação é geográfico. Quando precisamos de uma conexão virtual entre duas estações que

Leia mais

Programação de Computadores - I. Profª Beatriz Profº Israel

Programação de Computadores - I. Profª Beatriz Profº Israel Programação de Computadores - I Profª Beatriz Profº Israel As 52 Palavras Reservadas O que são palavras reservadas São palavras que já existem na linguagem Java, e tem sua função já definida. NÃO podem

Leia mais

Introdução. Geral. Sumário Localização Trajetos Últimos registros Comandos Configurações. Relatórios

Introdução. Geral. Sumário Localização Trajetos Últimos registros Comandos Configurações. Relatórios Introdução Geral Sumário Localização Trajetos Últimos registros Comandos Configurações Relatórios Deslocamentos e paradas Velocidade Telemetria Acessos Falhas de comunicação Cadastro Cliente Subcliente

Leia mais

O que são DNS, SMTP e SNM

O que são DNS, SMTP e SNM O que são DNS, SMTP e SNM O DNS (Domain Name System) e um esquema de gerenciamento de nomes, hierárquico e distribuído. O DNS define a sintaxe dos nomes usados na Internet, regras para delegação de autoridade

Leia mais

3 Ferramenta de Simulação

3 Ferramenta de Simulação 3 Ferramenta de Simulação Para definir a ferramenta de simulação a ser utilizada para implementação do protocolo HIP e para coleta dos resultados de simulação com uso desse protocolo, realizou-se um estudo

Leia mais

Trabalho GA - Editor de Cenário Parallax

Trabalho GA - Editor de Cenário Parallax Objetivo A tarefa consiste em criar um editor gráfico de cenários para jogos 2D com visão lateral. O editor deve permitir que o usuário trabalhe com camadas, para simular o efeito parallax. O usuário pode

Leia mais

Prof. Samuel Henrique Bucke Brito

Prof. Samuel Henrique Bucke Brito - Switch na Camada 2: Comutação www.labcisco.com.br ::: shbbrito@labcisco.com.br Prof. Samuel Henrique Bucke Brito Introdução A conexão entre duas portas de entrada e saída, bem como a transferência de

Leia mais

Ambiente Virtual de Aprendizagem Moodle

Ambiente Virtual de Aprendizagem Moodle Ambiente Virtual de Aprendizagem Moodle No INSEP, o ambiente virtual de aprendizagem oferecido ao acadêmico é o MOODLE. A utilização dessa ferramenta é fundamental para o sucesso das atividades em EAD,

Leia mais

Application Note FBEE Comunicação Serial Wireless REV01. - 1 - Rev01

Application Note FBEE Comunicação Serial Wireless REV01. - 1 - Rev01 Application Note FBEE Comunicação Serial Wireless REV01-1 - Rev01 1. INTRODUÇÃO Aplicações com redes sem fio vêm se tornando bastante comuns. De aplicações industriais a projetos específicos, criou-se

Leia mais

NOVIDADES DO JAVA PARA PROGRAMADORES C

NOVIDADES DO JAVA PARA PROGRAMADORES C PROGRAMAÇÃO SERVIDOR EM SISTEMAS WEB NOVIDADES DO JAVA PARA PROGRAMADORES C Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar o Conceito de Classes e Objetos Capacitar para a criação de objetos simples

Leia mais

FERRAMENTAS DE COLABORAÇÃO CORPORATIVA

FERRAMENTAS DE COLABORAÇÃO CORPORATIVA FERRAMENTAS DE COLABORAÇÃO CORPORATIVA Manual de Utilização Google Grupos Sumário (Clique sobre a opção desejada para ir direto à página correspondente) Utilização do Google Grupos Introdução... 3 Página

Leia mais

IW10. Rev.: 02. Especificações Técnicas

IW10. Rev.: 02. Especificações Técnicas IW10 Rev.: 02 Especificações Técnicas Sumário 1. INTRODUÇÃO... 1 2. COMPOSIÇÃO DO IW10... 2 2.1 Placa Principal... 2 2.2 Módulos de Sensores... 5 3. APLICAÇÕES... 6 3.1 Monitoramento Local... 7 3.2 Monitoramento

Leia mais

MANUAL AGENDADOR DE TAREFAS LOGIX

MANUAL AGENDADOR DE TAREFAS LOGIX Outubro 2011 rev. 01 MANUAL AGENDADOR DE TAREFAS LOGIX Elaboração: Rubens Dos Santos Filho Framework rubens.santos@totvs.com.br Objetivo Este documento tem como objetivo relatar a funcionalidade de agendamento

Leia mais

1 - Cite o nome dos principais campos de um quadro Ethernet, explicando qual a funcionalidade de cada campo.

1 - Cite o nome dos principais campos de um quadro Ethernet, explicando qual a funcionalidade de cada campo. 1 - Cite o nome dos principais campos de um quadro Ethernet, explicando qual a funcionalidade de cada campo. Endereço de Destino = Endereço MAC de destino Endereço de Origem = Endereço MAC de origem Campo

Leia mais

IREasy Manual do Usuário Versão do manual - 0.0.9

IREasy Manual do Usuário Versão do manual - 0.0.9 OBJETIVOS DO PROGRAMA DE COMPUTADOR IREasy Permitir a apuração do Imposto de Renda dos resultados das operações em bolsa de valores (mercado à vista, a termo e futuros). REQUISITOS MÍNIMOS DO COMPUTADOR

Leia mais

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS Campus Cachoeiro de Itapemirim Curso Técnico em Informática Disciplina: Análise e Projeto de Sistemas Professor: Rafael Vargas Mesquita Este exercício deve ser manuscrito e entregue na próxima aula; Valor

Leia mais

Guião de Introdução ao Eclipse IDE Índice

Guião de Introdução ao Eclipse IDE Índice Índice 1. Introdução... 2 1.1. O que é um ambiente de desenvolvimento (IDE)?... 2 1.2. Visão geral sobre o Eclipse IDE... 2 2. Iniciar o Eclipse... 3 2.1. Instalação... 3 2.2. Utilizar o Eclipse... 3 3.

Leia mais

Redes de Computadores

Redes de Computadores Redes de Computadores Roteamento IP Redes de Computadores Objetivo Conhecer o modelo de roteamento da arquitetura TCP/IP Entender os conceitos básicos de algoritmo, métrica, tabela e protocolos de roteamento

Leia mais

Roteamento e Comutação

Roteamento e Comutação Roteamento e Comutação Design de Rede Local Design Hierárquico Este design envolve a divisão da rede em camadas discretas. Cada camada fornece funções específicas que definem sua função dentro da rede

Leia mais

5 Mecanismo de seleção de componentes

5 Mecanismo de seleção de componentes Mecanismo de seleção de componentes 50 5 Mecanismo de seleção de componentes O Kaluana Original, apresentado em detalhes no capítulo 3 deste trabalho, é um middleware que facilita a construção de aplicações

Leia mais

Manual do Aplicativo - Rastreamento Veicular

Manual do Aplicativo - Rastreamento Veicular Manual do Aplicativo - Rastreamento Veicular Sumário Apresentação... 2 Instalação do Aplicativo... 2 Localizando o aplicativo no smartphone... 5 Inserindo o link da aplicação... 6 Acessando o sistema...

Leia mais

Roteamento em Redes de Computadores

Roteamento em Redes de Computadores Roteamento em Redes de Computadores José Marcos Câmara Brito INATEL - Instituto Nacional de Telecomunicações INATEL - Instituto Nacional de Telecomunicações 01/08/00 1 Introdução Objetivo Tipos de rede

Leia mais

Interconexão redes locais (LANs)

Interconexão redes locais (LANs) Interconexão redes locais (LANs) Descrever o método de funcionamento dos dispositivos bridge e switch, desenvolver os conceitos básicos de LANs intermediárias, do uso do protocolo STP e VLANs. Com o método

Leia mais

Aula 6 Modelo de Divisão em Camadas TCP/IP

Aula 6 Modelo de Divisão em Camadas TCP/IP Aula 6 Modelo de Divisão em Camadas TCP/IP Camada Conceitual APLICATIVO TRANSPORTE INTER-REDE INTERFACE DE REDE FÍSICA Unidade de Dados do Protocolo - PDU Mensagem Segmento Datagrama /Pacote Quadro 01010101010100000011110

Leia mais

Manual Ambiente Virtual de Aprendizagem Moodle-ESPMG 2.0

Manual Ambiente Virtual de Aprendizagem Moodle-ESPMG 2.0 Manual Ambiente Virtual de Aprendizagem Moodle-ESPMG 2.0 Adriano Lima Belo Horizonte 2011 SUMÁRIO Apresentação... 3 Acesso ao Ambiente Virtual de Aprendizagem AVA ESP-MG... 3 Programação do curso no AVA-ESPMG

Leia mais

Redes de Computadores

Redes de Computadores Redes de Computadores Camada de Rede Aula 6/2006 UEM/DIN/Elvio/1023-1224 1 Camada de Rede É a camada mais baixa que trata da comunicação fim-a-fim Função de encaminhar os pacotes da fonte até o destino

Leia mais

UNIVERSIDADE FEDERAL DA FRONTEIRA SUL AMBIENTE VIRTUAL INSTITUCIONAL MOODLE/UFFS

UNIVERSIDADE FEDERAL DA FRONTEIRA SUL AMBIENTE VIRTUAL INSTITUCIONAL MOODLE/UFFS UNIVERSIDADE FEDERAL DA FRONTEIRA SUL AMBIENTE VIRTUAL INSTITUCIONAL MOODLE/UFFS Guia Inicial de Acesso e Utilização Para Docentes Versão 1.0b Outubro/2010 Acesso e utilização do Ambiente Virtual de Ensino

Leia mais

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP 1) Introdução Programação Orientada a Objetos é um paradigma de programação bastante antigo. Entretanto somente nos últimos anos foi aceito realmente

Leia mais

A instalação do SIMA pode ser feita com o uso do CD do SIMA, distribuído pela INSIEL ou através de download do programa na homepage www.insiel.com.br.

A instalação do SIMA pode ser feita com o uso do CD do SIMA, distribuído pela INSIEL ou através de download do programa na homepage www.insiel.com.br. SIMA MANUAL DO USUÁRIO INSTALANDO O SIMA A instalação do SIMA pode ser feita com o uso do CD do SIMA, distribuído pela INSIEL ou através de download do programa na homepage www.insiel.com.br. - Instalando

Leia mais

OMT-G Design. Instalação por pacotes

OMT-G Design. Instalação por pacotes OMT-G Design A plataforma Eclipse OMT-G Design não é um software independente, é um plug-in que se utiliza dos mecanismos de extensão do Eclipse que por sua vez é um ambiente de desenvolvimento de software.

Leia mais

AULA 3 Ferramentas de Análise Básicas

AULA 3 Ferramentas de Análise Básicas 3.1 AULA 3 Ferramentas de Análise Básicas Neste capítulo serão apresentadas algumas ferramentas de análise de dados com representação vetorial disponíveis no TerraView. Para isso será usado o banco de

Leia mais

Introdução Redes de Computadores. Filipe Raulino

Introdução Redes de Computadores. Filipe Raulino <filipe.raulino@ifrn.edu.br> Introdução Redes de Computadores Filipe Raulino Introducão A comunicação sempre foi uma necessidade básica da humanidade. Como se comunicar a distância? 2 Evolução da Comunicação

Leia mais

2 Controle de Congestionamento do TCP

2 Controle de Congestionamento do TCP 2 Controle de Congestionamento do TCP 17 2 Controle de Congestionamento do TCP A principal causa de descarte de pacotes na rede é o congestionamento. Um estudo detalhado dos mecanismos de controle de congestionamento

Leia mais

Produto IV: ATU SAAP. Manual de Referência

Produto IV: ATU SAAP. Manual de Referência Produto IV: ATU SAAP Manual de Referência Pablo Nogueira Oliveira Termo de Referência nº 129275 Contrato Número 2008/000988 Brasília, 30 de outubro de 2008 1 Sistema de Apoio à Ativideade Parlamentar SAAP

Leia mais

MVREP- Manual do Gerador de Relatórios. ÍNDICE

MVREP- Manual do Gerador de Relatórios. ÍNDICE ÍNDICE ÍNDICE... 1 CAPÍTULO 01 PREPARAÇÃO DO AMBIENTE... 2 1.1 IMPORTAÇÃO DO DICIONÁRIO DE DADOS... 2 CAPÍTULO 02 CADASTRO E CONFIGURAÇÃO DE RELATÓRIOS... 4 2.1 CADASTRO DE RELATÓRIOS... 4 2.2 SELEÇÃO

Leia mais

Prof. Manuel A Rendón M

Prof. Manuel A Rendón M Prof. Manuel A Rendón M Tanenbaum Redes de Computadores Cap. 1 e 2 5ª. Edição Pearson Padronização de sistemas abertos à comunicação Modelo de Referência para Interconexão de Sistemas Abertos RM OSI Uma

Leia mais

Conectando Bancos de Dados Microsoft Access no BrOffice.org Base. fornecido pelo Projeto de Documentação do BrOffice.org

Conectando Bancos de Dados Microsoft Access no BrOffice.org Base. fornecido pelo Projeto de Documentação do BrOffice.org Conectando Bancos de Dados Microsoft Access no BrOffice.org Base fornecido pelo Projeto de Documentação do BrOffice.org Índice 1 Introdução...2 1.1 Versão... 2 1.2 Licenciamento...2 1.3 Mensagem do Projeto

Leia mais

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo. Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 8 ARRAYS Introdução Até agora, utilizamos variáveis individuais. Significa que uma variável objeto

Leia mais

Introdução a computação móvel. Middlewares para Rede de Sensores sem Fio. Uma avaliação na ótica de Adaptação ao Contexto

Introdução a computação móvel. Middlewares para Rede de Sensores sem Fio. Uma avaliação na ótica de Adaptação ao Contexto Introdução a computação móvel Monografia: Middlewares para Rede de Sensores sem Fio Uma avaliação na ótica de Adaptação ao Contexto Adriano Branco Agenda Objetivo do trabalho O que é uma WSN Middlewares

Leia mais

CAPITULO 4 A ARQUITETURA LÓGICA PARA O AMBIENTE

CAPITULO 4 A ARQUITETURA LÓGICA PARA O AMBIENTE CAPITULO 4 A ARQUITETURA LÓGICA PARA O AMBIENTE A proposta para o ambiente apresentada neste trabalho é baseada no conjunto de requisitos levantados no capítulo anterior. Este levantamento, sugere uma

Leia mais

O bloco administração

O bloco administração O bloco administração Neste capítulo são discutidas as ferramentas do bloco Administração, na página de abertura de um curso. Veja Figura 7.1. Figura 1: O bloco Administração Ativar edição Esta ferramenta

Leia mais

Sistema TrackMaker de Rastreamento e Logística de Transportes. Solução de Despacho Integrada. Manual do Usuário

Sistema TrackMaker de Rastreamento e Logística de Transportes. Solução de Despacho Integrada. Manual do Usuário Sistema TrackMaker de Rastreamento e Logística de Transportes Solução de Despacho Integrada Manual do Usuário Índice Solução de Despacho Integrada... O que é necessário para ter a Solução de Despacho Integrada...

Leia mais

TOTVS Série 1 Varejo (Simples) - Módulo e-commerce

TOTVS Série 1 Varejo (Simples) - Módulo e-commerce Novo Módulo disponível no TOTVS S1 Varejo: permissão de utilização através de licença específica. Mesmo não adquirindo a licença de uso do módulo ele continuará presente na tela do usuário. 1 Na opção

Leia mais

ADDRESS RESOLUTION PROTOCOL. Thiago de Almeida Correia

ADDRESS RESOLUTION PROTOCOL. Thiago de Almeida Correia ADDRESS RESOLUTION PROTOCOL Thiago de Almeida Correia São Paulo 2011 1. Visão Geral Em uma rede de computadores local, os hosts se enxergam através de dois endereços, sendo um deles o endereço Internet

Leia mais

Google Drive. Passos. Configurando o Google Drive

Google Drive. Passos. Configurando o Google Drive Google Drive um sistema de armazenagem de arquivos ligado à sua conta Google e acessível via Internet, desta forma você pode acessar seus arquivos a partir de qualquer dispositivo que tenha acesso à Internet.

Leia mais

ROTEIRO PARA INSTALAÇÃO DO BITVISE, CONFIGURAÇÃO DE CHAVES SSH, DEFINIÇÃO DAS PORTAS PARA OS TÚNEIS SSH E CONFIGURAÇÃO DO THUNDERBIRD

ROTEIRO PARA INSTALAÇÃO DO BITVISE, CONFIGURAÇÃO DE CHAVES SSH, DEFINIÇÃO DAS PORTAS PARA OS TÚNEIS SSH E CONFIGURAÇÃO DO THUNDERBIRD ROTEIRO PARA INSTALAÇÃO DO BITVISE, CONFIGURAÇÃO DE CHAVES SSH, DEFINIÇÃO DAS PORTAS PARA OS TÚNEIS SSH E CONFIGURAÇÃO DO THUNDERBIRD PARTE 1 INSTALAÇÃO DO BITVISE E CRIAÇÃO E INSTALAÇÃO DA CHAVE SSH PARA

Leia mais

CDE4000 MANUAL 1. INTRODUÇÃO 2. SOFTWARE DE CONFIGURAÇÃO 3. COMUNICAÇÃO

CDE4000 MANUAL 1. INTRODUÇÃO 2. SOFTWARE DE CONFIGURAÇÃO 3. COMUNICAÇÃO CDE4000 MANUAL 1. INTRODUÇÃO O controlador CDE4000 é um equipamento para controle de demanda e fator de potência. Este controle é feito em sincronismo com a medição da concessionária, através dos dados

Leia mais

4 O Workflow e a Máquina de Regras

4 O Workflow e a Máquina de Regras 4 O Workflow e a Máquina de Regras O objetivo do workflow e da máquina de regras é definir um conjunto de passos e regras configuráveis. Ao longo de sua execução, um usuário consegue simplificar o seu

Leia mais

Service Oriented Architecture (SOA)

Service Oriented Architecture (SOA) São Paulo, 2011 Universidade Paulista (UNIP) Service Oriented Architecture (SOA) Prof. MSc. Vladimir Camelo vladimir.professor@gmail.com 04/09/11 vladimir.professor@gmail.com 1 04/09/11 vladimir.professor@gmail.com

Leia mais

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this. Aula 2 Objetivos Encapsulamento na linguagem Java; Utilizando a referência this. Encapsulamento, data hiding é um conceito bastante importante em orientação a objetos. É utilizado para restringir o acesso

Leia mais

PMAT. Sistema de Análise e Acompanhamento de Operações. Manual. Desenvolvido pelo BNDES AS/DEGEP

PMAT. Sistema de Análise e Acompanhamento de Operações. Manual. Desenvolvido pelo BNDES AS/DEGEP PMAT Sistema de Análise e Acompanhamento de Operações Manual 1 Índice 1. O que é o Sistema de Análise e Acompanhamento de Operações PMAT... 3 2. Acessando o sistema pela primeira vez Download... 3 3. Fluxogramas

Leia mais

COFANET. Guia do Usuário Para Seguro de Crédito. https://cofanet.coface.com/portalviewweb/

COFANET. Guia do Usuário Para Seguro de Crédito. https://cofanet.coface.com/portalviewweb/ COFANET Guia do Usuário Para Seguro de Crédito https://cofanet.coface.com/portalviewweb/ 1 ÍNDICE 1. INTRODUÇÃO... 4 1.2 Produtos e características do Cofanet... 4 2. ACESSO AO COFANET... 4 2.1 Entrada

Leia mais

Tutorial RMI (Remote Method Invocation) por Alabê Duarte

Tutorial RMI (Remote Method Invocation) por Alabê Duarte Tutorial RMI (Remote Method Invocation) por Alabê Duarte Este tutorial explica basicamente como se implementa a API chamada RMI (Remote Method Invocation). O RMI nada mais é que a Invocação de Métodos

Leia mais

PROVA DE NOÇÕES DE MICROINFORMÁTICA

PROVA DE NOÇÕES DE MICROINFORMÁTICA 18 PROVA DE NOÇÕES DE MICROINFORMÁTICA AS QUESTÕES DE 41 A 60 CONSIDERAM O ESQUEMA PADRÃO DE CONFIGURAÇÃO DO SISTEMA OPERACIONAL MICROSOFT WINDOWS ME E DAS FERRAMENTAS MICROSOFT WINDOWS EXPLORER, MICRO-

Leia mais