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

Arquitetura de Rede de Computadores

Arquitetura de Rede de Computadores TCP/IP Roteamento Arquitetura de Rede de Prof. Pedro Neto Aracaju Sergipe - 2011 Ementa da Disciplina 4. Roteamento i. Máscara de Rede ii. Sub-Redes iii. Números Binários e Máscara de Sub-Rede iv. O Roteador

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

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

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

Manual do Ambiente Moodle para Professores

Manual do Ambiente Moodle para Professores UNIVERSIDADE FEDERAL DA FRONTEIRA SUL Manual do Ambiente Moodle para Professores Tarefas Versão 1.0b Setembro/2011 Direitos Autorais: Essa apostila está licenciada sob uma Licença Creative Commons 3.0

Leia mais

ISO/IEC 12207: Gerência de Configuração

ISO/IEC 12207: Gerência de Configuração ISO/IEC 12207: Gerência de Configuração Durante o processo de desenvolvimento de um software, é produzida uma grande quantidade de itens de informação que podem ser alterados durante o processo Para 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 Ambiente de Desenvolvimento Orientação a Objetos É uma técnica de desenvolvimento de softwares que consiste em representar os elementos do mundo

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

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

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

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

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

Entendendo como funciona o NAT

Entendendo como funciona o NAT Entendendo como funciona o NAT Vamos inicialmente entender exatamente qual a função do NAT e em que situações ele é indicado. O NAT surgiu como uma alternativa real para o problema de falta de endereços

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

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

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

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

Follow-Up Acompanhamento Eletrônico de Processos (versão 3.0) Manual do Sistema. 1. Como acessar o sistema Requisitos mínimos e compatibilidade

Follow-Up Acompanhamento Eletrônico de Processos (versão 3.0) Manual do Sistema. 1. Como acessar o sistema Requisitos mínimos e compatibilidade do Sistema Índice Página 1. Como acessar o sistema 1.1 Requisitos mínimos e compatibilidade 03 2. Como configurar o Sistema 2.1 Painel de Controle 2.2 Informando o nome da Comissária 2.3 Escolhendo a Cor

Leia mais

Feature-Driven Development

Feature-Driven Development FDD Feature-Driven Development Descrição dos Processos Requisitos Concepção e Planejamento Mais forma que conteúdo Desenvolver um Modelo Abrangente Construir a Lista de Features Planejar por

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

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Modelo Cliente-Servidor: Introdução aos tipos de servidores e clientes Prof. MSc. Hugo Souza Iniciando o módulo 03 da primeira unidade, iremos abordar sobre o Modelo Cliente-Servidor

Leia mais

ROTEIRO DE INSTALAÇÃO

ROTEIRO DE INSTALAÇÃO ROTEIRO DE INSTALAÇÃO O objetivo deste roteiro é descrever os passos para a instalação do sistema UNICO, afim, de auxiliar os técnicos e evitar possíveis dúvidas e erros de instalação. Instalador O instalador

Leia mais

CONFIGURAÇÃO Cobian Backup Programa gratuito e de qualidade para realizar seus backups automáticos

CONFIGURAÇÃO Cobian Backup Programa gratuito e de qualidade para realizar seus backups automáticos CONFIGURAÇÃO Cobian Backup Programa gratuito e de qualidade para realizar seus backups automáticos Publicado em 22/08/2010 por claudioboaventura Na primeira parte do artigo instalação sobre o excelente

Leia mais

Projetos. Universidade Federal do Espírito Santo - UFES. Mestrado em Informática 2004/1. O Projeto. 1. Introdução. 2.

Projetos. Universidade Federal do Espírito Santo - UFES. Mestrado em Informática 2004/1. O Projeto. 1. Introdução. 2. Pg. 1 Universidade Federal do Espírito Santo - UFES Mestrado em Informática 2004/1 Projetos O Projeto O projeto tem um peso maior na sua nota final pois exigirá de você a utilização de diversas informações

Leia mais

