1. Este documento apresenta o desenvolvimento de um visualizador para simulações de redes de sensores sem fio realizadas no framework GrubiX.
2. O visualizador, chamado Visual GrubiX, permite visualizar de forma rica as simulações, depurar redes e mapear elementos gráficos a aspectos da simulação.
3. O trabalho descreve a modelagem e implementação do Visual GrubiX, incluindo requisitos, arquitetura, diagramas e os principais recursos desenvolvidos como mapeamento, grafo de conectividade e lin
1. O documento apresenta uma monografia sobre o desenvolvimento de uma extensão para o software Inkscape com o objetivo de converter arquivos SVG para HTML5 Canvas.
2. A monografia inclui revisão bibliográfica sobre os padrões SVG e HTML5 Canvas, além de detalhar a metodologia e resultados dos testes realizados na extensão desenvolvida.
3. Os resultados permitem comparar os padrões gráficos e identificar os casos de uso mais adequados para cada tecnologia no desenvolvimento de aplicações web gráficas.
Este livro apresenta o framework Angular 2 utilizando TypeScript, Node, SystemJS e Visual Studio Code. O livro ensina os conceitos básicos de TypeScript como tipos, classes, módulos e decorators, e em seguida cobre a criação de componentes Angular, templates, serviços, formulários e comunicação com servidores.
Este documento fornece um plano de ensino sobre MySQL, incluindo objetivos, público-alvo, pré-requisitos, cronograma e avaliação. Ele também discute conceitos básicos de banco de dados e fornece instruções sobre como instalar e usar o MySQL.
O documento descreve cursos de programação oferecidos pela Caelum, incluindo o curso RR-71 de desenvolvimento ágil para web 2.0 com Ruby on Rails. Além disso, fornece informações sobre a Caelum como empresa reconhecida nacionalmente com mais de 8 mil alunos treinados e instrutores qualificados.
Este documento fornece uma introdução ao MySQL, incluindo seu objetivo de ensino, público-alvo, pré-requisitos e programa. Ele também discute conceitos básicos de banco de dados e como instalar, criar, manipular e consultar bancos de dados e tabelas no MySQL.
O documento discute os principais conceitos da linguagem de programação Java, incluindo tipos de dados primitivos, variáveis, constantes, estrutura de um programa, métodos, classes, objetos, arrays e entrada/saída de dados.
Este documento apresenta uma apostila sobre desenvolvimento ágil para web 2.0 com Ruby on Rails da Caelum. A apostila inclui tópicos sobre a linguagem Ruby, orientação a objetos, classes, métodos, hashes, arrays, blocos, metaprogramação e Ruby on Rails. A Caelum oferece vários cursos presenciais e online sobre diferentes tecnologias de programação.
1. O documento apresenta uma monografia sobre o desenvolvimento de uma extensão para o software Inkscape com o objetivo de converter arquivos SVG para HTML5 Canvas.
2. A monografia inclui revisão bibliográfica sobre os padrões SVG e HTML5 Canvas, além de detalhar a metodologia e resultados dos testes realizados na extensão desenvolvida.
3. Os resultados permitem comparar os padrões gráficos e identificar os casos de uso mais adequados para cada tecnologia no desenvolvimento de aplicações web gráficas.
Este livro apresenta o framework Angular 2 utilizando TypeScript, Node, SystemJS e Visual Studio Code. O livro ensina os conceitos básicos de TypeScript como tipos, classes, módulos e decorators, e em seguida cobre a criação de componentes Angular, templates, serviços, formulários e comunicação com servidores.
Este documento fornece um plano de ensino sobre MySQL, incluindo objetivos, público-alvo, pré-requisitos, cronograma e avaliação. Ele também discute conceitos básicos de banco de dados e fornece instruções sobre como instalar e usar o MySQL.
O documento descreve cursos de programação oferecidos pela Caelum, incluindo o curso RR-71 de desenvolvimento ágil para web 2.0 com Ruby on Rails. Além disso, fornece informações sobre a Caelum como empresa reconhecida nacionalmente com mais de 8 mil alunos treinados e instrutores qualificados.
Este documento fornece uma introdução ao MySQL, incluindo seu objetivo de ensino, público-alvo, pré-requisitos e programa. Ele também discute conceitos básicos de banco de dados e como instalar, criar, manipular e consultar bancos de dados e tabelas no MySQL.
O documento discute os principais conceitos da linguagem de programação Java, incluindo tipos de dados primitivos, variáveis, constantes, estrutura de um programa, métodos, classes, objetos, arrays e entrada/saída de dados.
Este documento apresenta uma apostila sobre desenvolvimento ágil para web 2.0 com Ruby on Rails da Caelum. A apostila inclui tópicos sobre a linguagem Ruby, orientação a objetos, classes, métodos, hashes, arrays, blocos, metaprogramação e Ruby on Rails. A Caelum oferece vários cursos presenciais e online sobre diferentes tecnologias de programação.
Este documento é uma apostila sobre programação orientada a objetos em C++. A apostila apresenta os conceitos básicos de POO e modelagem UML, seguido de explicações sobre como implementar programação orientada a objetos usando a linguagem C++, incluindo tópicos como classes, objetos, encapsulamento, herança e polimorfismo. A apostila foi desenvolvida no Laboratório de Meios Porosos e Propriedades Termofísicas e no Núcleo de Pesquisa em Construção da Universidade Federal de Santa Catarina.
O documento introduz a linguagem C, abordando conceitos como tipos de variáveis, memória, ponteiros, manipulação de arquivos e strings. O autor pretende desmistificar assuntos complexos da linguagem e fornecer exemplos práticos para o desenvolvimento de aplicações.
Este documento fornece um guia sobre o ActionScript para o Flash 5, abordando:
- Novas funcionalidades do ActionScript no Flash 5 como suporte a XML, clipes inteligentes e depurador aprimorado.
- Sintaxe básica, tipos de dados, variáveis, operadores, fluxo de scripts, funções e objetos.
- Como criar interatividade com scripts manipulando cursor, teclas, som, detecção de colisão.
- Controle de vários clipes de filme e caminhos de destino.
- Integração com a
Este documento fornece informações sobre cursos e recursos educacionais da Caelum, incluindo cursos online, blog, newsletter e redes sociais. Também discute brevemente sobre o objetivo pedagógico das apostilas da Caelum de ensinar Ruby de forma concisa e direta.
1. O documento apresenta um trabalho sobre padrões de projeto, descrevendo alguns padrões como Abstract Factory, Composite, Decorator, entre outros.
2. É apresentado um referencial teórico sobre conceitos como reutilização, encapsulamento, herança e polimorfismo importantes para padrões de projeto.
3. Exemplos em Java ilustram a aplicação de padrões como Abstract Factory, Composite, Decorator e outros.
Este documento é um tutorial introdutório sobre a linguagem de programação Ruby. Ele explica os conceitos básicos da linguagem como variáveis, tipos de dados, estruturas de controle e classes. O tutorial também fornece exemplos de código para ilustrar esses conceitos.
O documento fornece informações sobre cursos e recursos educacionais da empresa Caelum, incluindo cursos online, blog, newsletter e redes sociais. Também menciona livros sobre programação da editora Casa do Código. A segunda parte do documento descreve o objetivo e atualizações da apostila sobre C# que é distribuída gratuitamente no site da Caelum.
1. O documento apresenta um curso sobre padrões de projeto em Java, abordando padrões criacionais, estruturais e comportamentais.
2. Os tópicos incluem Factory Method, Abstract Factory, Builder, Prototype, Singleton e outros padrões como Adapter, Composite e Observer.
3. Exemplos de código e exercícios são fornecidos para cada padrão como forma de fixação dos conceitos apresentados.
Este capítulo apresenta os fundamentos da modelagem de software orientada a objetos, introduzindo conceitos como classes, objetos, abstração, encapsulamento, herança, polimorfismo e diagrama UML. Também discute a diferença entre arquitetura física e lógica.
Este documento apresenta um curso introdutório sobre a ferramenta Simulink para modelagem e simulação de sistemas dinâmicos. O curso é dividido em 4 capítulos que abordam conceitos teóricos de diagramas em blocos, transformadas de Laplace e Z, a interface do Simulink e como construir e simular modelos. Há também instruções sobre como imprimir e salvar os resultados das simulações.
Este documento apresenta uma apostila sobre desenvolvimento ágil para web usando a linguagem Ruby on Rails. A apostila ensina conceitos básicos de Ruby e Rails, incluindo criação de projetos, uso de bancos de dados, geradores de código e documentação.
Este documento é um livro sobre o editor de texto Vim escrito em português. O livro é um projeto colaborativo e de código aberto que visa fornecer uma referência prática e confiável sobre o Vim.
Este documento descreve a implementação de um ambiente web com ferramentas para estudo de algoritmos de criptografia através do Matlab. O projeto implementa algoritmos de criptografia simétrica como DES, Triple-DES, Blowfish, RC5 e IDEA e algoritmos assimétricos como RSA e El-Gamal. O documento fornece detalhes sobre cada algoritmo e sua implementação no Matlab para fins didáticos.
Este documento contém notas de aula sobre estruturas de dados. Aborda tópicos como tipos de dados, constantes, variáveis, registros, ponteiros, listas, pilhas, filas e árvores de pesquisa binárias. Fornece códigos em C para ilustrar os conceitos discutidos.
Este documento fornece informações sobre gerenciadores de boot (carregadores de inicialização) como LILO e GRUB. Ele discute o que são gerenciadores de boot, como instalá-los e configurá-los, e como lidar com mensagens de erro. O documento também aborda personalização de boot loaders.
Apostila auto cad passo a passo para arquiteturadevsonqueiroz3
O documento descreve o processo de desenho de plantas arquitetônicas no AutoCAD, começando com a criação de uma planta baixa simples com paredes, portas e janelas. Instruções detalhadas são fornecidas para cada etapa, incluindo como desenhar linhas, usar comandos de zoom e formas básicas. O tutorial também discute a criação de outros desenhos como cortes e fachadas.
A necessidade de práticas interdisciplinares problematizando a interdiscipl...Everaldo Gomes
(1) O documento discute a necessidade de práticas interdisciplinares na educação a partir de uma perspectiva marxista, questionando os motivos pelos quais a fragmentação do conhecimento tornou necessárias tais práticas. (2) Apresenta como a divisão social do trabalho levou à separação entre trabalho intelectual e manual, contribuindo para a fragmentação do saber. (3) Conclui que as práticas interdisciplinares não devem tratar a fragmentação como natural, mas questionar como ela auxilia na exploração e como pode ser superada.
Contribuições do marxismo para a atividade de pesquisa da educação matemática...Everaldo Gomes
Este documento discute as contribuições do marxismo para a pesquisa em Educação Matemática na perspectiva lógico-histórica. Primeiro, analisa a crítica de Marx e Engels ao idealismo hegeliano e o desenvolvimento de uma postura materialista. Segundo, aborda a dialética marxista como fundamento teórico para pesquisa e para entender o processo lógico-histórico. Por fim, discute como o marxismo pode contribuir para pesquisas brasileiras nessa perspectiva.
SENTIDOS ATRIBUÍDOS POR PROFESSORES DA EDUCAÇÃO BÁSICA À APRESENTAÇÃO DA HIST...Everaldo Gomes
Objetivamos, com esse texto, apresentar dados de uma pesquisa de cunho qualitativo, que se fundamenta na teoria histórico-cultural. Tais dados indicam alguns sentidos que professores que ensinam Matemática na Educação Básica atribuem à História da Matemática sugerida em livros didáticos e em atividades de ensino. A investigação procura identificar e analisar, do ponto de vista de professores, inseridos em um contexto de formação, elementos que podem subsidiar a avaliação de livros didáticos e de atividades de ensino no que concerne ao papel pedagógico que a História da Matemática pode assumir no ensino, tais como: 1) a superação da visão da História da Matemática como fonte de motivação; 2) a superação da História do conteúdo com foco em personalidades; 3) a indicação da necessidade da História da Matemática nos diferentes níveis de ensino; 4) a superação da utilização da história de forma burocrática; 5) a indicação de que a História da Matemática faz diferença na sequência lógica do material didático; 6) a indicação de que a História da Matemática pode auxiliar o professor na organização do ensino; 7) a indicação de que a História pode ser fonte para a percepção do movimento do pensamento no surgimento e desenvolvimento do conceito, no que diz respeito à organização do ensino.
O processo de criação de um software para o ensino e a aprendizagem de cálcul...Everaldo Gomes
Este artigo descreve o processo de criação de um software educacional chamado PoliKalc para ensinar cálculos aritméticos no ensino fundamental. O software foi desenvolvido usando metodologias de criação de aplicativos educacionais e código aberto para permitir acesso e colaboração.
SENTIDOS ATRIBUÍDOS POR PROFESSORES DA EDUCAÇÃO BÁSICA À APRESENTAÇÃO DA HIST...Everaldo Gomes
1) Os professores atribuem alguns sentidos à história da matemática sugerida em livros didáticos e atividades de ensino, como a superação da visão da história como fonte de motivação e da história focada em personalidades.
2) Os professores indicam que a história da matemática é necessária nos diferentes níveis de ensino e não deve ser utilizada de forma burocrática.
3) Os professores apontam que a história da matemática pode auxiliar na sequência lógica do material didático e na organização do ens
Este documento é uma apostila sobre programação orientada a objetos em C++. A apostila apresenta os conceitos básicos de POO e modelagem UML, seguido de explicações sobre como implementar programação orientada a objetos usando a linguagem C++, incluindo tópicos como classes, objetos, encapsulamento, herança e polimorfismo. A apostila foi desenvolvida no Laboratório de Meios Porosos e Propriedades Termofísicas e no Núcleo de Pesquisa em Construção da Universidade Federal de Santa Catarina.
O documento introduz a linguagem C, abordando conceitos como tipos de variáveis, memória, ponteiros, manipulação de arquivos e strings. O autor pretende desmistificar assuntos complexos da linguagem e fornecer exemplos práticos para o desenvolvimento de aplicações.
Este documento fornece um guia sobre o ActionScript para o Flash 5, abordando:
- Novas funcionalidades do ActionScript no Flash 5 como suporte a XML, clipes inteligentes e depurador aprimorado.
- Sintaxe básica, tipos de dados, variáveis, operadores, fluxo de scripts, funções e objetos.
- Como criar interatividade com scripts manipulando cursor, teclas, som, detecção de colisão.
- Controle de vários clipes de filme e caminhos de destino.
- Integração com a
Este documento fornece informações sobre cursos e recursos educacionais da Caelum, incluindo cursos online, blog, newsletter e redes sociais. Também discute brevemente sobre o objetivo pedagógico das apostilas da Caelum de ensinar Ruby de forma concisa e direta.
1. O documento apresenta um trabalho sobre padrões de projeto, descrevendo alguns padrões como Abstract Factory, Composite, Decorator, entre outros.
2. É apresentado um referencial teórico sobre conceitos como reutilização, encapsulamento, herança e polimorfismo importantes para padrões de projeto.
3. Exemplos em Java ilustram a aplicação de padrões como Abstract Factory, Composite, Decorator e outros.
Este documento é um tutorial introdutório sobre a linguagem de programação Ruby. Ele explica os conceitos básicos da linguagem como variáveis, tipos de dados, estruturas de controle e classes. O tutorial também fornece exemplos de código para ilustrar esses conceitos.
O documento fornece informações sobre cursos e recursos educacionais da empresa Caelum, incluindo cursos online, blog, newsletter e redes sociais. Também menciona livros sobre programação da editora Casa do Código. A segunda parte do documento descreve o objetivo e atualizações da apostila sobre C# que é distribuída gratuitamente no site da Caelum.
1. O documento apresenta um curso sobre padrões de projeto em Java, abordando padrões criacionais, estruturais e comportamentais.
2. Os tópicos incluem Factory Method, Abstract Factory, Builder, Prototype, Singleton e outros padrões como Adapter, Composite e Observer.
3. Exemplos de código e exercícios são fornecidos para cada padrão como forma de fixação dos conceitos apresentados.
Este capítulo apresenta os fundamentos da modelagem de software orientada a objetos, introduzindo conceitos como classes, objetos, abstração, encapsulamento, herança, polimorfismo e diagrama UML. Também discute a diferença entre arquitetura física e lógica.
Este documento apresenta um curso introdutório sobre a ferramenta Simulink para modelagem e simulação de sistemas dinâmicos. O curso é dividido em 4 capítulos que abordam conceitos teóricos de diagramas em blocos, transformadas de Laplace e Z, a interface do Simulink e como construir e simular modelos. Há também instruções sobre como imprimir e salvar os resultados das simulações.
Este documento apresenta uma apostila sobre desenvolvimento ágil para web usando a linguagem Ruby on Rails. A apostila ensina conceitos básicos de Ruby e Rails, incluindo criação de projetos, uso de bancos de dados, geradores de código e documentação.
Este documento é um livro sobre o editor de texto Vim escrito em português. O livro é um projeto colaborativo e de código aberto que visa fornecer uma referência prática e confiável sobre o Vim.
Este documento descreve a implementação de um ambiente web com ferramentas para estudo de algoritmos de criptografia através do Matlab. O projeto implementa algoritmos de criptografia simétrica como DES, Triple-DES, Blowfish, RC5 e IDEA e algoritmos assimétricos como RSA e El-Gamal. O documento fornece detalhes sobre cada algoritmo e sua implementação no Matlab para fins didáticos.
Este documento contém notas de aula sobre estruturas de dados. Aborda tópicos como tipos de dados, constantes, variáveis, registros, ponteiros, listas, pilhas, filas e árvores de pesquisa binárias. Fornece códigos em C para ilustrar os conceitos discutidos.
Este documento fornece informações sobre gerenciadores de boot (carregadores de inicialização) como LILO e GRUB. Ele discute o que são gerenciadores de boot, como instalá-los e configurá-los, e como lidar com mensagens de erro. O documento também aborda personalização de boot loaders.
Apostila auto cad passo a passo para arquiteturadevsonqueiroz3
O documento descreve o processo de desenho de plantas arquitetônicas no AutoCAD, começando com a criação de uma planta baixa simples com paredes, portas e janelas. Instruções detalhadas são fornecidas para cada etapa, incluindo como desenhar linhas, usar comandos de zoom e formas básicas. O tutorial também discute a criação de outros desenhos como cortes e fachadas.
A necessidade de práticas interdisciplinares problematizando a interdiscipl...Everaldo Gomes
(1) O documento discute a necessidade de práticas interdisciplinares na educação a partir de uma perspectiva marxista, questionando os motivos pelos quais a fragmentação do conhecimento tornou necessárias tais práticas. (2) Apresenta como a divisão social do trabalho levou à separação entre trabalho intelectual e manual, contribuindo para a fragmentação do saber. (3) Conclui que as práticas interdisciplinares não devem tratar a fragmentação como natural, mas questionar como ela auxilia na exploração e como pode ser superada.
Contribuições do marxismo para a atividade de pesquisa da educação matemática...Everaldo Gomes
Este documento discute as contribuições do marxismo para a pesquisa em Educação Matemática na perspectiva lógico-histórica. Primeiro, analisa a crítica de Marx e Engels ao idealismo hegeliano e o desenvolvimento de uma postura materialista. Segundo, aborda a dialética marxista como fundamento teórico para pesquisa e para entender o processo lógico-histórico. Por fim, discute como o marxismo pode contribuir para pesquisas brasileiras nessa perspectiva.
SENTIDOS ATRIBUÍDOS POR PROFESSORES DA EDUCAÇÃO BÁSICA À APRESENTAÇÃO DA HIST...Everaldo Gomes
Objetivamos, com esse texto, apresentar dados de uma pesquisa de cunho qualitativo, que se fundamenta na teoria histórico-cultural. Tais dados indicam alguns sentidos que professores que ensinam Matemática na Educação Básica atribuem à História da Matemática sugerida em livros didáticos e em atividades de ensino. A investigação procura identificar e analisar, do ponto de vista de professores, inseridos em um contexto de formação, elementos que podem subsidiar a avaliação de livros didáticos e de atividades de ensino no que concerne ao papel pedagógico que a História da Matemática pode assumir no ensino, tais como: 1) a superação da visão da História da Matemática como fonte de motivação; 2) a superação da História do conteúdo com foco em personalidades; 3) a indicação da necessidade da História da Matemática nos diferentes níveis de ensino; 4) a superação da utilização da história de forma burocrática; 5) a indicação de que a História da Matemática faz diferença na sequência lógica do material didático; 6) a indicação de que a História da Matemática pode auxiliar o professor na organização do ensino; 7) a indicação de que a História pode ser fonte para a percepção do movimento do pensamento no surgimento e desenvolvimento do conceito, no que diz respeito à organização do ensino.
O processo de criação de um software para o ensino e a aprendizagem de cálcul...Everaldo Gomes
Este artigo descreve o processo de criação de um software educacional chamado PoliKalc para ensinar cálculos aritméticos no ensino fundamental. O software foi desenvolvido usando metodologias de criação de aplicativos educacionais e código aberto para permitir acesso e colaboração.
SENTIDOS ATRIBUÍDOS POR PROFESSORES DA EDUCAÇÃO BÁSICA À APRESENTAÇÃO DA HIST...Everaldo Gomes
1) Os professores atribuem alguns sentidos à história da matemática sugerida em livros didáticos e atividades de ensino, como a superação da visão da história como fonte de motivação e da história focada em personalidades.
2) Os professores indicam que a história da matemática é necessária nos diferentes níveis de ensino e não deve ser utilizada de forma burocrática.
3) Os professores apontam que a história da matemática pode auxiliar na sequência lógica do material didático e na organização do ens
O Desenvolvimento do Pensamento Funcional nos Anos Iniciais: desenhan...Everaldo Gomes
O documento discute três atividades para desenvolver o pensamento funcional em alunos nos anos iniciais da educação básica. As atividades são: 1) Desenhar o céu para explorar ideias de fluência e regularidade; 2) Contar histórias parcialmente e pedir que as crianças completem, explorando o conceito de relação; 3) Analisar a trajetória de um viajante a pé para descrever qualitativa e quantitativamente a relação entre passos e distância percorrida. O objetivo é introduzir
Contas, contas e mais contas - o ensino e a aprendizagem de cálculo mental, e...Everaldo Gomes
O documento discute o ensino e aprendizagem de cálculos mentais, exatos, aproximados e com calculadora nos anos iniciais do Ensino Fundamental. Argumenta-se que há uma ênfase excessiva no cálculo exato por meio de algoritmos sem que os outros tipos de cálculo sejam devidamente trabalhados, dificultando a compreensão dos conceitos. Defende-se que intervenções explorando cálculos mentais e aproximados antes do ensino formal de algoritmos podem ajudar na aprendizagem. Também se discute mitos em tor
O papel pedagógico da História Matemática em livros didáticos e em atividades...Everaldo Gomes
1. O documento discute o papel pedagógico da História da Matemática em livros didáticos e atividades de ensino.
2. Apresenta categorias de análise da presença da História da Matemática nesses materiais, como motivação, informação ou estratégia didática.
3. Discutem papéis pedagógicos propostos por Miguel (1993) e Sousa (2009), como desmistificar a matemática e entender a relação entre o lógico e o histórico.
Este documento apresenta o cronograma e as atividades de uma formação sobre o Pacto Nacional pela Alfabetização na Idade Certa. O cronograma inclui discussões sobre conceitos-chave como currículo, interdisciplinaridade e avaliação. Além disso, fornece informações sobre carga horária, bolsas, certificação e links importantes.
O jogo dos divisores - o jogo e a calculadora no ensino e na aprendizagem de ...Everaldo Gomes
Este documento descreve uma atividade realizada por estudantes de licenciatura em matemática durante um estágio de ensino. Eles desenvolveram o "Jogo dos Divisores" para ensinar o conceito de divisor de números naturais a alunos do 6o ano. O jogo usou dados e um tabuleiro para que os alunos encontrassem os divisores de números gerados. Após o jogo, questões foram usadas para avaliar a compreensão dos alunos sobre o conceito e estratégias do jogo. A atividade ajudou parcialmente no objetivo de
Apresentação: Planejamento de rota para VANTs em caso de situação crítica: Um...Jesimar Arantes
Este documento apresenta uma dissertação de mestrado sobre o planejamento de rotas para veículos aéreos não tripulados (VANTs) em situações críticas, utilizando uma abordagem baseada em segurança. O trabalho desenvolve modelos matemáticos para representar diferentes situações críticas e regiões, e propõe vários algoritmos como heurística gulosa, algoritmos genéticos e programação linear inteira mista para encontrar rotas seguras, sendo avaliados em experimentos offline e online.
Apresentação: Modelagem e Implementação de um Visualizador para Simulações Co...Jesimar Arantes
1. O documento descreve a modelagem e implementação de um visualizador para simulações em redes de sensores sem fio chamado Visual GrubiX.
2. O visualizador foi desenvolvido usando Java e tem como entrada arquivos de log gerados pelo simulador GrubiX.
3. O Visual GrubiX fornece recursos visuais como mapeamento de nós, grafos de conectividade e linhas de movimentação para auxiliar na depuração e entendimento de simulações em RSSF.
Apresentação: Utilizando Robótica Evolutiva para o Desenvolvimento da Morfolo...Jesimar Arantes
Este documento resume um trabalho de conclusão de curso sobre o desenvolvimento de um sistema de robótica evolutiva para evoluir a morfologia de robôs em um ambiente virtual utilizando algoritmos genéticos. O sistema modela peças de robô, define operadores genéticos e avalia robôs em cenários simulados usando uma função de fitness. Os resultados mostram a evolução de morfologias de robô e o desempenho em atingir alvos e locomoção em ambientes com e sem obstáculos.
Palestra: Algoritmos Genéticos Aplicados em Planejamento de Rota para VANTs e...Jesimar Arantes
1. O documento discute a aplicação de algoritmos genéticos em planejamento de rotas para veículos aéreos não-tripulados (VANTs) e robótica evolutiva.
2. É apresentada uma metodologia para desenvolver um planejador de rotas para VANTs que leve a aeronave a um local seguro em caso de falha, usando algoritmos genéticos.
3. Também é descrita uma aplicação de robótica evolutiva para evoluir a morfologia e controle de robôs em ambiente virtual usando algorit
Formação - PNAIC 2015 - projetos interdisciplinares e sequências didáticasEveraldo Gomes
O documento descreve (1) um pacto nacional pela alfabetização na idade certa, (2) exemplos de projetos interdisciplinares realizados por professores, (3) uma releitura da obra "Retirantes" de Cândido Portinari com alunos.
Palestra: Planejamento de Rota para VANTs em Caso de Situação CríticaJesimar Arantes
Este documento apresenta um resumo de três frases sobre um trabalho de mestrado sobre planejamento de rotas para veículos aéreos não tripulados (VANTs) em situações críticas. O trabalho desenvolve algoritmos para determinar locais seguros de pouso para VANTs em caso de falhas, considerando diferentes tipos de regiões e situações críticas. A metodologia propõe um planejador baseado em algoritmos genéticos para gerar rotas seguras levando em conta as restrições do problema.
Este documento descreve os fundamentos da programação orientada a objetos utilizando a linguagem Java. Ele discute conceitos como classes, objetos, herança e polimorfismo e apresenta os principais elementos da linguagem Java como tipos, expressões, classes, exceções e APIs.
Adicionar mais informações (descrição, tags, categoria) torna mais fácil para os outros encontrar seu conteúdo. A pontuação aumenta conforme você adiciona cada item.
Dissertação de Mestrado - Planejamento para Serviços Web SemânticosJuliana Chahoud
Planejamento para serviços Web semânticos
Juliana Jabra Chahoud
DISSERTAÇÃO APRESENTADA AO
INSTITUTO DE MATEMATICA E ESTATISTICA
DA UNIVERSIDADE DE SAO PAULO
PARA OBTENÇÃO DO TÍTULO DE MESTRE EM CÊNCIAS
Área de Concentração: Ciência da Computação
Orientadora: Profa. Dra. Leliane Nunes de Barros
São Paulo, agosto de 2006.
O documento introduz a linguagem C, abordando conceitos como tipos de variáveis, memória, ponteiros, manipulação de arquivos e strings. O autor pretende desmistificar assuntos complexos da linguagem e fornecer exemplos práticos para o desenvolvimento de aplicações.
Este documento fornece instruções sobre desenvolvimento web com HTML, CSS e JavaScript. Ele inclui resumos de tópicos como estrutura de páginas web, tags HTML, estilização com CSS, posicionamento de elementos e formulários. Além disso, fornece exercícios para ajudar o leitor a aprender e aperfeiçoar suas habilidades nessas tecnologias.
Este documento apresenta um plano de ensino sobre JSP e Servlets. O documento discute o que são JSP e Servlets, apresenta o objetivo, público-alvo e pré-requisitos do curso, além de detalhar o cronograma e programa do curso. O documento também fornece instruções sobre instalação e configuração do ambiente de desenvolvimento, e aborda conceitos importantes como orientação a objetos, tags JSP, JSTL, ciclo de vida de servlets e tratamento de erros.
1) O documento descreve uma dissertação de mestrado sobre o desenvolvimento de um framework para interfaces multimodais em aplicações de computação ubíqua, integrando escrita e voz.
2) Foi construído um framework chamado JMIS que integra as modalidades de escrita e voz usando técnicas como integração baseada em unificação e gramáticas multimodais baseadas em unificação.
3) Duas aplicações foram construídas usando o framework - SpeechBoard e M4Note - demonstrando sua funcionalidade para fusão de modalidades.
1) O documento descreve um programa multi-threaded que calcula a soma de números usando threads e semáforos para sincronização. Cada thread adiciona 1 à soma global em cada iteração de um loop.
2) O programa cria 100 threads para executar a tarefa em paralelo e compartilhar a variável soma de forma sincronizada usando semáforos.
3) O algoritmo usa semáforos para garantir exclusão mútua na variável compartilhada soma, evitando que threads concorrentes alterem seu valor de forma inconsistente.
Este documento apresenta um plano de ensino para programação C++, cobrindo tópicos como introdução à linguagem, tipos de dados, operadores, estruturas de controle, vetores, ponteiros, programação orientada a objetos, templates e namespaces.
Este documento fornece informações sobre o Zope, incluindo o que é Zope, como instalá-lo e usar sua interface de gerenciamento, trabalhar com objetos, DTML, modelos de páginas, aplicações básicas, segurança de usuários, catálogos de pesquisa e bancos de dados, e extensões do Zope.
Neste trabalho implantei um NMS Zabbix para monitorar APs (Access Point), com firmware OpenWRT; coletando potência do sinal, número de usuários e canal de operação.
Este documento apresenta uma introdução ao software R para estatística básica. Ele discute o projeto R, sua interface, tipos de dados, comandos básicos, vetores, matrizes, gráficos, estatística descritiva, probabilidade, variáveis aleatórias, inferência estatística, regressão linear e programação em R.
Este documento apresenta uma introdução ao software R para estatística básica. Ele discute a interface, tipos de dados, comandos básicos, vetores, matrizes, gráficos, medidas estatísticas, probabilidade, variáveis aleatórias, inferência estatística, regressão linear e programação em R.
Este manual descreve o editor LaTeX Kile. Ele explica como iniciar um novo documento LaTeX usando modelos, editar documentos LaTeX usando recursos como realce de sintaxe e autocompletamento, e compilar documentos. O manual também cobre assistentes, menus personalizáveis e ferramentas de construção.
O documento fornece instruções para desenvolvimento de aplicativos Android, cobrindo tópicos como configuração do ambiente de desenvolvimento, criação de uma aplicação de contatos simples para demonstrar conceitos básicos e adição de recursos avançados como diálogos, internacionalização e preferências do usuário.
O documento discute aprendizagem profunda (deep learning) e redes neurais artificiais. Aborda como os algoritmos de deep learning dependem de unidades não lineares estruturadas em múltiplas camadas e como isso permite representar regiões de dados de forma mais eficiente do que modelos menos profundos. Também explica como a aprendizagem de representações é fundamental para o deep learning, inspirando-se nos processos de aprendizagem visual no cérebro.
Este documento fornece instruções sobre como aprender ActionScript 2.0 no Flash. Ele contém informações sobre direitos autorais e marcas registradas, links para sites de terceiros e tecnologias licenciadas. O documento também lista os membros da equipe que contribuíram para sua criação.
Este documento fornece instruções sobre como aprender ActionScript 2.0 no Flash. Ele inclui uma lista de marcas comerciais e tecnologias licenciadas, informações sobre direitos autorais e uma lista de agradecimentos.
1. O documento apresenta um sumário detalhado sobre o curso Desenvolvimento Web com HTML, CSS e JavaScript da Caelum, com tópicos que vão desde a introdução aos conceitos até exercícios avançados de posicionamento.
2. É apresentado um guia passo-a-passo para desenvolvimento de páginas web, começando pelos fundamentos de HTML e CSS e evoluindo para conceitos mais complexos como posicionamento, formulários e JavaScript.
3. O documento fornece todos os recursos necessários para aprender a desenvolver
Este documento fornece uma introdução ao Javascript, incluindo seu objetivo, público-alvo, pré-requisitos, descrição, metodologia e cronograma de ensino. Ele também discute tópicos-chave como sintaxe, variáveis, strings, objetos, arrays, operadores, funções e classes.
Semelhante a MODELAGEM E IMPLEMENTAÇÃO DE UM VISUALIZADOR PARA SIMULAÇÕES COMPUTACIONAIS DE REDES DE SENSORES SEM FIO (20)
Este documento apresenta a tese de doutorado de Jesimar da Silva Arantes sobre o desenvolvimento de um sistema autônomo para supervisão de missão e segurança de voo em veículos aéreos não tripulados (VANTs). O sistema implementa os sistemas Mission Oriented Sensor Array (MOSA) e In-Flight Awareness (IFA) para garantir o cumprimento da missão e segurança do voo, respectivamente. Além disso, um sistema de comunicação com o piloto automático do VANT foi desenvolvido para permitir o controle autônom
A arquitetura visa permitir que diferentes missões possam ser incorporadas sem grandes mudanças, garantindo a resiliência dos sistemas para prevenir a propagação de erros e promover a autonomia dos veículos com baixo nível de intervenção humana. O documento apresenta conceitos fundamentais sobre VANTs, sistemas de piloto automático, simulação, bibliot
This document presents a genetic algorithm approach for mission and safety planning with unmanned aerial vehicles (UAVs). It combines two existing genetic algorithm architectures - a hybrid genetic algorithm (HGA4m) for mission path planning and a multi-population genetic algorithm (MPGA4s) for replanning paths under critical situations. The proposed approach embeds both architectures into a single hardware system called MOSA (Mission Oriented Sensor Array) for mission supervision and IFA (In-Flight Awareness) for safety supervision. Computational results show the approach can find good solutions for both path planning and replanning within hardware limitations of onboard processors.
This document evaluates hardware platforms and path replanning strategies for emergency landing of unmanned aerial vehicles (UAVs). It compares the performance of greedy heuristic, genetic algorithm, and ensemble methods on personal computer and embedded computer hardware when responding to critical situations like motor or battery failure. The genetic algorithm and ensemble genetic algorithm-genetic algorithm method achieved the best results overall, finding near optimal emergency routes. Testing was done in simulation and with a real UAV to validate the approaches.
Dissertação: Planejamento de rota para VANTs em caso de situação crítica: uma...Jesimar Arantes
Este documento apresenta uma abordagem para planejamento de rotas de emergência para veículos aéreos não tripulados (VANTs) em caso de falhas críticas, utilizando técnicas de computação evolutiva. O trabalho propõe modelos matemáticos para representar estados de falha da aeronave e identificar regiões seguras para pouso de emergência, e desenvolve algoritmos genéticos e heurísticas para gerar rotas que levem o VANT à região de pouso de forma segura. Os métodos pro
PP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptxLuizHenriquedeAlmeid6
Slideshare Lição 11, Betel, Ordenança para exercer a fé, 2Tr24, Pr Henrique, EBD NA TV, 2° TRIMESTRE DE 2024, ADULTOS, EDITORA BETEL, TEMA, ORDENANÇAS BÍBLICAS, Doutrina Fundamentais Imperativas aos Cristãos para uma vida bem-sucedida e de Comunhão com DEUS, estudantes, professores, Ervália, MG, Imperatriz, MA, Cajamar, SP, estudos bíblicos, gospel, DEUS, ESPÍRITO SANTO, JESUS CRISTO, Comentários, Bispo Abner Ferreira, Com. Extra Pr. Luiz Henrique, 99-99152-0454, Canal YouTube, Henriquelhas, @PrHenrique
O Que é Um Ménage à Trois?
A sociedade contemporânea está passando por grandes mudanças comportamentais no âmbito da sexualidade humana, tendo inversão de valores indescritíveis, que assusta as famílias tradicionais instituídas na Palavra de Deus.
REGULAMENTO DO CONCURSO DESENHOS AFRO/2024 - 14ª edição - CEIRI /UREI (ficha...Eró Cunha
XIV Concurso de Desenhos Afro/24
TEMA: Racismo Ambiental e Direitos Humanos
PARTICIPANTES/PÚBLICO: Estudantes regularmente matriculados em escolas públicas estaduais, municipais, IEMA e IFMA (Ensino Fundamental, Médio e EJA).
CATEGORIAS: O Concurso de Desenhos Afro acontecerá em 4 categorias:
- CATEGORIA I: Ensino Fundamental I (4º e 5º ano)
- CATEGORIA II: Ensino Fundamental II (do 6º ao 9º ano)
- CATEGORIA III: Ensino Médio (1º, 2º e 3º séries)
- CATEGORIA IV: Estudantes com Deficiência (do Ensino Fundamental e Médio)
Realização: Unidade Regional de Educação de Imperatriz/MA (UREI), através da Coordenação da Educação da Igualdade Racial de Imperatriz (CEIRI) e parceiros
OBJETIVO:
- Realizar a 14ª edição do Concurso e Exposição de Desenhos Afro/24, produzidos por estudantes de escolas públicas de Imperatriz e região tocantina. Os trabalhos deverão ser produzidos a partir de estudo, pesquisas e produção, sob orientação da equipe docente das escolas. As obras devem retratar de forma crítica, criativa e positivada a população negra e os povos originários.
- Intensificar o trabalho com as Leis 10.639/2003 e 11.645/2008, buscando, através das artes visuais, a concretização das práticas pedagógicas antirracistas.
- Instigar o reconhecimento da história, ciência, tecnologia, personalidades e cultura, ressaltando a presença e contribuição da população negra e indígena na reafirmação dos Direitos Humanos, conservação e preservação do Meio Ambiente.
Imperatriz/MA, 15 de fevereiro de 2024.
Produtora Executiva e Coordenadora Geral: Eronilde dos Santos Cunha (Eró Cunha)
Leis de Mendel - as ervilhas e a maneira simples de entender.ppt
MODELAGEM E IMPLEMENTAÇÃO DE UM VISUALIZADOR PARA SIMULAÇÕES COMPUTACIONAIS DE REDES DE SENSORES SEM FIO
1. JESIMAR DA SILVA ARANTES
MODELAGEM E IMPLEMENTAÇÃO DE UM
VISUALIZADOR PARA SIMULAÇÕES
COMPUTACIONAIS DE REDES DE
SENSORES SEM FIO
LAVRAS – MG
2013
2. JESIMAR DA SILVA ARANTES
MODELAGEM E IMPLEMENTAÇÃO DE UM VISUALIZADOR PARA
SIMULAÇÕES COMPUTACIONAIS DE REDES DE SENSORES SEM
FIO
Monografia apresentada ao Colegiado do Curso de
Sistemas de Informação, para a obtenção do título
de Bacharel em Sistemas de Informação.
Orientador
Prof. Dr. Tales Heimfarth
LAVRAS – MG
2013
3.
4. À minha família!
Meu pai Jésus Ferreira Arantes e minha mãe Sirley Ramos Arantes
que estiveram sempre presentes, me apoiando, me incentivando e me
ajudando nos momentos em que mais precisei.
Meu irmão Márcio da Silva Arantes pela amizade e ajuda,
e por saber que sempre terei com quem contar.
A minha tia Sirlaine Maria da Silva Freitas que me
mostrou a importância dos estudos.
DEDICO
5. AGRADECIMENTOS
À Universidade Federal de Lavras (UFLA) e ao Departamento de Ci-
ência da Computação (DCC), por me proporcionar um ambiente de
estudo adequado à minha formação.
Aos professores da UFLA em especial aos professores do Departa-
mento de Ciência da Computação, pelos ensinamentos transmitidos.
Ao professor Tales Heimfarth pela orientação, paciência, amizade e
seus ensinamentos que foram de grande relevância para a realização
deste trabalho e meu crescimento profissional. E a todos os integran-
tes do GRUBi que contribuíram e auxiliaram nas minhas pesquisas.
Aos meus colegas de apartamento do Alojamento Estudantil da UFLA
que me fizeram crescer durante a minha jornada em Lavras. Aos cole-
gas de turma que estiveram sempre presentes durante os meus estudos.
Agradeço sobretudo aos meus pais, Jésus Ferreira Arantes e Sirley
Ramos Arantes, pelo amor e carinho. Ao meu irmão Márcio da Silva
Arantes pela ajuda constante e amizade.
Muito obrigado por tudo!!!
6. EPÍGRAFE
Tenho a impressão de ter sido uma criança brincando na praia, contente em
achar aqui e ali, uma pedra mais lisa ou uma concha mais bonita, mas tendo
sempre diante de mim, ainda por descobrir, o imenso oceano da verdade.
Isaac Newton
Estamos na situação de uma criança que entra numa grande biblioteca onde
encontra muitos livros em muitas línguas diferentes. Ela sabe que alguém teve
que escrever esses livros, mas não sabe como e não entende as linguagens em que
estão escritos. A criança suspeita que existirá uma ordem no arranjo dos livros,
mas não sabe qual é. Esta parece-me ser a atitude mais inteligente do ser humano
perante Deus. Vemos um Universo que se estrutura e se move maravilhosamente
mediante certas leis, mas mal entendemos essas leis. As nossas mentes limitadas
não conseguem compreender integralmente a força que move as constelações.
Albert Einstein
Se não puder se destacar pelo talento, vença pelo esforço.
Dave Weinbaum
11. 4.4 Diagramas de classes dos pacotes Control e Structure. . . . . . . . . . 36
4.5 Diagramas de classes dos pacotes WINDOW e PAINT. . . . . . . . . . 36
4.6 Arquitetura MVC do Visual GrubiX. . . . . . . . . . . . . . . . . . . 37
4.7 Exemplo de grafo de conectividade da rede. . . . . . . . . . . . . . . 41
4.8 Exemplo de linhas de movimentação da rede. . . . . . . . . . . . . . 41
5.1 Tela inicial do Visual GrubiX. . . . . . . . . . . . . . . . . . . . . . . 44
5.2 Tela de simulação do Visual GrubiX. . . . . . . . . . . . . . . . . . . 44
5.3 Tela de simulação do Visual GrubiX. . . . . . . . . . . . . . . . . . . 45
B.1 Diagrama de classes da camada Controller. . . . . . . . . . . . . . . 55
B.2 Diagrama de classes da camada View. . . . . . . . . . . . . . . . . . 56
B.3 Diagrama de classes completo do Visual GrubiX. . . . . . . . . . . . 57
12. LISTA DE TABELAS
5.1 Comparação do Visual GrubiX e do Visual ShoX. . . . . . . . . . . . 46
5.2 Comparação geral dos visualizadores Visual GrubiX, Visual ShoX, nam
e OMNeT++. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
13. RESUMO
Este trabalho apresenta a modelagem e implementação do Visual GrubiX, uma
ferramenta de visualização de rede de sensores para o simulador GrubiX. A ta-
refa de visualizar uma simulação complexa de rede traz vários desafios, como por
exemplo a forma de expressar a troca de pacotes, a visualização dos diferentes
tipos de pacotes etc. Na literatura, diversas ferramentas de visualização podem
ser encontradas, no entanto, na sua maioria são específicas para um determinado
simulador e faltam várias recursos de visualização. O Visual GrubiX supera essas
deficiências, utilizando um arquivo XML como entrada para a visualização e per-
mitindo um visual rico e uma depuração de simulações de rede. Além disso, um
esquema de mapeamento permite ao usuário especificar quais elementos gráficos
que representam um determinado aspecto de simulação.
Palavras-Chave: Redes de Sensores Sem Fios; Simulação Computacional; Visualização
de Simulações em RSSF.
14. ABSTRACT
This work presents the desing and implementation Visual GrubiX, a sensor network
visualisation tool for the GrubiX simulator. The task of visualizing a complex
network simulation brings several challenges, e.g. how to express the packet ex-
change, how to visualize different packet types, etc. In the literature, several vi-
sualization tools can be found, nevertheless they are mostly specific for a certain
simulator and lack of several visualization features. The Visual Grubix overcomes
these shortcomings, using a XML file as input for visualization and enabling a
visual-rich debugging of network simulations. Moreover, a mapping scheme al-
lows the user to specify which graphical elements will represent a given simulation
aspect.
Keywords: Wireless Sensor Networks, Computer Simulation; View Simulations
WSN.
15. 1
1 INTRODUÇÃO
Este trabalho tem como foco principal apresentar a modelagem e implemen-
tação de um software de visualização de simulações em Redes de Sensores Sem
Fio (RSSF). Este programa exibe, através de uma interface gráfica amigável, as
simulações de protocolos e aplicações feitas no framework GrubiX.
1.1 Contextualização
As Redes de Sensores Sem Fio (RSSFs) são um conjunto de nós sensores que
se comunicam usando ligações sem fios. Esses nós sensores são constituídos de um
comunicador sem fio, uma fonte de energia, uma unidade de sensoriamento, me-
mória e um processador (LOUREIRO et al., 2003). Geralmente, eles trabalham na
realização de um objetivo comum, como monitoramento ambiental, rastreamento,
coordenação e processamento em diferentes contextos. Além disso, uma vez que
os nós sem fios são pequenos e têm recursos limitados, geralmente não é viável
implementar algoritmos que exigem um grande poder de processamento ou muito
espaço de memória. Tudo isso faz com que o projeto de protocolos para RSSF
seja uma tarefa desafiadora. Combinado com o fato de que essas redes podem ser
utilizadas para missões críticas, como detecção de incêndio florestal, é inevitável
ter que efetuar exaustivamente testes com os protocolos.
Há duas formas de se fazer esses testes: programar os nós sensores e colocá-
los para funcionar em uma rede real, ou utilizar um programa de simulação de
RSSF. A primeira forma pode produzir resultados mais precisos entretanto há vá-
rias desvantagens como alto custo de hardware, dificuldade para testar em um
grande número de nós com movimentos realistas, etc. Sendo assim, as implemen-
tações reais geralmente serão uma opção viável apenas para um menor número de
16. 2
nós e durante as fases posteriores de implementação quando mudanças significati-
vas na base do código não são esperadas. Já a segunda opção evita os problemas
das implementações reais descritos acima. Por outro lado, a simulação pode for-
necer uma previsão da realidade apenas numa extensão limitada, o que implica
que os resultados de simulações não são tão precisos quanto implementações re-
ais. Ainda assim, as simulações são utilizadas em muitas situações em que uma
precisão limitada pode ser tolerada.
Mesmo que RSSFs sejam formadas por componentes de baixo custo (nós sen-
sores), é relevante em etapas anteriores à instalação da rede e testes em campo, a
utilização de simulação computacional para visualizar o comportamento funcio-
nal da rede (algoritmos desenvolvidos). Isso é relevante em redes que apresen-
tam grande quantidade de nós, onde a visualização dos resultados em testes reais
torna-se complicada. Ou seja, toda a modelagem inicial do problema deve ser feita
utilizando um simulador específico para facilitar o trabalho.
Além disso, simular sistemas reais torna-se uma tarefa onerosa quando seus
elementos (nós e sensores) apresentam partes que se diferenciam em termos de
tecnologia de construção (sistemas heterogêneos). Portanto, é de grande impor-
tância a utilização de plataformas de simulação computacional que supram essas
características (MELLO; CAIMI, 2008).
Existem, no mercado, vários frameworks para simulações de redes sem fio.
Esses frameworks, pelo fato de atuarem apenas em ambientes virtuais (simulados)
acabam por garantir um grande poder de expressividade e facilidade na confecção
dos algoritmos. Tais ferramentas permitem que dados gerados ao longo da simu-
lação sejam armazenados em arquivos, denominados log de saída. Entretanto tais
dados ficam em arquivos de textos e são de difícil interpretação pelo projetista da
rede. Sendo assim se faz necessário o uso de ferramentas de visualizações das
17. 3
simulações executadas de maneira gráfica e intuitiva. Esses frameworks têm em
geral seus próprios visualizadores.
Este trabalho tem como foco simulações computacionais em RSSFs e não em
implementações reais de redes de sensores. O simulador utilizado é o framework
GrubiX (GRUBIX, 2013) o qual é baseado no ShoX (scalable ad hoc network
simulator) (SHOX, 2012) que é utilizado em redes móveis ad hoc (LESSMANN;
HEIMFARTH; JANACIK, 2008). Sendo assim o GrubiX é utilizado em redes
móveis ad hoc, mas também pode ser utilizado em RSSFs.
O presente trabalho apresenta o desenvolvimento de uma ferramenta de visu-
alização para o framework GrubiX. O software proposto, que será chamado neste
trabalho apenas por Visual GrubiX, suporta também visualizar aplicações desen-
volvidas no ShoX, já que os dois são compatíveis. O ShoX também possui um
visualizador (LESSMANN; HEIMFARTH, 2008) que antes do desenvolvimento
deste trabalho era utilizado juntamente com o GrubiX. Esse visualizador do ShoX
será chamado aqui de Visual ShoX.
1.2 Motivação e Justificativa
A grande motivação para o desenvolvimento de um software visualizador de
Redes de Sensores Sem Fio para o GrubiX é o fato do atual visualizador, o Visual
ShoX, apresentar algumas deficiências que serão mostradas neste trabalho. Por este
motivo, foi desenvolvido um visualizador de simulações em RSSF que dê suporte
ao GrubiX e que seja amigável, fácil de usar e tenha um código com alto grau de
manutenibilidade.
Uma motivação que impulsiona este trabalho é o fato da área de RSSF ser
uma tecnologia chave para o futuro. Em Setembro de 1999, a revista Business
Week Magazine anunciou as redes de sensores como uma das 21 mais importantes
18. 4
tecnologias para o século XXI. Além destas motivações exite o fato de não existi-
rem muitos softwares de simulação especializados em RSSF, assim fazer um bom
visualizador para o GrubiX irá contribuir de maneira significativa para a área que
esta em crescimento constante.
A justificativa para se trabalhar com simulações computacionais se dá pelo
fato de trabalhos com sistemas reais serem difíceis de se implementar e os testes
e equipamentos serem onerosas. Outra justificativa é o fato de que trabalhar com
simulações computacionais serem mais fáceis de extrapolar limitações de equipa-
mentos físicos, como por exemplo fazer experiências com milhares de nós o que
fica inviável de fazer com testes reais.
1.3 Objetivos
Os objetivos presentes neste trabalho são apresentados a seguir.
1.3.1 Objetivo Geral
Esse projeto tem como objetivo geral a modelagem e implementação de um
software para visualização de simulações computacionais. Este visualizador deve
fazer a leitura de um arquivo de log (arquivo de registro de resultados) gerado pelo
GrubiX, processar o conteúdo no formato textual deste arquivo e o transformar em
conteúdo visual e de fácil visualização, através de uma interface gráfica amigável.
1.3.2 Objetivos Específicos
1. Elaboração do Projeto:
• Pesquisa em bibliografia sobre visualizadores em RSSF: Fazer o
levantamento de trabalhos relacionados ao apresentado.
19. 5
• Elaboração de um software visualizador de RSSF: Elaborar o software
para visualização de simulações em RSSF.
• Comparação com outros softwares de visualização em RSSF: Efe-
tuar a comparação com outros softwares de RSSF existentes no mer-
cado.
2. Desenvolvimento do Projeto:
• Levantamento de Requisitos: O levantamento de requisitos para a
confecção do programa é uma das etapas mais importantes do pro-
jeto. Esta etapa é responsável por listar todos os requisitos funcionais
e não funcionais do software norteando e delimitando assim o escopo
do mesmo.
• Diagramas de Classes: A construção dos diagramas de classe tem
como objetivo preparar o terreno para a implementação, já que esses
mostram a hierarquia presente no projeto e como as classes se relacio-
nam entre si.
• Diagramas de Pacotes: Assim como a construção dos diagramas de
classes este diagrama também prepara o terreno para a implementação
do software. Este diagrama tem como principal objetivo mostrar a
hierarquia das classes e procura agrupá-las de maneira organizada por
função ou estrutura os quais manipulam.
• Definição do Modelo de Desenvolvimento de Software: Fazer um
estudo sobre os modelos de desenvolvimento de software e verificar
qual a melhor opção a se aplicar neste trabalho.
• Implementação: Efetuar a codificação do projeto, obedecendo aos
diagramas propostos (classes e pacotes). Efetuar a leitura do arquivo
de log transformar o mesmo em conteúdo visual.
20. 6
1.4 Estrutura do Trabalho
Este trabalho está organizado da seguinte forma. O Capítulo 2 apresenta o
referencial teórico levantado durante este trabalho. O Capítulo 3 mostra a me-
todologia de trabalho utilizada na modelagem e implementação do visualizador
proposto. O Capítulo 4 apresenta o desenvolvimento do trabalho como o levanta-
mento de requisitos e a elaboração da arquitetura, entre outras etapas. O Capítulo
5 apresenta resultados e discussões do trabalho corrente. No Capítulo 6 são apre-
sentados as conclusões.
21. 7
2 REFERENCIAL TEÓRICO
2.1 Redes de Sensores Sem Fios
Devido aos avanços da tecnologia, Redes de Sensores Sem Fio (RSSFs) têm
apresentado uma ampla variedade de aplicações, que podem ser comerciais, cientí-
ficas e/ou militares. Uma RSSF é composta por um conjunto de elementos, chama-
dos nós sensores. O motivo da sua utilização é o baixo custo de seus elementos,
pequeno tamanho e seu uso simplificado. O nó sensor é um sistema embarcado
simples composto por um transceptor (rádio) com antena integrada, uma bateria,
um processador básico, uma pequena quantidade de memória e vários sensores. A
Figura 2.1 mostra um diagrama de blocos de um nó sensor com seus componentes
básicos.
Figura 2.1: Componentes de um nó sensor e nó sensor IRIS. Fonte: Adaptado de (LOUREIRO et
al., 2003).
A limitação de hardware faz com que os nós de uma rede sejam colocados em
forma de clusters ou grupos cooperantes para realização de tarefas complexas de
sensoriamento. Isso também é feito, porque RSSFs quando colocadas dessa forma
apresentam características desejáveis, tais como: robustez, adaptabilidade, auto-
22. 8
nomia e escalabilidade, que estão presentes na maioria de sistemas massivamente
distribuídos.
Para que se realizem as tarefas, a densidade da rede também é um fator ava-
liado. A maior quantidade de nós na rede implica em uma melhor qualidade de
sensoriamento, assim como uma grande quantidade de bons enlaces de comunica-
ção sem fio. Segundo (SILVA, 2006), esse tipo de rede é utilizado como uma boa
alternativa ao sensoriamento remoto ou a outros métodos tradicionais, justo que
permite com sua estreita relação com o meio físico, um sensoriamento detalhado.
Mesmo que RSSFs sejam formadas por componentes de baixo custo, é rele-
vante em etapas anteriores à instalação da rede e testes em campo, a utilização de
simulação computacional para visualizar o comportamento funcional da rede (al-
goritmos desenvolvidos). Isso é primordial em redes que apresentam de centenas
a milhares de nós, onde a visualização dos resultados em testes reais torna-se com-
plicada. Ou seja, toda a modelagem inicial deve ser feita utilizando um simulador
específico à aplicação para facilitar o trabalho.
2.2 Framework GrubiX
O simulador GrubiX foi desenvolvido na Linguagem Java e permite facil-
mente criar aplicações ligadas a RSSFs. Este programa segue o paradigma da
programação orientada a objetos. Para se desenvolver uma aplicação neste simula-
dor deve-se utilizar as classes mais genéricas e funcionalidades já implementadas
neste framework. Após concluída e executada a aplicação, será gerado um arquivo
de saída XML. Este é o arquivo que vai ser utilizado para se visualizar a aplicação
desenvolvida no Visual GrubiX.
O GrubiX é um framework para simulações computacionais em RSSFs. Este
software, como a maioria dos simuladores de rede populares, é orientado a eventos
23. 9
discretos. Isto significa que existe uma fila de eventos globais em que todos os
eventos de rede (movimentos de nó, pacotes, mensagens internas, temporizadores,
etc) são inseridos. Cada evento tem um identificador (ID) único e um relógio
que especifica o seu tempo de entrega, ou seja, o momento em que ele deve ser
retirado da fila e entregue ao seu destinatário, onde é processado. O tempo de
entrega também define a ordem segundo a qual os eventos são armazenados na fila
de eventos.
A entidade central do GrubiX é a SIMULATIONMANAGER, como mostra a
Figura 2.2. Ela gerencia a fila de eventos e sempre busca o primeiro evento da fila
e o entrega ao nó especificado. Enquanto isso, ela modifica o tempo de simula-
ção atual para o armazenado no evento corrente. Dessa forma, é possível simular
paralelismo verdadeiro.
Todos os conceitos conhecidos a partir do domínio de redes sem fio como
camadas do modelo OSI, pacotes, modelos de mobilidade, e outros, são modelados
como classes abstratas, como mostra a Figura 2.2. Nesta figura é mostrado o
diagrama de classes simplificado do GrubiX. Criando subclasses dessas classes
pode-se definir novas implementações, para RSSF. Isto torna muito fácil e seguro
a definição de modelos de mobilidade próprios ou protocolos.
Os pacotes são nada além de eventos especiais. Quando um pacote é criado
em uma determinada camada, por exemplo a camada de aplicação, é enviado para
baixo na pilha de camadas, até atingir a camada física. Abaixo da camada física,
existe uma camada especial artificial chamado AIRMODULE. Esta camada geren-
cia o estado do rádio de um nó sensor (enviar, receber, ocioso, dormindo, desli-
gado) e também é responsável por manter o controle de possíveis interferências de
outros nós.
Para efeitos do modelo de propagação do sinal de rádio, uma classe abstrata
chamada PHYSICALMODEL é fornecida. Dadas as posições geográficas de envio
24. 10
Figura 2.2: Diagrama de classes do framework GrubiX. Fonte: (LESSMANN; HEIMFARTH; JA-
NACIK, 2008).
e recepção do nó, e a intensidade do sinal com o qual o remetente transmite o
pacote, a implementações do PHYSICALMODEL calcula se o receptor pode ou
não ser atingido pelo remetente. Se o receptor está a uma distância alcançável ou,
pelo menos, de interferência, o PHYSICALMODEL retorna a intensidade do sinal
recebido. Para mais detalhes consulte (LESSMANN; HEIMFARTH; JANACIK,
2008).
Um esquema geral do processo de funcionamento do framework pode ser
visto na Figura 2.3. Conforme pode ser observado, primeiro se constrói uma
aplicação que usa as classes do simulador GrubiX. Em seguida executa-se esta
aplicação, gerando um arquivo de saída no formato XML. Este arquivo de log é
gerado através de recursos presentes no simulador GrubiX. Este arquivo contém
toda as informações provenientes da simulação da rede. O Visual GrubiX faz a
leitura do arquivo gerado, processa internamente os dados deste arquivo e mostra
suas informações em um formato visual. Cabe ao usuário o desenvolvimento da
aplicação e o controle do software de visualização da simulação.
25. 11
Figura 2.3: Etapas envolvidas no uso do simulador GrubiX.
O GrubiX foi modelado especificamente para RSSFs ao contrário da maioria
dos outros simuladores que eram específicos para redes sem fios e foram estendi-
dos para RSSFs, como é o caso do OptNet. As funcionalidades do GrubiX e suas
características estão descritas abaixo e são baseadas em (LESSMANN; HEIM-
FARTH; JANACIK, 2008):
1. O GrubiX foi implementado de forma modularizada, portanto funcionalida-
des (protocolos) podem ser incluídas ao simulador de maneira flexível.
2. É um simulador baseado na linguagem de programação Java (para imple-
mentação) e na de marcação XML (para configuração e saídas exportadas).
3. A linguagem Java elimina questões de programação problemáticas, como
falha de segmentação, alocação e desalocação de memória, que estão pre-
26. 12
sentes nas linguagens C e C++. O XML permite o uso de ferramentas pa-
dronizadas para análise (parsing) de arquivos e tradução de arquivos para
outros formatos.
4. Todo o conceito de camadas OSI (protocolos), pacotes, mobilidade, propa-
gação de sinal e modelos de tráfego são definidos como super-classes abs-
tratas. Para definir novos protocolos e outros modelos é suficiente que a
sub-classe estenda a classe abstrata, a qual provê frameworks e um padrão
de desenvolvimento de novos conceitos.
5. É um simulador orientado a eventos discretos. Para cada evento, que pode
ser qualquer ação ou detecção de ações dentro da rede, geram-se outros
eventos, controlados pelo projetista da aplicação. Assume-se também que
eventos acontecem em qualquer instante durante a simulação da rede.
6. Permite seguir o paradigma orientado a objetos para desenvolvimento das
aplicações.
7. O GrubiX possui suporte GUI (Graphical User Interface) para configuração
de cenários e visualização da RSSF.
8. Durante a simulação, todo comportamento da rede de sensores é guardado
em um arquivo de log para uma futura visualização e análise dos resultados.
2.3 Visualizadores de RSSF
Existem no mercado uma grande variedade de frameworks de RSSFs. A maio-
ria destes softwares possuem uma ou mais ferramentas de visualização (PARBAT;
DWIVEDI; VYAS, 2010). Os dados coletados a partir da RSSF geralmente são
salvos usando alguma codificação em uma estação base central ou arquivo. Exis-
27. 13
tem muitos programas que facilitam a visualização destas grandes quantidades de
dados coletados como o Visual ShoX, Nam, TinyViz, MoteView, entre outros.
Depois de estudar e avaliar uma série de trabalhos de pesquisa, se deparou
com a dificuldade de encontrar trabalhos sobre softwares de visualização de simu-
lações em RSSF. A grande maioria dos trabalhos encontrados na área focam em
simulação, protocolos de roteamento, arquiteturas, coleta de dados, mineração de
dados do sensor, questões de segurança etc. Foram encontradas poucas pesquisas
e literaturas disponíveis com foco em ferramentas de visualização de dados para
RSSFs (PARBAT; DWIVEDI; VYAS, 2010). O principal objetivo desta seção é
apresentar um levantamento detalhado sobre as ferramentas de visualização que
são usadas para visualizar as informações coletadas nas RSSFs.
Alguns autores da área classificam os simuladores de RSSFs em duas classes
de softwares. Na primeira classe tem-se os programas que fazem a visualização de
implementações reais. Esta classe é chamada por alguns de emuladores. Sendo as-
sim, o software de visualização captura as informações do gateway, o qual obteve
as informações dos nós sensores ou do nó sink. O sink é o nó que faz a conexão da
rede com uma estação concentradora de dados, como mostra a Figura 2.4 (nesta
figura o sink é o último nó sensor antes da ligação com o gateway. Na outra classe
os programas de simulação fazem toda a construção da rede virtual. Nesta classe
tais softwares são chamados de simuladores. Assim o visualizador deste segundo
tipo faz a captura dos dados simulados em um framework de RSSF que modelou
todo o ambiente e a rede.
Os visualizadores da primeira classe precisam ser ágeis e filtrarem os dados
rapidamente. Devem também fornecer uma avaliação significativa do estado da
rede. Outras características que devem possuir são a habilidade de disponibiliza-
rem os dados da rede de sensores para o utilizador e apresentar as informações da
forma mais eficaz e funcional possível.
28. 14
Figura 2.4: Funcionamento dos visualizadores de RSSF real. Fonte: Adaptado de (BUSCHMANN
et al., 2005).
A visualização de eventos de rede pode ser classificada em visualização offline
e online. A visualização online caracteriza-se pela exibição dos eventos durante
a execução da simulação. A visualização offline, os eventos são registrados em
um arquivo de log e exibidos somente após o termino da simulação. Ambas as
formas de visualização possuem suas vantagens. A visualização online permite ver
o comportamento da rede em curso imediatamente. Caso algum estado indesejado
ocorra, o usuário poderá tomar uma decisão imediatamente, como a interrupção de
uma simulação demorada. Por outro lado, a visualização offline permite retroceder
a algum ponto no tempo anterior. Dessa forma, eventos específicos que chamaram
a atenção do desenvolvedor, mas eram muito curtos para serem compreendidos
plenamente podem ser convenientemente repetidos quantas vezes se desejar. Outra
característica da visualização offline é a possibilidade de se mudar a velocidade da
animação. Com a visualização online, o usuário teria que refazer toda a simulação
novamente.
A seguir são apresentados alguns exemplos de visualizadores criados para
Redes de Sensores Sem Fio.
29. 15
2.3.1 Visual ShoX
O Visual ShoX é um visualizador de RSSF desenvolvido para o framework
ShoX. O Visual ShoX é um visualizador offline. Durante a simulação, este simula-
dor registra todos os eventos relevantes da rede em um arquivo de log no formato
XML (Extensible Markup Language).
A Figura 2.5 apresenta uma visão geral dos componentes individuais do Visual
ShoX e suas dependências. A arquitetura básica segue o paradigma Model-View-
Controller. Primeiro, o arquivo de log é carregado em uma lista de eventos e con-
figurações gerais da rede. A lista de eventos é uma coleção de eventos ordenados
pelo tempo (LESSMANN; HEIMFARTH, 2008).
Figura 2.5: Arquitetura MVC do Visual ShoX. Fonte: (LESSMANN; HEIMFARTH, 2008).
Uma vez que o processo de visualização é iniciado, o VISUALIZATIONMA-
NAGER repetidamente busca o evento atual do EVENTLIST. Com base no tempo
de entrega, o VISUALIZATIONMANAGER calcula o tempo do mundo real corres-
pondente, isto é, o tempo em que o evento deve ser visualizado de acordo com
a velocidade que o utilizador selecionou para visualização. No momento da vi-
30. 16
sualização pelo computador do evento corrente, o VISUALIZATIONMANAGER se
comunica com o NETSTATEMANAGER para que o mesmo atualize o NETSTATE
(LESSMANN; HEIMFARTH, 2008).
A Figura 2.6 mostra a interface deste software, o qual mostra uma simulação
em execução. Esta interface é composta de três áreas. Abaixo estão localizados
os botões de controle. É possível iniciar, pausar, continuar e reiniciar o processo
de visualização da simulação. Além disso, há vários níveis de velocidade e zoom.
Uma característica interessante é a possibilidade de capturar a animação em um
vídeo MPEG. Ao pressionar o botão “REC_ON”, uma imagem da área de anima-
ção é tomada em intervalos fixos (LESSMANN; HEIMFARTH, 2008). As ima-
gens individuais são então reunidos em um vídeo usando o utilitário Transcode
(TRANSCODE, 2012).
A área central da tela mostra uma animação de uma simulação. Ela mostra os
nós, os links e os pacotes. Na Figura 2.6, pode-se ver que um pacote está sendo
enviado na parte inferior da área de animação (representado por um retângulo pe-
queno).
Figura 2.6: Interface gráfica do Visual ShoX.
31. 17
No Visual ShoX, a aparência gráfica dos nós e ligações podem ser alteradas de
forma flexível. Particularmente, a aparência pode ser usada para descrever deter-
minado nó ou estados de ligação. Antes ou durante o processo de visualização, um
mapeamento pode ser feito pelo utilizador na GUI entre os estados registrados e a
representação gráfica pretendida. Dessa forma um nó pode ser mapeado para um
rótulo que é visivelmente ligado a ele. Da mesma forma, um nó pode ter variadas
cores, tamanho, espessura da borda e rótulos diferentes definidos no programa.
Assim, uma variedade de informações de estado interessante podem ser exibidas
de uma forma intuitiva para o usuário com facilidade. Por ser um visualizador
offline o Visual ShoX possui todas as características das simulações offline, como
voltar no tempo, selecionar uma parte do tempo específica, alterar a velocidade do
processo de animação etc. Outras informações podem ser obtidas em (JANACIK
et al., 2010).
2.3.2 Nam
Uma ferramenta para simulações de rede é o Network Simulator (ns-2), e seu
visualizador é conhecido como nam. Este, assim como o Visual ShoX, é um simu-
lador offline. Isto implica que o simulador produz arquivos que são visualizados
apenas após a simulação ter terminado. Neste visualizador os nós podem ter três
formas que são: círculos, retângulos e hexágonos.
A interface deste visualizador é mostrada na Figura 2.7. Uma característica
na forma de visualização dos nós é que as mesmas têm de ser definidas antes da
simulação ser iniciada e não podem ser alterada em tempo de execução. Durante
a execução, apenas a cor do nó pode ser alterada. Além disso, os nós podem
ter rótulos arbitrários. Da mesma forma, as ligações podem mudar sua cor de
forma dinâmica e podem ter rótulos. Assim, o conjunto de propriedades gráficas
32. 18
que podem ser manipulado pelo usuário é bastante limitado em comparação com
OMNeT++ que será descrito a seguir.
Figura 2.7: Interface gráfica do visualizador nam.
Pelo fato do nam ser um visualizador offline, este possui todas as caracterís-
ticas das simulações offline, como voltar num tempo anterior da simulação, se-
lecionar uma parte específica do tempo da simulação e alterar a velocidade da
animação.
2.3.3 OMNeT++
O OMNeT++ (VARGA, 2012) é um exemplo de uma ferramenta de simulação
com visualização online ao contrário dos visualizadores Visual ShoX e nam. Como
consequência de ser online, não existe comando para retroceder a simulação. Por
outro lado, o OMNeT++ permite inspecionar as variáveis e estados de todos os
objetos da rede de uma maneira muito detalhada. Os valores podem ainda ser
33. 19
alterados em tempo de execução para avaliar o impacto de certas propriedades no
curso da simulação.
A interface gráfica deste visualizador pode ser vista na Figura 2.8. Este si-
mulador também permite definir a forma como os estados do nó ou do link são
representados graficamente. É possível ajustar a cor, a espessura da borda do nó,
forma do nó (retângulo ou elipse), tamanho, rótulo, e espessura.
Figura 2.8: Interface gráfica do visualizador do OMNeT++.
2.3.4 TinyViz
O TinyViz é uma ferramenta de visualização de simulações para RSSF. Esta
ferramenta é utilizada no TOSSIM, que foi um dos primeiros simuladores pura-
mente orientados para redes de sensores (LEVIS et al., 2003). A Figura 2.9 mostra
a interface gráfica do visualizador TinyViz.
O visualização TinyViz é o mais genérico entre a maioria dos outros visuali-
zadores, é também um visualizador online. Ele apresenta as leituras dos sensores,
34. 20
Figura 2.9: Interface gráfica do visualizador TinyViz.
estados dos LEDs, ligações entre os rádios e permite a interação direta com simu-
lações do TOSSIM.
A arquitetura de TinyViz permite adicionar funcionalidades de visualização do
aplicativo específico. Esta funcionalidade inclui as operações de desenho especia-
lizadas, de subscrição e de reação a eventos e fornecer feedback para o simulador
TOSSIM. O TinyViz possui a capacidade de executar a visualização em tempo real
da simulação.
O TinyViz foi desenvolvido para a versão 1 do TinyS, não foi refeito para a
versão 2 e não é mais usado.
2.3.5 MoteView
O software de monitoramento MoteView foi desenvolvido pela empresa Cros-
sbow para visualizar dados de RSSF (CROSSBOW, 2007). Este visualizador é
um visualizador de rede real. Este programa é projetado para ser uma interface
da “Camada Cliente” entre o usuário e a RSSF implantada. MoteView oferece
35. 21
aos usuários as ferramentas para simplificar a implantação e o monitoramento da
RSSF. Também torna mais fácil se conectar a um banco de dados, analisar e fazer
as leituras dos sensores através dos gráficos. A arquitetura do MoteView é baseada
em módulos bem definidos e divididos.
A Figura 2.10 mostra a interface gráfica do MoteView. De acordo com (PAR-
BAT; DWIVEDI; VYAS, 2010) a tela principal da interface do usuário consiste
de sete abas das quais quatros são dados, comandos, gráficos e topologia. Na aba
dados são exibidas as leituras mais recentes dos sensores que foram recebidas de
cada nó na rede. Na aba gráficos o modo de exibição fornece a capacidade de gerar
gráficos da leitura do sensor em função do tempo para um dado conjunto de nós
sensores. Na aba topologia é mostrado um mapa topológico da rede de sensores.
Na aba comando o usuário tem a capacidade de alterar os parâmetros dos nós da
rede de sensores sem fio.
Figura 2.10: Interface gráfica do programa MoteView.
O MoteView apresenta muitas características topológicas e de visualização das
estatísticas da rede, bem como o registro de leituras de sensores, além da visualiza-
ção dos dados registrados. A função estatística inclui, por exemplo, o rendimento
de pacotes de dados fim a fim. Ele permite consultar a rede de sensores para co-
36. 22
letar dados do banco de dados. Os usuários podem habilitar opções para desenhar
ligações entre os nós e especificar se o Gateway tem um sensor nele para a vi-
sualização do gradiente. O MoteView possui um gerenciador de alertas e permite
ao usuário definir situação de alertas com base em quaisquer dados de sensores de
qualquer nó sensor. Possui como limitação o fato de executar somente nos sistemas
operacionais da família Windows.
2.4 Modelo de Desenvolvimento de Software
O desenvolvimento de um projeto necessita de planejamento sobre todas as
suas etapas. Para isto este trabalho seguiu algumas etapas descritas pelo RUP -
Rational Unified Process. O RUP é um processo proprietário de Engenharia de
Software criado pela Rational Software Corporation, adquirida pela IBM, forne-
cendo técnicas a serem seguidas pelos membros da equipe de desenvolvimento de
software com o objetivo de aumentar a sua produtividade no processo de desen-
volvimento. O RUP faz uso dos diagramas UML (Unified Modeling Language)
(BOOCH; JACOBSON; RUMBAUGH, 2006). Estes diagramas possuem uma no-
tação universalmente difundida e auxiliam a projetar um software e a compreender
as etapas de desenvolvimento mais claramente.
A Figura 2.11 mostra a hierarquia entre os mais diversos diagramas definidas
pela UML. O conhecimento dos principais tipos de diagramas UML é de extrema
importância para o entendimento deste projeto, já que o mesmo faz uso dos dia-
gramas de classes e de pacotes.
2.4.1 Ciclo de Vida do Projeto
O ciclo de vida de um projeto descreve as etapas a serem cumpridas desde a
concepção de um problema, até sua efetiva implantação num sistema computaci-
37. 23
Figura 2.11: Hierarquia dos diagramas UML. Fonte: Adaptado de (BOOCH; JACOBSON; RUM-
BAUGH, 2006).
onal. De uma maneira genérica podemos citar as seguintes fases de um ciclo de
vida:
1. Levantamento de Requisitos: Etapa inicial de um projeto de software,
onde o desenvolvedor, através de uma entrevista, fará o levantamento de
requisitos do software;
2. Análise: Através dos requisitos se determinará o que precisa ser feito para
atender aos requisitos do software;
3. Projeto: Esta etapa se dá após saber o que fazer, que foi definido acima,
na Análise. Aqui há um maior detalhamento de como será modularizado o
programa;
4. Implementação: Esta etapa é onde ocorre a codificação propriamente dita
do software, de acordo com o projeto especificado;
38. 24
5. Testes: Esta parte é onde se faz a validação do código em busca de bugs no
sistema;
6. Aceitação e implantação: Após o sistema já estar em uma versão estável
(ou quase) e funcional, se instala o programa para que os usuários do sistema
possam utilizar o mesmo;
7. Manutenção: Esta etapa ocorre após os usuários estarem utilizando o sis-
tema, possíveis bugs são corrigidos e novas funcionalidades são implemen-
tadas nesta etapa.
39. 25
3 METODOLOGIA
Esta seção apresenta as características metodológicas do trabalho, como por
exemplo: a classificação do tipo de pesquisa; como, onde e a partir de quais ferra-
mentas foi realizado o desenvolvimento deste trabalho.
3.1 Classificação do Trabalho
A metodologia utilizada neste trabalho pode ser classificada de várias manei-
ras. (JUNG, 2004) propôs uma classificação de tipos de pesquisa científica, con-
forme a natureza, os objetivos, os procedimentos e o local da pesquisa. A figura
3.1 apresenta um diagrama desta classificação.
Figura 3.1: Classificação dos tipos de pesquisa. Fonte: (JUNG, 2004).
40. 26
O presente trabalho apresenta as descrições do tipo de pesquisa, baseada em
(JUNG, 2004) e (MARCONI; LAKATOS, 2003). As classificações do trabalho
conforme tal modelo são apresentadas a seguir:
1. Quanto à natureza: Aplicada ou tecnológica. O presente trabalho lida com
a criação de uma nova ferramenta para RSSF.
2. Quanto aos objetivos: Exploratória. A proposta é a construção de um
software que substitua o antigo programa utilizado e modifique a forma de
lidar com visualizações computacionais.
3. Quanto aos procedimentos: Experimental. O trabalho visa o desenvol-
vimento de um programa e formas de organizar melhor a visualização das
simulações.
4. Local da Pesquisa: Em laboratório. Todo o desenvolvimento do programa
foi feito utilizando o computador e softwares de programação.
3.2 Desenvolvimento do Trabalho
A linguagem de desenvolvimento do visualizador foi a linguagem Java. A
mesma foi escolhida por possuir as seguintes características. Java é uma lingua-
gem distribuída através da licença GNU General Public License, e suporta os prin-
cipais conceitos de orientação a objetos. Favorece extensibilidade e reusabilidade
de código. É altamente portável, aplicações funcionam do mesmo jeito em qual-
quer ambiente completamente especificado, ou seja, é independente de plataforma.
Suporta aplicações concorrentes fazendo uso de multithreads. Possui grande quan-
tidade de recursos disponíveis através de suas APIs - Application Programming
Interface.
41. 27
O visualizador proposto foi desenvolvido focando em fazer um programa de
simulações que seja fácil de usar, fácil de acrescentar novas funcionalidades. Para
conquistar tais objetivos foi utilizado o padrão de projeto MVC (Model-View-
Controller) (GAMMA et al., 1994). Este padrão de projeto foca na completa
separação entre os elementos da interface gráfica, regras de negócio e estrutura de
dados.
Durante o desenvolvimento deste trabalho, foram utilizados partes do modelo
RUP. Assim fez-se uso dos diagramas UML propostos no RUP, entre estes diagra-
mas se utilizou os diagramas de classes e de pacotes que são partes dos diagramas
estruturais. O ciclo de vida do software desenvolvido evoluiu e passou pelas sete
fases: levantamento de requisitos, análise, projeto, implementação, testes, aceita-
ção e implantação e por fim manutenção do software.
42. 28
4 DESENVOLVIMENTO DO TRABALHO
Esta seção tem por objetivo apresentar o desenvolvimento do trabalho como
um todo. Assim, a seguir será explicado como foi desenvolvido o Visual GrubiX
e mais detalhes sobre as decisões de projeto como: qual o modelo de desenvolvi-
mento de software escolhido, o levantamento de requisitos, a estrutura do arquivo
de log, os diagramas de pacotes e classes, arquitetura MVC, entre outras informa-
ções e etapas presentes no desenvolvimento do trabalho.
4.1 Visual GrubiX
Este trabalho, assim como a maioria dos projetos, obedece a todas as sete
etapas do ciclo de vida de um projeto descritas na seção 2.4.1. Neste trabalho
escrito será dado, atenção especial às etapas de Projeto e de Implementação.
Entre os vários tipos de modelos de desenvolvimento de software existen-
tes como cascata, espiral, evolucionário, incremental, interativo, prototipação etc.
Este trabalho optou por utilizar o Modelo Incremental. As etapas necessárias ao
desenvolvimento do Visual GrubiX estão descritas a seguir:
4.1.1 Levantamento de Requisitos
A ideia básica do visualizador proposto é fazer uma interface gráfica intuitiva
para visualização da simulação gerada pelo framework GrubiX. Para abrir uma
simulação deverá ser carregado um arquivo XML contendo os dados da simulação,
em seguida estes dados devem ser analisados e exibidos na tela do visualizador. O
visualizador deverá mostrar a área a ser monitorada, os nós da rede e todos os
elementos importantes na simulação que foram programados no GrubiX. Deverá
43. 29
possuir controles da simulação e da animação, entre opções de mapeamento dos
elementos simulados.
O software deverá conter os seguintes requisitos funcionais coletados. Tais
requisitos foram coletados sobre demanda, ou seja, a medida do necessário foram
sendo encontrados novos requisitos e incrementados a lista de requisitos e estão
listados abaixo.
• Desenvolver uma interface gráfica para o software de visualização de simu-
lações computacionais em RSSF.
• Desenvolver recurso para dar suporte à leitura de arquivos XML no formato
gerado pelo GrubiX.
• Desenvolver recurso para abrir e fechar uma aplicação gerada pelo GrubiX.
• Desenvolver recursos para exibir informações e dados da simulação, como
dimensões do ambiente monitorado, quantidade de nós estáticos e móveis,
quantidade total de nós, quantidade total e atual do evento simulado, tempo
total e atual da aplicação, quantidade total e atual de pacotes enviados, etc.
• Desenvolver recurso para fazer o mapeamento de cores e labels associados
aos nós da rede de acordo com a especificação do arquivo XML da aplica-
ção.
• Desenvolver recurso de zoom e translação no painel onde será mostrada a
simulação.
• Desenvolver componente para exibir a barra de execução da simulação. Esta
barra deve poder ser manipulada de forma dinâmica durante a simulação,
alterando assim o fluxo de execução da simulação.
• Desenvolver recurso para visualizar o grafo de comunicação da rede.
44. 30
• Desenvolver recurso para mostrar a régua de dimensões do mundo simulado.
• Desenvolver recurso para aumentar e diminuir o tamanho dos nós da rede.
• Desenvolver recurso para controle da simulação: iniciar, pausar, recomeçar,
voltar a simulação, além de recursos de aumentar e diminuir a velocidade de
apresentação.
• Desenvolver nós como componentes selecionáveis, quando um determinado
nó é selecionado são exibidas informações como: ID, raio de alcance do
sensor, raio de comunicação entre outras.
• Desenvolver recurso que apresente a rota dos nós móveis da rede em linha
tracejada.
• Desenvolver recurso para selecionar opção de idiomas no software (portu-
guês e inglês).
• Desenvolver recurso de atalhos para os principais botões do software.
4.1.2 Estrutura do Arquivo de Log
O formato do arquivo de log gerado pelo simulador é o XML que é um padrão
muito utilizado no armazenamento de dados (DEITEL et al., 2003). O XML é uma
linguagem de marcação para necessidades especiais. Uma linguagem de marcação
é um conjunto de códigos aplicados a um texto ou a dados, com o fim de adicionar
informações particulares sobre esse texto ou conjunto de dados, ou sobre trechos
específicos. Como característica importante deste formato tem-se o fato de ser
armazenado em estruturas de árvores. O arquivo gerado pelo GrubiX possui o
formato esquematizado na Figura 4.1. Este arquivo é carregado pelo visualizador,
em seguida é construída um lista de eventos a serem exibidos na tela do programa.
45. 31
Figura 4.1: Estrutura do arquivos XML gerado pelo simulador.
Conforme visto na Figura 4.1 todas as estruturas estão dentro do campo SI-
MULATORLOG, como subcampos tem-se a parte de configurações contidos na
estrutura CONFIGURATION e tem-se também a simulação propriamente dita no
campo SIMULATIONRUN. O campo FIELD é usado para guardar as dimensões do
ambiente simulado. O campo COUNT é usado para indicar o número de nós da
simulação corrente. Em POSITIONS guardam-se as coordenadas e os IDs de todos
os nós da rede. Já na estrutura NODESTATE é feito um mapeamento de todos os
nós da rede, para representar a ocorrência de algum evento no ambiente definido
pelo programador. O campo ENQUEUE armazena as informações de comunicação,
ou seja, como são feitos os envios de pacote na rede. Em MOVE são guardadas as
informações de nós móveis e/ou intrusos que se deslocam na rede.
O Anexo A mostra um exemplo básico de como é o arquivo XML utilizado
nas leituras do visualizador.
46. 32
4.1.3 Arquitetura em Camadas
A exibição de dados na tela de simulação é baseada em camadas. Uma ar-
quitetura multi-layer é mais apropriada a este tipo de visualização, pois há uma
hierarquia bem definida na forma como os mesmos devem ser desenhados na tela.
A Figura 4.2 apresenta esta hierarquia.
Figura 4.2: Arquitetura em camadas do visualizador.
A primeira camada é a responsável por desenhar na tela o ambiente, de acordo
com as informações obtidas do mesmo no arquivo XML. A segunda camada é a
responsável por desenhar os nós na tela, isto com base nas informações do arquivo
dado. A terceira camada mostra os disparos de eventos, os movimentos dos nós
móveis e também faz o mapeamento definido pelo programador e selecionado pelo
usuário do programa de visualização. A quarta camada exibe informações dinâmi-
cas na tela, como mostrar o grafo de comunicação, modificar o tamanho dos nós,
mostrar a linhas de movimento.
Uma questão a ser notada é que a quarta camada é uma camada indepen-
dente do arquivo XML. Todas as informações contidas nela não provêm do ar-
47. 33
quivo XML, sendo assim, são processadas localmente e impressos na tela. Vários
recursos podem ser adicionados na quarta camada, pois a mesma tem um alto grau
de desacoplamento com as outras camadas.
4.1.4 Diagrama de Pacotes
Os diagramas em geral auxiliam a entender o funcionamento dos sistemas
como um todo. Existem vários tipos de diagramas, o primeiro diagrama utilizado
aqui é o diagrama de pacotes. Este diagrama auxilia a exemplificar a estrutura
lógica do projeto. Um diagrama provê uma parcial representação do sistema. Ele
ajuda a compreender a arquitetura do sistema desenvolvido.
O Diagrama de pacotes é um diagrama estático e é definido pela UML, onde
descreve os pacotes ou pedaços do sistema divididos em agrupamentos lógicos
mostrando as dependências entre estes, ou seja, pacotes podem depender de outros
pacotes. Este diagrama é muito utilizado para ilustrar a arquitetura de um sistema
mostrando o agrupamento de suas classes. Assim um pacote ajuda a organizar seu
projeto, não deixando suas classes espalhadas pelo sistema. Um pacote representa
um grupo de classes (ou outros elementos) que se relacionam com outros pacotes
através de uma relação de dependência. Um diagrama de pacotes pode ser utilizado
em qualquer fase do processo de modelagem e visa organizar os modelos.
A Figura 4.3 mostra o diagrama de pacotes do programa desenvolvido. Neste
diagrama são vistos três pacotes principais, que são: CONTROLLER, VIEW e RE-
SOURCES. O pacote CONTROLLER faz o controle da programa em geral e contém
a lógica de negócio do mesmo. No pacote VIEW é desenvolvida a interface gráfica
e o controle do que é exibido na tela do software. O pacote RESOURCES contém
as imagens e arquivos de idiomas utilizadas no programa.
Analisando ainda a Figura 4.3 tem-se no pacote principal de controle (CONTROLLER)
os sub-pacotes: CONTROL que contém as principais classes de controle do pro-
48. 34
Figura 4.3: Diagrama de pacotes do Visual GrubiX.
grama, STRUCTURE possui as classes da estrutura da rede, XML que contém as
classes que manipulam os arquivos XML lidos pelo visualizador e RESOURCES
que possui uma classe que faz o carregamento dos recursos gráficos do programa.
No pacote de visualização (VIEW) tem-se os sub-pacotes: WINDOW que con-
tém as principais classes de controle das janelas gráficas software, PAINT que pos-
sui as classes que pintam a animação da simulação e alguns recursos dentro do
painel de visualização da simulação, OTHERS que contém algumas classes que
auxiliam na construção da interface gráfica.
O último dos pacotes principais (RESOURCES) não contém classes, mas sim
recursos. Este possui como sub-pacotes: LANGUAGE sub-pacote que possui os
arquivos de idiomas, já que o visualizador desenvolvido tem acesso aos idiomas
iniciais português e inglês; IMAGES que possui os arquivos de imagens utilizadas
no programa.
Esta Figura 4.3 mostra também as dependências entre os pacotes, representada
pelas setas. As setas verdes indicam dependências entre pacotes dentro de um
mesmo pacote-pai. Já as setas vermelhas mostram dependências entre pacotes de
49. 35
escopos diferentes, ou seja, os pacotes relacionados não possuem o mesmo pacote-
pai.
4.1.5 Diagrama de Classes
Conforme dito anteriormente os diagramas servem para auxiliar no entendi-
mento do sistema. E o diagrama de classes é um dos diagramas que melhor auxilia
neste objetivo. Sendo assim este diagrama é uma representação da estrutura e rela-
ções entre as classes que servem de modelo para objetos. É uma modelagem muito
útil para o sistema, define todas as classes que o sistema necessita possuir.
O diagrama de classes é o mais importante diagrama da UML, ele está no cen-
tro da sua arquitetura e a partir desse diagrama outros diagramas são elaborados.
O diagrama de classes é uma importante ferramenta para a documentação de um
sistema ou produto de software, conforme ressaltado por (MELO, 2002).
Segundo (FOWLER; SCOTT, 2000), “Um diagrama de classes descreve os
tipos de objetos no sistema e os vários tipos de relacionamentos estáticos que exis-
tem entre eles”. As classes representam as propriedades e o comportamento de um
conjunto de objetos em um sistema e, consequentemente, como essas classes não
existem sozinhas, é importante também representar os seus relacionamentos.
Devido a esta série de benefícios gerados por este diagrama, o presente traba-
lho faz uso dos diagramas de classes para ilustrar melhor o software desenvolvido.
A Figura 4.4 mostra o diagrama de classes dos pacotes CONTROL à esquerda e
STRUCTURE à direita. Nestes diagramas mostra-se apenas o relacionamento das
classes internas ao pacote nos quais estão inseridas, ou seja, CONTROL e STRUC-
TURE respectivamente. É bom ressaltar que nos diagramas mostrados foram omi-
tidos os atributos, os métodos e a multiplicidade das associações afim de dar maior
simplicidade ao diagrama.
50. 36
Figura 4.4: Diagramas de classes dos pacotes Control e Structure.
A Figura 4.5 apresenta o diagrama de classes dos pacotes WINDOW à es-
querda e PAINT à direita. Assim como na figura anterior é apresentado apenas o
relacionamento das classes internas ao pacotes o qual estão inseridas.
Figura 4.5: Diagramas de classes dos pacotes WINDOW e PAINT.
Estes diagramas apresentados direcionaram todo o desenvolvimento da pro-
gramação do visualizador. Os diagramas de classes completos mostrando os rela-
cionamentos entre os pacotes pode ser visto no Anexo B.
4.1.6 Arquitetura MVC
O Visual GrubiX foi desenvolvido de forma que seja fácil de usar e permita o
acréscimo de novas funcionalidades de modo fácil. Para conquistar tais objetivos
foi utilizado o padrão de projeto MVC (GAMMA et al., 1994). Este padrão de
51. 37
projeto prioriza a completa separação entre os elementos da interface gráfica, as
regras de negócio e a estrutura de dados.
Figura 4.6: Arquitetura MVC do Visual GrubiX.
A Figura 4.6 mostra um esquema da arquitetura MVC utilizada no Visual Gru-
biX. Na parte de Model tem-se as estruturas que fazem o carregamento do arquivo
XML presente no disco e que organizam os dados lidos no arquivo em uma lista de
eventos e uma estrutura de dados da simulação. Na parte de Controller a estrutura
Gerenciador da Simulação cuida de organizar as informações para serem exibidas
na tela do visualizador com base nas informações obtidas da lista de eventos e dos
dados da simulação obtidas da parte Model. Na parte de View a estrutura Gerenci-
ador de Telas cuida de mostrar a interface das principais telas do visualizador. Para
isto ela faz uso dos recursos gráficos e da estrutura de desenhar na tela a simulação
corrente.
4.1.7 Algoritmo que Gerencia a Simulação
Durante a confecção deste visualizador vários algoritmos foram desenvolvi-
dos. A versão atual do programa conta com cerca de 7500 linhas de código. Este
possui também cerca de 40 classes e 12 pacotes.
52. 38
Entre os códigos produzidos alguns fazem controle das estruturas de dados,
outros da interface gráfica e do arquivo XML e alguns da simulação em si. Um
dos códigos mais importantes é o que faz o controle da simulação dos eventos da
rede. Sendo assim um importante trecho deste código está apresentado a seguir.
Algoritmo 1: Algoritmo para simulação dos eventos da rede.
Entrada: ModoDaSimulação: mode, ListaDeEventos: listEvent
Saída: Simulação dos eventos da rede
1 início
2 inteiro indexEvent = 0;
3 enquanto (true) faça
4 se (indexEvent <= listEvent.size ()-1 and indexEvent >=0)
então
5 EventGeneric event = listEvent.get (indexEvent);
6 se (event instanciade EventMove) então
7 event.runMove ();
8 fim se
9 senão se (event instanciade EventMsg) então
10 event.runMsg ();
11 fim se
12 fim se
13 se (mode = PLAY) então
14 indexEvent = indexEvent + 1;
15 se (indexEvent > listEvent.size () - 1) então
16 mode = PAUSE;
17 fim se
18 fim se
19 senão se (mode = BACK) então
20 indexEvent = indexEvent - 1;
21 se (indexEvent < 0) então
22 mode = PAUSE;
23 fim se
24 fim se
25 enquanto (mode = PAUSE) faça
26 wait () ;
27 fim enqto
28 fim enqto
29 fim
53. 39
Observando o Algoritmo 1 vê-se que a simulação pode se encontrar em três
modos que são PLAY, BACK ou PAUSE estes modos indicam simulação avançando,
retrocedendo ou parada. Quando a simulação está avançando ou retrocedendo, um
evento da lista de eventos é capturado e a sua animação é disparada. Este evento
pode ser de dois tipos: evento de mensagem ou evento de movimentação dos nós.
Após verificar qual é o tipo do evento atual, o mesmo é executado. Caso seja um
evento de mensagem a mesma é enviada, caso seja um evento de movimento o nó
se move.
4.1.8 Principais Recursos Desenvolvidos
O Visual GrubiX contou com todos os recursos designados no levantamento
de requisitos. Assim o visualizador é capaz de mostrar toda a simulação de eventos
ocorridos na rede. A transmissão de pacotes na rede é feita através de animações,
onde cada pacote é entregue ao respectivo nó sensor destino. O suporte aos idiomas
português e inglês foi feito usando classes para internacionalização de código java,
usando dois arquivos de properties. Em cada um destes arquivos tem-se todo o
conjunto de palavras em português em um e no outro as respectivas palavras em
inglês.
Alguns outros recursos não presentes no levantamento de requisitos foram
desenvolvidos como: vários temas, ativar e desativar anti-aliasing, mudar forma de
envio de pacotes, mostrar os identificadores dos nós da rede, carregar uma imagem
de fundo do ambiente, tirar print-screen do painel de visualização da simulação
etc.
A seguir são encontrados alguns recursos presentes no software de visualiza-
ção desenvolvido e seu funcionamento.
54. 40
4.1.8.1 Mapping
O mapping ou mapeamento é um recurso presente no Visual GrubiX. Este re-
curso permite ao usuário especificar quais elementos gráficos que representam um
determinado aspecto de simulação. Esses aspectos a serem mapeados são defini-
dos pelo programador da rede no momento da codificação do comportamento da
rede.
Um exemplo de mapping bastante utilizado ocorre quando deseja-se mapear
algum(s) nó(s) sensor(es) com informações de algum tipo de pacote especial que
foi recebido por algum outro nó. Assim cria-se um mapping para reconhecer que
este determinado nó recebeu tal pacote. Este mapping será apresentado de forma
gráfica no visualizador. Esta forma pode ser definida através de cores para os
nós, cores das bordas dos nós, ou ainda utilizando labels que exibirão informações
numéricas.
Conforme dito este mapeamento pode auxiliar o programador a depurar seu
código e verificar o perfeito recebimento de pacotes especiais a algum grupo de nós
da rede. É importante ressaltar também que o framework GrubiX é um dos poucos
simuladores que dá suporte a este tipo de recurso (LESSMANN; HEIMFARTH,
2008).
4.1.8.2 Grafo de Conectividade
Uma recurso adicional neste visualizador em relação ao Visual ShoX é o modo
de exibição onde é mostrado o grafo de conectividade da rede. Este grafo é mon-
tado da seguinte forma: linhas direcionais a partir de cada nó para todos os seus
vizinhos são exibidas na tela, ou seja, estas ligações indicam o alcance de trans-
missão de dados dos nós da rede. Este alcance como se sabe se dá de acordo com o
alcance do sinal de rádio. Assim caso o grafo da rede seja todo conexo então a rede
55. 41
estará inteiramente conectada. Na Figura 4.7 vê-se um esquema do funcionamento
deste recurso.
Figura 4.7: Exemplo de grafo de conectividade da rede.
Na Figura 4.7, vê-se que a rede é conexa, já que existe um caminho de um nó
para qualquer outro nó da rede. Caso a rede fosse desconexa poderia ser visto que
não existiria tal caminho.
Figura 4.8: Exemplo de linhas de movimentação da rede.
56. 42
4.1.8.3 Linhas de Movimentação
Um dos principais objetivos deste trabalho é dar uma maior quantidade de
informação de uma simulação qualquer ao programador da rede. Sendo assim foi
desenvolvido um mecanismo onde são mostradas as linhas de movimentação de
nós móveis. O nós móveis de uma rede geralmente são VANTs - Veículos Aé-
reos Não Tripulados ou ainda intrusos (ou carros, ou pessoas com celular etc). A
Figura 4.8 mostra um esquema sobre estas linhas de movimentação que foi desen-
volvido para o deslocamento do VANT. Nesta Figura, vê-se em uma das linhas a
trajetória indicando onde o VANT passou. Já a outra linha fornece informações da
trajetória feita pelo intruso, neste exemplo, um macaco. Essas trajetórias e rotas
dão informações ao programador a longo prazo sobre o deslocamento destes ob-
jetos. No caso do VANT essa informação pode ser usada para se ter noção global
dos algoritmos de deslocamento do mesmo. Já no caso do intruso essa informa-
ção pode mostrar na rede uma possível tendência no algoritmo de deslocamento
dos intrusos, já que os mesmos também são modelados em software através do
framework.
57. 43
5 RESULTADOS E DISCUSSÕES
Nesta seção são apresentados os resultados obtidos e são feitos algumas dis-
cussões sobre o software desenvolvido.
Como resultado deste trabalho tem-se o visualizador de simulações computa-
cionais de Rede de Sensores Sem Fio para o framework GrubiX, conhecido como
Visual GrubiX. Um dos principais focos é a criação de uma interface de exibição
que permita operação de forma intuitiva. Sendo assim, foi construída uma inter-
face análoga aos softwares de exibição de vídeos no que diz respeito aos botões de
controle da simulação. A navegação do software é análoga aos programas de mani-
pulação de imagens e CADs (Computer-Aided Design) mais utilizados no mundo,
ou seja, para navegar pelo ambiente de simulação basta clicar os botões do mouse,
arrastar o mouse e girar o scroll do mouse. Esses comandos do mouse permitem
fazer zoom e transladar o sistema. O programa desenvolvido possui suporte a dois
idiomas o português e o inglês e pode ser ampliado com facilidade, uma vez que
foram desenvolvidos usando algumas classes de internacionalização do Java.
A Figura 5.1 mostra o produto final deste trabalho. Essa figura mostra mais
especificadamente a tela inicial de abertura do software. Nessa tela veem-se as op-
ções para abrir um arquivo de simulação, abrir em tempo real e fechar o programa,
além de opções para ir ao menu de ajuda e mudar o tema.
A tela principal do programa desenvolvido pode ser vista na Figura 5.2, onde
é apresentada uma simulação de uma RSSF ocorrendo. A interface deste software
é composta de quatro áreas. Na área acima há uma barra de menus e uma barra de
botões de controle de projetos abertos. Mais a acima e a direita pode-se ver alguns
status da simulação corrente.
Na área a esquerda vê-se um painel com várias opções de visualização da
simulação. Entre essas opções tem-se: habilitar o grafo de comunicação dos nós
58. 44
Figura 5.1: Tela inicial do Visual GrubiX.
Figura 5.2: Tela de simulação do Visual GrubiX.
da rede, mudar a forma de envio de pacotes, selecionar imagens para os nós da
rede, habilitar também o ID dos nós da rede, a régua, as linhas de movimentação,
entre outros recursos. Pode-se também mudar o tamanho dos nós da rede. Na
esquerda tem-se também outras abas uma para fazer o mapeamento dos eventos
de interesse ocorridos na rede em uma representação gráfica pretendida, e tem-se
a aba de dados que mostra várias informações da rede simulada como densidade
59. 45
de nós, número médios de nós vizinhos, conectividade da rede, número de pacotes
enviados até determinado momento, entre outras informações.
Na área central vê-se uma aplicação sendo executada. Nesta área mostram-se
os nós, o grafo de comunicação entre os mesmos, mostra-se um nó selecionado,
para o qual ao lado esquerdo e acima são apresentados informações. Nas bordas da
área central vê-se uma régua para se ter noção de distâncias e da área de cobertura
da rede.
Na área abaixo têm-se os botões de controle da simulação e da animação,
onde é possível iniciar, pausar, continuar, e reiniciar o processo de visualização
da simulação. Além disso, há vários níveis de velocidade da animação, entre ou-
tros recursos. Um pouco acima desses botões tem-se uma barra de progresso da
simulação corrente, essa barra é dinâmica onde pode-se retroceder ou avançar e
também selecionar um ponto específico de tempo, arrastando o controle deslizante
do tempo.
Figura 5.3: Tela de simulação do Visual GrubiX.
A Figura 5.3 mostra outra tela onde a mesma simulação da anterior está em
curso, com algumas outras configurações selecionadas. Na aba Dados na esquerda
veem-se alguns dados da simulação corrente.
60. 46
Recursos Visualizador Visual GrubiX Visual ShoX
Multiplataforma Sim Sim
Possui mapeamento de elementos Sim Sim
Nós da rede selecionáveis Sim Não
Mostra grafo conectividade Sim Não
Mostra linhas de movimentação Sim Não
Mostra imagens nós Sim Não
Possui análise estatística Não Sim
Definir as configuração da rede Sim Não
Rapidez carregar arquivo Muito rápido Lento
Botões de controle Bom Regular
Controle da animação ± velocidade ± velocidade
Usabilidade do sistema Fácil Difícil
Idiomas Inglês / Português Inglês
Abrir arquivos log xml xml / Compact
Carregamento dos arquivos Memória / buffer Memória
ProgressBar simulação Dinâmica Estática
Forma de zoom Usa mouse ou botões Usa slider
Forma de translação Usa mouse ou botões Usa slider
Tabela 5.1: Comparação do Visual GrubiX e do Visual ShoX.
A Tabela 5.1 mostra algumas comparações de forma resumida entre as funci-
onalidades, recursos e características do Visual GrubiX e do do Visual ShoX. Ana-
lisando esta comparação entre os visualizadores vê-se que visualizador proposto
atende bem aos objetivos do trabalho, já que conseguiu-se obter um visualizador
com interface gráfica bem amigável e que apresenta um sistema de navegação bas-
tante intuitivo, além de possuir vários outros recursos não encontrados no Visual
ShoX. O software desenvolvido ainda não tem todos os recursos que o Visual ShoX,
como leitura de arquivos compact, que são bem mais econômicos em relação ao
espaço de armazenamento em disco e também não faz analise estatística.
A Tabela 5.2 mostra algumas características dos visualizadores Visual GrubiX,
Visual ShoX, nam e o Visualizador do OMNeT++.
Atributos Visualizador Visual GrubiX Visual ShoX nam Visual. OMNeT++
Linguagem Java Java C++ C++
Licença Open source Open source Open source Licença Acadêmica
Forma de Visualização offline offline offline online
Tabela 5.2: Comparação geral dos visualizadores Visual GrubiX, Visual ShoX, nam e OMNeT++.
61. 47
Além dos recursos descritos nos requisitos do software foram, desenvolvidos
outras funcionalidades. Entre as novas funcionalidades destacam-se: recurso para
ativar ou desativar o anti-aliasing (técnica antisserrilhamento embaça as bordas,
dando a impressão visual de um contorno mais suave); recurso para mudar a forma
de envio de pacotes da rede; recurso para mostrar o identificador (ID) de todos os
nós da rede; recurso para mostrar a imagem de todos os nós da rede; recurso para
carregar uma imagem de fundo da rede; recurso para tirar print screen do painel
onde é visualizada a simulação; recurso para exibir vários temas (look and feel) da
interface e personalizar a aparência do software.
62. 48
6 CONCLUSÃO E TRABALHOS FUTUROS
Esse trabalho apresentou o Visual GrubiX, um visualizador de redes de sen-
sores sem fio, cujo principal foco é permitir visualizar de maneira fácil e intuitiva
as aplicações desenvolvidas no GrubiX e no ShoX (frameworks de RSSF). Seus
objetivos consistem em manter a compatibilidade com os dois frameworks. O fato
do Visual ShoX e Visual GrubiX terem uma certa familiaridade faz com que seja
fácil a migração de um visualizador para outro, facilitando o aprendizado. O novo
visualizador possui uma interface gráfica amigável.
O Visual Grubix apresenta-se como uma versão de visualização offline para o
framework GrubiX escrito em Java. O mesmo possui recursos para mostrar as for-
mas de visualização dos dados como as linhas de movimentação que indicam onde
os nós se moveram, grafo de conectividade que exibe os alcances dos nós senso-
res. Possui também muitos recursos para controle das simulações como avançar ou
retroceder uma simulação, parar, aumentar e diminuir a velocidade, entre outros.
Neste trabalho um dos focos foi desenvolver um software com alta manute-
nibilidade e legibilidade de código, usando os conceitos presentes na orientação a
objetos. Esta preocupação com manutenibilidade e legibilidade ocorre pelo fato
de que pretende-se que novos desenvolvedores possam vir a contribuir implemen-
tando novas funcionalidades no Visual GrubiX.
O Visual GrubiX supera várias deficiências do Visual ShoX ao qual faltam vá-
rios recursos de visualização. O visualizador proposto utiliza um arquivo XML
como entrada para a visualização e permite um visual rico e depuração de simu-
lações de rede. Além disso, o esquema de mapping permite ao usuário especificar
quais elementos gráficos representam um determinado aspecto de simulação.
Como proposta de trabalhos a serem realizados no futuro podem-se citar:
acrescentar novas funcionalidades ao visualizador como aumentar a fidelidade das
63. 49
simulações integrando o visualizador com o Google Maps. Criar um recurso para
produzir vídeos da simulação corrente. Aumentar a abrangência do software com
suporte a novos formatos de arquivo de saída .compact, este formato economiza
espaço em disco e é suportado pelo Visual ShoX. Por fim, um outro recurso inte-
ressante de se implementar é um componente que visualiza a parte do script XML
que está sendo executada, em um determinado instante de tempo. Este recurso é
interessante para que o desenvolvedor da aplicação possa analisar erros.
64. 50
REFERÊNCIAS
BOOCH, G.; JACOBSON, I.; RUMBAUGH, J. UML - Guia Do Usuário. 2. ed.
[S.l.]: Elsevier, 2006. 474 p.
BUSCHMANN, C.; PFISTERER, D.; FISCHER, S.; FEKETE, S. P.; KROLLER,
A. Spyglass: a wireless sensor network visualizer. SIGBED Rev., ACM, New York,
NY, USA, v. 2, n. 1, p. 1–6, jan. 2005. ISSN 1551-3688. Disponível em: <http:/-
/doi.acm.org/10.1145/1121782.1121784>.
CROSSBOW. MoteView Users Manual. Crossbow Technology, 2007.
DEITEL, H.; DEITEL, P.; NIETO, R.; LIN, T.; SADHU, P. Livro XML Como
Programar. [S.l.]: Bookman, 2003.
FOWLER, M.; SCOTT, K. UML essencial: um breve guia para a linguagem pa-
drão de modelagem de objetos. 2. ed. [S.l.]: Porto Alegre - RS, 2000. 169 p.
GAMMA, E.; JOHNSON, R.; HELM, R.; VLISSIDES, J. M.; BOOCH, G. Design
Patterns: Elements of Reusable Object-Oriented Software. [S.l.]: Addison-Wesley,
1994.
GRUBIX. Simulador GrubiX. 2013. Disponível em: <http://pesquisa.dcc.ufla.br-
/grub/grubix-simulator/>.
JANACIK, P.; LESSMANN, J.; HEIMFARTH, T.; KARCH, M. Towards an effi-
cient protocol development process in the shox network simulator. In: Computer
Modelling and Simulation (UKSim), 2010 12th International Conference on. [S.l.:
s.n.], 2010. p. 233 –238.
JUNG, C. F. Metodologia para pesquisa & desenvolvimento: aplicada a novas
tecnologias, produtos e processos. [S.l.]: Rio de Janeiro - RJ, 2004.
65. 51
LESSMANN, J.; HEIMFARTH, T. Flexible offline-visualization for mobile wire-
less networks. In: Proceedings of the Tenth International Conference on Computer
Modeling and Simulation. Washington, DC, USA: IEEE Computer Society, 2008.
(UKSIM ’08), p. 404–409. ISBN 978-0-7695-3114-4. Disponível em: <http://dx-
.doi.org/10.1109/UKSIM.2008.33>.
LESSMANN, J.; HEIMFARTH, T.; JANACIK, P. Shox: An easy to use simulation
platform for wireless networks. In: UKSIM ’08: Proceedings of the Tenth Interna-
tional Conference on Computer Modeling and Simulation. Washington, DC, USA:
IEEE Computer Society, 2008. p. 410–415. ISBN 978-0-7695-3114-4.
LEVIS, P.; LEE, N.; WELSH, M.; CULLER, D. Tossim: accurate and scalable
simulation of entire tinyos applications. In: Proceedings of the 1st international
conference on Embedded networked sensor systems. New York, NY, USA: ACM,
2003. (SenSys ’03), p. 126–137. ISBN 1-58113-707-9. Disponível em: <http:/-
/doi.acm.org/10.1145/958491.958506>.
LOUREIRO, A. A. F.; NOGUEIRA, J. M. S.; RUIZ, L. B.; MINI, R. A. de F.;
NAKAMURA, E. F.; FIGUEIREDO, C. M. S. Redes de sensores sem fio. In:
Tutoriais do Simpósio Brasileiro de Redes de Computadores. [S.l.: s.n.], 2003.
MARCONI, M. de A.; LAKATOS, E. M. Fundamentos de metodologia científica.
[S.l.]: São Paulo - SP, 2003.
MELLO, B. A. d.; CAIMI, L. L. Simulação na validação de sistemas computaci-
onais para a agricultura de precisão. Revista Brasileira de Engenharia Agrícola e
Ambiental, volume 12, p. 666–675, 2008.
MELO, A. C. Desenvolvendo Aplicações com UML: do Conceitual à Implemen-
tação. [S.l.]: Rio de Janeiro, 2002. 255 p.
PARBAT, B.; DWIVEDI, A.; VYAS, O. Data visualization tools for wsns: A
glimpse. International Journal of Computer Applications, Volume 2, 2010.
66. 52
SHOX. ShoX - A scalable ad hoc network simulator. 2012. Disponível em: <http:-
//shox.sourceforge.net>.
SILVA, R. C. Redes de Sensores Sem Fio. Dissertação (Monografia de Graduação)
— Universidade Estadual de Montes Claros, 2006.
TRANSCODE. Transcode Wiki. 2012. Disponível em: <http://www.transcoding-
.org/cgi-bin/transcode>.
VARGA, A. Omnet++ Discrete Event Simulation System. 2012. Disponível em:
<http://www.omnetpp.org>.
67. 53
A ANEXO
No script A.1 encontra-se um arquivo XML. Este arquivo mostra um exemplo
genérico das informações contidas na saída do framework GrubiX. A estrutura
deste arquivo foi utilizada como informação para o desenvolvimento do software
proposto nesta monografia, o Visual GrubiX.
1 <?xml version="1.0" encoding="ISO-8859-1"?>
2 <!--GrubiX XML - Criado por Jesimar-->
3 <simulatorlog>
4 <configuration>
5 <description write="Texto descrevendo a aplicacao." />
6 <field>
7 <x>100.0</x>
8 <y>100.0</y>
9 </field>
10 <simulationtime stepspersecond="100" base="steps">60000</
simulationtime>
11 <communicationradius>25.0</communicationradius>
12 <nodes>
13 <count>50</count>
14 </nodes>
15 <positions>
16 <position>
17 <id>1</id>
18 <x>34.91</x>
19 <y>32.52</y>
20 <info nodetype="REGULAR" />
21 <ismobile>false</ismobile>
22 </position>
23 </positions>
24 </configuration>
25 <simulationrun>
26 <nodestate id="3" name="Valor" type="int" value="244" />
27 <move id="5" x="12.5" y="74.3" time="37.2" />
28 <enqueue>
29 <time>37.2</time>
30 <id>561</id>
69. 55
B ANEXO
Abaixo encontram-se alguns diagramas de classes mais completos do visuali-
zador desenvolvido.
A Figura B.1 mostra o diagrama de classes referente ao pacote CONTROLLER.
Este pacote possui quatro sub-pacotes que são: CONTROL, STRUCTURE, XML e
RESOURCES. Dentro do pacote CONTROL tem alguns classes que fazem o con-
trole do software como um todo. No pacote STRUCTURE existem as classes res-
ponsáveis por guardar os dados lidos do arquivo XML. O pacote XML é o res-
ponsável por fazer a leitura do arquivo XML, a qual pode ser feita usando a API
do Java DOM ou SAX. O pacote RESOURCES contém as classes responsáveis por
fazer o carregamento dos recursos gráficos como imagens e ícones.
Figura B.1: Diagrama de classes da camada Controller.
A Figura B.2 mostra o diagrama de classes referente ao pacote VIEW. Este
pacote possui também sub-pacotes que são: WINDOW, PAINT e OTHERS. Dentro
do pacote WINDOW, de maneira geral, existem as classes que são janelas gráfi-
70. 56
cas ou ainda abas da janela principal. No pacote PAINT existem as classes para
desenhar na tela dentro da área da simulação. O pacote OTHERS contém classes
genéricas para auxiliar no desenvolvimento da interface gráfica.
Figura B.2: Diagrama de classes da camada View.
A Figura B.3 mostra o diagrama de classes referente a todo o projeto do Visual
GrubiX. Esta figura, como pode-se observar, é a junção das duas anteriores e assim
acaba por mostrar como as mesmas se relacionam.
Estes diagramas podem ser melhor entendidos observando-se as cores dos
relacionamentos. As linhas pretas mostram os relacionamentos dentro do mesmo
pacote, ou seja, relacionamentos locais. Os relacionamentos com linhas verdes
são relacionamentos de classes de pacotes diferentes, mas presos à estrutura de
CONTROLLER ou VIEW. Afim de maior simplicidade mostrou-se somente de qual
classe sai este tipo de relacionamento, não mostrando a classe destino, pois ficava
muito confuso de se entender. Já os relacionamentos com cores vermelhas são
entre estruturas diferentes, ou seja, vão do pacote CONTROLLER para o pacote
VIEW e vice-versa. São relacionamentos globais onde o controlador comunica-se
com a interface gráfica e vice-versa.