Anais do 15O Encontro de Iniciação Científica e Pós-Graduação do ITA – XV ENCITA / 2009 Instituto Tecnológico de Aeronáutica, São José dos Campos, SP, Brasil, Outubro, 19 a 22, 2009. DESENVOLVIMENTO DE ALGORITMOS DE COMUTAÇÃO AUTOMÁTICA DE TELECOMUNICAÇÕES ENTRE PLATAFORMAS DE COLETA DE DADOS E ESTAÇÕES DE MONITORAMENTO E CONTROLE Ricardo Silva Carvalho Bolsista PIBIC-CNPq, Instituto Tecnológico de Aeronáutica – ITA [email protected] Prof. Dr. Adilson Marques da Cunha Orientador, professor do Instituto Tecnológico de Aeronáutica – ITA [email protected] Ricardo Godoi Vieira Co-orientador, aluno de mestrado do Instituto Tecnológico de Aeronáutica – ITA [email protected] Resumo. O propósito deste artigo é dotar o Projeto Integrado de Cooperação Amazônica para a Modernização do Monitoramento Hidrológico (ICA-MMH B) de algoritmos apropriados para comutação automática eficiente dos canais de comunicação entre Plataformas de Coleta de Dados – PCDs e Estações de Monitoramento e Controle – EMCs, com a finalidade de melhorar a eficiência no envio de dados hidrológicos e meteorológicos, otimizando a troca de dados e reduzindo custos operacionais. Para tal, inicialmente estudou-se tecnologias envolvidas no desenvolvimento de algoritmos, além de ser criada uma base em Engenharia de Software, para posteriormente, ser realizado um estudo de caso baseado no Projeto ICA-MMH B, onde foi utilizada a linguagem Java para o desenvolvimento de um software para testar a implementação dos algoritmos desenvolvidos. Palavras chave: Engenharia de Software, Algoritmos, Engenharia de Telecomunicações. 1. Introdução O Projeto de Integração e Cooperação Amazônica para Modernização do Monitoramento Hidrológico (ICA-MMH B) tem por finalidade a elaboração, para uma região hidrográfica de referência, de um sistema-piloto para modernização e integração de Plataformas de Coleta de Dados (PCDs) hidrológicas capazes de gerenciar, receber e transmitir, com eficiência, os dados obtidos, que servirão como base para gestão de recursos hídricos. Por meio desse sistema, serão disponibilizadas as informações, em tempo real, para diferentes entidades e para a sociedade, como insumos para o desenvolvimento de estudos e para a tomada de decisões. A disponibilização dessas informações contribuirá, também, para o apoio à tomada de decisões no campo econômico, principalmente as inerentes às atividades agrícolas, pesqueiras e de navegação, assim como no campo da segurança. Além dos pontos de coletas, estão previstas algumas Estações de Monitoramento e Controle – EMCs que receberão os dados hidrológicos das PCDs, através de três formas de telecomunicações (via celular, rádio frequência ou satélite), garantindo a redundância e a interrogação, em tempo real, e disponibilizando, em seguida, todas as informações em um banco de dados que poderá ser acessado através da Internet. O desenvolvimento desse sistema como um todo deverá contribuir para: o progresso científico e tecnológico nacional na área de coleta, transmissão, tratamento e difusão de dados; a melhoria da atuação do poder público no gerenciamento de recursos hídricos; e o desenvolvimento da cooperação técnica com países limítrofes na área de monitoramento hidrológico. Devido ao grau de complexidade no qual o Projeto se encontra inserido, torna-se necessária a adoção de um conjunto de metodologias bem definidas, por meio das quais todas as etapas do Projeto possam ser concluídas, da forma esperada. Frente ao exposto, para completar com êxito o objetivo do Projeto ICA-MMH B, percebeu-se a necessidade de utilização eficiente dos canais de comunicação a serem utilizados pelas PCDs para o envio e o recebimento de dados para as Estações de Monitoramento e Controle (EMCs). Visando satisfazer essas necessidades, optou-se pelo desenvolvimento de algoritmos computacionais para a comutação automática dos canais de telecomunicações entre PCDs e EMCs, otimizando-se o desempenho das mesmas e reduzindo-se gastos de energia, no processo de troca de dados. 2. Desenvolvimento de base do projeto 2.1. RUP – Rational Unified Process Anais do XV ENCITA 2009, ITA, Outubro, 19-22, 2009 , Iniciou-se esta pesquisa por meio do aprendizado do Processo Unificado da Rational (Rational Unified Process RUP), que consiste de um conjunto de práticas coletadas de Engenharia de Software que aumenta a produtividade da equipe de desenvolvedores e oferece melhores práticas relacionadas a software através de diretrizes, templates e orientações sobre ferramentas para atividades críticas de desenvolvimento de software. O RUP baseia-se em um desenvolvimento iterativo e uma seqüência de passos incrementais, oferecendo ao projeto um processo evolutivo e refinado, constantemente ao longo do desenvolvimento. Apesar de ser considerado um processo preferencialmente aplicável em grandes projetos, o RUP pode ser facilmente adaptado e empregado em projetos menores. O RUP obedece a uma arquitetura geral de duas estruturas principais, fases e disciplinas, distribuídas de forma iterativa e incremental, conforme representado na Fig. 1. Figura 1. Gráfico modelo de iteração. 2.2. UML – Unified Modeling Language A Linguagem de Modelagem Unificada (Unified Modeling Language - UML) é uma linguagem visual utilizada para modelar sistemas computacionais por meio do paradigma de orientação a objetos. É a linguagem padrão para visualizar, especificar e documentar os artefatos de um sistema intensamente baseado em software, podendo ser usada em vários processos, durante todo o ciclo de desenvolvimento, e com diferentes tecnologias de implementação. É importante notar que a UML é um modelo de linguagem e não um método. Um método pressupõe um modelo de linguagem e um processo, já o modelo de linguagem é a notação que o método usa para descrever o projeto, que é separado em passos a serem seguidos ou processos. No contexto do trabalho desenvolvido nesta pesquisa, leva-se em consideração o fator de reusabilidade, essencial para economizar tempo no processo de manutenção do sistema, para que seja possível realizar uma manutenção com facilidade e rapidez, sem a indesejável produção de novos erros. Devido ao foco deste projeto não ser o de modelagem do sistema, mas sim o de desenvolvimento de algoritmos para a comutação de telecomunicações, a UML será utilizada apenas como ferramenta auxiliar na construção de apenas dois diagramas, o de Casos de Uso e o de Classes. O Diagrama de Casos de Uso é usado para identificar como o sistema se comporta nas várias situações que podem ocorrer durante as suas operações. Os componentes deste diagrama são os atores (entidades) que interagem com o sistema, e os casos de uso (seqüências de ações) que o sistema executa e produz um resultado de valor para o ator. Anais do XV ENCITA 2009, ITA, Outubro, 19-22, 2009 , Os Diagramas de Classes são os mais encontrados em sistemas de modelagem orientados a objetos. Estes diagramas são utilizados para ilustrar a visão estática do projeto de um sistema, mostrando a sua estrutura de classes, especificando os métodos e atributos de cada uma, bem como a forma com que estas se encontram relacionadas entre si. 2.3. SysML (Systems Modeling Language) A Linguagem de Modelagem de Sistemas (Systems Modeling Language – SysML) é uma extensão de um subconjunto da UML que objetiva a sua especificação, análise, desenho, verificação e validação, o que inclui hardware, software, dados, pessoas, processos e infra-estrutura. Procurando trazer para a engenharia de sistemas um padrão de modelagem baseado na UML, a SysML é mantida pela OMG (Object Management Group) em conjunto com o INCOSE (International Council on Systems Engineering). Fazendo um paralelo com as classes da UML, em SysML, os blocos representam os elementos básicos de estrutura. Eles fornecem um conceito amplo para descrever a estrutura de elementos ou sistemas tais como tipos de hardware e software, dados, procedimentos, pessoas, etc. Devido à abordagem seguinte feita ao sistema em questão, decidiu-se por não fazer a modelagem SysML para este projeto. 2.4. XML (eXtensible Markup Language) Procurando-se otimizar o desempenho dos algoritmos a serem desenvolvidos, sentiu-se a necessidade de implementar uma linguagem para a descrição sucinta de dados hidrológicos, de fácil implementação e eficientemente adaptável, de modo que pudesse ser ampla e facilmente utilizada em outros pontos do Projeto ICA-MMH B. A Linguagem de Marcação Extensível, eXtensible Markup Language – XML, atende a todos os requisitos, pois consiste em um formato que descreve dados estruturados. A XML baseia-se em uma estrutura também similar a do HTML, na qual se faz uso de tags, elementos e atributos para estruturar o documento XML. No entanto, devido à extensibilidade da XML, as tags são plenamente customizáveis, criando a possibilidade de uma estrutura universal e ao mesmo tempo particular para descrever dados hidrológicos. 2.5. Algoritmos de ordenação Em ciência da computação, um algoritmo de ordenação é um algoritmo que coloca elementos de uma lista numa determinada ordem. As ordenações mais usadas são as numéricas e as lexicográficas. A ordenação eficiente é importante para otimizar o uso de outros algoritmos que necessitam de listas ordenadas de alguma maneira para funcionarem corretamente. Devido ao limitado uso de ordenação nos algoritmos utilizados, viu-se a necessidade de estudar atentamente os algoritmos de ordenação Bubblesort e Quicksort. Bubblesort é um método de ordenação de dados bem direto e simples, utilizado amplamente no ensino de algoritmos de ordenação. O algoritmo começa no início do conjunto de dados, compara os dois primeiros elementos, e se o primeiro é maior que o segundo, troca as posições dos mesmos. Isso continua para cada par de elementos adjacentes até o final do conjunto de dados. Então, começa novamente com os dois primeiros elementos, repetindo até que nenhuma troca de posição tenha ocorrido na última passagem. Enquanto que simples, o algoritmo é extremamente ineficiente e raramente é usado, a não ser em educação. Já o Quicksort é um algoritmo que segue o princípio de dividir para conquistar, que tem por base operações de particionamento: para particionar uma lista, escolhe-se um elemento, chamado pivô, movem-se todos os elementos menores que o pivô para antes dele e todos os maiores para depois dele. Após um particionamento, o algoritmo ordena recursivamente as sublistas menores e maiores. Implementações eficientes do Quicksort são tipicamente ordenações instáveis e de certa forma complexas, mas estão entre os algoritmos de ordenação mais rápidos na prática, o que torna o Quicksort um dos algoritmos de ordenação mais populares atualmente. O ponto mais complexo do Quicksort reside na escolha de um bom elemento pivô, constantemente escolhas erradas de pivôs podem resultar numa performance bastante lenta, no entanto, se a cada passo da recursão do algoritmo, o elemento mediano é escolhido como pivô, o algoritmo tem ótima performance. Após comparação de eficiência, e devido ao destino no projeto do algoritmo de comutação automática, optou-se pela utilização do Quicksort como algoritmo de ordenação, sendo que o mesmo será utilizado para o tipo “double”. 2.6. Algoritmos de criptografia No âmbito da criptografia, o algoritmo Data Encryption Standard (DES) é um dos mais conhecidos e mais antigos, sendo desenvolvido pela IBM em 1974. Com a tecnologia atual, tal algoritmo já pode ser facilmente quebrado, portanto, optou-se pela utilização do Triple DES, um algoritmo mais atual que aplica o DES três vezes em cada bloco de dados, e, apesar de ser mais lento, é muito mais seguro. Anais do XV ENCITA 2009, ITA, Outubro, 19-22, 2009 , O Triple DES usa, portanto, três chaves de 64 bits (o tamanho máximo da chave é de 192 bits, embora o comprimento atual seja de 56 bits). Os dados são encriptados com a primeira chave, decriptados com a segunda chave e finalmente encriptados mais uma vez com a terceira chave, como mostra a Fig. 2. Sendo outro modo mais rápido com o uso de duas chaves, em vez de três. A variante mais simples do Triple DES opera da seguinte forma: DES( C3 ; DES( C2 ; DES( C1 ; MSG ))), onde MSG é o bloco de mensagem a ser criptografado e C1, C2 e C3 são chaves DES. Devido a sua maior confiabilidade, o Triple DES tornou-se um algoritmo popular como alternativa ao DES, sendo adotado pelo ANS X9.17, ISO 8732, e pelo Privacy-Enhanced Mail (PEM). Figura 2. Esquema de atuação do algoritmo de criptografia Triple DES. 2.7. Engenharia de Telecomunicações Procurando entender a comunicação de antenas, com o objetivo de relacionar intensidades de recepção e transmissão, estudou-se a chamada Fórmula de Friis (ou Lei de Friis), que relaciona a potência transmitida de uma antena para outra em determinadas condições ideais [9]. Na sua forma mais simples, tem-se que, dadas duas antenas, a razão da potência recebida pela antena de recepção, Pr, sobre a potência transmitida à antena de transmissão, Pt, pela Fórmula de Friis, é dada pela Eq. (1). (1) Utilizando-se da Eq. (1) para relacionar intensidades, tem-se a Eq. (2), onde Gt e Gr são os ganhos das antenas de transmissão e recepção, respectivamente, λ é o comprimento de onda e R é a distância entre elas. (2) Portanto, para o algoritmo de estimativa de energias, pode-se considerar, por simplicidade, que a potência aplicada em todas as antenas é aproximadamente a mesma. Deste modo, baseando-se na Fórmula de Friis e na consideração feita acima, sabendo-se a intensidade recebida em uma antena, estima-se um valor (CE – Coeficiente de Energia) que quanto maior o valor, menor será a energia gasta pela PCD para enviar dados para antena de transmissão correspondente. Logo, tem-se finalmente a Eq. (3). (3) Vale lembrar que as considerações de energia de transmissão e recepção concluídas são válidas devido ao fato de todos os parâmetros da Fórmula de Friis serem recíprocos, o que faz com que exista uma analogia emissão-recepção. Anais do XV ENCITA 2009, ITA, Outubro, 19-22, 2009 , Para ser possível o cálculo da distância entre as PCDs e os meios de telecomunicações, a partir das coordenadas geográficas (latitude, longitude), utilizaram-se os conceitos de trigonometria esférica. 3. Estudo de caso 3.1. Definição O escopo do projeto a ser desenvolvido foi feito a partir de uma análise básica dos requisitos do Projeto ICA-MMH B, focando no processo de comunicação PCD–Meios de Telecomunicações. As plataformas de coleta de dados – PCD, adquirem dados hidrometeorológicos e enviam via satélite, celular ou radiofreqüência para as EMC – Estações de Monitoramento e Controle. Como muitas vezes há a necessidade de envio de dados críticos coletados por alguma PCD, deve haver a comutação dos meios possíveis de telecomunicações dependendo do nível de urgência dos dados e de outros parâmetros, como nível de bateria da PCD e tempo de envio de cada meio de telecomunicação. O início ocorre quando PCD solicita a melhor forma de envio ao software, o que faz com que o mesmo analise os dados coletados, comparando-os com uma base de dados padrão, que nesse caso foi arbitrária, pelo software ser de caráter de teste dos algoritmos. Com essa comparação e o nível de bateria da PCD, defini-se então a prioridade dos dados, que será mensurada como um valor inteiro de zero a três, sendo que zero representa a prioridade sendo unicamente minimização dos gastos com energia e três unicamente urgência no tempo de envio. Em seguida, o software recebe sinais dos meios de telecomunicações disponíveis. As localizações dos meios de telecomunicações e das PCDs utilizadas no software foram arbitrárias, dentro de limites plausíveis. Feita a determinação dos meios de telecomunicações, o software utiliza-se dos algoritmos desenvolvidos para calcular e ordenar de forma crescente os tempos de envio dos dados da PCD para cada meio de telecomunicação e as estimativas de gastos de energia para o envio de dados da PCD para cada meio de telecomunicação. Com a ordem dos tempos de envio, a ordem dos gastos de energia, a prioridade de envio e a porcentagem de bateria restante da PCD, o software determina o melhor meio de telecomunicação para o caso dos dados em questão, informando também data e hora de envio. Vale lembrar que os dados são moldados em um arquivo XML e no final da execução do software, o mesmo criptografa os dados para um envio seguro utilizando os algoritmos do Triple DES. 3.2. Modelagem Após uma análise do Projeto ICA-MMH B e definida a proposta para o desenvolvimento do estudo de caso, podese iniciar a modelagem, que no caso estudado é bem simples, já que o software não é de grande porte. Na Figura 3 é mostrado o diagrama de casos de uso e na Fig. 4 o diagrama de classes. Figura 3. Diagrama de casos de uso Anais do XV ENCITA 2009, ITA, Outubro, 19-22, 2009 , Figura 4. Diagrama de classes Os métodos contidos nas classes são basicamente getter’s e setter’s (métodos que permitem acessar e modificar os atributos do objeto). Além disso, tal diagrama não contém todas as classes do software, apenas as mais importantes. Isso ocorre porque as classes que não foram incluídas representam os algoritmos desenvolvidos em si, não tendo relevância maior nesse diagrama. 3.3. Escopo Após a definição dos requisitos do sistema, bem como a modelagem das classes necessárias, pode-se dar início ao processo de desenvolvimento do sistema, gerando como resultado o código-fonte do projeto. Nessa fase da pesquisa, foi utilizada como principal ferramenta o ambiente de desenvolvimento NetBeans IDE 6.5. Para a leitura do arquivo dados.xml, que contém todos os dados coletados pela PCD num dado instante, utilizou-se a classe XMLtoJava.java, feita unicamente para o modo como o arquivo dados.xml foi escrito, com duas coletas de dados hidrológicos. A mesma retornava todas as informações coletadas pela PCD para um objeto da classe DadosHidrologicos. Com o intuito de se definir a prioridade de envio, analisando o objeto da classe DadosHidrologicos resultando da conversão do arquivo XML, utilizou-se a classe Prioridade.java, que comparava os dados do objeto com alguns valores definidos padronizados. O código-fonte da classe Prioridade.java é mostrado na Fig. 5. Figura 5. Código-fonte da classe Prioridade.java. Anais do XV ENCITA 2009, ITA, Outubro, 19-22, 2009 , No cálculo da estimativa do tempo de envio necessário para a comunicação entre a PCD e os meios de telecomunicações, utilizou-se a classe OrdemTempo.java, que obtinha a hora atual e comparava com os horários de disponibilidade dos meios de telecomunicações, considerando os horários em que os satélites passam e os horários de menor conflito das operadoras, além de levar em conta uma janela de tempo para envio dos dados pela PCD. Na Figura 6, tem-se o código-fonte de OrdemTempo.java. Figura 6. Código-fonte da classe OrdemTempo.java. No cálculo da estimativa do gasto de energia necessário para a comunicação entre a PCD e os meios de telecomunicações, utilizou-se a classe OrdemEnergia.java, que calculava o coeficiente de energia discutido na seção 4.8, utilizando trigonometria esférica para obter relações de distâncias entre a PCD e os meios de telecomunicações. O código-fonte da classe OrdemEnergia.java é mostrado na Fig. 7. Figura 7. Código-fonte da classe OrdemEnergia.java. Para ordenar os valores de estimativa de tempo e de energia calculados através de métodos static das classes OrdemTempo.java e OrdemEnergia.java, utilizou-se a classe Ordenar.java. O método static ordem utiliza-se do Quicksort para ordenar os valores de estimativa de tempo ou de energia calculados e, em seguida, devolve valores de referência dos meios de telecomunicações ordenados, em vez das estimativas. Já o método static negativos retorna a quantidade de valores com estimativas de tempo negativas, tal valor é importante, pois se deve ignorar posteriormente o Anais do XV ENCITA 2009, ITA, Outubro, 19-22, 2009 , cálculo com tais valores, já que ser negativo significa que o momento de utilizar aquele meio de telecomunicação já passou. Para calcular a melhor forma de envio para os dados utilizados em um instante, utilizou-se a classe FormaDeEnvio.java. Tal classe checa a porcentagem de energia da bateria, setando a prioridade com minimização de gastos com energia caso a bateria esteja abaixo de 20%. Em seguida, a partir das ordens das estimativas dos tempos de envio e das energias gastas por cada meio de telecomunicação, além dos valores de prioridade dos dados, o algoritmo implementado no método static calculaMelhor encontra o meio de telecomunicação mais ideal para cada caso, usando os valores de prioridade como peso de aproximações das somas das funções dos tempos e das energias, desconsiderando tempos menores que zero. Na Figura 8, segue o código-fonte de FormaDeEnvio.java. Figura 8. Código-fonte da classe FormaDeEnvio.java. Finalmente o software utiliza todas as classes do pacote cripto do projeto para criptografar o arquivo dados.xml, resultando no arquivo dadosEncriptados.xml. Para que o caminho inverso possa ser testado, o software também decripta o arquivo dadosEncriptados.xml resultando no arquivo dadosDecriptados.xml. O algoritmo de criptografia pode ser checado como funcionando perfeitamente quando os valores de dados.xml e dadosDecriptados.xml são os mesmos. 3.4. Testes A escolha dos testes realizados foi feita de tal forma que fosse possível percorrer todos os possíveis valores de prioridade, além de algumas vezes encontrar casos de meios de telecomunicação que não podem ser utilizados devido à hora de disponibilidade. Para se modificar a prioridade, mudou-se valores de parâmetros no arquivo de dados coletados dados.xml. Já para observar tempos de envio negativos, foram modificados parâmetros dos sinais dos meios de telecomunicação internamente no código fonte da classe principal main. Na Figura 9 e na Fig. 10, tem-se exemplos de saída de dois testes efetuados com sucesso. Figura 9. Primeira saída de teste Anais do XV ENCITA 2009, ITA, Outubro, 19-22, 2009 , Figura 10. Segunda saída de teste 4. Conclusão Através dos estudos bibliográficos e de projeto desenvolvidos, foi possível analisar e validar satisfatoriamente algoritmos eficientes e seguros para comutação automática de meios de telecomunicações. Foi notório o fato de que algumas tecnologias antes não previstas tiveram que ser adicionadas para estudo ao longo do decorrer do projeto, ao passo que outras não foram tão necessárias. Não obstante, todas tiveram crucial validade na pesquisa realizada. Durante a realização da pesquisa, pode-se notar que a análise de mais um tipo de abordagem é bastante válida, em termos de comparação de performance, especialmente em se tratando de algoritmos. Além disso, através do estudo de caso feito com sucesso, onde se escreveu cerca de mil linhas de código em linguagem Java, ficou clara a enorme importância dos diagramas UML e de todo o processo de Engenharia de Software utilizado para a conclusão do projeto. Ao final deste Trabalho de Iniciação Científica, tendo em vista os resultados obtidos, observou-se que o cronograma definido na proposta da presente pesquisa foi devidamente cumprido, o que possibilitou ao pesquisador efetuar, de forma eficiente, a sua capacitação nas tecnologias envolvidas, bem como realizar um estudo de caso válido. 5. Agradecimentos Agradeço aos profissionais da Área de Computação do Instituto Tecnológico de Aeronáutica – ITA que muito me apoiaram em toda a trajetória desta Pesquisa: ao Prof. Dr. Adilson Marques da Cunha e ao Aluno de Pós-Graduação do ITA Ricardo Godoi Vieira. Através da oportunidade desta pesquisa, conhecimentos extremamente importantes da área de computação foram aprendidos, principalmente, os relacionados com conceitos de Engenharia de Software e Análise de Algoritmos. Agradeço também ao CNPq, que vinculado ao Ministério da Ciência e Tecnologia (MCT), vem apoiando as pesquisas brasileiras e contribuindo diretamente para a formação de jovens pesquisadores, investindo e promovendo o aumento da produção de conhecimento, e gerando novas oportunidades para os jovens universitários, que possuem o objetivo de adquirir conhecimentos acadêmicos que vão além do que lhes são oferecidos nas grades-padrão de ensino de suas respectivas Universidades. 6. Referências GUEDES, Gilleanes T. A., 2007, “UML: Uma Abordagem Prática”, Editora Novatec, 3ª Ed.. XML Tutorial. Disponível em http://www.w3schools.com/xml/default.asp. Udi MANBER, 1989, “Introduction to Algorithms: A Creative Approach”, Addison-Wesley. Th.H. CORMEN, Ch.E. LEISERSON, R.L. RIVEST, C. STEIN, 2001, “Introduction to Algorithms”, 2nd edition, MIT Press & McGraw-Hill. RIOS, L. G. e PERRI, E. B., 2002, “Engenharia de Antenas”. 2ª. ed. Edgard Blucher.