Procedimento para Configurar a Importação/Exportação de Arquivos Texto

Procedimento para Configurar a Importação/Exportação de Arquivos Texto Procedimento para Configurar a Importação/Exportação de Arquivos Texto Produto : RM Gestão de Estoque, Compras e Faturamento 12.1.4 Processo : Importação/Exportação de Arquivos Texto Subprocesso : N/A

Leia mais

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB

Capacidade = 512 x 300 x 20000 x 2 x 5 = 30.720.000.000 30,72 GB Calculando a capacidade de disco: Capacidade = (# bytes/setor) x (méd. # setores/trilha) x (# trilhas/superfície) x (# superfícies/prato) x (# pratos/disco) Exemplo 01: 512 bytes/setor 300 setores/trilha

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

Procedimento para Configurar a Importação/Exportação de Arquivos Texto

Procedimento para Configurar a Importação/Exportação de Arquivos Texto Procedimento para Configurar a Importação/Exportação de Arquivos Texto Produto : RM Gestão de Estoque, Compras e Faturamento 12.1.3 Processo : Importação/Exportação de Arquivos Texto Subprocesso : N/A

Leia mais

MANUAL DE CONFIGURAÇÃO DO BACKUP

MANUAL DE CONFIGURAÇÃO DO BACKUP SISTEMA DE AUTOMAÇÃO COMERCIAL MANUAL DE CONFIGURAÇÃO DO BACKUP Apresentação Após o término da instalação você deverá configurar o Backup para que você tenha sempre uma cópia de segurança dos seus dados

Leia mais

SISTEMAS DISTRIBUÍDOS

SISTEMAS DISTRIBUÍDOS SISTEMAS DISTRIBUÍDOS Comunicação coletiva Modelo Peer-to-Peer Slide 6 Nielsen C. Damasceno Introdução Os modelos anteriores eram realizado entre duas partes: Cliente e Servidor. Com RPC e RMI não é possível

Leia mais

Manual Geral do OASIS

Manual Geral do OASIS Manual Geral do OASIS SISTEMA DE GESTÃO DE DEMANDA, PROJETO E SERVIÇO DE TECNOLOGIA DA INFORMAÇÃO OASIS Introdução Esse manual tem como objetivo auxiliar aos usuários nos procedimentos de execução do sistema

Leia mais

FERRAMENTAS DE COLABORAÇÃO CORPORATIVA

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

Leia mais

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

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

MANUAL DE INSTALAÇÃO 1) ORACLE VIRTUALBOX ; 2) MICROSOFT WINDOWS ; 3) SUMÁRIOS GENEPLUS.

MANUAL DE INSTALAÇÃO 1) ORACLE VIRTUALBOX ; 2) MICROSOFT WINDOWS ; 3) SUMÁRIOS GENEPLUS. PROGRAMA EMBRAPA DE MELHORAMENTO DE GADO DE CORTE MANUAL DE INSTALAÇÃO 1) ORACLE VIRTUALBOX ; 2) MICROSOFT WINDOWS ; 3) SUMÁRIOS GENEPLUS. MANUAL DE INSTALAÇÃO: 1) ORACLE VIRTUALBOX ; 2) MICROSOFT WINDOWS

Leia mais

MDaemon GroupWare. Versão 1 Manual do Usuário. plugin para o Microsoft Outlook. Trabalhe em Equipe Usando o Outlook e o MDaemon

MDaemon GroupWare. Versão 1 Manual do Usuário. plugin para o Microsoft Outlook. Trabalhe em Equipe Usando o Outlook e o MDaemon MDaemon GroupWare plugin para o Microsoft Outlook Trabalhe em Equipe Usando o Outlook e o MDaemon Versão 1 Manual do Usuário MDaemon GroupWare Plugin for Microsoft Outlook Conteúdo 2003 Alt-N Technologies.

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

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

Manual de digitação de contas Portal AFPERGS

Manual de digitação de contas Portal AFPERGS Manual de digitação de contas Portal AFPERGS 1 Sumário Acesso à função digitação de contas... 3 O que é a Função digitação de contas (DC)... 4 Como proceder na função digitação de conta médica (DC)...

Leia mais

Engenharia de Software III

Engenharia de Software III Engenharia de Software III Casos de uso http://dl.dropbox.com/u/3025380/es3/aula6.pdf (flavio.ceci@unisul.br) 09/09/2010 O que são casos de uso? Um caso de uso procura documentar as ações necessárias,

Leia mais

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource www.netsource.com.br Rev: 02

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource www.netsource.com.br Rev: 02 ArpPrintServer Sistema de Gerenciamento de Impressão By Netsource www.netsource.com.br Rev: 02 1 Sumário INTRODUÇÃO... 3 CARACTERÍSTICAS PRINCIPAIS DO SISTEMA... 3 REQUISITOS DE SISTEMA... 4 INSTALAÇÃO

Leia mais

Curso: Redes II (Heterogênea e Convergente) Tema da Aula: Características Roteamento

Curso: Redes II (Heterogênea e Convergente) Tema da Aula: Características Roteamento Curso: Redes II (Heterogênea e Convergente) Tema da Aula: Características Roteamento Professor Rene - UNIP 1 Roteamento Dinâmico Perspectiva e histórico Os protocolos de roteamento dinâmico são usados

Leia mais

MANUAL DE INSTALAÇÃO DO ODONTO TECHNOLOGY

MANUAL DE INSTALAÇÃO DO ODONTO TECHNOLOGY MANUAL DE INSTALAÇÃO DO ODONTO TECHNOLOGY 1 Índice I - Prefácio...3 II - Instalação do tipo servidor...4 III Obter o nome do computador servidor...17 IV Instalação do tipo cliente...19 V Como inserir a

Leia mais

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br ROTEIRO 5. Tratamento de Exceções Introdução e conceitos Capturando exceção usando

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

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

Novell. Novell Teaming 1.0. novdocx (pt-br) 6 April 2007 EXPLORAR O PORTLET BEM-VINDO DESCUBRA SEU CAMINHO USANDO O NOVELL TEAMING NAVIGATOR

Novell. Novell Teaming 1.0. novdocx (pt-br) 6 April 2007 EXPLORAR O PORTLET BEM-VINDO DESCUBRA SEU CAMINHO USANDO O NOVELL TEAMING NAVIGATOR Novell Teaming - Guia de início rápido Novell Teaming 1.0 Julho de 2007 INTRODUÇÃO RÁPIDA www.novell.com Novell Teaming O termo Novell Teaming neste documento se aplica a todas as versões do Novell Teaming,

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

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

CONSTRUÇÃO DE BLOG COM O BLOGGER

CONSTRUÇÃO DE BLOG COM O BLOGGER CONSTRUÇÃO DE BLOG COM O BLOGGER Blog é uma abreviação de weblog, qualquer registro frequênte de informações pode ser considerado um blog (últimas notícias de um jornal online por exemplo). A maioria das

Leia mais

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP AULA 4 VISÃO BÁSICA DE CLASSES EM PHP Antes de mais nada, vamos conhecer alguns conceitos, que serão importantes para o entendimento mais efetivos dos assuntos que trataremos durante a leitura desta apostila.

Leia mais

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2 SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2 1.1 Introdução... 2 1.2 Estrutura do IP... 3 1.3 Tipos de IP... 3 1.4 Classes de IP... 4 1.5 Máscara de Sub-Rede... 6 1.6 Atribuindo um IP ao computador... 7 2

Leia mais

DarkStat para BrazilFW

DarkStat para BrazilFW DarkStat para BrazilFW ÍNDICE Índice Página 1 O que é o DarkStat Página 2 DarkStat e a inicialização do sistema Página 2 DarkStat e a finalização do sistema Página 2 Tela Principal do DarkStat Página 3

Leia mais

Guia de utilização da notação BPMN

Guia de utilização da notação BPMN 1 Guia de utilização da notação BPMN Agosto 2011 2 Sumário de Informações do Documento Documento: Guia_de_utilização_da_notação_BPMN.odt Número de páginas: 31 Versão Data Mudanças Autor 1.0 15/09/11 Criação

Leia mais

Lição 1 - Criação de campos calculados em consultas

Lição 1 - Criação de campos calculados em consultas 1 de 5 21-08-2011 22:15 Lição 1 - Criação de campos calculados em consultas Adição de Colunas com Valores Calculados: Vamos, inicialmente, relembrar, rapidamente alguns conceitos básicos sobre Consultas

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

SIMULADOR DE ROTEAMENTO DE PACOTES (V. 3 20/05/2010)

SIMULADOR DE ROTEAMENTO DE PACOTES (V. 3 20/05/2010) SIMULADOR DE ROTEAMENTO DE PACOTES (V. 3 20/05/2010) OBJETIVO GERAL Este trabalho possui o objetivo de exercitar a lógica de programação dos alunos do Terceiro ano do Curso de BSI e também desenvolver

Leia mais

SISTEMA INTEGRADO DE GESTÃO ACADÊMICA

SISTEMA INTEGRADO DE GESTÃO ACADÊMICA MINISTÉRIO DA EDUCAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO TRIÂNGULO MINEIRO SISTEMA INTEGRADO DE GESTÃO ACADÊMICA MÓDULO PROTOCOLO MANUAL DO USUÁRIO VERSÃO: SETEMBRO/2010 SUMÁRIO Introdução...

Leia mais

GARANTIA DA QUALIDADE DE SOFTWARE

GARANTIA DA QUALIDADE DE SOFTWARE GARANTIA DA QUALIDADE DE SOFTWARE Fonte: http://www.testexpert.com.br/?q=node/669 1 GARANTIA DA QUALIDADE DE SOFTWARE Segundo a NBR ISO 9000:2005, qualidade é o grau no qual um conjunto de características

Leia mais

Manual Captura S_Line

Manual Captura S_Line Sumário 1. Introdução... 2 2. Configuração Inicial... 2 2.1. Requisitos... 2 2.2. Downloads... 2 2.3. Instalação/Abrir... 3 3. Sistema... 4 3.1. Abrir Usuário... 4 3.2. Nova Senha... 4 3.3. Propriedades

Leia mais

SISTEMA DE GERENCIAMENTO DE PROJETOS - REDMINE MANUAL DE USO

SISTEMA DE GERENCIAMENTO DE PROJETOS - REDMINE MANUAL DE USO SISTEMA DE GERENCIAMENTO DE PROJETOS - REDMINE MANUAL DE USO AGOSTO DE 2013 SUMÁRIO STI/UFF - Sistema de Gerenciamento de Projetos do PDI SUMÁRIO... 2 1 Introdução... 3 1.1 O que é e qual a finalidade

Leia mais

1) MANUAL DO INTEGRADOR Este documento, destinado aos instaladores do sistema, com informações de configuração.

1) MANUAL DO INTEGRADOR Este documento, destinado aos instaladores do sistema, com informações de configuração. O software de tarifação é uma solução destinada a rateio de custos de insumos em sistemas prediais, tais como shopping centers. O manual do sistema é dividido em dois volumes: 1) MANUAL DO INTEGRADOR Este

Leia mais

ROTEIRO PARA TREINAMENTO DO SAGRES DIÁRIO Guia do Docente

ROTEIRO PARA TREINAMENTO DO SAGRES DIÁRIO Guia do Docente Conceito ROTEIRO PARA TREINAMENTO DO SAGRES DIÁRIO Guia do Docente O Sagres Diário é uma ferramenta que disponibiliza rotinas que facilitam a comunicação entre a comunidade Docente e Discente de uma instituição,

Leia mais

ALTERNATIVA PARA CONEXÃO VIA INTERNET DE IP MASCARADO A IP REAL

ALTERNATIVA PARA CONEXÃO VIA INTERNET DE IP MASCARADO A IP REAL Documento: Tutorial Autor: Iuri Sonego Cardoso Data: 27/05/2005 E-mail: iuri@scripthome.cjb.net Home Page: http://www.scripthome.cjb.net ALTERNATIVA PARA CONEXÃO VIA INTERNET DE IP MASCARADO A IP REAL

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

Placa Acessório Modem Impacta

Placa Acessório Modem Impacta manual do usuário Placa Acessório Modem Impacta Parabéns, você acaba de adquirir um produto com a qualidade e segurança Intelbras. A Placa Modem é um acessório que poderá ser utilizado em todas as centrais

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

Projeto SIGA-EPT. Manual do usuário Módulo Requisição de Almoxarifado SISTEMA INTEGRADO DE GESTÃO ACADÊMICA

Projeto SIGA-EPT. Manual do usuário Módulo Requisição de Almoxarifado SISTEMA INTEGRADO DE GESTÃO ACADÊMICA Projeto SIGA-EPT Manual do usuário Módulo Requisição de Almoxarifado SISTEMA INTEGRADO DE GESTÃO ACADÊMICA Versão setembro/2010 Requisição de Almoxarifado Introdução Requisição é uma solicitação feita

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

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

CENTRO UNIVERSITÁRIO CATÓLICA DE SANTA CATARINA PRÓ-REITORIA ACADÊMICA NÚCLEO DE EDUCAÇÃO EM AMBIENTES DIGITAIS NEAD

CENTRO UNIVERSITÁRIO CATÓLICA DE SANTA CATARINA PRÓ-REITORIA ACADÊMICA NÚCLEO DE EDUCAÇÃO EM AMBIENTES DIGITAIS NEAD 0 CENTRO UNIVERSITÁRIO CATÓLICA DE SANTA CATARINA PRÓ-REITORIA ACADÊMICA NÚCLEO DE EDUCAÇÃO EM AMBIENTES DIGITAIS NEAD ORIENTAÇÕES SOBRE USO DO AMBIENTE VIRTUAL DE APRENDIZAGEM (MOODLE) PARA DISPONIBILIZAÇÃO

Leia mais

INDICE 1. INTRODUÇÃO... 3 2. CONFIGURAÇÃO MÍNIMA... 4 3. INSTALAÇÃO... 4 4. INTERLIGAÇÃO DO SISTEMA... 5 5. ALGUNS RECURSOS... 6 6. SERVIDOR BAM...

INDICE 1. INTRODUÇÃO... 3 2. CONFIGURAÇÃO MÍNIMA... 4 3. INSTALAÇÃO... 4 4. INTERLIGAÇÃO DO SISTEMA... 5 5. ALGUNS RECURSOS... 6 6. SERVIDOR BAM... 1 de 30 INDICE 1. INTRODUÇÃO... 3 2. CONFIGURAÇÃO MÍNIMA... 4 3. INSTALAÇÃO... 4 3.1. ONDE SE DEVE INSTALAR O SERVIDOR BAM?... 4 3.2. ONDE SE DEVE INSTALAR O PROGRAMADOR REMOTO BAM?... 4 3.3. COMO FAZER

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

Procedimentos para Reinstalação do Sisloc

Procedimentos para Reinstalação do Sisloc Procedimentos para Reinstalação do Sisloc Sumário: 1. Informações Gerais... 3 2. Criação de backups importantes... 3 3. Reinstalação do Sisloc... 4 Passo a passo... 4 4. Instalação da base de dados Sisloc...

Leia mais

Análise de Ponto de Função

Análise de Ponto de Função Complemento para o Curso Análise de Ponto de Função FUNÇÕES DO TIPO DADO O termo Arquivo não significa um arquivo do sistema operacional, como é comum na área de processamento de dados. Se refere a um

Leia mais

Tecnologia de Redes de Computadores - aula 5

Tecnologia de Redes de Computadores - aula 5 Tecnologia de Redes de Computadores - aula 5 Prof. Celso Rabelo Centro Universitário da Cidade 1 Objetivo 2 3 4 IGPxEGP Vetor de Distância Estado de Enlace Objetivo Objetivo Apresentar o conceito de. Conceito

Leia mais

MANUAL PARA UTILIZAÇÃO DO MOODLE FACULDADE INTERAÇÃO AMERICANA VIRTUAL - Versão: Aluno

MANUAL PARA UTILIZAÇÃO DO MOODLE FACULDADE INTERAÇÃO AMERICANA VIRTUAL - Versão: Aluno 1 MANUAL PARA UTILIZAÇÃO DO MOODLE FACULDADE INTERAÇÃO AMERICANA VIRTUAL - Versão: Aluno Acessando o sistema 1- Para acessar a Faculdade Interação Americana Virtual digite o seguinte endereço: http://ead.fia.edu.br/

Leia mais

MANUAL DE UTILIZAÇÃO

MANUAL DE UTILIZAÇÃO MANUAL DE UTILIZAÇÃO Módulo de operação Ativo Bem vindo à Vorage CRM! Nas próximas paginas apresentaremos o funcionamento da plataforma e ensinaremos como iniciar uma operação básica através do nosso sistema,

Leia mais

Processo de Controle das Reposições da loja

Processo de Controle das Reposições da loja Processo de Controle das Reposições da loja Getway 2015 Processo de Reposição de Mercadorias Manual Processo de Reposição de Mercadorias. O processo de reposição de mercadorias para o Profit foi definido

Leia mais

ANDROID APPLICATION PROJECT

ANDROID APPLICATION PROJECT Criando um programa Abrindo o programa Eclipse, clique na opção [FILE], depois em [NEW], selecione a opção [PROJECT], uma janela de opção do tipo de projeto irá se abrir, escolha [ANDROID] logo depois

Leia mais

Manual do Publicador. Wordpress FATEA Sistema de Gerenciamento de Conteúdo Web

Manual do Publicador. Wordpress FATEA Sistema de Gerenciamento de Conteúdo Web Manual do Publicador Wordpress FATEA Sistema de Gerenciamento de Conteúdo Web Sumário Painel de Administração... 3 1 - Inserção de post... 5 2 Publicação de post com notícia na área headline (galeria de

Leia mais

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação SOFT DISCIPLINA: Engenharia de Software AULA NÚMERO: 10 DATA: / / PROFESSOR: Andrey APRESENTAÇÃO O objetivo desta aula é apresentar e discutir os conceitos de coesão e acoplamento. DESENVOLVIMENTO Projetar

Leia mais

AULA 1 Iniciando o uso do TerraView

AULA 1 Iniciando o uso do TerraView 1.1 AULA 1 Iniciando o uso do TerraView Essa aula apresenta a interface principal do TerraView e sua utilização básica. Todos os arquivos de dados mencionados nesse documento são disponibilizados junto

Leia mais

Atualização Mandatória de Versão do Amadeus Pro Web (2.0P431BR) 25 de junho de 2007 Gerência de Produtos & Operações Amadeus Brasil

Atualização Mandatória de Versão do Amadeus Pro Web (2.0P431BR) 25 de junho de 2007 Gerência de Produtos & Operações Amadeus Brasil Atualização Mandatória de Versão do Amadeus Pro Web (2.0P431BR) 25 de junho de 2007 Amadeus Brasil Índice 1) O objetivo deste documento... 3 2) O que acontecerá quando chegar o dia da atualização de versão

Leia mais

www.nddigital.com.br Manual de Administração DPS Printer 2.1 NDDigital S/A - Software

www.nddigital.com.br Manual de Administração DPS Printer 2.1 NDDigital S/A - Software www.nddigital.com.br Manual de Administração DPS Printer 2.1 NDDigital S/A - Software 2 Introdução Este manual foi elaborado para administradores, para entendimento do funcionamento do produto e administração

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

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 Processos- Clientes, Servidores, Migração Capítulo 3 Agenda Clientes Interfaces de usuário em rede Sistema X Window Software do lado cliente para

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

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

Especificação de Requisitos

Especificação de Requisitos Projeto/Versão: Versão 11.80 Melhoria Requisito/Módulo: 000552 / Conector Sub-Requisito/Função: Multas Tarefa/Chamado: 01.08.01 País: Brasil Data Especificação: 13/05/13 Rotinas Envolvidas Rotina Tipo

Leia mais

Especificação do 3º Trabalho

Especificação do 3º Trabalho Especificação do 3º Trabalho I. Introdução O objetivo deste trabalho é abordar a prática da programação orientada a objetos usando a linguagem Java envolvendo os conceitos de classe, objeto, associação,

Leia mais

Roteiro. Arquitetura. Tipos de Arquitetura. Questionário. Centralizado Descentralizado Hibrido

Roteiro. Arquitetura. Tipos de Arquitetura. Questionário. Centralizado Descentralizado Hibrido Arquitetura Roteiro Arquitetura Tipos de Arquitetura Centralizado Descentralizado Hibrido Questionário 2 Arquitetura Figura 1: Planta baixa de uma casa 3 Arquitetura Engenharia de Software A arquitetura

Leia mais

Table of Contents. PowerPoint XP

Table of Contents. PowerPoint XP Table of Contents Finalizando a apresentação...1 Usando anotações...1 Desfazer e repetir...1 Localizar e substituir...2 Substituir...2 Efeitos de transição...3 Esquema de animação...6 Controlando os tempos

Leia mais

Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva

Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva 1. O que são Serviços Web (Web Services)? Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva A ideia central dos Web Services parte da antiga necessidade

Leia mais

Iniciação à Informática

Iniciação à Informática Meu computador e Windows Explorer Justificativa Toda informação ou dado trabalhado no computador, quando armazenado em uma unidade de disco, transforma-se em um arquivo. Saber manipular os arquivos através

Leia mais

Tarefas em Moodle (1.6.5+)

Tarefas em Moodle (1.6.5+) (1.6.5+) Ficha Técnica Título Tarefas em Moodle Autor Athail Rangel Pulino Filho Copyright Creative Commons Edição Agosto 2007 Athail Rangel Pulino 2 Índice Tarefas 4 Criando uma tarefa 4 Configuração

Leia mais

2 Diagrama de Caso de Uso

2 Diagrama de Caso de Uso Unified Modeling Language (UML) Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Diagrama de Caso de Uso (Use Case) Autoria:Aristófanes Corrêa

Leia mais

Introdução ao Aplicativo de Programação LEGO MINDSTORMS Education EV3

Introdução ao Aplicativo de Programação LEGO MINDSTORMS Education EV3 Introdução ao Aplicativo de Programação LEGO MINDSTORMS Education EV3 A LEGO Education tem o prazer de trazer até você a edição para tablet do Software LEGO MINDSTORMS Education EV3 - um jeito divertido

Leia mais

Lógica de Programação

Lógica de Programação Lógica de Programação Softblue Logic IDE Guia de Instalação www.softblue.com.br Sumário 1 O Ensino da Lógica de Programação... 1 2 A Ferramenta... 1 3 Funcionalidades... 2 4 Instalação... 3 4.1 Windows...

Leia mais

Satélite. Manual de instalação e configuração. CENPECT Informática www.cenpect.com.br cenpect@cenpect.com.br

Satélite. Manual de instalação e configuração. CENPECT Informática www.cenpect.com.br cenpect@cenpect.com.br Satélite Manual de instalação e configuração CENPECT Informática www.cenpect.com.br cenpect@cenpect.com.br Índice Índice 1.Informações gerais 1.1.Sobre este manual 1.2.Visão geral do sistema 1.3.História

Leia mais