ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 XII Simpósio de Informática – SIRC 2013 Coordenação Geral Ricardo Giuliani Martini Comissão Organizadora Comissão Avaliadora Alessandro André Mainardi de Oliveira Alexandre de O. Zamberlan Ana Paula Canal Guilherme C. Kurtz Gustavo Cantarelli Gustavo Rissetti Henrique Gabriel Gularte Pereira Mirkos Ortiz Martins Reiner F. Perozzo Ricardo Giuliani Martini Sylvio Vieira Tatiele Bolson Moro Tiago Rios da Rocha Adenauer Yamin (UCPEL e UFPEL) Adriana Pereira (UFSM) Ana Elisa Ferreira Schmidt (Univali Itajaí) Alex Pinho Magalhães (UFSC) Alexandre Zanatta (UPF) Andre Adami (UCS) Andre Du Bois (UFPEL) Andre Martinotto (UCS) Andre Zanki Cordenonsi (UFSM) Anibal Guedes Bruno Augusti Mozzaquatro (UFSM) Carlos Holbig (UPF) Cristiano Both (UFRGS) Daniel Notari (UCS) Fernando Prass (ULBRA) Giovani Rubert Librelotto (UFSM) Guilherme Dhein (UFSM) Gustavo Cantarelli (UNIFRA) Gustavo Zanini Kantorski (UFRGS) Iara Augustin (UFSM) Leandro Loss (UFSC) Lucio Duarte (UFRGS) Marco Castro Barbosa (UTFPR) Marcos Luís Cassal (UFSM) Osmar Marchi dos Santos (UFSM) Rafael Teodósio Pereira (Uminho-PT) Roberto Wiest (IFSul - Passo Fundo) Roberto Willrich (UFSC) Rodrigo Goulart (FEEVALE) Simone Ceolin (UFSM) Valdir Stumm Junior (IFC) Walter Prienitz Filho (UFSM) 1 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Sistemas Multiagentes: Comparativo entre Organização Centralizada e Organização Descentralizada Patrícia N. Coutinho, Gustavo S. Cantarelli, Guilherme C. Kurtz, Alexandre de O. Zamberlan Curso de Ciência da Computação – Centro Universitário Franciscano Rua dos Andradas, 1614 – 97010-032 – Santa Maria – RS [email protected], {gus.cant,guilhermekurtz,alexz}@unifra.br Abstract. This work aims to compare the forms of modeling organizations Multiagent Systems centralized and decentralized, based on two case studies originally modeled using the Prometheus methodology. By tallying case studies to use the methodology Moise+, it were listed the specific characteristics of the two modeling methodologies in order to assist the designer of the MAS to choose the most appropriate system requirements. Resumo. Este trabalho tem por objetivo comparar as formas de modelagem de organizações de Sistemas Multiagentes centralizada e descentralizada, com base em dois estudos de caso originalmente modelados utilizando a metodologia Prometheus. Ao adequar os estudos de caso para utilizar a metodologia Moise+, foram elencadas as particularidades de modelagem características das duas metodologias com o intuito de ajudar o projetista do SMA a escolher a que fique mais adequada aos requisitos do sistema. 1. Introdução Um Sistema Multiagente (SMA) é o resultado da combinação de um grupo de agentes, distintos ou não, que precisam trabalhar juntos na resolução de um problema comum. Na maioria das vezes, cada agente desse sistema é responsável por resolver uma parte do problema geral que o conjunto de agentes precisa resolver, economizando, entre outros, a utilização de recursos disponíveis e o tempo necessário para a resolução do problema. Portanto, há a necessidade de organizar esse SMA para otimizar a resolução do problema [Russel e Norvig 2004], [Hübner, Bordini e Vieira 2004]. Sobre Organização de Sistemas Multiagentes, Hübner e Sichman (2003) definem claramente o significado e o funcionamento desse sistema com organização centrada nos agentes e na organização. Ao desenvolver um SMA, o desenvolvedor precisa conhecer as metodologias de modelagem de organização de SMA, a fim de utilizar a metodologia que melhor se aplique ao problema que o SMA precisa resolver, reduzindo os problemas relacionados à construção do SMA. Este trabalho tem o intuito de auxiliar na escolha da melhor metodologia de modelagem a ser utilizada ao construir um SMA levando em consideração o tipo de organização do sistema e a metodologia de modelagem. Foram trabalhados dois estudos de caso, originalmente modelados em Prometheus, que satisfaçam os tipos de organização centralizada e descentralizada. Foi feita a modelagem em Moise+ dos dois estudos de caso com base nas modelagens em Prometheus. Essa comparação entre os 2 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 dois estudos de caso e de metodologias foi utilizada como referência no apontamento das características das duas metodologias de modelagem de SMA. Para tanto, o texto foi dividido em quatro seções. A Seção 2 aborda conceitos de sistemas multiagentes. A Seção 3 apresenta a proposta deste trabalho além de expor os estudos de caso e sua modelagem em Prometheus e Moise+. Na Seção 4 estão as conclusões. E, por fim, são apresentadas as referências bibliográficas. 2. Teoria de Agentes De acordo com [Russel e Norvig 2004], um agente é um sistema que possui a capacidade de perceber o que acontece no seu ambiente utilizando sensores e de agir com o ambiente através de atuadores. Russel e Norvig (2004) exemplificam que um agente robótico poderia usar câmeras e detectores da faixa de infravermelho na função de sensores e vários motores como atuadores. Já para um sistema ou um programa ser caracterizado agente, além de perceber a atuar com o ambiente, é necessário apresentar um comportamento fundamentado no raciocínio que possua atitudes como, por exemplo, crenças (o que ele conhece), intenções (suas metas) e desejos (motivação para realizar as metas). Wooldridge e Jennings (1995) dividiram a arquitetura de agentes em arquitetura: cognitiva ou deliberativa, reativa e híbrida. A arquitetura cognitiva ou deliberativa é caracterizada pela complexidade dos agentes que proporcionam mecanismos de inferência robustos, interações sofisticadas e elevado grau de intenção no comportamento [Russel e Norvig 2004]. A base da arquitetura reativa está na proposta de que um agente pode ampliar sua inteligência por meio de interações com o ambiente, não necessariamente precisando de um modelo pré-estabelecido por não usar qualquer tipo de modelo ou raciocínio simbólico. Um agente reativo não possui a habilidade de planejar suas ações, de sincronização de tarefas entre agentes, e, também, não possui ou especifica uma meta. Este agente simplesmente reage a eventos quando eles ocorrem [Teahan 2010]. Já a arquitetura híbrida é a mistura de componentes das duas arquiteturas anteriores de forma a deixar esta arquitetura mais apropriada e funcional para a construção de agentes. Desta forma, os agentes possuem comportamento reativo com os eventos ocorridos no ambiente e comportamento deliberativo quando uma escolha precisa ser feita e há uma definição simbólica do mundo (isto é, a descrição formal dos possíveis estados de um ambiente) [Russel e Norvig 2004]. Um agente pode ser implementado utilizando qualquer linguagem, contudo existem algumas linguagens específicas que facilitam o desenvolvimento dos requisitos demandados pelo agente. Uma das mais utilizadas e importantes é a AgentSpeak(L), mas existem ainda a LALO, Obliq, Python, Smalltalk e Prolog, por exemplo. 2.1. Sistemas Multiagentes Conforme Russel e Norvig (2004), os Sistemas Multiagentes possuem uma sociedade de vários agentes inteligentes que cooperam com o intuito de resolver um problema maior, em conjunto, que não pode ser resolvido com um agente específico. Para tal, os agentes de um SMA precisam ser desenvolvidos de forma a resolverem problemas que não foram previamente especificados. Sistemas Multiagentes são classificados arquiteturalmente de acordo com o tipo dos agentes contidos no sistema, seguindo a mesma arquitetura apresentada para agentes 3 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 (cognitivo, reativo ou híbrido). Um SMA Cognitivo possui agentes complexos que utilizam um modelo de raciocínio em que suas ações são planejadas e suas interações com outros agentes são negociadas (negociação é a comunicação entre agentes que precisam entrar em acordo, que beneficie ambos, num processo de tomada de decisão conjunta) [Young 1991]. Um SMA Reativo é composto por agentes reativos simples que são desprovidos de modelo simbólico ou interno do ambiente agindo de forma estímulo/resposta (o agente recebe um estímulo e produz uma resposta de acordo com o que foi recebido). E o SMA Híbrido que reúne as duas arquiteturas prévias possuindo agentes deliberativos e agentes reativos interagindo em sociedade [Alvares e Sichman 1997]. 2.2. Organização de Sistemas Multiagentes Segundo Romesíne e Garcia (1997 apud Hübner e Sichman 2003), a organização possui a finalidade de manter o propósito do sistema, para que tal continue válido considerando as mudanças que ocorrem em um SMA. Uma definição pertinente a este trabalho é a proposta por Lemaître e Excelence (1998 apud Hübner e Sichman 2003) que propõe a divisão da organização em dois tipos: a centralizada (o grupo de agentes é organizado de forma centrada na organização) e a descentralizada (grupo de agentes com organização centrada nos agentes). Na organização centralizada o organizador pode obter do grupo de agentes uma descrição da organização adotada pelo sistema, sendo que a organização existe de forma objetiva sem a necessidade de analisar o comportamento da organização ou seus agentes. Esta descrição explícita da organização do sistema é chamada de organização institucionalizada [Lemaître, Excelence 1998 apud Hübner e Sichman 2003]. Na organização descentralizada não há uma representação explícita de organização no SMA, ela está distribuída entre seus agentes. Neste tipo de organização, um agente do grupo, ou um observador, pode deduzir uma descrição baseada na observação do comportamento dos agentes da sociedade, tal descrição é chamada de organização observada [Lemaître, Excelence 1998 apud Hübner e Sichman 2003]. 3. Proposta O projetista de software de um sistema multiagente precisa conhecer qual metodologia de modelagem é a ideal para suprir as necessidades do software projetado, minimizando assim os problemas provenientes de sistemas multiagentes com erros em sua modelagem. Sendo assim, a proposta é modelar em Moise+ dois estudos de caso, já modelados em Prometheus, com organizações de sistemas multiagentes distintas e elencar as características e dificuldades encontradas. 3.2. Estudos de Caso O Primeiro Estudo de Caso (Agenda), que possui organização centralizada, tem a finalidade de resolver o problema da alocação de horários de compromissos em agendas compartilhadas ou públicas entre todos os usuários envolvidos. Existe um agente organizador chamado secretária e os outros agentes do sistema são responsáveis pelas agendas dos usuários. Todas as agendas de usuários, quando precisam agendar um compromisso compartilhado, conversam com o agente secretária (o agente centralizador) que negocia com todos os agentes envolvidos e avisa estes agentes em qual horário o compromisso será marcado [Costa 2011]. 4 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 No Segundo Estudo de Caso (Gerenciamento de Tráfego Urbano), com organização descentralizada, Baccin (2011) apresenta um sistema que auxilie na configuração dos componentes envolvidos no gerenciamento de tráfego urbano. Esse sistema tem o intuito de gerenciar o número de veículos nas ruas usando semáforos inteligentes e sistemas informatizados otimizando o tráfego de veículos nos cruzamentos. O sistema possui três agentes principais. O agente Veículo verifica principalmente a condição do semáforo avançando na Via ou parando conforme sinalizado. O agente Via faz o controle do número de veículos que existem em um determinado trajeto e, quando solicitado, informa o número ao agente Semáforo. E, por fim, o agente Semáforo faz a sinalização de quais ruas possuem permissão para avanço de veículos [Baccin 2011]. 3.3. Modelagem Os estudos de caso utilizados neste trabalho são provenientes de dois trabalhos realizados na área de Sistemas Multiagentes em que a organização não foi considerada como parte do trabalho mesmo apresentando, implicitamente, uma organização. Para a Organização Centralizada de Sistemas Multiagentes, Costa (2011) define um sistema com agentes agenda e um agente secretária responsável por gerenciar os conflitos de horários de atividades compartilhadas entre as agendas. Baccin (2011) apresenta um sistema de cruzamento entre vias com agentes reativos (veículo, via e semáforo) representando a Organização Descentralizada de Sistemas Multiagentes. 3.3.1. Prometheus Utilizando inicialmente a tecnologia Prometheus, a modelagem dos dois estudos de caso foi feita e possui três etapas, sendo a primeira a especificação do sistema onde são especificadas a visão geral das metas do sistema. Em um segundo momentos são definidos os cenários do sistema. E, finalmente, o diagrama de funções do sistema que possui os papéis que o sistema irá assumir são mostrados, para os dois estudos de caso, nas Figuras 1 e 2. Figura 1. Diagrama de Funções do Sistema Agenda. Adaptado de [Costa 2011]. 3.3.2. Moise+ Com base nos estudos de caso, foi feita a modelagem, utilizando a metodologia Moise+. Da mesma forma como Prometheus, Moise+ possui três etapas de modelagem, chamadas de dimensões organizacionais. Essas dimensões são referentes à estrutura da organização, às suas funcionalidades e a terceira dimensão, a deôntica, tem a função de 5 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 ligar as duas primeiras. As Figuras 3 e 4 mostram a estruturação inicial e principal da metodologia Moise+. Finalmente, sugere-se consultar [Coutinho 2012] para detalhes do trabalho e metodologia. Figura 2. Funcionalidade do Sistema de Gerenciamento de Tráfego Urbano. Adaptado de [Baccin 2011]. Figura 3. Especificação Estrutural do Sistema Agenda. Figura 4. Especificação Estrutural do Sistema de Tráfego Urbano. 6 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 4. Conclusão Prometheus e Moise+ possuem abordagens de modelagem diferentes e, portanto, é necessário entender como o sistema a ser modelado (neste caso em Prometheus) funciona e com base nesse entendimento modelar o novo sistema (em Moise+) apenas com o que foi compreendido de seu comportamento esperado. Assim, pode haver erros nessa compreensão do sistema e, consequentemente, na sua modelagem. As etapas necessárias para a modelagem em Prometheus não explicitam como os papéis são organizados dentro da organização. Por não levar em consideração a organização do SMA, Prometheus não se preocupa em estruturar melhor o sistema, o que pode tornar o entendimento do mesmo confuso, principalmente em sistemas mais complexos como, por exemplo, o do segundo estudo de caso (Gerenciamento de Tráfego Urbano). Assim, a metodologia Prometheus pode ser utilizada facilmente em sistemas mais simples (poucos papéis e poucas interações) e possuam uma organização de SMA centralizada. A metodologia Moise+ possui a vantagem de ser melhor estruturada ao ser utilizado em trabalhos com muitas interações entre papéis e que o SMA possua organização descentralizada. É sugerido para trabalhos futuros o envolvimento do interpretador Jason com Moise+, principalmente o sistema de Gerenciamento de Tráfego Urbano por ser um sistema mais complexo, e relatar como o processo de desenvolvimento desse sistema se comporta em relação a um sistema modelado em Prometheus. Ainda, pode-se realizar uma comparação de modelagem via Prometheus e Moise+ do princípio e relatar o tempo e complexidade da tarefa. Referências Bibliográficas ALVARES, L. O. e SICHMAN, J. S. (1997), Introdução aos Sistemas Multiagentes, Universidade Federal do Rio Grande do Sul, Porto Alegre. BACCIN, J. P. (2011), Sistema Multiagente Reativo para Tráfego de Veículos com Gerenciamento de Semáforos, Centro Universitário Franciscano, Santa Maria. COSTA, C. V. D. (2011), Agente para Atuação no Google Agenda, Centro Universitário Franciscano, Santa Maria. COUTINHO, P. N. (2012), Sistemas Multiagentes: comparativo entre organização centralizada e descentralizada, Centro Universitário Franciscano, Santa Maria. HÜBNER, J. F.; BORDINI, R. H. e VIEIRA, R. (2004), Introdução ao Desenvolvimento de Sistemas Multiagentes com Jason, Universidade Regional de Blumenau, Blumenau. HÜBNER, J. F. e SICHMAN, J. S. (2003) “Organização de Sistemas Multiagentes”, III Jornada de Mini-Cursos de Inteligência Artificial, Campinas, p.247-296. RUSSEL, S. J. e NORVIG, P. (2004), Inteligência Artificial, Rio de Janeiro: Elsevier, 2ª Edição. TEAHAN, W. J. (2010), Artificial Intelligence - Agent Behavior I, Willian John Teahan & Ventus Publishing ApS. WOOLDRIDGE, M. e JENNINGS, N. R. (1995) “Inteligent Agents: Theory and Practice”, The Knowledge Engineering Review, v. 10, n. 2, p. 115-152. YOUNG, H. P. (1991), Negotiation Analysis, Michigan: Michigan Press. 7 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Implantação De Um Cluster Failover Utilizando Software Proprietário Rodrigo Ferreira Gonçalves1, Carlos Michel Betemps1, Sandro da Silva Camargo1 1Universidade Federal do Pampa – Campus Bagé (UNIPAMPA) Travessa 45, n°1650 - Bairro Malafaia - CEP: 96413-170 – Bagé, RS – Brasil [email protected], {carlos.betemps,sandro.camargo}@unipampa.edu.br Abstract. Provide services without interruption is a critical requirement, because a failure can cause financial damage to the company and its reputation. In this scenario, this work aimed to deploy a high-availability solution using proprietary software. As research hypothesis will be examined whether the deployment of Cluster Failover provides high availability of information in the distributed servers. The methodology was a literature review on the topic, deployment and experimentation of a Cluster Failover and display of results. It was concluded that the equipment used in the deployment responded to most of the tests, providing high availability of information and applications. Resumo. Fornecer serviços sem interrupção é um requisito crítico, pois uma falha pode gerar danos financeiros à empresa, bem como a sua reputação. Neste cenário, este trabalho teve por objetivo implantar uma solução de Alta Disponibilidade utilizando software proprietário. Como hipótese de pesquisa, será analisado se a implantação do Cluster Failover provê alta disponibilidade das informações distribuídas nos servidores. A metodologia de trabalho foi a revisão bibliográfica sobre o tema, implantação e experimentação de um Cluster Failover e exposição de resultados. Concluiu-se que os equipamentos utilizados na implantação responderam à maioria dos testes aplicados, provendo alta disponibilidade das informações e aplicações. 1. Introdução Devido à necessidade de atender diferentes requisitos do negócio, muitas organizações estão migrando seus sistemas do ambiente de rede local para o ambiente Web. Nesta nova realidade, fornecer serviços sem interrupção é um requisito crítico, pois uma falha pode ser significante tanto na geração de impactos financeiros, em curto prazo, quanto na geração de danos à reputação empresarial, em longo prazo [Zhang, Abdelzaher and Stankovic 2004]. Uma solução viável para aumentar a disponibilidade dos serviços é a utilização de clusters. Os clusters surgiram com o objetivo de suprir algumas dificuldades dos sistemas centralizados e também para aumentar o desempenho das aplicações, redes e ferramentas padronizadas para computação distribuída de alto desempenho. A composição de um cluster abrange questões complexas de pesquisa em computação tais como escalabilidade, disponibilidade, tolerância a falhas e alto desempenho [Alecrim 2013]. A fim de tornar a falha de um nó imperceptível ao usuário, a técnica de failover é 8 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 uma solução que permite o redirecionamento das requisições para outro nó. No contexto de Banco de Dados, um Cluster Failover é útil se um nó falha ou mesmo se ocorre qualquer manutenção planejada nos recursos de um Sistema de Banco de Dados. Com o avanço tecnológico e econômico, várias empresas necessitam cada vez mais manipular informações de maneira segura e contínua. Para isso, necessitam de servidores que possam disponibilizar dados armazenados de forma rápida e eficaz com alta disponibilidade aos usuários. A motivação que levou à realização deste trabalho se deve a relevância do tema para as organizações que utilizam software proprietário para o gerenciamento de dados. Outro fator considerável foi que no ambiente corporativo onde ocorreu esta implantação há preferência pela utilização da plataforma Windows para servidores e para Banco de Dados. Neste ambiente, a cultura do uso de software proprietário é antiga e também são levados em consideração todos os riscos envolvidos na migração para uma plataforma de distribuição livre. Neste contexto, a implantação do Cluster Failover propõe garantir alta disponibilidade dos recursos e aplicações entre os servidores. Este artigo está estruturado da seguinte forma: na seção 2 são apresentados alguns conceitos relacionados ao tema do trabalho; na seção 3 são descritos o ambiente onde foi implantado o cluster failover e como se deu a experimentação deste cluster, apontando detalhes da metodologia de trabalho; por fim, a seção 4 apresenta algumas considerações finais, seguidas da indicação de trabalhos futuros. 2. Clusters Cluster é um sistema que compreende dois ou mais computadores ou subsistemas (nós). Estes elementos executam aplicações ou realizam tarefas específicas de tal maneira que os usuários tenham a noção de um sistema único e homogêneo. A comunicação é feita através de polling, que são pedidos contínuos de informações, permitindo que um servidor saiba que existem outros nós do cluster em funcionamento [Rocha 2004]. 2.1. Cluster Failover O Cluster Failover é um cluster de Alta Disponibilidade. É muito utilizado em Data Centers de bancos e sites de e-commerce, uma vez que tais exemplos necessitam manter-se 24 horas online. Também são utilizados em empresas que desejam incrementar sua escalabilidade, gerenciamento de recursos, disponibilidade ou processamento de forma supercomputacional a um preço moderado [Pitanga 2013]. O processo de failover é o modelo de recuperação em cluster. Este processo pode ser entendido como a troca, através de transações, para um nó alternativo ou um nó de backup, devido a uma situação simples de falha em um dos nós do cluster. O processo de failover deve ser totalmente transparente e automático, sem a intervenção de um administrador de sistema computacional e, principalmente, sem a necessidade de reconexão manual do cliente da aplicação crítica. Para algumas aplicações não críticas, que podem suportar um tempo maior até a recuperação da falha, pode-se utilizar failover manual. Além do tempo entre a falha e a sua detecção, existe também o tempo entre a detecção e o restabelecimento da disponibilidade da aplicação e dos recursos envolvidos no sistema computacional. Grandes Bancos de Dados podem exigir um considerável período de tempo, após uma falha, até que sejam ajustadas suas tabelas. 9 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Durante este tempo a aplicação ainda não estará disponível. Para realizar o failover de uma aplicação crítica é necessário que os nós do cluster envolvidos na utilização deste mecanismo possuam recursos equivalentes. Um recurso pode ser uma interface de comunicação de rede ou um disco, onde os dados existentes no disco são elementos necessários à prestação de um determinado serviço para a aplicação crítica em questão. Dependendo da natureza da aplicação e do sistema de computação, executar um failover significa interromper as transações em andamento, perdendo-as, sendo necessário reiniciá-las após o failover. Em outros casos, significa apenas um retardo até que a aplicação e os serviços oferecidos pela aplicação estejam novamente disponíveis [Technet 2013]. 3. Implantação do Cluster Failover O procedimento de implantação do Cluster Failover desenvolvido neste trabalho teve como objetivo implantar e experimentar este tipo de mecanismo, visando oferecer melhorias em termos de alta disponibilidade de recursos. A seguir são descritos o ambiente de implantação do Cluster Failover e os experimentos realizados. 3.1. Ambiente de Implantação O ambiente organizacional onde estão localizados os servidores que foram configurados como fazendo parte do cluster failover não contava com uma estrutura redundante de Banco de Dados e de Sistema Operacional. Existem, no ambiente de implantação, dois servidores, sendo que um faz o gerenciamento dos usuários e é utilizado como servidor de arquivos e controlador de domínio (para aplicativos preexistentes); e o outro servidor atua apenas como Banco de Dados. Então, neste contexto, foi implantado um cluster de alta disponibilidade para que os dois servidores fiquem com a mesma versão de Banco de Dados instalado e, logo após, seja clusterizado o Sistema Operacional e a base de dados. O ambiente corporativo de implantação do Cluster Failover conta com um parque de trinta computadores (estações desktop) e dois servidores (acima mencionados). Os equipamentos estão interligados por uma rede Gigabit Ethernet através de um switch gerenciável de marca 3Com modelo 2952 com 48 portas, que utiliza cabeamento de rede modelo Categoria 6. Este switch faz a ligação e distribuição da Internet para os componentes ativos que compõem a estrutura da rede, conforme mostrado na Figura 1. Foram utilizados dois servidores, de marca DELL, com a seguinte configuração: Processadores Intel Xeon CPU 2.40GHz, 8Gb de memoria RAM, 4 (Quatro) HDs de 500Gb de espaço de armazenamento. O Sistema Operacional utilizado foi o Windows Server 2008 e como Banco de Dados o SQL Server 2008. O servidor nomeado SRVGRAFICA-1 foi utilizado como nó 1 e responsável por controlar o domínio e replicar as informações dos sistemas para o servidor SRVGRAFICA-2 (nó 2). Este último ficou com a cópia de todas as informações inseridas, alteradas e excluídas do Banco de Dados do Servidor 1. O tempo de replicação das informações entre os servidores foi configurado através do assistente de replicação do SQL Server 2008. Este método foi adotado porque, caso ocorresse uma 10 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 falha de um dos servidores, o nó ativo assumiria o controle e continuaria disponível aos usuários sem que estes percebessem a ocorrência de alguma falha. Figura 1. Parque de Computadores do Ambiente Corporativo. A replicação aplicada de forma assíncrona propiciou que o servidor que ficou indisponível (off-line), devido a algum evento de falha, recebesse as informações atualizadas após a sincronização com o servidor ativo. Durante as instalações do cluster foi desabilitado o firewall do Windows de cada um dos servidores, através do painel de controle, pois habilitado causou bloqueios de portas de rede que o Cluster Failover usa durante a instalação. A instalação do cluster foi feita através do gerenciador de servidores do Windows Server e foi selecionado o Framework .NET, que é um recurso que possui as funções necessárias para funcionamento dos programas sob qualquer Sistema Operacional da plataforma Windows. Após a instalação do cluster nos servidores, foi configurada a replicação dos Bancos de Dados, através da Replicação Merge, que por função replicou as 250 tabelas do Banco e qualquer informação alterada foi aplicada para o outro servidor, mesmo este tendo ficado temporariamente fora de sincronismo. Quando a sincronização ocorreu com o servidor que ficou indisponível (off-line), este enviou os dados para todos os locais especificados. Depois foi necessário configurar as publicações e assinaturas locais dos servidores de Banco de Dados SRVGRAFICA-1 e SRVGRAFICA-2. Quando o SQL Server foi instalado no servidor SRVGRAFICA-2, foram configurados os metadados que compõem as suas estruturas lógicas e de controle. Dentre esses, as estruturas mais importantes são: Master, Model, Tempdb e Msdb, que fazem parte do Sistema de Gerenciamento de Banco de Dados. Nesta etapa definiu-se que os dois servidores teriam a função de Distribuidor/Publicador, que tem por função a distribuição e armazenagem dos metadados e dados de histórico para todos os tipos de replicação. 11 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 3.1. Experimentação do Cluster Failover Para analisar o desempenho da implantação foram utilizadas ferramentas nativas que estavam pré-instaladas nos servidores. A ferramenta Windows MMC (Microsoft Management Console) foi utilizada para gerenciar os recursos dos servidores, pois possui vários serviços que podem ser adicionados e tem por função gerenciar os aplicativos instalados no sistema operacional. Foi executada a ferramenta de validação dos clusters através do gerenciador de Cluster Failover, que analisa todas as configurações de hardware e software instalados nos servidores. Verificou-se que os processos de instalação do cluster do Sistema Operacional foram bem-sucedidos. Após, desconectou-se um dos servidores através do desligamento do cabo de rede da interface. A desconexão foi executada propositalmente (no servidor SRVGRAFICA-2) no momento que acontecia uma atualização de um dos Bancos de Dados, a fim de testar o Cluster Failover e verificar como iria se comportar a replicação após a falha. O servidor SRVGRAFICA-1 assumiu o controle automaticamente de todos os serviços que estavam sendo fornecidos pelo servidor 2. Esta ação foi visualizada através da ferramenta de gerenciamento de clusters do servidor. Todas as aplicações e sistemas ficaram disponíveis aos usuários sem que eles percebessem a falha de um dos servidores. A desconexão foi de 5 minutos, tempo suficiente para visualizar como o cluster iria se comportar após o sincronismo. Para testar o tempo de resposta de alguns comandos executados nos Bancos de Dados foi realizada a instalação em conjunto de três pacotes: (Sql Cmd LnUtils),(Shared Management Objects),(Power Shell Tools)1. Estes pacotes foram instalados e executados nos dois servidores, a fim de avaliar o desempenho de tempo de resposta de cada. Figura 2: Análise de processos executados nos servidores. Os referidos pacotes usam scripts que executam os comandos dentro de cada Banco de Dados (criação de tabela, escrita dos dados, atualização, leitura, exclusão dos dados e exclusão de tabelas). Estes comandos mostraram o tempo de resposta de cada operação, desta forma podendo ser analisado o desempenho obtido por cada Banco de 1 Disponível em: <http://www.microsoft.com/en-us/download/details.aspx?id=30440>. 12 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Dados. Todas as operações executadas, mostradas na figura 2 (Creating Table, Writing Data, Updating Data, Reading Data, Deleting Data e Dropping Table), estão no mesmo intervalo de tempo, possuindo desempenho equivalente em tempo de resposta. 4. Considerações Finais e Trabalhos Futuros Esta implantação foi realizada utilizando a plataforma Windows Server 2008 e SQL Server 2008, porém podem ser utilizadas outras configurações, como Linux e distribuições livres de Banco de Dados. A implantação do Cluster Failover em software proprietário pode possuir um custo elevado para as organizações, porém, quando estes softwares estão disponíveis, contar com um tipo de aplicação deste porte traz uma maior disponibilidade e segurança das aplicações. Para validar os testes foram utilizadas ferramentas do próprio Sistema Operacional e outras conforme foi citado anteriormente. As ferramentas de verificação/validação avaliaram os seguintes itens: Armazenamento: onde foi feita à validação dos discos do cluster; Configuração do Sistema: foi realizada a checagem dos drives do sistema, configurações do Active Directory e atualizações de software; Inventário: onde foram listadas as informações sobre drives do sistema, informações da BIOS e processos em execução; Rede: onde foi validada a comunicação de rede, nós do cluster, endereços IPs e configurações do firewall do Windows. Após as verificações citadas acima, foram utilizadas as ferramentas Sql Cmd Ln Utils, Shared Management Objects e Power Shell Tools para avaliar o desempenho do Cluster Failover do SQL Server. Foram executados comandos de criação de tabelas, escrita de dados, atualização, leitura, exclusão de dados e de tabelas. Analisou-se que os servidores responderam aos testes aplicados, propiciando uma alta disponibilidade dos dados entre os servidores e suas aplicações. Como trabalhos futuros é sugerido um estudo mais aprofundando sobre o tema, expandindo, assim, a possibilidade para a execução de mais trabalhos científicos que necessitam de um ambiente desse porte para gerar dados mais significativos como, por exemplo, a utilização de mais e diferentes testes para avaliar o desempenho e comportamento dos sistemas. Pode-se aplicar a arquitetura descrita neste estudo para incitar novas configurações para a utilização de Clusters Failover. Referências Alecrim, Emerson. “Clusters: Conceitos e Características”. Disponível <http://www.infowester.com/cluster.php>. Acesso em: 23 Jun. 2013. em: Pitanga, Marcos J. “Computação em Cluster”. Disponível <http://www.clubedohardware.com.br/artigos/153>. Acesso em: 03 Set. 2013. em: Rocha, Lidiane Lins. “Cluster – Visão Geral”, Artigo, Brasília: UCB, 2004. Technet, Microsoft. “Cluster Failover”. Disponível <http://technet.microsoft.com/pt-br/library/cc731844%28v=WS.10%29.aspx>. Acesso em: 27 Abril. 2013. em: Zhang, R., Abdelzaher, T. F., and Stankovic, J. A. (2004). “Efficient TCP connection failover in web server clusters”. In Proceedings of the IEEE InfoCom Conference. Vol. 2, 1219--1228. 13 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Paralelização de Ray Tracing utilizando Intel® Cilk™ Plus Júlio C. Vieira1, Guilherme W. Cassales1, Fernando Faé1, Andrea S. Charão1 1 Curso de Ciência da Computação – Universidade Federal do Santa Maria (UFSM) {julioc, cassales, fae, andrea}@inf.ufsm.br Abstract. This paper discusses the parallelization of an algorithm of Ray Tracing by the use of an extension of the C and C++ programming languages, the Intel® Cilk™ Plus. This extension allows data and task parallelism by inserting keywords at certain points of the code. Although it is simple, it is necessary to understand the code that will be parallezide to find the best point to insert the keywords, increasing the maximum parallel performance. Resumo. Este artigo trata da paralelização de um algoritmo de Ray Tracing fazendo o uso da uma extensão das linguagens C e C++, o Intel® Cilk™ Plus. Essa extensão possibilita paralelismo de dados e de tarefas através da inserção de keywords (palavras-chaves) em determinados pontos do código. Apesar de simples, é necessário ter compreensão do código a ser paralelizado para encontrar o melhor ponto de inserção das keywords, aumentando ao máximo o desempenho em paralelo. 1. Introdução Programação Paralela é uma área da computação de alto desempenho que estuda maneiras de agilizar processos utilizando a estratégia de dividir grandes processamentos de dados em processamentos menores. Ao dividir a carga em diversos processadores (cores), cria-se um fluxo maior de dados sendo processados simultaneamente, gerando um speed-up. Existem diversas formas de explorar o processamento paralelo, tanto em termos arquiteturais, como de comunicação: distribuído e paralelo (mais de uma máquina processando em paralelo), utilizando memória compartilhada, GPU, entre outros. Este artigo mostrará o funcionamento da ferramenta Intel® Cilk™ Plus e seu uso em um algoritmo de ray tracing. Será abordada a nova sintaxe estabelecida e o que é necessário para executar programas que a contenha. Após isso, apresenta-se um processo de profiling utilizado para determinar os pontos que poderiam ser paralelizados e, então, é feita uma avaliação dos resultados produzidos após a adaptação do código. O processador utilizado foi um Intel® Core™ i3-3110M, com dois núcleos físicos de 2.40GHz. A escolha de paralelizar um algoritmo de ray tracing deve-se ao fato de que estes algoritmos demandam muito processamento, pois dependem da complexidade da imagem e números de pixels. Por ser um método que não é necessariamente serial, com a paralelização é possível diminuir consideravelmente o tempo de processamento. 14 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 2. Fundamentação A primeira tarefa foi entender como funciona e como utilizar o Intel® Cilk™ Plus, conhecimento que encontra-se de forma resumida nesta seção. 2.1. Funcionamento O Intel® Cilk™ Plus é um framework de desenvolvimento que fornece uma interface de programação simples e intuitiva [Camargo, C. Araújo, A. Cavalheiro, G. (2012)] para criações e sincronizações explícitas e aninhadas de threads. Ele adiciona três keywords à sintaxe da linguagem C: cilk_for, cilk_spawn e cilk_sync; Para desenvolver programas com este framework, há duas opções: a) Instalar um compilador da Intel (Inter Composer XE, Inter Parallel Studio XE ou Intel C++ Compiler) e o Intel Cilk++ SDK; b) Configurar o compilador próprio do Intel® Cilk™ Plus juntamente com o gcc/g++ do Linux. A filosofia por trás do desenvolvimento Cilk é fazer da linguagem dela uma verdadeira extensão paralela da linguagem C [Robert D. Blumofe, et al. (1996)]. 2.2. Utilização O Intel® Cilk™ Plus utiliza basicamente três keywords para tornar a execução do programa paralela [Introducing Intel® Cilk™ Plus]. São elas: ● cilk_for: utilizado para paralelizar loops; ● cilk_spawn: essa keyword define que a função chamada pode executar em paralelo com a origem da chamada, desde que essa função não tenha dependências. Por exemplo, um loop que chama uma função que não tem dependências pode ser executado várias vezes paralelamente, sem causar problemas de sincronização. É importante salientar que cilk_spawn não ordena que seja executado em paralelo, somente cria a oportunidade do plano de execução criar novos threads, ou seja, o Intel® Cilk™ Plus analisa se é viável a paralelização que está sendo proposta. Se for, o cilk_spawn é realizado. Caso não seja, a execução continua serialmente. O próprio plano de execução determina se é possível a paralelização; ● cilk_sync: determina que todos os threads criadas pelo cilk_spawn devem terminar antes de continuar a execução. Para exemplificar a paralelização de loops “for”, é necessário comparar a utilização de somente cilk_for no lugar de “for” e cilk_spawn e cilk_sync nas chamadas de funções dentro do loop [Introducing Intel® Cilk™ Plus], como visto nas Figuras 1 e 2. 15 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Figura 1. Loop “for” com o uso de cilk_for. Figura 2. Exemplo de um loop “for” com o uso de cilk_spawn e cilk_sync. 3. Desenvolvimento Após entender como utilizar corretamente a nova sintaxe fornecida pelo Intel® Cilk™ Plus, era necessário determinar qual ou quais seriam os melhores pontos do algoritmo que gerariam uma taxa de speed-up considerada proveitosa para a utilização da ferramenta. 3.1 Estratégias e uso de ferramentas Utilizou-se a ferramenta Performance Analysis, do Microsoft Visual Studio 2012, para gerar um profiling da execução. Um profiler serve para verificar quais são as partes do algoritmo que mais consomem tempo de execução e, portanto, mais propensas a gerar uma alta taxa de speed-up ao ser paralelizado. Por exemplo, na Figura 3, é possível ver que 99,98% do tempo de execução do algoritmo concentra-se dentro da função main, sendo 95,85% deste tempo consumido em chamadas da função ray_trace. Através da ferramenta Performance Analysis, é possível percorrer as funções chamadas e observar em que parte do código dentro delas consome mais tempo de execução naquela função. Explorando mais a fundo os resultados do profiling, podemos ver as funções mais chamadas dentro da função intersect, conforme pode ser visto na Figura 4. O compilador da Intel escolhido com o Intel Composer XE, versão trial de 30 dias. Figura 3. Resultado do profiling. 16 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Figura 4. Visualização do profiling da função intersect. 4. Avaliação Para facilitar a execução de testes com e sem o framework Intel® Cilk™ Plus, foram realizadas pequenas alterações no código original do algoritmo escolhido, incluindo um novo argumento para definir a utilização ou não das keywords do framework. A sintaxe de execução do programa é a seguinte: <executável> <level> <cilk on/off> > fig.ppm O argumento level estabelece a quantidade de objetos que formarão a imagem e, por tanto, quanto mais alto o level, maior a quantidade de objetos para ser realizado o ray tracing. A parte da sintaxe “> fig.ppm” faz com que a saída do programa vá para um arquivo com extensão .ppm, que é o formato que os dados são gerados. Para executar no Windows, o programa foi compilado utilizando o Visual Studio 2012 e executado através do Prompt de Comando. Após análise do resultado gerado pela ferramenta Performance Analysis, concluiuse que a paralelização deveria envolver as chamadas de função ray_trace na main e/ou intersect na função ray_trace. Foram criadas duas versões diferentes do código paralelizado. Na primeira, foram adicionadas keywords somente nas chamadas da função ray_trace, na main. Já na segunda, além destas, foram adicionadas também na chamada da função intersect, dentro da função ray_trace. Ambas as versões foram testadas, obtendo resultados similares, apresentados na Tabela 1. 17 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Tabela 1. Tempo médio em segundos das execuções do programa nas três versões. Level 1 2 3 4 5 6 7 8 9 10 11 Versão original 2,71 26,931 65,224 97,543 121,086 135,943 143,819 152,084 156,935 162,575 174,196 Versão Cilk Plus I 8,758 28,477 53,523 75,155 91,433 100,877 96,544 106,234 110,078 113,661 126,537 Versão Cilk Plus II 9,8 29,848 55,812 79,02 93,438 100,431 10,431 106,567 111,208 114,396 127,615 Como podemos ver no gráfico da Figura 5, o desempenho sem o uso de Intel® Cilk™ Plus com um e dois levels é superior ao de quando o framework é usado. À medida que o grau de complexidade (level) aumenta, o uso de Intel® Cilk™ Plus torna-se vantajoso, diminuindo consideravelmente o tempo de execução em levels altos. Esse baixo desempenho do framework nos levels menores deve-se ao trabalho em segundo plano necessário para criação, distribuição e gerenciamento dos threads decorrentes do uso das keywords. O trabalho em segundo plano é o responsável pelo particionamento, comunicação, aglomeração e mapeamento, princípios básicos da paralelização. Cilk I Cilk II 1,6 1,4 1,2 1 0,8 0,6 0,4 0,2 0 1 2 3 4 5 6 7 8 9 10 11 Figura 5. Gráfico do speed-up com as duas versões de uso do Intel Cilk Plus. 18 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 5. Conclusão Ao finalizar este trabalho, chega-se à conclusão de que o Intel® Cilk™ Plus é uma ferramenta com incrível capacidade e facilidade de paralelização. Além de ter aumentando o desempenho em taxas de speed-up de até 1,5, o processo de paralelização pode ser feito mesmo sem o uso de profiling, pois as alterações no código são mínimas, o que facilita os experimentos à medida que modificações são feitas. O Intel® Cilk™ Plus foi, de fato, uma ferramenta com ótimos resultados na relação desempenho obtido/dificuldade encontrada. Referências Robert D. Blumofe, Christopher F. Joerg, Bradley C. Kuszmaul, Charles E. Leiserson, Keith H. Randall, and Yuli Zhou. (1996) “Cilk: An efficient multithreaded runtime system” Introducing Intel® Cilk™ Plus: Extensions to simplify task and data parallelism. Available on the internet from http://cilkplus.org/cilk-plus-tutorial. Camargo, C. Araújo, A. Cavalheiro, G. (2012) “Uma revisão sobre ferramentas de programação multithreads comerciais e acadêmicas”. Frigo, M. Leiserson, C. Randall, K. (1998) “The implementation of the Cilk-5 Multithread Language”. 19 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 COFFEE: Controlador OpenFlow de Fluxo para Escoamento Eficiente de Streaming de Vídeo Bruno Augusti Mozzaquatro1 , Cristian Cleder Machado2 , Marcos Roberto de Brun Lucca1 Universidade Federal de Santa Maria (UFSM) Colégio Politécnico da UFSM – 97.105-900 – Santa Maria – RS – Brasil 1 2 URI – Universidade Regional Integrada – Câmpus de Frederico Westphalen Departamento de Engenharias e Ciência da Computação {brunomozza, marcosrlucca}@gmail.com, [email protected] Abstract. Video streaming applications have became usual in the Internet and require strategies for minimizing the use of network resources. Multicast is a forwarding packets technique that allow a transmitted data rate reduction. However, distributed multicast groups management is considered a gap, causing delays and failures in group events. In this context, this paper presents the COFFEE controller for multimedia flow traffic over Software-Defined Networking (SDN), centralizing the processing of IGMP events and establishing the shortest path between the diffuser and subscribers. The experiments in different scenarios demonstrate the usefullness to heterogeneous network topologies. Resumo. Aplicações para transmissão de vídeo tornaram-se habituais na Internet e necessitam de estratégias para minimizar a utilização de recursos de rede. Multicast é uma técnica de encaminhamento de pacotes que permite reduzir a taxa de dados transmitidos. Entretanto, a gerência distribuída de grupos multicast é considerada uma lacuna, provocando atrasos e falhas em eventos dos grupos. Neste contexto, este trabalho apresenta o controlador COFFEE para escoamento de tráfego multimídia em Redes Definidas por Software (SDN), centralizando o processamento de eventos IGMP e estabelecendo menor caminho entre o difusor e os assinantes. Os experimentos em diferentes cenários demonstraram a viabilidade da utilização para topologias de rede heterogêneas. 1. Introdução A Internet teve um crescimento exponencial na utilização de aplicação para transmissão de vídeo, necessitando estratégias para minimizar o uso de recursos de rede. O projeto Visual Networking Index (VNI), da Cisco, consiste em monitorar e prever o impacto de aplicações de redes, apontando em suas pesquisas e projeções uma estimativa de que, ao somarem-se todos os meios de transmissão e os formatos de arquivos de vídeo que circulam de alguma maneira na Internet, a perspectiva até 2017 é de que haja um consumo entre 80% e 90% de dados multimídias [Cisco 2013]. Para atingir estes números de acessos em uma transmissão de conteúdo multimídia em tempo real, um dos métodos mais utilizados é o multicast [Ratnasamy et al. 2006]. O multicast é considerado uma tecnologia útil para inúmeros problemas práticos em redes IP. Um dos problemas que está relacionado a perda de pacotes é devido à falhas nos 20 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 enlaces e/ou nos equipamentos ativos da rede. Esse problema é facilmente solucionado através da construção de árvores multicast redundantes [Fei et al. 2001]. Atualmente, a Internet como um todo funciona sobre uma abordagem de melhor esforço, ou seja, qualquer serviço não possui um nível de garantia. Algumas abordagens para melhoramento e reestruturação voltadas a infraestrutura de rede e seus serviços surgem para suprir as necessidades atuais e futuras, como é o caso de redes definidas por software (Software Defined Networking - SND) [Bakshi 2013]. A SDN é uma abordagem evolutiva para o projeto e melhoramento na funcionalidade de redes baseada na ideia de programar o comportamento dos dispositivos de rede, tais como switches e roteadores. Neste contexto, o presente trabalho propõe um Controlador OpenFlow de Fluxo para Escoamento Eficiente (COFFEE) de streaming em tempo real utilizando multicast. Para isso, o controlador monitora eventos multicast (IGMP Join e IGMP Leave), e dispara rotinas para o cálculo de rotas com menor caminho entre o difusor e os assinantes, estabelecendo o escoamento eficiente do fluxo somente aos interessados no tráfego multimídia. O controlador foi implementado através da plataforma de desenvolvimento de controle de rede (POX)1 , utilizando o protocolo OpenFlow para gerenciar fluxos no ambiente de virtualização de redes Mininet2 . O artigo está organizado da seguinte forma: Inicialmente, na seção 2, são apresentados conceitos básicos sobre multicast, SDN e OpenFlow. A descrição do controlador e suas funcionalidades é apresentada na seção 3. Os experimentos e avaliações em diferentes cenários para o controlador são discutidos na seção 4. Por fim, na seção 5 são explanadas as conclusões obtidas e recomendações de trabalhos futuros. 2. Fundamentação Teórica Esta seção aborda os principais fundamentos e tecnologias utilizadas nas redes programáveis. A seção 2.1 descreve o métodos utilizados para disseminação de conteúdo eficiente. Por fim, a seção 2.2 apresenta os conceitos básicos das redes definidas por software. 2.1. Multicast O multicast é o modelo de serviço para entrega simultânea de tráfego para múltiplos destinatários que garante a vinculação de fontes e receptores ativos [Ratnasamy et al. 2006]. O modelo multicast oferece dois benefícios chaves: (i) o uso eficiente de largura de banda para comunicação mutipontos e, (ii) a utilização de endereço multicast permitindo o encontro a nível de rede e descoberta de serviço. A principal vantagem da utilização do multicast é a redução de tráfego devido a duplicação de mensagens suportadas pelos roteadores. Assim, um único fluxo de pacotes é encaminhado para cada enlace de comunicação e duplicado quando os destinatários pertencem a enlaces distintos. 2.2. Redes Definidas por Software (Software Defined Networking - SDN) Uma das propostas em SDN está voltada à simplificação da gerência e a operacionalização de uma rede, independente do hardware dos equipamentos que a compõe, tornando esta mais flexível, dinâmica e eficiente [Bakshi 2013]. Para isso, as redes SDN possuem 1 2 Disponível em http://www.noxrepo.org/pox/about-pox/ Disponível em http://www.mininet.org/ 21 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 a lógica de funcionamento com plano centralizado em controladores baseados em software com uma visão global da rede. A partir desta centralização, dispositivos de rede que processavam e tomavam decisões sobre detalhes da transmissão tornaram-se simples dispositivos de encaminhamento de pacotes, os quais, podem ser programados através de uma interface aberta com o protocolo OpenFlow [Sezer et al. 2013]. O OpenFlow é um protocolo aberto que possibilita o desenvolvimento de mecanismos programáveis baseado em tabela de fluxos em diferentes switches e roteadores [McKeown et al. 2008]. O protocolo OpenFlow estabelece uma comunicação segura entre os switches OpenFlow e o controlador, o qual utiliza esse canal para monitorar e estabelecer fluxos conforme a inteligência estabelecida pelo software. O controlador é o elemento central que, através de um protocolo OpenFlow, determina regras e ações que são instaladas no hardware da rede para o controle de encaminhamento de pacotes em elementos de comutação. Uma característica do OpenFlow é a separação do plano de dados (Datapath) e o plano de controle (Controlador) nos elementos de comutação. O plano de dados tem como objetivo explorar o encaminhamento de pacotes com base em regras, denominadas ações OpenFlow, associadas a cada tabela de encaminhamento do comutador de pacotes (switch). Por outro lado, o plano de controle permite o controlador gerenciar as entradas da tabela de encaminhamento e as regras associadas ao tráfego desejado. 3. COFFEE Nesta seção será apresentada a descrição do projeto e implementação de um controlador para escoamento eficiente de tráfego multimídia3 utilizando multicast. A estratégia proposta visa minimizar a utilização de recursos de rede com o encaminhamento de um único fluxo em tempo real para inúmeros assinantes. A Figura 1 ilustra a visão geral do funcionamento do controlador proposto neste trabalho. Figura 1. Visão geral do controlador de transmissão eficiente de tráfego multimídia através de multicast. A descoberta da topologia de rede e o processamento de eventos IGMP realizados pelo controlador é descrito nas seções 3.1 e 3.2, respectivamente. Por fim, a seção 3.3 descreve o processamento do Streaming de vídeo. 3 Streaming de vídeo do aplicativo VLC (http://www.videolan.org/vlc/) 22 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 3.1. Descoberta da Topologia de Rede O módulo de “Descoberta da Topologia” de rede explora a identificação dos enlaces de interconexão entre os switches que compõem a rede OpenFlow. Este processo é disparado na inicialização do controlador para o mapeamento dos enlaces para serem utilizados como caminhos nas rotas de fluxos para o streaming de vídeo entre o difusor e os interessados no grupo multicast. Para a identificação das conexões entre os switches, este processo coleta informações de envio e recebimento de pacotes LLDP entre os switches e estabelece a interconexão entre os mesmos. Conforme o padrão OpenFlow, para todo o pacote que chega aos switches OpenFlow e não possuem regra definida de encaminhamento de pacotes, o mesmo encaminha ao controlador através de um canal de comunicação seguro. Deste modo, todos os pacotes Link Layer Discovery Protocol (LLDP) são encaminhados para o controlador e manipulados para o controle da topologia de rede. Com isso, o controlador tem o conhecimento da topologia de rede utilizada para o escoamento do tráfego entres os assinantes interessados no tráfego multimídia. Após o reconhecimento da topologia de rede, o controlador aguarda a chegada do primeiro pacote com destino para um grupo multicast. O controlador assume que o primeiro pacote do fluxo é o difusor e armazena informações de sua localização para posteriormente, calcular e estabelecer as rotas até os interessados no fluxo. 3.2. Filtro de Eventos IGMP O módulo “Eventos IGMP” tem como objetivo estabelecer rotinas pré-definidas para a entrada e saída de assinantes no grupo multicast de maneira dinâmica. A entrada de assinantes é identificada a partir da filtragem de pacotes IGMP Join. Identificado um pacote IGMP Join, o controlador armazena a localização do interessado e encaminha para um processo do controlador afim de estabelecer a rota e definição de fluxos entre os switches que compõem o caminho entre o difusor e o assinante. O cálculo de menor caminho entre o difusor e o assinante é obtido através do algoritmo Floyd Warshall [Bahar et al. 1993]. Com o melhor caminho definido até o difusor, o controlador obtém a conexão com os switches que pertencem a rota e adiciona as regras de fluxos. Alguns switches já podem conter regras definidas e, para isso, devem atualizá-las sem a interrupção dos demais assinantes. Esse processo estabelece a conexão entre o difusor e os assinante por onde os pacotes com destinos multicast devem trafegar. Para a saída de assinantes do grupo multicast é realizada a filtragem de pacotes IGMP Leave. Identificado um pacote IGMP Leave, o controlador deve tomar decisões para remover as regras de fluxos somente nos switches que compõem a rota até o interessado. Neste caso, as regras de fluxos aos demais assinantes devem permanecer estabelecidas para não causar interrupção na transmissão multimídia. 3.3. Streaming Vídeo O módulo “Streaming Vídeo”, o servidor encaminha os pacotes do fluxo multimídia aos switches que pertencem ao grupo de assinantes interessados no tráfego. É importante ressaltar neste processo que os pacotes não são encaminhados ao controlador. Isto é, os switches que recebem o fluxo já possuem regras estabelecidas com ações de encaminhamento do tráfego somente aos assinantes do grupo multicast. 23 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 4. Experimentos Nesta seção são apresentados os cenários e as métricas utilizadas para os experimentos. Os cenários utilizados para as avaliações deste trabalho apresentam uma diversidade entre o número de conexões entre os switches e a quantidade de saltos entre o difusor e os assinantes. Além disso, foram analisadas duas métricas relacionadas ao processamento de eventos IGMP para contabilizar o desempenho diantes dos cenários citados. 4.1. Cenários O cenário 1 consiste na topologia em Árvore (Ordem 3). Uma característica importante nesta topologia é a existência de uma única rota entre o difusor e o assinante. Isto é, não existem caminhos alternativos para o escoamento do tráfego. O cenário 2 consiste na topologia de rede utilizada pela RNP (Rede Nacional de Ensino e Pesquisa)4 no seu backbone com 27 Pontos de Presenças (PoPs). Os switches estão interconectados representando uma topologia em malha parcialmente conectada. Diferentemente da topologia em árvore, esta topologia de rede apresenta caminhos redundantes entre o difusor e os assinantes. 4.2. Resultados Com intuito de analisar a viabilidade de uso do controlador para escoamento eficiente de tráfego multimídia, foram utilizadas duas métricas para análise dos resultados nos diferentes cenários apresentados na seção 4.1. A primeira métrica visa identificar o tempo que um novo assinante leva até o início da transmissão do vídeo. A importância desta métrica está relacionada com o período que um usuário leva para se conectar ao fluxo até o início da visualização do vídeo. Foram realizadas 30 execuções para cada coleta dos tempos na primeira métrica. Árvore (Ordem 3) RNP Árvore (Ordem 3) RNP 0.0045 0.850 0.828 0.550 0.673 0.635 0.611 0.583 0.562 0.0035 0.717 0.677 0.650 0.00305 0.003 0.00303 0.00293 0.00260 0.00253 0.00214 0.00209 0.002 0.350 0.00380 0.00371 0.00359 0.00307 0.0025 0.470 0.449 0.450 0.00409 0.004 0.765 0.735 Tempo (s) Tempo (s) 0.750 0.0015 0 1 2 3 4 5 0 Número de Switches Intermediários 1 2 3 4 5 Número de Switches Intermediários (a) (b) Figura 2. Resultados dos tempos obtidos com a variação no número de switches intermediários (a) no ingresso de um assinante e (b) na saída de um assinante. A Figura 2 (a) apresenta a média e variação dos dados obtidos com a coleta de tempos para o ingresso de um assinante no grupo multicast (com variação entre 0 a 5 assinantes) entre os cenários 1 e 2. Percebe-se que o cenário 1 possui tempos superiores ao cenário 2. Esse resultado dá-se devido ao número de links reduntantes entre os switches da rede, o que tende a aumentar o processamento de cálculo de melhor caminho da rota até os assinantes interessados no fluxo multimídia. 4 Disponível em http://www.rnp.br/ 24 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 A segunda métrica visa identificar o tempo que o controlador leva para remover as regras dos switches que pertenciam a rota do assinante que deixa de ter interesse no fluxo. A Figura 2 (b) apresenta os resultados obtidos na realização de 30 execuções para cada coleta de tempo desta métrica. Como pode ser observado, os resultados demonstram uma similaridade entres os tempos de remoção de um assinante indiferente do cenário. Esses resultados são justificados devido ao modo como o controlador foi projetado, retirando as regras somente dos switches onde havia fluxo do assinante específico. Da mesma forma que no gráfico da Figura 2 (a), a variação do tempo médio se sobressae nos dois cenários, sem nenhuma perda de tempo relevante no processo de remoção de regras. 5. Considerações Finais Este trabalho propôs o controlador COFFEE utilizando multicast para escoamento eficiente de tráfego multimídia em redes SDN. Para isto, foi utilizado o protocolo OpenFlow, afim de programar os switches quem compõem a topologia de maneira que somente haja fluxo nos pontos específicos necessários, envitando congestionamentos e processamentos dispensáveis de pacotes. Os resultados dos experimentos indicam que o controlador COFFEE apresentou bons tempos no ingresso e saída de assinantes na topologia. Também, foi identificado o dinamismo e viabilidade do controlador indiferente da topologia utilizada, localização do difusor e/ou do assinante e, principalmente, da quantidade de ingressos e saídas de assinantes durante a transmissão do tráfego multimídia. Como trabalhos futuros pretende-se modificar o controlador para aceitar a alocação dinâmica do difusor na topologia. Também pretende-se modificar o controlador afim de executar diferentes fluxo em grupos multicast. Referências Bahar, R. I., Frohm, E. A., Gaona, C. M., Hachtel, G. D., Macii, E., Pardo, A., and Somenzi, F. (1993). Algebraic decision diagrams and their applications. In ComputerAided Design, 1993. ICCAD-93. Digest of Technical Papers., 1993 IEEE/ACM International Conference on, pages 188–191. IEEE. Bakshi, K. (Mar. 2013). Considerations for software defined networking (sdn): Approaches and use cases. Aerospace Conference, 2013 IEEE, pages 1–9. Cisco (2013). Cisco visual networking index: Forecast and methodology (2012-2017). Fei, A., Cui, J., Gerla, M., and Cavendish, D. (2001). A dual-tree scheme for fault-tolerant multicast. In Communications, 2001. ICC 2001. IEEE International Conference on, volume 3, pages 690–694. IEEE. McKeown, N., Anderson, T., Balakrishnan, H., Parulkar, G., Peterson, L., Rexford, J., Shenker, S., and Turner, J. (2008). Openflow: enabling innovation in campus networks. ACM SIGCOMM Computer Communication Review, 38(2):69–74. Ratnasamy, S., Ermolinskiy, A., and Shenker, S. (2006). Revisiting ip multicast. In ACM SIGCOMM Computer Communication Review, volume 36, pages 15–26. ACM. Sezer, S., Scott-Hayward, S., Chouhan, P., Fraser, B., Lake, D., Finnegan, J., Viljoen, N., Miller, M., and Rao, N. (2013). Are we ready for sdn? implementation challenges for software-defined networks. Communications Magazine, IEEE, 51(7):36–43. 25 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Paralelização híbrida de cálculo de probabilidades utilizando redes bayesianas Guilherme Weigert Cassales¹, Guilherme Freitas Hoffmann¹, Júlio César Vieira¹, Andrea Schwertner Charão1 Curso de Ciência da Computação – Universidade Federal de Santa Maria (UFSM) 1 {cassales,hoffmann,jcvieira,andrea}@inf.ufsm.br Resumo. Este artigo descreve um estudo de caso de paralelização híbrida, com a utilização conjunta das ferramentas MPI e OpenMP. O estudo é focado na melhoria do desempenho durante a execução de um algoritmo existente, o qual calcula probabilidades utilizando Redes Bayesianas. Redes Bayesianas constituem hoje um dos métodos mais utilizados na área de aprendizagem de máquina para Inteligência Artificial, com funcionamento baseado no Teorema de Bayes. Os resultados obtidos, demonstram que é possível obter ganho de desemepenho com a utilização destas duas ferramentas neste problema específico, mas ainda demonstra que resultados melhores podem ser obtidos mediante utilização de paralelismo explícito. 1. Introdução Sabe-se que hoje em dia, apesar do grande volume de dados coletados e gerados pelos usuários, em alguns casos, as decisões ainda precisam ser tomadas com base em incertezas, seja esta por dados faltantes, ou pelo problema ser naturalmente incerto. Uma das técnicas mais utilizadas para a decisão baseada em incerteza são as Redes Bayesianas, as quais têm o cálculo baseado em probabilidades. Apesar do cálculo de probabilidades ser simples, podem existir casos onde devem ser calculadas diversas instâncias e as dependências de probabilidade possuem vários níveis. O presente trabalho propôs-se a implementar um algoritmo que auxiliasse nestes casos, paralelizando o processo de cálculo das probabilidades. Ainda, é sabido que a programação paralela pode auxiliar na melhoria de desempenho das mais variadas aplicações computacionais e que existem diversas técnicas para assim fazer. Além disso, há uma uma vasta gama de ferramentas para estas técnicas, tornando possível combinar duas ou mais destas. Neste estudo de caso, são feitos testes de desempenho com o uso das ferramentas MPI e OpenMP, fazendo uma computação paralela/distribuída em 2 máquinas, com a ferramenta MPI, sendo que cada uma delas utiliza 2 núcleos para processamento por meio do OpenMP. 2. Fundamentação 2.1. MPI O MPI é uma ferramenta de troca de mensagens proposta como um padrão. Foi 26 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 desenvolvida com foco em alto desempenho tanto em clusters de computadores como em máquinas massivamente paralelas. Além disso é muito acessível, possuindo versões gratuitas e comerciais. O MPI utiliza o modelo de memória distribuída e proporciona um controle explícito do paralelismo. Ainda assim, pode ser utilizado numa arquitetura de memória compartilhada. MPI tende a ter um alto desempenho, devido a seu controle explícito do paralelismo, além de funções de comunicação específicas para cada tipo de comunicação exigido [Smith, 2001]. 2.2. OpenMP O OpenMP é uma ferramenta que oferece a possibilidade de paralelizar trechos de código utilizando a abordagem de memória compartilhada. A paralelização é feita através da utilização de diretivas, para que o compilador gere um código paralelo. É largamente utilizado pela facilidade de paralelizar alguns trechos de códigos de maneira rápida, fácil e sem muita alteração no código [Smith, 2001]. 2.3. Threads POSIX Usualmente chamadas como Pthreads, são threads que seguem o padrão POSIX. Como todas threads, possui funcionamento similar a um processo, mas possuem memória compartilhada, assim todas threads de um processo podem acessar dados globais do processo. Ao utilizar threads, o usuário evita o uso de IPCs (comunicação inter processos), os quais causam overhead de comunicação e aumentam a complexidade do programa [Robbins, 2013]. 2.4. Redes Bayesianas Em resumo, Redes Bayesianas, as quais também são conhecidas como redes de opinião, redes causais e grafos de dependência probabilística, são modelos gráficos para raciocínio baseado na incerteza, ou seja, tomada de decisões e conclusões em fatos incertos [Korb, 2004]. As Redes Bayesianas vêm se tornando a metodologia padrão para a construção dos sistemas que confiam no conhecimento probabilístico e têm sido aplicadas em uma variedade de atividades do mundo real [Bobbio, 2001]. 2.5. Teorema de Bayes Toda estrutura e conceituação das Redes Bayesianas gira em torno de um teorema, o Teorema de Bayes. Como sua origem foi na área da matemática, este teorema que trata da manipulação das condicionais de probabilidades é um resultado que deriva dos axiomas básicos da probabilidade. “O teorema de Bayes é para a probabilidade o que o teorema de Pitágoras é para a geometria.” [Harold, 1973]. A ideia principal do teorema é calcular a probabilidade de um evento B ocorrer, dado que um evento A já ocorreu. O teorema é definido pela fórmula: , onde, P(c|X): probabilidade da classe c dado o vetor X; P(X| c): probabilidade do vetor X dado a classe c; P(c): probabilidade a priori da classe c; P(X): probabilidade a priori do vetor de treinamento X. 27 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 2.6. Classificador Naive Este algoritmo de classificação baseado em Redes Bayesianas, é nomeado ingênuo, por basear-se na hipótese de que todos os atributos são condicionalmente independentes. Todo o funcionamento é baseado em alguns parâmetros simples, como a contagem das ocorrências de cada hipótese no set de treinamento, e a contagem de cada ocorrência numa dada classe. A partir desses dados, são calculadas as probabilidades a priori, as quais serão utilizadas para o cálculo das probabilidades condicionais. Todos esses dados são apenas acessados durante o cálculo das probabilidades condicionais. 3. Trabalhos relacionados Existem alguns trabalhos que já utilizaram as ferramentas MPI e OpenMP de maneira semelhante. Para título de conhecimento, são citados dois deles. O primeiro [Smith, 2001] é uma comparação entre MPI e MPI+OpenMP que faz a avaliação baseada em três fatores, nível de memória compartilhada, os padrões de comunicação e acesso a memória. Demonstrou no resultado que utilizar somente MPI apresentou melhores performances na maioria dos casos testados. O segundo [Capello, 2000] é um estudo da implementação de MPI+OpenMP em conglomerados IBM SP, seu resultado demonstra que o uso do modelo hibrido nem sempre será ideal nos conglomerados IBM SP, mas que em algumas situações a utilização poderá melhorar os resultados, como nos casos de desbalanceamento. 4. Metodologia Dividiu-se o desenvolvimento deste trabalho em três etapas: a etapa do projeto, a etapa da preparação do ambiente e a etapa da codificação, testes e benchmarks. 4.1. Projeto O desenvolvimento de um programa que utiliza alguma técnica de programação paralela pode ser subdividido em quatro etapas: particionamento, comunicação, aglomeração e mapeamento [Foster, 1995]. Particionamento: Para a realização do cálculo, optou-se por se utilizar primeiramente a técnica do particionamento de domínio, particionando os dados do problema. O nó principal distribui os dados em lotes para os secundários, fazendo com que a cada rodada, cada nó calcule mil probabilidades. A partir do recebimento de um lote, utiliza-se a técnica do particionamento funcional, e o nó faz então a divisão do cálculo em memória compartilhada, fazendo com que cada core execute o cálculo de quinhentas probabilidades. Comunicação: A comunicação, consiste no envio de um lote de dados iniciais para o cálculo da probabilidade, e a resposta das probabilidades calculadas, portanto é uma comunicação local. É fácil perceber também que não há necessidade de sincronização e que as mensagens são poucas e possuem bastante conteúdo, seguindo a boa prática da comunicação em computação paralela. Pode-se classificar a comunicação também como estruturada, estática e síncrona. Aglomeração: A aglomeração constitui-se da coleta das respostas pelo nó principal. Após a rodada de envio de dados em lotes para os nós secundários, o nó 28 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 principal fica aguardando a resposta dos outros nós. Através da identificação de cada nó, o principal pode então guardar os resultados em vetores distintos, os quais serão utilizados futuramente, seja para calcular novas probabilidades condicionais, seja para reduzir até a resposta final. Ainda pode-se identificar que é um problema que possui uma granularidade fina, pois as tarefas consistem no cálculo da probabilidade. O cálculo é feito com base em uma entrada do domínio, que consiste em dois inteiros, e o resultado esperado. Sabe-se que serão feitos muitos desses cálculos e que o tempo de processamento é baixo, o que facilita a distribuição e balanceamento. Mapeamento: Por tratar-se de um problema de granularidade fina, fica mais simples realizar o balanceamento de carga. O processamento em todos nós e cores tem um tempo semelhante de execução, fazendo com que a percentagem de ocupação seja alta. 4.2. Preparação do ambiente Para que o experimento pudesse ser realizado, foi necessário também passar por uma etapa de preparação do ambiente. Sendo este ambiente composto por duas máquinas com as seguintes configurações: uma delas com um processador Intel core i5 2.4GHz, 6GB RAM DDR3 1333MHz e a outra com um AMD Phenom II P920 1,6 Ghz 6 GB DDR3 667 Mhz. Ambas as máquinas com o sistema operacional Ubuntu 12.04 e tomando os devidos cuidados para não haver interferências de outros softwares nos resultados. Quanto às ferramentas: utilizou-se o OpenMPI v.1.6.4, o compilador gcc v.4.7.3 com suporte a OpenMP v.3.1. Um pré-requisito para uso de OpenMPI é que as máquinas possuam ssh instalado. Após instalá-lo, foi criada uma chave pública para que o ssh pudesse ser acessado sem senha. Na etapa de preparação dos sistemas com relação às ferramentas, a ferramenta MPI não apresentou maiores problemas, exceto a flag de permitir o uso em máquinas heterogêneas. Para o OpenMP a preparação consistiu na instalação do gcc com versão que oferecesse suporte ao OpenMP. 4.3. Codificação, testes e benchmarks Para a codificação do experimento, a abordagem utilizada foi de alterar um código já existente utilizando as técnicas e ferramentas escolhidas. O código escolhido foi o código de autoria de Simon Lavigne-Giroux [Lavigne-Giroux, 2013]. Antes de mais nada, era necessário determinar o tamanho de mensagem que não causasse perdas de desempenho. Foi identificado que mensagens de 3000bytes ou mais, proporcionam uma aceleração e compensam o overhead da troca de mensagens. Quanto ao cálculo da probabilidade em paralelo, o conjunto de treinamento foi o primeiro obstáculo, esse deveria ser o mesmo em todos os locais. Para sanar esse problema, utilizou-se da falsa aleatoriedade dos números aleatórios, iniciando todos os conjuntos com a mesma semente, força todos a terem a mesma sequência, e consequentemente o mesmo conjunto de treinamento. Resolvido este problema, paralelizar o cálculo das probabilidades fica a cargo do OpenMP, com a adição de algumas diretivas da ferramenta, como a diretiva atomic, que faz o isolamento da operação, e as opções de shared e private dentro da diretiva omp parallel for, que auxiliam no controle de acesso a memória pelas diversas threads 29 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 criadas pelo OpenMP, foi possível deixar o cálculo funcional. Após resolver cada problema separadamente, foi feita a combinação dos dois métodos, com o envio da mensagem com os dados, o recebimento dos dados e cálculo das probabilidades e então envio dos resultados. Para a obtenção dos tempos de execução foram utilizadas funções da biblioteca time.h. 5. Resultados Em virtude das várias etapas em que consistiu este experimento, foram obtidos diversos resultados. Nesta seção são listados aqueles resultados que foram julgados os mais pertinentes na análise do sucesso ou não dos métodos empregados. Primeiramente o Quadro 1 apresenta uma comparação entre o desempenho de um código em Pthreads com um código utilizando OpenMP. Os resultados apresentados consistem na média de 5 execuções e estão na grandeza de micro segundos (10-6). Número de Threads Threads POSIX (usec) OpenMP (usec) 1 1931184 1936312 2 1246455 1087813 4 836797 936345 8 775897 839629 Quadro 1 – Comparativo entre Threads POSIX e OpenMP. Como observa-se no Quadro 1, o ganho de desempenho foi maior quando foi utilizado Pthreads, isso ocorre justamente pela diferença de paradigma dos métodos: Pthreads apresenta um paralelismo explícito, enquanto o OpenMP apresenta um paralelismo implícito. Para o comparativo de execução de um código em programação sequencial com a sua adaptação para uma programação utilizando MPI e OpenMP, optou-se por não variar o tamanho do problema. Novamente os dados são referentes à média de cinco execuções. A execução sequencial, feita no i5, apresentou média de 505,644 segundos, enquanto a execução de MPI + OpenMP, apresentou uma média de 152,914 segundos, o que representa um speed-up de 3,3. 6. Conclusão Baseando-se nos resultados obtidos nos experimentos, pode-se observar que, embora houve um ganho de performance, este provavelmente seria mais acentuado se tivessem sido utilizadas técnicas/ferramentas de paralelismo explícito em lugar do OpenMP. Assim, podemos salientar que apesar da facilidade de utilização, a não poluição do código, e o trabalho delegado ao compilador por meio de diretivas tornem o OpenMP uma ferramenta muito atrativa, é necessário levar em conta que tipo de problema está sendo abordado e quais as necessidades prioritárias que este problema apresenta. Num caso onde o desempenho é a necessidade principal, o OpenMP não é a ferramenta mais indicada, mas num caso onde o usuário deseja que o código não seja alterado e que seja executado em paralelo, o OpenMP é uma ótima ferramenta. O MPI está no outro extremo da classificação, trata-se de uma ferramenta explicitamente paralela, prezando pela eficiência e desempenho, deixando a estética do código e a facilidade de 30 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 implementação de lado. Observa-se ainda, que embora a praticidade apresentada pelo OpenMP possa sugerir que seja uma ferramenta voltada para usuários iniciantes, os conceitos básicos da programação paralela segundo Foster, continuam valendo e que pode ser complexo compreender como uma diretiva irá fazer todo trabalho de paralelização. Portanto, considera-se de extrema importância que os usuários tenham um contato inicial com o paralelismo em baixo nível antes de iniciar o estudo da ferramenta. Seguindo o mesmo pensamento, é importante que o usuário tenha uma ideia geral de comunicação por sockets antes de utilizar o MPI, caso contrário poderá não entender, ou presumir que algumas partes do processo simplesmente não existem. Na que diz respeito às Redes Bayesianas, os resultados demonstram que a utilização dessas num conjunto de grande volume de dados é possível, e que também pode ser acelerado mediante as situações corretas. A tomada de decisão baseada na incerteza hoje mais do que nunca faz parte do cotidiano de muitas áreas, e com a utilização do paralelismo, será possível utilizar bases de dados muito maiores, proporcionando a tomada da decisão cada vez mais próxima da ótima. Feitas essas ressalvas, conclui-se que toda ferramenta tem sua utilidade, mas que toda ferramenta tem também as circunstâncias em que devem ou não ser utilizadas. Cabe ao usuário interpretar corretamente esses momentos e escolher a ferramenta que melhor se adapte ao objetivo proposto. Referências Smith, L.; Bull, M. (2001). Development of Mixed Mode MPI / OpenMP Applications. Scientific Programming. Disponível em: http://www2.epcc.ed.ac.uk/~markb/docs/sci_prog01.pdf. Acessado em Maio de 2013. Cappello, F.; Etiemble, D. (2000). MPI versus MPI+OpenMP on IBM SP for the NAS Benchmarks. Supercomputing. Disponível em: http://www.sc2000.org/techpapr/papers/pap.pap214.pdf. Acessado em Maio de 2013. Korb, K.. B.; Nicholson, A. E.. (2004). Bayesian artificial intelligence. United Kingdom. Bobbio, A., Portinale, L., Minichino, M., Ciancamerla, E.. (2001). Improving the Analysis of Dependable Systems by mapping Faut Trees into Bayesian Networks. Jeffres Harold. (1973). Scientific Inference. 3rd edn. Cambridge University Press Foster, I. (1995). Designing and Building Parallel Programs. Addison-Wesley Inc. Robbins, D. (2013). POSIX threads explained. Disponível em: http://www.ibm.com/developerworks/library/l-posix1/index.html. Acessado em Maio de 2013. Lavigne-Giroux, S. (2013). Naive bayes Classifier. Disponível https://code.google.com/p/naive-bayes-classifier/. Acessado em Maio de 2013. 31 em: XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Agente Inteligente Conversacional modelado utilizando as técnicas de Ontologia e Mapas de Kohonen Patricia Mariotto Mozzaquatro1, Mateus Humberto Mattos da Costa1, Rodrigo Luiz Antoniazzi1 1 Universidade de Cruz Alta (UNICRUZ) Campus Universitário Dr. Ulysses Guimarães - Rodovia Municipal Jacob Della Méa, Km 5.6 - Parada Benito - CEP 98.020-290 - Cruz Alta – RS – Brazil [email protected],{mateusmattosc,rodrigoantoniazzi}@yahoo. com.br Abstract. Currently, with the growth of EAD, the use of agents has been gaining significant importance as its use in the educational process. In this context, research using artificial intelligence techniques and tools to assist the interaction between user and system are being developed. Among them, stand out the ontology techniques and Kohonen maps (MK). The research aims to develop a conversational intelligent system using algorithms members of the ontology techniques and MK. The conversational system was validated using tests of the type White Box and Black Box. It can be seen that the Kohonen maps technique applied in the creation of knowledge bases in conversational agents showed the best results in both tests. Resumo. Atualmente, com o crescimento da EAD a utilização de agentes vem obtendo importância significativa quanto o seu uso no processo educativo. Neste contexto, pesquisas utilizando técnicas de Inteligência Artificial e ferramentas para auxiliar na interação entre usuário e sistema vêm sendo desenvolvidas. Assim, destaca-se as ontologias e Mapas de Kohonen (MK). A pesquisa objetivou desenvolver um sistema inteligente conversacional (SIC) utilizando os algoritmos integrantes das técnicas de ontologias e MK. O SIC foi validado por meio de testes do tipo Caixa Branca e Caixa Preta. Pode-se constatar que a técnica MK aplicada na criação de bases de conhecimento em agentes conversacionais obteve melhor resultado em ambos os testes. 1. Introdução Atualmente, com o crescimento da educação à distância (EAD) a utilização de agentes vem obtendo importância bastante significativa quanto o seu uso no processo educativo, pois tem buscado dar suporte ao desenvolvimento de teorias e tecnologias que venham ao encontro de um ensino interativo, motivador, capaz de suscitar uma aprendizagem efetiva e de qualidade [Francisco 2004]. Acredita-se que a inserção de agentes conversacionais em ambiente virtual de aprendizagem possa proporcionar auto grau de interatividade entre ambientes educacionais e usuários [Degen 2009]. Para ocorrer interação e envolvimento da área Ciência da Computação são incorporadas técnicas de Inteligência Artificial e ferramentas para auxiliar na interação entre usuário e sistema. Dentre estas, pode-se 32 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 destacar as técnicas de ontologias [Degen 2009] e Mapas de Kohonen [FRANCISCO 2004]. O artigo proposto tem por objetivo desenvolver um sistema inteligente (agente) conversacional a ser integrado em ambientes educacionais implementando as técnicas de ontologias e mapas de Kohonen. 2. Web Semântica e Mapas de Kohonen O objetivo final da Web de dados é possibilitar com que computadores façam coisas mais úteis e com que o desenvolvimento de sistemas possa oferecer suporte a interações na rede. O termo “Web Semântica” refere-se à visão do W3C1 da Web dos Dados Linkados. A Web Semântica oferece às pessoas a capacidade de criarem repositórios de dados na Web, construírem vocabulários e escreverem regras para interoperarem com esses dados (W3C). A formação da web ou World-Wide Web Consortium (W3C) tem buscado padronizar novas linguagens e a utilização de tecnologias distintas para definições de páginas e seus respectivos padrões. Para definir e seguir uma mesma linha ela conta com três técnicas principais: XML, RDF e ontologias baseadas em conhecimento estruturado, ou seja, elementos relacionados determinando características para seu funcionamento de forma organizada [Koivuen e Miller 2001]. Borst (1997) aborda uma definição para Ontologia: “uma especificação formal e explícita de uma conceitualização compartilhada”. As ontologias possuem várias formas de abordagem e cada uma delas possuem distintas classificações. A proposta é integrar e demonstrar as classificações que farão parte da ontologia utilizada neste trabalho. Outra técnica implementada na pesquisa proposta são os mapas de Kohonen ou Mapas Auto Organizados de Kohonen - Self-Organizing Map - SOM, ou simplesmente Redes Kohonen, sua definição refere-se a uma rede neural artificial de aprendizagem, ela é considerada um método de busca de conjuntos integrando a inteligência artificial por aprender em sua busca, competitiva e não supervisionado, é relativamente simples e com a capacidade de organizar dimensionalmente dados complexos em clusters, de acordo com suas relações. Este método solicita apenas os parâmetros de entrada, mostrando-se ideal para problemas onde os padrões são desconhecidos ou indeterminados, capaz de mapear um conjunto de dados organizado em duas camadas, sendo que a primeira camada representa o vetor dos dados de entrada, a segunda corresponde a uma grade de neurônios, geralmente bidimensional ou unidimensional, totalmente conectada aos componentes do vetor de entrada. Cada neurônio possui um vetor de código associado [Kohonen 2001]. A seção a seguir apresenta a metodologia do trabalho proposto. 3. Metodologia e Sistema Desenvolvido O trabalho proposto está embasado em uma pesquisa qualitativa que se utiliza de uma busca sobre percepções e entendimento da natureza geral de uma questão, abrindo assim espaço para a interpretação. O trabalho se divide nas seguintes etapas: Etapa 1 – Levantamento Bibliográfico: Estudo sobre as tecnologias de web semântica e mineração 1 O World Wide Web Consortium (W3C) é a principal organização de padronização da World Wide Web. Consiste em um consórcio internacional com quase 400 membros, agrega empresas, órgãos governamentais e organizações independentes com a finalidade de estabelecer padrões para a criação e a interpretação de conteúdos para a Web. 33 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 de dados; Pesquisa, estudo e análise sobre as técnicas Ontologia e Mapa de Kohonen e Análise das linguagens PHP, XML e AIML com suporte a implementação das técnicas. Etapa 2 – Desenvolvimento prático: Implementação das técnicas Ontologia e Mapas de Kohonen; Aplicação dos testes utilizando Caixa branca e Caixa preta (Matriz de Estímulos e Resultados); Testar a eficiência das técnicas medindo a agilidade no feedback e interação com os usuários e desenvolver o estudo de caso apresentando os resultados obtidos após o comparativo. Inicialmente o usuário terá acesso ao sistema o qual possuirá uma interface que possa interagir com o mesmo usando um layout simples para que não tenha dificuldade no momento da interação e que possa ser manipulado de maneira correta. Para interagir com o agente o usuário terá acesso ao computador utilizando ferramentas de entrada e saída (teclado, monitor), informando os dados a serem pesquisados e após serem visualizados. A pergunta realizada pelo estudante será passada para o agente (sistema) que fará a busca em sua base de conhecimento procurando pela resposta. Nesta etapa o sistema poderá responder de duas maneiras: uma delas seria com uma “Resposta com tratativa de Erro” e “Resposta com Precisão”. A tratativa de erro acontece caso o sistema não encontre a resposta para a pergunta ou não possua resposta para o questionamento. Nessa tratativa o sistema terá que pedir para o usuário ser mais especifico com sua pergunta ou irá sugerir uma pergunta que seja equivalente a realizada pelo estudante (usuário). Se ele obtiver a “Resposta com Precisão” o sistema mostrará na tela do monitor a resposta armazenada em sua base de conhecimento. Assim ocorrerá a avaliação se o agente cumpriu com sua função de emitir uma resposta com eficácia. Para a implementação das técnicas foram necessários os seguintes recursos de hardware e software: Notebook com sistema operacional Windows 7 versão 64 bits, core i3 (2,53 GHz) com 4 GB de memoria ram e 500 de HD; Implementado no Notepad e Notepad++ em ambas as técnicas; Xampp 1.8.1 como servidor para a técnica de Mapas de Kohonen; Linguagem AIML e os softwares Diaportable e StarUML. 3.1. Implementação da técnica Ontologia Para criação do agente conversacional com a técnica Ontologia foi utilizada uma linguagem em código aberto por meio da tecnologia ALICE (Artificial Linguistic Internet Computer Entity) que serve como tecnologia de desenvolvimento para ferramentas de conversação que utiliza como linguagem a AIML (Artificial Intelligence Markup Language) [Teixeira e Menezes 2003]. A linguagem possui parâmetros de formatação para que possam ser formuladas perguntas e dadas respostas conhecidas como categorias. As categorias possuem parâmetro de entrada e saída, como pergunta e resposta onde a tag <pattern> é responsável pela pergunta e <template> corresponde à resposta. As categorias AIML possuem uma divisão em três tipos: atômica, padrão e recursiva. A categoria mais simples é nomeada como atômica, pois não possui símbolos como “*” ou ”_”, ela só faz a comparação da entrada pattern verificando se ela consta exatamente igual na base de conhecimento para atribuir uma resposta. As categorias recursivas têm por propósito envolver uma entrada com outra, isso na parte de template. Ela pode ser utilizada quando alguma resposta em especifico é obtida por meio de entradas parecidas. O comando responsável por implementar essa função é o operador <srai> além desse é possível programar recursividade usufruindo das tags <sr> e <star>. A linguagem AIML possui algumas tags extras que não tem a necessidade de 34 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 constar na estrutura do código, porém a utilização das mesmas complementa e melhora a maneira com que o agente funciona deixando a conversa cada vez mais natural, a tag <random> apresenta a funcionalidade de variar em diferentes saídas respostas para uma mesma entrada pergunta. A interface do agente proposto foi desenvolvida com a tecnologia pandorabots. 3.2. Implementação da técnica Mapas de Kohonen Para a criação do agente conversacional baseado na técnica Mapas de Kohonen foi utilizada a linguagem de programação PHP juntamente com a interação de um banco de dados MYSQL. O sistema possui a arquitetura semelhante à de um chat, de forma que um usuário possa efetuar perguntas recebendo do programa respostas, como um batepapo entre o usuário e o agente conversacional. Quando o usuário digita uma pergunta o agente conversacional entra em ação verificando a entrada efetuada, a mesma é processada por meio de condições e tratativas existentes no código. Tudo acontece por meio da integração ao banco de dados que funciona como uma rede criada na base de conhecimento do agente conversacional. Logo de inicio é possível visualizar uma condição onde verifica se a variável “$pergunta” possui algum valor de entrada, se não possuir ele retorna uma mensagem dizendo “Você precisa digitar algo para que eu possa responder!” caso possua alguma entrada ele prossegue com o código fazendo as tratativas e verificando se satisfaz as condições impostas no sistema. Além disso, são efetuadas algumas tratativas para deixar a entrada em um padrão formatado de modo a facilitar na conversão e futuras comparações efetuadas no decorrer do programa. É excluído todo e qualquer tipo de espaço em excesso, pontuação e conversão de toda a string para letra maiúscula. São efetuadas três condições para que se possa obter um resultado: são removidas palavras que não tem uma importância grande na pergunta deixando à frase menos poluída; faz-se a troca por palavras similares que estejam tratando do mesmo contexto citado pelo usuário, essa remoção é efetuada por meio de palavras que já estão cadastradas no banco de dados em uma tabela chamada troca onde acontece a comparação e troca se for necessário; após é reconstruída toda a entrada de maneira a formular uma nova variável, essa variável é comparada com toda a base de conhecimento para verificar se possui alguma resposta, essa entrada passará a possui um valor que é referente a contagem das strings, então é feito uma varredura na entrada que o usuário efetuou e na entrada que consta na base de conhecimento gerando uma variável chamada “$resultado” dessa variável se resulta uma outra variável chamada variável “$balanco” que é referente a contagem da variável “$resultado”. Após é calculada a média da string e comparados os valores “se” “$balanco” for maior ou igual a media efetuada ele mostra um resultado encontrado pelo sistema, caso contrario ele cai em uma condição que é dada a seguinte resposta “Desculpa, mas não achei nenhuma resposta, seja mais claro”. 4. Comparativo das técnicas Ontologia e Mapas de Kohonen As técnicas foram validadas utilizando a aplicação dos testes caixa branca, caixa preta e caixa cinza. 35 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 No primeiro momento o agente foi validado utilizando o teste caixa preta, ou seja, foi aplicado um questionário que tem como objetivo validar o agente conversacional implementado com as técnicas Ontologia e Mapas de Kohonen, observando alguns pontos como: demanda mental, desempenho e satisfação, dificuldade e esforço, tempo, nível de frustração, utilização do agente e interação com o ambiente. Os resultados quantitativos decorrem da compilação do formulário aplicado. Para a elaboração e disponibilização do questionário foi utilizada a ferramenta Makesurvey2. A aplicação dos testes aconteceu em uma turma com 20 alunos na disciplina de Lógica para Computação. O domínio abordado nas questões referiu-se à Engenharia do Software mais especificamente sobre a área de Requisitos. As cinco (5) primeiras questões relacionavam-se ao agente conversacional implementado com a técnica Ontologia e as outras cinco (5) questões estão relacionadas ao agente conversacional implementado com a técnica Mapas de Kohonen. Foi estipulado um tempo limite para o funcionamento dos testes. Foram identificados o tempo e as interações obtidas por meio de logs e contadores de ambas as técnicas (neste momento foi executado o teste Caixa Branca). Os testes envolveram Caixa Branca (realizado pelo programador) e Caixa Preta (validado por usuários), originando assim o teste Caixa Cinza. As interações são responsáveis pela quantidade de vezes que foi perguntado para chegar a um resultado final. 4.1. Análise dos resultados Nesta subseção será apresentada a análise das duas técnicas. No teste Caixa Branca foram identificadas as interações e tempo que as técnicas de Ontologia e Mapas de Kohonen fizeram para chegar aos resultados. Constatou-se que a técnica Ontologia contabilizou seiscentas e vinte e quatro (624) interações em 25 minutos, deve se ressaltar que o tempo estipulado (25 minutos) não foi suficiente para que todos os alunos realizassem todas as tarefas (alguns não conseguiram responder todas as questões). A técnica Mapas de Kohonen permitiu que os alunos finalizassem todas as tarefas em 17 minutos com total de trezentos e noventa e oito (398) interações. Pode-se perceber que a técnica Mapas de Kohonen demonstrou melhor desempenho em relação às interações e tempo de resposta. Para confirmar a veracidade das informações aplicouse o teste T-Student. O fator “Alfa” refere-se ao grau de confiança, foi atribuído ao mesmo 5%. O fator “gl” refere-se ao grau de liberdade sendo a população de vinte (20). O p_value refere-se ao nível de significância, ou seja, 0,12% pois é o resultado da subtração das duas técnicas, e finalmente o t_observado refere-se ao somatório das mesmas. Como p_value apresenta um valor menor que do “Alfa”, pode-se afirmar que há uma diferença significativa nos índices de eficiência instrucional relativa entre as técnicas. Consequentemente afirma-se que a técnica Mapas de Kohonen apresentou melhor eficácia em relação aos testes realizados. Após foi aplicado o teste Caixa Preta no qual os usuários responderam um questionário. Com sua aplicação apresentou-se a Matriz Estado x Estimulo com resultados esperados e Matriz de Estado x Estimulo com registro dos resultados. Constatou-se que o agente implementado com a técnica Mapas de Kohonen se sobressaiu em vários estados. Após a análise constatou-se que a técnica Mapas de Kohonen foi eficaz para o objetivo proposto. 2 http://www.makesurvey.net/ 36 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 5. Considerações Finais Na pesquisa desenvolvida foi realizado um estudo sobre as técnicas de Ontologia e Mapas de Kohonen objetivando identificar qual possuiu melhor desempenho em realizar tarefas de conversação, ou seja, qual foi mais ágil no feedback e interação com os usuários. Para verificação das técnicas, ambas foram implementadas em linguagens diferentes, AIML para Ontologia e PHP para Mapas de Kohonen. As duas foram validadas em ambiente web para a realização dos testes com os usuários. Com o estudo efetuado, constatou-se que a técnica Mapas de Kohonen destacou-se entre a melhor, considerando fatores como a quantidade de interações e tempo. A técnica Mapas de Kohonen teve melhor desempenho na maioria das questões avaliadas como na facilidade em interagir com o sistema, chegando assim a um resultado final. A justificativa para tal achado refere-se à capacidade da técnica Mapas de Kohonen identificar um contexto, melhorada por meio de algumas tratativas de erros implementadas no sistema, como a associação da semelhança de palavras do mesmo contexto, exclusão de palavras que não possuem nenhuma relevância na pergunta realizada contando com a facilidade em manuseio do sistema. Com isso, acredita-se que o trabalho desenvolvido contribui cientificamente, mostrando assim as tendências de novas técnicas para serem pesquisadas e campos que podem ser explorados para a concepção de novos sistemas conversacionais obtendo-se cada vez mais certeza sobre a maneira correta de adquirir avanço com relação a agentes conversacionais. Como trabalho futuro pretende-se implementar os demais recursos para prover inteligência ao agente de forma automática, ou seja, tratativa de perguntas e respostas não identificadas. Referencias Borst, W. N. (1997). Construction of engineering http://www.ub.utwente.nl/webdocs/inf/1/t0000004.pdf, agosto. ontologies,: Degen, Yvens. (2009). Ontologia para Modelo de Negócios de rede sociais na internet: um ensaio teórico-exploratório. Dissertação de Mestrado Executivo em Gestão Empresarial, Fundação Getúlio Vargas – FGV. Francisco, Claudia Aparecida Cavalheiro. (2004). Rede de Kohonen: Uma Ferramenta no estudo das relações tróficas entre espécies de peixes. Dissertação de Mestrado em Ciências. Programa de Pós-Graduação em Métodos Números em Engenharia, Universidade Federal do Paraná – UFPR. Kohonen, Teuvo. (2001). Self-Organizing Maps. 3ª Ed. New York: Springer. Koivunen, M., Miller, E. (2001). W3C Semantic http://www.w3c.org/2001/12/semweb-fin/w3csw, Agosto. Web Activity. Teixeira, S.; Menezes, C. S. (2003). Facilitando o uso de Ambientes Virtuais através de Agentes de Conversação. XIV Simpósio Brasileiro de Informática na Educação SBIE - 2003, Rio de Janeiro, RJ, Brasil, p. 483-492. 37 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 REDUÇÃO DE CORES EM IMAGENS DIGITAIS COM O USO DE MÉTODOS DE QUANTIZAÇÃO POR AGRUPAMENTOS (CLUSTERS) DO ESPAÇO DE COR Jonas Ertel Costa1, Rodrigo Luiz Antoniazzi, Patricia M. Mozzaquatro2 1 Ciência da Computação – Universidade de Cruz Alta (UNICRUZ) Rodovia Municipal Jacob Della Méa, Km 5.6 – 98.020-290 – Cruz Alta – RS – Brazil 2 Departamento de Ciência da Computação – Universidade de Cruz Alta (UNICRUZ) Cruz Alta, RS – Brasil. {jonasertelcosta,rodriantoniazzi}@yahoo.com.br, [email protected] Abstract. This work aimed to apply two methods of quantization and determine which achieves a better result of quantization. The problem is to reduce the number of colors in an image starting from thousands of colors to a discrete number of 256 colors. The quantization methods were evaluated: the quantization method of Xiang, which is based on classification of colors based on the Euclidean distances between them and the method of quantization Sirisathitkul that performs grouping of colors, based on the frequency of each color obtained by calculating the histogram of the image. After the tests, it was concluded that the algorithm Sirisathitkul is capable of producing excellent results in complex images quantization. Resumo. Este trabalho objetivou aplicar dois métodos de quantização e determinar qual consegue um resultado melhor de quantização. O problema consiste em reduzir o número de cores de uma imagem partindo de milhares de cores até um número discreto de 256 cores. Os métodos de quantização avaliados foram: o método de quantização de Xiang, que se fundamenta na classificação das cores com base nas distâncias euclidianas entre elas e o método de quantização de Sirisathitkul, que realiza o agrupamento das cores, baseando-se na frequência de cada cor obtida pelo cálculo do histograma da imagem. Após os testes, concluiu-se que o algoritmo de Sirisathitkul é capaz de produzir excelentes resultados de quantização em imagens complexas. 1. Introdução Há poucas décadas, as figuras e ilustrações não ocupavam um espaço tão importante como ocupam hoje nos diversos tipos de mídia. Até mesmo os “veículos” que nasceram para a escrita, como os jornais, por exemplo, se renderam às facilidades da comunicação por meio de imagens, que no princípio faziam uso de fotos monótonas ou simples desenhos em preto e branco, apenas como uma forma de ilustrar o que diziam os textos. Hoje em dia, com tantas tecnologias, um “bombardeio” de informações é gerado sobre os usuários de veículos de comunicação, entre os quais está o computador, as imagens ocupam cada vez mais espaço no nosso dia a dia e acabam não mais ilustrando 38 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 textos, mas sim se propondo como textos. A escolha certa das cores, tanto para os meios de comunicação como para qualquer outra área, é fundamental, pois de alguma forma, as cores utilizadas devem causar o efeito certo e garantir a atenção das pessoas, segundo Guimarães (2001). Pela importância que tem a cor e pelas sensações visuais geradas por belas imagens coloridas, é imprescindível o desenvolvimento de ferramentas que auxiliem no estudo das cores (tratamento de imagens, estudo da combinação de cores, detecção de objetos, realidade virtual, entre outros), em que os métodos clássicos de tratamento de cores em imagens têm se mostrado ineficientes em muitos aspectos, como em segmentação de imagens com paisagens, matas e principalmente em locais onde a iluminação não é a ideal, conforme Severino Jr. (2009). Este trabalho permitiu um estudo comparativo entre dois métodos de Quantização1 de Cores por Agrupamentos (clusters) do Espaço de Cor: o método de quantização de Xiang e o método de quantização de Sirisathitkul, com o intuito de desenvolver uma ferramenta que processe e apresente o mais próximo da percepção humana, quais as cores predominantes de uma imagem, de forma que as cores sejam reduzidas o máximo possível. 2. Quantização de cor Quantização é, originalmente, definida como a digitalização de um sinal contínuo. Cada pixel de uma imagem representa uma combinação de cores e intensidades de determinados pontos de uma imagem original. Quantização resume-se em adaptar esses valores, de uma sequência contínua de amplitudes para um número finito de valores possíveis. No processo de quantização, inicialmente as amplitudes de entrada são divididas em um número de intervalos pré-definidos, o que pode levar à perda da confiabilidade, devido à automação ou ao número de cores escolhido pelo usuário poder não ser o ideal para a imagem em questão. Os valores originais são submetidos a um comparativo com os intervalos pré-definidos, de forma que os valores de entrada sejam arredondamentos ao valor do intervalo mais próximo. O objetivo da quantização é gerar um número menor de níveis de saída do que os de entrada. Entretanto essa técnica implica em erros na imagem reconstruída que impossibilitam reparações a partir dos valores quantizados, segundo Hayes e Marques Filho (1999). Segundo Sirisathitkul (2004), tipicamente o algoritmo de quantização para imagens coloridas consiste de quatro fases. A primeira fase é chamada de amostragem da imagem original, onde é calculado o histograma da imagem por estatísticas de cores, ou seja, o número de cores distintas e suas frequências. A segunda fase é chamada de desenho do mapa de cores. Nesta etapa, é escolhido o melhor conjunto possível de cores representantes, a partir das estatísticas das cores. A terceira fase, chamada de mapeamento de pixel, mapeia cada cor da imagem original para uma cor representante no mapa de cores. Na quarta e última fase, chamada de quantização da imagem, a imagem é redesenhada com as cores substituídas a partir das cores mapeadas. O ideal para o método de quantização é que os conjuntos de cores representativas geradas produzam a sensação (ao observador) de que a diferença entre a 1 Digitalização dos valores de amplitude em quantidades discretas. (Gonzalez, 2010). 39 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 imagem original e a imagem quantizada seja a menor possível. Essa tarefa, que busca encontrar um conjunto ideal de cores representativas, pode ser vista como um problema de busca por agrupamentos (clustering, em inglês) em grande escala conforme Silva e Trémeau et al. (2008). Na Figura 1 visualiza-se a quantidade de cores existentes em uma imagem digital, que com a mescla aditiva das cores que o olho humano faz inconscientemente, define o objeto (neste caso, o olho do Mandril) como laranja (Silva, 2008), apesar de ser composta por vários tons diferentes, mas muito próximos. Figura 1: Ampliação do olho esquerdo da imagem Mandril. Fonte: Silva (2008). É importante destacar também que a quantização realizada em valores individuais de entrada é chamada de “Quantização Escalar”;; e a quantização de blocos de valores de entrada agrupados é chamada de “Quantização Vetorial”. A quantização vetorial gera resultados iguais ou superiores a quantização escalar; porém, em determinadas aplicações do quantizador a complexidade para o desenvolvimento não compensa (Marques Filho, 1999). Desta forma, os métodos de agrupamento têm como objetivo dividir, fundamentados nas similaridades fortes intra-cluster, os dados n-dimensionais em grupos, produzindo uma diferença entre-cluster apropriada à classificação de cores. 2.1. Método de Quantização Color Image Quantization by Minimizing the Maximum Intercluster Distance O método de quantização Color Image Quantization by Minimizing the Maximum Intercluster Distance, publicado pelo Dr. Zhigang Xiang, propõe critérios numéricos para agrupar pontos de cor de imagens coloridas em clusters com distância máxima entre eles minimizada e definir um ponto representante para cada um desses clusters, de forma que a diferença máxima entre as cores originais e as cores correspondentes quantizadas seja a menor possível (Xiang, 1997). O método de Xiang se caracteriza por alcançar resultados competitivos e se sobressair quando os erros de quantização precisam estar bem nivelados. A quantização obtida por esse procedimento garante um alto número de cores quantificadas e uma distribuição adequada da população de pixels. Xiang demonstra que o uso do ótimo algoritmo de agrupamento de Teófilo F. Gonzalez, para o desenvolvimento de um quantizador de imagens coloridas de 24 bits, resultou em um quantizador veloz e extremamente poderoso, capaz de obter o nivelamento máximo de erro de quantização e impor limite em distorções aparentes nas imagens geradas por esse quantizador. O algoritmo de aproximação O(kn) de Gonzalez é o melhor no que diz respeito à aproximação vinculada, onde k é o número de clusters e n, no caso deste estudo, é o número de cores distintas explicam Gonzalez (1995) e Xiang (1997). 40 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 No método de Xiang a estratégia usada para atenuar esse problema é minimizar a distância máxima entre clusters, o que consiste em produzir, a partir de dados distintos, clusters compactos com similaridade bastante alta entre os pontos, proporcionando melhores grupos de dados onde qualquer ponto dentro dos clusters tem um limite eficaz de diferença em relação ao seu representante, conforme Gonzalez (1995) e Xiang (1997). 2.2. Método de Quantização Color Image Quantization Using Distances Between Adjacent Colors Along the Color Axis with Highest Color Variance O estudo proposto por Sirisathitkul descreve o projeto de uma simples, mas efetiva, técnica hierárquica de divisão do mapa de cores para quantização de cores. A classificação das cores é feita com base em seus componentes ao longo do eixo principal, como pontos com maior variância na distribuição das cores e a distância euclidiana entre as cores adjacentes ao longo do eixo. São estes componentes usados para encontrar o plano de corte, que é perpendicular em relação ao eixo, e dividir uma célula de cor em duas sub-células com erros de quantização aproximadamente igual em relação aos seus centróides (Sirisathitkul, 2004). Segundo Sirisathitkul (2004), o desempenho do algoritmo de quantização depende de dois fatores: o tempo de execução e os erros de quantização. No estudo, Sirisathitkul usou como critério a média do erro quadrático (Mean Squared Error) para avaliar o erro de quantização em imagens de 24 bits por pixel, quantizadas para 256 cores. Assim, um valor abaixo da média do erro quadrático significa uma melhor imagem reconstruída. 3. Ambiente experimental e testes Para a realização dos testes dos algoritmos desenvolvidos para os métodos de Xiang e Sirisathitkul, construiu-se uma aplicação com o uso da linguagem de programação C++ com a IDE Microsoft Visual Studio 2010. A aplicação desenvolvida conta com uma interface de fácil utilização que pode ser visualizada na Figura 2. 41 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Figura 2: Gráfico comparativo AG x AS Após o desenvolvimento da aplicação, aplicou-se sobre os métodos pesquisados, o teste dos algoritmos de Xiang e Sirisathitkul em algumas imagens, com o objetivo de medir o desempenho dos métodos quanto ao tempo de execução e a qualidade da quantização, que avaliada pela disparidade das cores dos pixels da imagem original e a imagem quantizada. Os resultados obtidos pelos métodos estão expressos na Tabela 1, que estabelece um comparativo de desempenho computacional ao analisar o tempo necessário para encontrar a solução e também do Erro Médio calculado com base entre a distância euclidiana das cores da imagem original e a imagem quantizada. Tabela 1: Análise comparativa dos resultados TABELA COMPARATIVA DE RESULTADOS XIANG SIRISATHITKUL NÚMERO DE CORES TEMPO DE EXECUÇÃO Lena 59823 31.449 ms 16.882 35.535 ms 5.797 Kid 77807 44.963 ms 24.783 55.319 ms 6.476 Girl 53560 42.138 ms 14.034 43.805 ms 5.543 101839 64.858 ms 17.943 70.524 ms 6.516 Bolas de Sinuca 63898 31.235 ms 34.140 38.844 ms 8.318 Média 71385 42.929 ms 21.556 48.805 ms 6.530 IMAGEM Balões ERRO MÉDIO TEMPO DE EXECUÇÃO ERRO MÉDIO Com base na análise da Tabela 1, percebe-se que em todas as imagens testadas pela aplicação, o algoritmo desenvolvido por Xiang executou em menos tempo que o algoritmo de Sirisathitkul, no entanto, o valor do erro médio obtido pelo algoritmo de Sirisathitkul, que é a informação mais importante para este trabalho, é extremamente menor em comparação ao algoritmo de Xiang. Outro detalhe importante que se deve enfatizar, é que as diferenças de tempo de execução entre os métodos são extremamente baixas, em contrapartida, os valores de erro médio gerado pelo algoritmo de Sirisathitkul, são menores que os valores de erro médio gerados pelo método de Xiang e a valores muito abaixo, em média três vezes menores. 4. Conclusão A estratégia foi estabelecer um comparativo entre dois métodos de quantização de imagens: o algoritmo proposto por Xiang e o algoritmo proposto por Sirisathitkul. Os métodos foram aplicados a várias imagens com o mesmo propósito, reduzir o número de cores das imagens e garantir que os detalhes e as tonalidades de cores sejam preservados depois que o número de cores estiver reduzido. Com base nos testes realizados, conclui-se que o algoritmo de Xiang não supera o algoritmo de Sirisathitkul quanto à qualidade de quantização. Os testes realizados provaram que o algoritmo de Sirisathitkul é capaz de produzir excelentes resultados de 42 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 quantização em imagens complexas, o “erro médio” é em média 69,7% abaixo da média do algoritmo de Xiang. Salienta-se também que o “tempo de execução” dos algoritmos é quase o mesmo, porém, o método de Xiang executa em média 12% mais rápido que o método de Sirisathitkul. Em relação à aplicabilidade, os resultados obtidos demonstram que a utilização de tais métodos orientados no comportamento inteligente do cérebro humano, vem como uma forma de auxílio para o desenvolvimento de novos sistemas computacionais com capacidade de resolver problemas complexos. As informações fornecidas, desde a fundamentação teórica até os resultados práticos, podem auxiliar, na área de processamento digital de imagens, em futuros trabalhos que necessitem de um método rápido e eficiente para reduzir as cores de imagens, de modo que seja necessário menos poder computacional, por exemplo, na extração de dados de uma imagem. 5. Referências Gonzalez, Rafael C.; WOODS, Richard E. (2010) “Processamento Digital de Imagens.” 3ª ed. São Paulo: Pearson. Gonzalez, Teófilo F. (1985) “Clustering to minimize the maximum intercluster distance.” Theoretical Computer Science, Vol. 38. Guimarães, Luciano. (2001) “A cor como informação: A Construção Biofísica, Linguística e Cultural da Simbologia das Cores”. 1ª ed. São Paulo: Annablume. Hayes, Monson H. (1999) “Processamento Digital de Sinais”. Porto Alegre: Artmed Editora. Marques Filho, Ogê et al. (1999) “Processamento Digital de Imagens”. Rio de Janeiro: Brasport. Severino Jr., Osvaldo. (2009) “Mistura de cores: Uma nova abordagem para processamento de cores e sua aplicação na segmentação de imagens”. Tese em Processamento de Sinais e Instrumentação, Escola de Engenharia de São Carlos da Universidade de São Paulo. Silva, Sergio A. Márquez de. (2008) “Selección de los colores esenciales de uma imagen digital. Tesis que para obtener el Grado de Maestro em Ciências de la Computación”. Instituto Politécnico Nacional Centro de Investigación em Computación. Sirisathitkul, Y et al. (2004) “Color Image Quantization Using Distances Between Adjacent Colors Along The Color Axis With Highest Color Variance”. Pattern Recognition Letters, Vol. 25. Trémeau, Alain; TOMINAGA, Shoji e PLATANIOTIS, Konstantinos N. (2008) “Color in Image and Vídeo Processing: Most Recent Trends and Future Research Directions”. EURASIP Journal on Image and Video Processing. Xiang, Zhigang. (1997) “Color Image Quantization By Minimizing The Maximum Intercluster Distance”. ACM Transactions on Graphics, Vol. 16, Nº. 3. 43 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Avaliando a Performance das Polı́ticas de Escalonamento de OpenMP no Método de Lattice Boltzmann Evaı́r Borges Severo1 , Matheus da Silva Serpa1 , Claudio Schepke1 Curso de Ciência da Computação Universidade Federal do Pampa - Campus Alegrete Av. Tiarajú, 810 - Bairro: Ibirapuitã - Alegrete - RS - CEP: 97546-550 1 {evairsevero, matheusserpa}@gmail.com, [email protected] Abstract. In a wide variety of fields in Scientific Computing there is algorithms which demands a hight computational costs. An alternative to accelerate the performance of these algorithms consists in a concurrent execution of the code. An important aspect to consider is the way how the tasks are distributed. In the case of OpenMP parallel programming interface, is possible to use different methods of distributing tasks through the schedule clause. In this context, the aim of this work is to evaluate the behavior of scheduling policies of OpenMP. For this purpose, was used the Lattice Boltzmann as a case study. Implementations showed that the use of the schedule clause (guided) get a better performance for the method. Resumo. Em diversas áreas da Computação Cientı́fica existem algoritmos que demandam um elevado custo computacional. Uma alternativa para acelerar o desempenho desses algoritmos consiste na execução concorrente do código. Um importante aspecto a ser considerado é a forma como as tarefas serão distribuı́das. No caso da interface de programação paralela OpenMP, é possı́vel utilizar diferentes métodos de distribuição de tarefas através da cláusula schedule. Nesse contexto, o objetivo deste trabalho é avaliar o comportamento das polı́ticas de escalonamento de OpenMP. Para tanto, utilizou-se do Método de Lattice Boltzmann como estudo de caso. As implementações mostraram que o uso da cláusula schedule (guided) obtém melhor desempenho para o método. 1. Introdução A Dinâmica dos Fluidos Computacional (DFC) é um ramo da mecânica dos fluidos com grande relevância no contexto da Computação Cientı́fica, tendo as equações de Euler e de Navier-Stokes como bases fundamentais para praticamente todos os seus problemas [Chung 2010], [Landau and Lifshitz 1987]. Por meio dessas descrições matemáticas, que relacionam as diferentes propriedades fı́sicas de lı́quidos e gases, a DFC possibilita a simulação numérica de uma ampla diversidade de estruturas e fenômenos fı́sicos cotidianos, tais como: simulação de furacões, previsão de tempo, simulação de comportamento de poluentes em correntes hı́dricas, aerodinâmica, dentre outros [Schepke, C. 2007], [Batchelor 2000]. A evolução dos sistemas computacionais contribuiu para o grande interesse e avanço das pesquisas relacionadas a essa área. Em função disso, desenvolveram-se diversos métodos e algoritmos baseados em simulações numéricas, onde as equações que 44 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 representam o domı́nio fı́sico são discretizados, gerando um sistema de equações lineares, posteriormente resolvido por algum método numérico [Sims et al. 2000]. Técnicas alternativas buscam simplificar essas etapas. Uma delas é o método de Lattice Gas Automata (LGA). Neste método, a simulação acontece em tempo, espaço e velocidades discretas, sendo de fácil implementação, porém limitado, devido a maneira que o método determina as propriedades fı́sicas de um fluido [Schepke, C. 2007]. Em consequência dessas limitações, o método LGA sofreu certas mudanças, evoluindo para o Método de Lattice Boltzmann (MLB). Do ponto de vista computacional, as operações do MLB são essencialmente locais e, devido a isso, a paralelização do algoritmo torna-se uma possı́vel alternativa para prover um melhor aproveitamento do hardware e, consequentemente, um considerável ganho no desempenho do método. Dentre as interfaces de programação paralela, OpenMP surge como uma eficiente alternativa de paralelismo em memória compartilhada. OpenMP faz uso da cláusula schedule para distribuir as tarefas entre as threads. Nesse contexto, este trabalho busca avaliar o comportamento de diferentes polı́ticas de escalonamento definidas pela cláusula schedule. Para essa abordagem, utilizou-se a técnica de MLB como estudo de caso em simulação de escoamento de fluidos. Este artigo está dividido em seções. A Seção 2 descreve o MLB, sua condição de contorno, o modelo do reticulado e trabalhos relacionados. A interface de programação paralela é apresentada na Seção 3. Na Seção 4 são descritos detalhes da implementação paralela. A Seção 5 apresenta os resultados experimentais obtidos. A Seção 6 discute as contribuições deste trabalho e temas de trabalhos futuros. 2. Método Lattice Boltzmann O método de Lattice Boltzmann é considerado uma representação discreta da Equação de Boltzmann, sendo esta, a base da teoria cinética dos gases. Esse método faz uso de valores reais para a difusão das informações pelo reticulado, tornando-o diferente do LGA, que por sua vez utiliza valores lógicos e considera o movimento individual das partı́culas [Chen and Doolen 1998]. Nesse método, o comportamento das partı́culas que constituem um fluido é representado por meio de uma estrutura conhecida por reticulado. 2.1. Modelo de Reticulado Um reticulado, também chamado de lattice ou grade, consiste em um modelo discreto representado por uma malha, que possuiu diversas células ou pontos. Esses pontos representam as partı́culas de um fluido, sendo que a atualização desses pontos ocorre simultaneamente em intervalos de tempo discretos. Na literatura, pode-se encontrar diversos modelos de reticulado [Qian et al. 1992]. Neste trabalho foi utilizado um modelo conhecido como D2Q9, sendo dada essa nomenclatura devido ao modelo ser bidimensional e possuir nove possibilidades de deslocamento. Nesse modelo, cada partı́cula pode estar em movimento para quatro direções cardeais, quatro direções diagonais ou permanecer estática em um ponto. Em consequência 45 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 desse comportamento, existem situações em que mais de uma partı́cula busca ocupar a mesma posição no reticulado. Essas situações são chamadas de colisões e tem seu efeito descrito através de um operador de relaxação. Além da propagação e relaxação, é preciso tratar as condições de contorno. Nesse trabalho, a técnica de condição de contorno utilizada é bounceback. Em caso de colisão, as direções dos vetores de velocidade são invertidas, ou seja, ei é substituido por ei . Essa condição garante que o fluido não ultrapassará as bordas. O MLB torna possı́vel modelar computacionalmente uma vasta variedade de problemas, permitindo simular fluxos com uma ou várias fases em geometrias complexas e diferentes condições de contorno [Schepke, C. 2007]. 2.2. Trabalhos Relacionados Diversos trabalhos utilizam o MLB para simular fenômenos fı́sicos. PowerFLOW (Exa Corporation) é um software comercial capaz de simular diversos problemas de fluxo de fluidos e aerodinâmica [Duncan et al. 2010]. Utilizando o MLB, foi possı́vel projetar um tunel de vento digital, a fim de projetar a aerodinâmica do trenó para quatro pessoas da equipe campeã mundial de 2009 (EUA). Em [Ayguadé et al. 2003] são feitas análises de comportamento quanto a atribuição adequada de iterações de um loop para threads. Este trabalho propõe uma nova forma de atribuição de trabalho. 3. Interface de Programação Paralela OpenMP Uma das formas básicas de explorar o paralelismo é fazer uso de memória compartilhada. Nesse tipo de arquitetura todos processadores podem acessar a memória diretamente e comunicarem-se. Seguindo essas caracterı́sticas, o OpenMP é uma API (Application Programming Interface) que consiste em um padrão de programação paralela para arquiteturas de memória compartilhada, sendo desenvolvido para linguagens C/C++ e Fortran. OpenMP utiliza a diretiva #pragma, definida no padrão da linguagem C/C++. O construtor paralelo #pragma omp parallel indica a região do código que será executada em paralelo. #pragma omp for faz com que um laço for, dentro da região paralela, seja dividido entre threads. OpenMP também conta com diversas diretivas de sincronização, funções de interface e variáveis de ambiente. A cláusula schedule descreve como as iterações de um laço de repetição serão divididas entre o conjunto de threads. A distribuição das iterações são atribuı́das de acordo com o método definido nessa cláusula. Segue abaixo a descrição de cada das principais polı́ticas de escalonamento. • static - A distribuição é feita de forma estática, ou seja, conjunto de iterações de tamanhos iguais são distribuı́dos entre as threads. O tamanho de cada bloco é definido pelo chunk size, no qual é um parâmetro passado para o método. • dynamic - As iterações são distribuı́das entre as threads a medida que as mesmas solicitam mais iterações. Cada thread executa um bloco de iterações e em seguida solicita outro bloco, dessa forma o acesso não é necessariamente sequencial. 46 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 • guided - Semelhante ao dynamic, exceto pelo fato de que o tamanho do bloco diminui cada vez que uma demanda é dada a uma thread. O tamanho do bloco inicial é dado pela seguinte equação: bloco inicial = numero de iteracoes / numero de threads Os blocos seguintes são formados da seguinte forma: blocos seguintes = numero de iteracoes remanescentes / numero de threads 4. Implementação do Algoritmo O desenvolvimento de novas versões do MLB foi motivado pelo estudo das caracterı́sticas das interfaces de programação paralela e avaliação de desempenho das mesmas. A implementação do MLB foi feita em linguagem C. Duas estruturas de dados foram criadas. A estrutura s properties contém as propriedades fı́sicas, tais como: densidade, aceleração, escala do tempo de relaxação e o diâmetro real do canal usado para o cálculo do número de Reynolds. A estrutura s lattice armazena informações a respeito do reticulado. Nela estão definidas a quantidade de pontos para as dimensões x e y, o número de direções discretas possı́veis de deslocamento dos pontos, um vetor descrevendo a posição das barreiras e bordas do fluxo e um vetor onde são armazenadas as informações das propriedades fı́sicas atribuı́das a cada um dos pontos do reticulado. O laço principal do algoritmo é composto por operações de redistribuição, propagação, condição de contorno e relaxação. A divisão e distribuição de trabalho é feita através da cláusula schedule(tipo, chunk size). Há barreiras implı́citas no fim das construções #pragma omp for. Essas barreiras garantem a sincronização das threads antes do inı́cio da próxima operação. 5. Avaliação de Desempenho Neste trabalho foi simulado o escoamento de fluxos de um fluido. O objetivo dessa simulação foi verificar o comportamento dos fluxos em ambientes com barreiras e o ganho de desempenho em execuções paralelas utilizando diferentes formas de distribuição de trabalho. No caso de teste foram colocadas barreiras nas bordas horizontais, delimitando o escoamento do fluido. Um valor de 15000 iterações foi fixado para a simulação, garantindo ao final a propagação contı́nua do fluxo. Na realização dos testes foi utilizado um reticulado com tamanho de 512 ⇥ 128 pontos. 5.1. Análise dos Resultados Para melhor entender o impacto no desempenho paralelo foram feitas execuções utilizando um workstation Dell Precision T7600, da Universidade Federal do Pampa (UNIPAMPA). A arquitetura do ambiente de execução contém dois processadores Intel Xeon 2.00GHz, cada um com 16 cores, 8 fı́sicos e 8 lógicos (tecnologia Hyper-Threading). O processador Intel Xeon E5-2650 possuı́ três nı́veis de cache. A cache L1 contém 512KB, a cache L2 2MB e a cache L3 20MB. A workstation conta com 128 GB de memória RAM e os testes foram executados no sistema operacional Ubuntu Server (Kernel 3.8.0-26).. 47 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 350 550 static, lx / (8 * threads) static, lx / (2 * threads) static, 1 Ideal 300 400 Tempo (Segundos) Tempo (Segundos) 250 200 150 100 dynamic, lx / (8 * threads) dynamic, lx / (2 * threads) dynamic, 1 Ideal 500 300 200 100 50 0 0 1 2 4 8 16 32 1 2 Threads 4 8 16 32 16 32 Threads (a) Schedule Static (b) Schedule Dynamic 350 guided, lx / (8 * threads) guided, lx / (2 * threads) guided, 1 Ideal 300 200 16 Speedup Tempo (Segundos) 250 150 guided, lx / (8 * threads) dynamic, lx / (2 * threads) static, lx / (2 * threads) Ideal 32 8 4 100 2 50 1 0 1 2 4 8 16 1 32 (c) Schedule Guided 2 4 8 Threads Threads (d) Comparação das Polı́ticas de Escalonamento Inicialmente foram feitas avaliações de desempenho utilizando 1, 2, 4, 8, 16 e 32 threads para as nove variações da polı́tica de escalonamento. Os resultados computacionais foram obtidos através da média de 20 execuções, sendo que as cinco piores e as cinco melhores foram excluı́das. Os testes diferenciam-se pela polı́tica de escalonamento e o valor do chunk size, sendo testadas três variações desse valor. A primeira utiliza chunk size 1. No segundo teste foi utilizado um chunk size de tamanho lx/(2 · threads), onde lx representa o número de pontos em x. No terceiro teste foi utilizando um chunk size de tamanho lx/(8 · threads). A figura 5.1(a) apresenta os tempos de execução para testes utilizando a polı́tica de escalonamento static. Foi possı́vel verificar que o melhor caso deu-se na utilização de um chunk size com tamanho lx/(2 · threads). O segundo teste apresentado pela figura 5.1(b) utiliza uma polı́tica dynamic e o melhor caso também se da a um chunk size com tamanho lx/(2 · threads). O terceiro teste mostra que a variação de chunk size não apresenta elevado impacto na utilização da polı́tica de escalonamento guided. Utilizando guided, o melhor caso foi usando um chunk size de lx/(8 · threads), entretanto o ganho não é tão superior ao outros casos com valores de chunk size diferentes. 48 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Na figura 5.1(d) são apresentados os gráficos de Speedup. Foram selecionados os melhores resultados de cada polı́tica de escalonamento. Foi possı́vel verificar a melhor escalabilidade utilizando a polı́tica guided. 6. Conclusão e Trabalhos Futuros Este artigo apresentou uma análise do desempenho de diferentes polı́ticas de escalonamento do OpenMP. Com base nos estudos, percebe-se que a distribuição de trabalho é um fator determinante no desempenho paralelo. A distribuição com a polı́tica guided apresentou os melhores resultados. O tamanho do chunk size se mostrou como um importante fator na diferença dos resultados. O melhor caso utilizando as polı́ticas static e dynamic ocorre com chunk size de lx/(2 · threads). Para a variação utilizando guided o melhor caso utilizou chunk size de lx/(8 · threads). Como tema de trabalhos futuros pretende-se desenvolver estudos utilizando outros problemas como caso de teste. Outro trabalho consiste na comparação utilizando outras interfaces de programação paralela. Referências Ayguadé, E., Blainey, B., Duran, A., Labarta, J., Martı́nez, F., Martorell, X., and Silvera, R. (2003). Is the schedule clause really necessary in OpenMP? In OpenMP Shared Memory Parallel Programming, pages 147–159. Springer. Batchelor, G. K. (2000). An Introduction to Fluid Dynamics. Cambridge University Press. Chen, S. and Doolen, G. D. (1998). Lattice boltzmann method for fluid flows. Annual Review of Fluid Mechanics. Chung, T. J. (2010). Computational Fluid Dynamics. Cambridge university press. Duncan, B. D., Fischer, A., and Kandasamy, S. (2010). Validation of lattice-boltzmann aerodynamics simulation for vehicle lift prediction. In ASME 2010 3rd Joint USEuropean Fluids Engineering Summer Meeting. ASME. Landau, L. D. and Lifshitz, E. M. (1987). Fluid mechanics. Course of Theoretical Physics, 6:111. Qian, Y., d’Humieres, D., and Lallemand, P. (1992). Lattice BGK Models for NavierStokes Equation. EPL (Europhysics Letters). Schepke, C. (2007). Distribuição de Dados para Implementações Paralelas do Método de Lattice Boltzmann. PhD thesis, Instituto de Informática, UFRGS, Porto Alegre. Sims, J. S., Hagedorn, J. G., Ketcham, P. M., and Satterfield, S. G. (2000). Accelerating Scientific Discovery Through Computation and Visualization. Journal of Research of the National Institute of Standards and Technology. 49 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Controle Inteligente de Semáforos Utilizando Redes Neurais Artificiais Milton R. Heinen1, Claudio Cesar de Sá2, Felipe K. Silveira2, Cristiane Cesconetto2 e Gilberto Sohn Jr2 1 Curso de Engenharia de Computação – Universidade Federal do Pampa (UNIPAMPA) Campus Bagé – CEP 96413-170 – Bagé, RS – Brasil 2 Departamento de Ciência da Computação – Universidade do Estado de Santa Catarina (UDESC) – CEP 89219-710 – Joinville, SC – Brasil [email protected], [email protected], {felipekrugersilveira,cristiane.cesconetto,gilbertosjr.jlle}@gmail.com Resumo. Os problemas de mobilidade têm aumentado de forma que o crescimento urbano não está conseguindo contê-los. Para amenizar esses problemas em geral são criadas novas vias e/ou vias alternativas, porém às vezes o custo dessas pode ser elevado e inviável em alguns cenários. Este trabalho apresenta uma abordagem que aproveita melhor os recursos disponíveis para melhorar o desempenho geral do trânsito. Para isso, são utilizadas estratégias inteligentes para o controle de semáforos, como redes neurais artificiais e sistemas multiagente. Os resultados obtidos mostram que modelo proposto é uma alternativa viável para amenizar os problemas de congestionamento nas grandes cidades. 1. Introdução A demanda por mobilidade é uma das características da nossa sociedade neste século. Entretanto, mobilidade traz consigo um aumento dos problemas relacionados aos congestionamentos no trânsito. As ações até então adotadas para minimizar este problema visam ou uma melhora da malha viária com a construção de novas vias, ou a otimização do fluxo de tráfego na malha existente. Esta última é não apenas economicamente mais viável, como também a alternativa preferida por sociedades nas quais o fator meio ambiente é uma questão chave [BAZ 10a]. Uma abordagem clássica para a redução do congestionamento urbano é a sincronização dos semáforos de forma que os veículos possam atravessar uma via arterial em um sentido com uma velocidade específica, sem paradas. Esta abordagem apresenta bons resultados em ambientes cujo fluxo do tráfego varia de forma bem definida ao longo do dia, o que não é o caso na maioria das cidades brasileiras de grande porte, nas quais há diversas áreas de comércio e negócios, e não apenas uma, central. Este artigo apresenta uma nova abordagem, baseada em técnicas multiagente e redes neurais artificiais para o controle inteligente de sinais de trânsito. Esta abordagem é testada utilizando o simulador ITSUMO [BAZ 10a], que é um simulador de trânsito bastante realístico desenvolvido no laboratório de sistemas multiagente (MASLab) da UFRGS. Este trabalho está estruturado da seguinte forma: a Seção 2 introduz os sistemas de controle inteligente de semáforos. A Seção 3 descreve as redes neurais 50 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 artificiais. A Seção 4 apresenta o simulador ITSUMO e suas características. A Seção 5 descreve os experimentos realizados bem como os resultados obtidos. Por último, a Seção 6 apresenta as conclusões finais. 2. Controle inteligente de semáforos Controladores de semáforos geralmente usam um conjunto de parâmetros que determinam o comportamento desejado para determinada intersecção. Dentre esses parâmetros, destacamos os conceitos de fase e de plano semafórico. Uma fase corresponde à especificação de um conjunto de movimentos permitidos. Um plano semafórico corresponde a um conjunto único de configurações de temporização para as fases, ou seja, um plano semafórico determina quais fases serão ativadas, em que ordem, e por quanto tempo. Usualmente a escolha de planos semafóricos visa minimizar o atraso total em determinado cruzamento. A fim de lidar com mudanças nas condições de tráfego, vários planos semafóricos são definidos, um para cada padrão de fluxo. Planos bem projetados podem atingir resultados aceitáveis caso sejam sincronizados. De maneira geral, quanto maior o número de intersecções adjacentes sincronizadas, menores são as filas. Infelizmente, no caso geral é impossível se obter sincronização simultânea em todas as direções e sentidos. Por esta razão os planos precisam ser selecionados de forma a priorizar apenas alguns sentidos. Caso não se disponha de dados de situações passadas para uso por parte de abordagens pré-programadas, é possível se aplicar sistemas sensíveis ao tráfego. O uso desses sistemas teve início na década de 80 e alcançou razoável sucesso na Europa. Entretanto, eles ainda apresentam altos custos de comunicação e hardware, além de desvantagens técnicas, como o fato de exigirem a definição a priori de planos semafóricos para cobrir todas as situações relevantes ao controlador [CAM 03]. Em [PAP 03] é apresentada uma revisão de métodos clássicos oriundos da engenharia de tráfego. Como foi dito, existe uma demanda por soluções mais flexíveis e robustas para o controle de semáforos. Em [BAZ 05] uma abordagem baseada em SMA é descrita, onde cada semáforo é modelado como um agente. Cada agente possui planos pré-definidos para coordenação com agentes adjacentes. Planos diferentes podem ser escolhidos para haver coordenação em diferentes direções de acordo com a hora do dia. Essa abordagem utiliza técnicas de teoria dos jogos evolucionária. Os principais benefícios dessa abordagem são: os agentes podem criar subgrupos de sincronização para melhor atender às necessidades do fluxo em alguma direção, não há necessidade de um controle central e não há comunicação nem negociação direta entre os agentes. No entanto, são necessárias matrizes de pagamento (“pay–off matrices”) e essas matrizes devem ser formalizadas explicitamente pelo projetista do sistema. Isto faz com que a abordagem consuma tempo quando diferentes opções de coordenação são possíveis e/ou a rede de trafego é muito complexa (não há somente uma via principal a ser considerada). 3. Redes Neurais Artificiais As Redes Neurais Artificiais (RNAs) são sistemas de processamento paralelo e distribuído compostos por unidades de processamento simples (neurônios artificiais) 51 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 que calculam determinadas funções matemáticas dispostas em uma ou mais camadas interligadas por um grande número de conexões geralmente unidirecionais [HAY 99]. As Redes Neurais Artificiais podem ser implementadas em computadores através de um simulador, que irá simular um modelo abstrato e simplificado dos neurônios humanos. Dentre as principais características das Redes Neurais, uma das importantes é a sua capacidade de aprender por meio de exemplos, onde é bastante comum o uso de técnicas de aprendizado de máquina supervisionado, mas existindo também algoritmos de aprendizado semi-supervisionado ou não supervisionado [REZ 03]. Um dos modelos de aprendizado neural mais utilizados atualmente é o modelo denominado Backpropagation [RUM 86]. Neste modelo, é utilizado um conjunto de dados de exemplos padrões com as respectivas respostas esperadas (aprendizado supervisionado). Uma parte desses dados é utilizada como base de aprendizado, e outra parte é usada como base de validação (avaliação da generalização). Este tipo de aprendizado é conhecido como aprendizado supervisionado com validação cruzada [HAY 99]. 4. Simulador Itsumo A fim de testar as abordagens propostas o simulador ITSUMO (do inglês Intelligent Transportation System for Urban Mobility) [SIL 06b] foi utilizado. Este simulador é baseado em um modelo microscópico de movimentação física, o modelo baseado no autômato de Nagel-Schreckenberg pois este tipo de modelo leva em consideração veículos individualmente e é relativamente mais complexo que um modelo macroscópico. No cenário de tráfego urbano mais elementos foram adicionados, como semáforos e tipos mais complexos de intersecções. ITSUMO contém elementos diversos como: pistas, veículos, injetores de veículos (sources), coletores de veículos (sinks), detectores e semáforos. A configuração topológica da rede e os parâmetros da simulação pode ser armazenados em um banco de dados ou em arquivos do tipo XML. O simulador inicializa a rede (lendo o arquivo XML) e o cenário e atualiza os detectores a cada intervalo de tempo pré-definido. O comportamento dos agentes que controlam os semáforos é um módulo a parte do simulador. O módulo de aquisição e manutenção de dados se baseia em uma interface gráfica. O banco de dados em XML armazena informações relativas à topologia das malhas viárias, dados dos semáforos e informações dinâmicas, como contagens de fluxo de veículos. Adicionalmente às funcionalidades básicas da interface e do banco de dados, existem ferramentas para geração de estatísticas e geração automatizada de dados para os demais módulos, assim como algoritmos de sumarização de dados. O módulo de simulação propriamente dito é implementado em C++. 5. Modelo proposto Esta seção descreve os detalhes do modelo proposto neste trabalho, bem como seu respectivo protótipo. Este modelo consiste na criação de um agente capaz de criar estratégias de controle através de seu conhecimento para um melhor desempenho no trânsito. Estas estratégias são implementadas usando técnicas de inteligência artificial a fim de diminuir o número de veículos nas filas de cada via, assim melhorando a fluidez como um todo. 52 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Como visto anteriormente, vários sistemas de controle inteligente têm sua estrutura baseada em um sistema multiagente e, com base nisso, toda a implementação deste trabalho é baseada nos conceitos base de SMA (Sistemas multiagente). Neste sistema multiagente, cada agente será responsável por um nodo (cruzamento) da malha, tendo como responsabilidade obter as informações, perceber o ambiente, aprender com base nos feedbacks e atuar na melhor ação possível com base no seu conhecimento. A atuação no ambiente do agente será basicamente escolher os planos de trânsito do seu nodo de responsabilidade, ou seja, no cruzamento existem semáforos nos quais o agente deverá estabelecer a temporização de cada um, tanto de turnos vermelhos quanto de turnos verdes. Essa decisão será baseada em experiências que o agente já teve, podendo ser positivas, negativas ou neutras. Essas experiências geram o conhecimento do agente, que tomará as decisões fundamentadas no aprendizado que teve. Dentre as técnicas abordadas de aprendizagem, neste projeto decidiu-se utilizar redes neurais artificiais para que possam utilizar ações e estados contínuos bem como aprendizado a partir de exemplos. Assim, o modelo proposto se baseia na construção de um agente que tenha autonomia suficiente para poder manipular todos esses aspectos e que tenha a capacidade de aprender através das ações realizadas. Ao desenvolver este agente, foi utilizado o simulador ITSUMO descrito anteriormente. O ITSUMO é bastante funcional e permite a modelagem do problema com bastante versatilidade, permitindo inserção de informações como os cruzamentos e suas possíveis conversões, taxa de entra e saída de carros da malha, taxa de probabilidade de conversão em cada cruzamento, etc. 6. Experimentos e resultados Para validar o modelo proposto foram realizados experimentos utilizando duas malhas (mapas): um cruzamento simples e o um mapa modelado com nove cruzamentos. Primeiramente, foram rodados testes na malha de um cruzamento simples (Figura 1) onde os pontos azuis representam os sources e os pontos vermelhos os sinks. Nesta malha, a simulação durou 12000 unidades de tempo do simulador, e são necessárias aproximadamente 50 unidades de tempo para a simulação entrar em regime. Para se verificar a eficácia do modelo proposto os experimentos utilizando o agente foram comparados com os resultados obtidos utilizando semáforos tradicionais de tempo fixo. Figura 1 – Malha utilizada para primeiro experimento Os experimentos foram repetidos 10 vezes utilizando números aleatórios distintos, e para ao final foi calculado o número médio de carros parados em toda a malha. A Figura 2 mostra os resultados obtidos neste experimento, onde o ‘eixo y’ do gráfico representa o número médio de carros parados durante a simulação. Percebe-se que o modelo proposto representa uma alternativa eficiente em comparação aos tempos fixos, pois além da diferença ser relativamente expressiva (o número médio de carros parados é aproximadamente 40% menor) os intervalos de confiança não se sobrepõe. 53 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Figura 2 – Comparação do cruzamento simples O próximo experimento utilizou um mapa mais elaborado, onde existem 9 cruzamentos (Figura 3), e pode se ver o comportamento do trânsito em uma área maior e possivelmente aplicável em uma situação real. As taxas de todos os sources neste mapa ficam intercalando entre 0.04 e 0.14, e mudam a cada 12000 unidades de tempo do simulador. É válido salientar que neste segundo caso, por ter mais ruas disponíveis, os carros parados em um semáforo sofrem a influência de uma probabilidade de qual será a sua rua de destino, levando em consideração em quais ruas ele pode acessar. Figura 3 – Mapa de nove cruzamentos utilizado para validação Para análise de resultados, foram realizados 10 experimentos com números aleatórios distintos, e ao final foi verificada a média de carros parados em cada experimento. Porém, diferentemente do primeiro experimento, aqui foram utilizados 72.000 unidades de tempo do simulador. Esse número maior que o do teste anterior justifica-se pelo tamanho maior do mapa, considerando que este começa vazio aos poucos se torna populoso. Um tempo maior é necessário para que este comece a demonstrar um comportamento padrão da situação. A Figura 4 mostra graficamente os resultados, onde novamente se verifica a superioridade do modelo proposto em relação aos semáforos de tempo fixo. Neste experimento a simulação leva em média 200 unidades de tempo para entrar em regime. Com esta análise fica claro que os resultados obtidos pelo agente RBF são superiores à tradicional abordagem de tempos fixos. A diferença foi bem maior no primeiro caso pelo fato de que se congestionou o semáforo mais facilmente, uma vez que a taxa de chegada de carros na malha era maior que na segunda abordagem. 54 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Figura 4 – Comparação da malha de nove cruzamentos 7. Conclusões Este trabalho apresentou uma nova abordagem de controle inteligente de sinais de trânsito baseada em sistemas multiagente e redes neurais artificiais. Os experimentos realizados utilizando o simulador demonstram que o modelo proposto consegue obter melhores resultados em relação aos semáforos de tempos fixos nas simulações. Esta alternativa se mostra viável, uma vez que se sua implantação não gera tantos transtornos à sociedade quanto à criação de novas vias para solucionar um problema que às vezes pode estar atrelado a problemas de organização e não estruturais. Referências [BAZ 05] A. L. C. Bazzan. A distributed approach for coordination of traffic signal agents. Autonomous Agents and Multiagent Systems, 10(1):131–164, March 2005. [BAZ 10a] A. L. C. Bazzan, M. de Brito do Amarante, T. Sommer, and A. J. Benavides. ITSUMO: an agent-based simulator for ITS applications. In Proc. of the 4th Workshop on Artificial Transportation Systems and Simulation. IEEE, Sep. 2010. [BAZ 10b] A. L. C. Bazzan, D. de Oliveira, and B. C. da Silva. Learning in groups of traffic signals. Eng. Applications of Art. Intelligence, 23:560–568, 2010. [CAM 03] E. Camponogara and W. K. Jr. Distributed learning agents in urban traffic control. In F. Moura-Pires and S. Abreu, editors, EPIA, pages 324–335, 2003. [HAY 99] S. HAYKIN. Neural Networks – A Comprehensive Foundation. Segunda Edição.: Pearson, 1999. 823p. [PAP 03] M. Papageorgiou, C. Diakaki, V. Dinopoulou, A. Kotsialos, and Y. Wang. Review of road traffic control strategies. Proc. of IEEE, 91(12):2043–2067, 2003. [REZ 03] S. Rezende (Ed.). Sistemas Inteligentes : Fundamentos e Aplicações. Barueri: Editora Manole, 2003. 525 p. ISBN 85-204-1683-7. [RUM 86] D. Rumelhart, G. Hinton, and R. Williams. Learning Internal Representations by Error Propagation. MIT Press, Cambridge, MA. 1986. [SIL 06b] B. C. d. Silva, D. d. Oliveira, A. L. C. Bazzan, and E. W. Basso. Adaptive traffic control with reinforcement learning. In Proceedings of AAMAS 2006. 55 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Definição de uma Rede de Sensores para a Arquitetura AgroMobile Marcos S. Morgenstern1, Rafael Aurélio1, Roger V. Alves1, Vinícius Maran1 1 Departamento de Ciências Exatas e Engenharias (DCEEng) – Universidade Regional do Noroeste do Estado do Rio Grande do Sul (UNIJUÍ) – RS 344 s/n, Santa Rosa - RS {marcos.morgenstern, rafael.aurelio, roger.alves, vinicius.maran}@unijui.edu.br Abstract. The evolution of mobile communication has gone through several stages to reach the mobile devices and applications that we use today in many areas, such as agriculture. Despite the existence of technologies to aid the implementation of activities in the agricultural environment, there is still resistance from producers regarding the use of computer systems for monitoring plantations. Thus, we propose the definition of an architecture of technical assistance to Agricultural Engineers in data collection and recommendations processes (AgroMobile). Specifically this paper presents the definition of a framework for sensors to AgroMobile architecture. Resumo. A evolução da comunicação móvel passou por várias etapas até chegar aos dispositivos e aplicações móveis que utilizamos atualmente em diversas áreas, como por exemplo na agricultura. Apesar da existência de tecnologias para o auxílio da realização de atividades no ambiente agrícola, ainda há uma resistência por parte dos produtores em relação ao uso de sistemas computacionais para o acompanhamento de dados de lavouras. Deste modo, propõe-se a definição de uma arquitetura de auxílio aos técnicos Agrícolas e Engenheiros Agrônomos na coleta de dados e recomendações (AgroMobile). Especificadamente neste artigo é apresentada a definição de uma estrutura de sensores para a arquitetura AgroMobile. 1. Introdução Nas últimas décadas, as pessoas acompanharam um grande crescimento nas áreas de comunicação móvel, redes locais sem fio e serviços via satélite, que viabilizaram o acesso e utilização de informações e recursos a qualquer momento, em qualquer lugar. Uma das áreas onde a computação está sendo utilizada com frequência, é a área de Agricultura de Precisão. Embora existam tecnologias voltadas para a realização dos serviços, que abrangem várias aplicações, ainda há resistência ao uso destes sistemas, pois eles são especialistas e não se adaptam de acordo com o nível de conhecimento dos usuários (Coelho, 2005). Com vistas a solucionar este problema de rejeição, está-se desenvolvendo uma arquitetura de software proveniente de estudos realizados nas áreas de computação móvel, computação ubíqua e agricultura de precisão, chamada AgroMobile. Este projeto visa auxiliar os engenheiros agrônomos nas atividades realizadas em campo, bem como fornecer as informações necessárias aos produtores em busca de um bom gerenciamento e organização em relação aos negócios (Kirschner; Maran, 2012). 56 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Para tornar esta arquitetura adaptável, é fundamental que existam formas de captação de informações de contexto. Desta forma, o desenvolvimento de uma rede de sensores sem fio (RSSF) para o monitoramento focado na análise e interpretação dos dados coletados do solo surge como uma opção. Especificamente neste artigo, apresentamos a definição de uma rede de sensores sem fio e atuadores para a realização da coleta de informações sem a intervenção dos usuários. O restante do artigo está estruturado da seguinte forma: A Seção 2 apresenta os principais conceitos da área de Agricultura de Precisão. A Seção 3 apresenta a arquitetura AgroMobile e os serviços associados a ela. A Seção 4 apresenta a definição de dos nós e uma rede de sensores sem fio. A Seção 5 apresenta a realização dos testes feitos nos protótipos de sensores e atuadores. A Seção 6 apresenta as conclusões deste trabalho. 2. Agricultura de Precisão e Sensoriamento Agricultura de Precisão pode ser descrita como um conjunto de técnicas para aplicação dos fatores de produção, englobando sementes, fertilizantes, reguladores de crescimento e entre outros, juntamente com as realizações de procedimentos culturais. Estes conjuntos de técnicas atuam de acordo com a variabilidade do meio e estão diretamente associadas às soluções integradas com hardware e software, usados no monitoramento e avaliação das áreas cultivadas (Kirschner, Maran, 2012) (Cardoso et al, 2006). Dentre os principais benefícios proporcionados pela Agricultura de Precisão, pode-se citar a otimização no manejo das mais variadas culturas, onde implica diretamente a utilização de insumos agropecuários, produtos indispensáveis utilizados na agricultura, que permitem o uso consciente de corretivos, fertilizantes e agrotóxicos trazendo bons resultados de produtividade (Cardoso et al, 2006). Por meio de um acompanhamento em tempo real, é possível prever uma série de problemas que podem prejudicar a produção, ajudando dessa forma, o produtor a providenciar as possíveis soluções através dos dados coletados por sensoriamento (Piani, 2001). 3. Arquitetura AgroMobile O projeto AgroMobile (Figura 1), define uma arquitetura com um conjunto de módulos para o monitoramento de informações do ambiente, e recomendação de ações de acordo com estas informações do ambiente (contexto). Dentre os módulos que fazem parte do servidor, tem-se os modelos de dados utilizados, contidos no pacote AM.Model, que modelam objetos relacionados à ontologia que define o domínio da arquitetura (AM.OWL), definida com a linguagem OWL (Web Ontology Language) que possui o foco em instanciar e definir a ontologia modelada. Através destas definições, a arquitetura realiza inferências (controladas pelo módulo AM.Inference) através de regras definidas na linguagem SWRL (Semantic Web Rule Language). Há módulos que possuem como função controlar a comunicação entre aplicativos e dispositivos externos, estes módulos foram definidos como Listeners, que recebem e enviam as informações de acordo com os eventos que ocorrem no ambiente, provenientes de operações geradas por usuários, pelo sistema, 57 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 pela leitura de informações provenientes de sensores, ou pela integração com aplicações móveis (Kirschner; Maran, 2012). Figura 1. Arquitetura AgroMobile Para a definição da rede de sensores utilizados para a captação de informações de lavouras, foram utilizadas ferramentas e metodologias, apresentadas na seção a seguir. 4. Definição de uma RSSF para a Arquitetura AgroMobile O módulo de sensoriamento da Arquitetura AgroMobile é formado por uma rede de sensores específicos, destinados às suas funções que são manipuladas através de um algoritmo de gerenciamento. Estes sensores enviam as leituras para atuadores (softwares que filtram a informação recebida dos sensores), que por sua vez se comunicam com os servidores. Desta forma, de acordo com as leituras realizadas no ambiente, podem ser disparados eventos de recomendação para os produtores. A RSSF é formada por um conjunto de nós, onde cada nó representa um sensor conectado na rede através de comunicação via rádio frequência, sendo que essa forma de tecnologia permite o compartilhamento de dados entre os nós e o envio das informações coletadas de cada sensor para o atuador. Os sensores têm em sua construção como base a plataforma Arduino (Mellis et al, 2007), sendo que nela são conectados diversos dispositivos essenciais para o devido funcionamento do sensor. A Figura 2 apresenta o diagrama de um nó da rede de sensores. Os sensores utilizados em cada nó da rede de sensores são apresentados a seguir: 58 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 a) b) Figura 2. a) Diagrama de um nó da rede de sensores; b) Protótipo do nó da RSSF (1) Sensor de PH do Solo: Este sensor coleta os dados referentes ao índice de PH do solo, e a partir deste ponto envia ao Arduino. Devido à escassez do produto no mercado, foi necessário desenvolver o sensor. Composto de 02 barras de aço galvanizado, o sensor possui barras acopladas a um isolante (bloco de espuma de embalagem), com uma distância de 30mm entre elas. Aplicando a uma das barras a tensão de 5V, ocorre uma medição entre as 02 barras, e o valor adquirido é convertido para valores de PH no Arduino. (2) Sensor de Umidade e Temperatura: Foi utilizado o sensor DHT11. Um elemento resistivo do tipo NTC faz a medição da temperatura, e possui excelente qualidade, resposta rápida, habilidade de anti-interferência. Para a construção do sensor, possui uma versão interna ao solo e outra externa. (3) GPS: Foi utilizado o módulo de GPS EM-406A, que utiliza o chipset SiRF StarIII. (4) Sensor modelo BSoil-01: Este sensor lê a quantidade de umidade presente no solo ao seu redor. Ele utiliza as duas sondas que passam a corrente através do solo, em seguida, realiza uma leitura para obter o nível de humidade. Se a leitura retornar uma alta quantidade de resistência isso indica que o solo está úmido, pois a água torna o solo mais fácil de conduzir eletricidade (menos resistência), enquanto que o solo seco conduz eletricidade de uma forma ruim (mais resistência). A razão da utilização do sensor BSoil-01, que possui a mesma característica (medição de umidade) do sensor DHT11, deve-se ao fato do aumento da precisão. (5) Placa de Alimentação Solar: Trata-se de um painel solar, que exposto ao sol, capta radiação solar e a converte em energia elétrica. Essa energia é utilizada no carregamento da bateria de lítio. (6) Módulo Transmissor e Receptor de Rádio Frequência: Módulos que atuam conforme um sistema sem fio, na frequência de 434MHz. Para fazer a comunicação em dois sentidos, é preciso dois conjuntos emissor/receptor com frequências diferentes. Através da IDE do Arduino, foi desenvolvido a lógica para a comunicação, juntamente com o algoritmo de controle do sistema interno do sensor. Algumas das instruções, como leituras dos valores, são recebidos pela rede de nós, e o envio destes valores para o atuador é realizado na forma de um pacote com os 59 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 dados coletados dos dispositivos internos dos nós. Este pacote é enviado ao atuador conforme um protocolo de envio pré-definido. Após o desenvolvimento e programação dos nós da RSSF, foi desenvolvido um protótipo de atuador, que filtra as informações coletadas pela RSSF e as transfere para o servidor da arquitetura AgroMobile. 5. Integração com a Arquitetura AgroMobile O atuador foi desenvolvido utilizando a linguagem Java e tem, como finalidade, filtrar as informações coletadas pelos sensores nas determinadas áreas de aplicação. Possui módulos que fazem parte do desenvolvimento e funcionamento do dispositivo por meio do gerenciamento dos sensores. Nele (atuador), estão contidos os modelos de dados a serem utilizados e as regras de inferência que por sua vez estão ligados a uma engine que também executa o módulo que lê as informações da rede de sensores através de um listener e as envia para o servidor pelo sender. O diagrama de fluxo da Figura 3 apresenta o funcionamento do atuador desde o recebimento dos dados até o armazenamento em um banco de dados local, implementado utilizando o SGBD SQLite, que serve como locação para que o servidor possa acessar os dados assim que necessitar. Figura 3. Diagrama de sequência do atuador definido Para validar as metodologias propostas neste trabalho e os protótipos desenvolvidos, foi realizado um conjunto de testes, apresentados a seguir. A partir da construção do protótipo da RSSF, foi possível estabelecer a comunicação com o atuador. Desta forma, os sensores do nó realizaram a coleta de dados e enviaram estes dados para o atuador. A Figura 4a apresenta um exemplo do monitoramento de mensagens enviadas pelo nó da rede de sensores sem fio. A Figura 4b apresenta a interface do atuador desenvolvido e um exemplo de leitura do banco de dados local enquanto o atuador recebia mensagens de um nó da RSSF. O atuador recebeu corretamente as mensagens geradas pelo nó da RSSF, e separou as informações destas mensagens em dados de sensores que posteriormente foram integrados nas informações da ontologia. 60 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 a) b) Figura 7. Interface do atuador. Figura 4. a) Monitoramento de mensagens recebidas pelo nó da RSSF; b) Interface de funcionamento do Atuador 3. Principais Resultados Obtidos até o Momento O funcionamento da comunicação e leitura das informações ocorreu sem erros. A ontologia está sendo modelada a partir de informações extraídas fontes relacionadas ao Porém, ainda são necessáriosambiente testes de carga, com a utilização de muitos nósdena RSSF que será aplicada a arquitetura, ou seja, no ambiente agrícola, tornando-se inicialmente para que se possa avaliar questões de desempenho cobertura da jáRSSF. uma ontologia de domínio comoetambém de tarefas, que tem relação a tipos específicos de serviços realizados na agricultura. O principal resultado até o momento é integração entre a rede de sensores e o atuador desenvolvido para fins de armazenamento das informações. Por meio da coleta feita pelo Arduino, envio das informações pela porta serial, recebimento, leitura e tratamento dos dados pela parte do atuador, o mesmo insere informações no banco dados para futuramente serem acessados de voltadas à área deas Agricultura de dePrecisão, com o auxílio acordo com o que for requisitado. 6. Conclusões e Trabalhos Futuros A evolução de tecnologias da computação móvel e pervasiva, estende cada vez mais o número de aplicações possíveis a serem implantadas por agricultores que visam o crescimento econômico 4. Próximas Etapas da Pesquisa por consequência de uma melhor produtividade nas lavouras. O foco principal do desenvolvimento da estrutura AgroMobile, está na parte dos serviços que podemeser prestados no ambiente proposto. Futuramente, comoa uso modelagem da ontologia definida, Isto se deve aos projetos testes realizados em campo, com de materiais poderão ser aplicadas regras de inferência, que terão a finalidade de gerar uma recomendação de um específicos em busca de resultados significativos que possam de certa trazer tipo específico de serviço para uma determinada situação, cuja seráforma apresentada atravésos do processo de coleta, tratamento e manipulação de dados. benefícios necessários pensando Primeiramente em um bem tanto parte econômica tudo estáde sendotodos, desenvolvido para ona uso em máquinas como computadores e notebooks, mas a ideia é que isso seja simplificado no sentido de praticidade, incluindo toda quanto ambiental. arquitetura em um dispositivo móvel e assim trabalhar de uma forma mais rápida e principalmente em locais onde só se tem acesso via smartphones, tablets ou algum outro dispositivo. Como trabalhos futuros, tem-se em vista uma ampliação ainda maior no que se Estudos mais aprofundados da utilização das ontologias com o Java, criação de mais para interagirem a necessidade de cada função, de comunicação refere aos tipos de culturasinterfaces utilizadas pelosconforme produtores através do meios aumento da entre e os dispositivos móveis e demais aplicativos (Android) deverão ser feitos para modelagem da ontologia queservidor precisa se encaixar de acordo com a realidade de cada desenvolver assim, uma engine na qual será fundamental para o funcionamento geral da arquitetura ciclo realizado na agricultura.proposta. Referências Bibliográficas CARDOSO, G.; SANTOS, C.; SILVA, D., Oniaquis – uma ontologia para a interpretação de análise química do solo. Disciplinarum Scientia, 2006. COELHO, A. M. Agricultura de Precisão: manejo da variabilidade espacial e temporal dos solos e culturas. EMBRAPA. Sete Lagoas, MG. Dezembro 2005. KIRSCHNER, S. F. ; MARAN, V. . Um Sistema de Auxílio à Coleta de Dados na Área de Agricultura de Precisão Baseada em Aplicações Móveis. In: XX Seminário de Iniciação Científica - Salão do Conhecimento 2012 - Unijuí, 2012, Ijuí. MELLIS, D.; BANZI, M.; CUARTIELLES, D.; IGOE, T. Arduino: An open eletronics prototyping. In: CHI 2007 CONFERENCE. Alt.chi 2007. San Jose (CA – EUA), 2007. PIANI, A. Noroeste do Paraná em rede: referência para agricultura familiar. Londrina: IAPAR/EMATER, 2001. 48p. 61 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Subsistema de Simplificação Textual com Thesaurus .c Daniel Pezzi da Cunha* e Maurício Silveira Otto* * Ciência da Computação – CCAET – Universidade de Cruz Alta (UNICRUZ) www.unicruz.edu.br – Cruz Alta – RS – Brasil [email protected] e [email protected] Abstract. The growth of the web as an opportunity to gain knowledge sparked a change in the production and distribution of scientific information. The paradigm of digital information brings the possibility of mechanisms including of information retrieval in semantic level and understanding of each element with associations embedded in it. However, there is a problem that to find, automatically or semi-automatically, and adhering to relevant information needs. This paper describes the results of applying the method Thesaurus for textual simplification as one of the steps of the research project WordFilter, whose purpose is the development of a practical experiment that allows, through text mining methods, analyze the content academic produced from the extraction of information from scientific papers. Resumo. O crescimento da web como oportunidade de se obter conhecimento deflagrou uma mudança na produção e distribuição de informações científicas. O paradigma da informação digital traz consigo a possibilidade da agregação de mecanismos de recuperação de informações no nível semântico e a compreensão de cada elemento com as associações nele embutidas. No entanto, existe um problema que é encontrar, de forma automática ou semiautomática, informações relevantes e aderentes às necessidades. Neste artigo estão descritos os resultados da aplicação do método Thesaurus para a simplificação textual como uma das etapas do projeto de pesquisa WordFilter, cujo propósito é o desenvolvimento de um experimento prático que possibilite, por meio de métodos de Mineração de Textos, analisar conteúdos produzidos no meio acadêmico a partir da extração de informações de artigos científicos. 1. Introdução Em meio ao crescente uso da web como oportunidade de se obter conhecimento deflagrou uma mudança nos paradigmas tradicionais de produção e distribuição de informações científicas. As novas oportunidades oriundas das bibliotecas digitais vêm transformando o modo como pesquisadores obtém essas informações, criando um ambiente educacional suportado pelas mídias eletrônicas. Os acervos virtuais são formados por conteúdos diversos, como imagens, vídeos, sons, músicas, artigos, livros, jornais e revistas. Como exemplo, o Portal Domínio Público1 (desenvolvido pelo Ministério da Educação), a Internet Archive2 (organização estadunidense sem fins lucrativos), Biblioteca Digital Brasileira de Computação - BDBComp3 (acervo de artigos de eventos científicos vinculado a Sociedade Brasileira de Computação - SBC), dentre outros também importantes. O paradigma da informação digital traz consigo a possibilidade da agregação de mecanismos elaborados de recuperação de informações no nível semântico. Conforme Sales (2006), esse nível possibilita a compreensão de cada elemento com as associações nele embutidas, onde se aplicam metodologias baseadas em inteligência artificial. Essas 1 http://www.dominiopublico.gov.br/ http://www.archive.org 3 http://www.lbd.dcc.ufmg.br/bdbcomp/ 2 62 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 metodologias são usadas principalmente em grandes volumes de dados, como exemplo em repositórios de arquivos de textos científicos. No entanto, conforme Do Nascimento (2011), no universo da mineração de textos existe um problema interessante que é encontrar informações relevantes e aderentes às necessidades, identificando, de forma automática ou semiautomática, palavras-chave do universo da consulta, dando produtividade às mesmas e reduzindo a sobrecarga cognitiva. Independentemente da abordagem adotada, De Araujo (2007) cita que é necessário que haja antes do procedimento de classificação de termos, uma adequação textual, chamada pré-processamento, visando à padronização dos caracteres, a correção de possíveis erros existentes em termos, a eliminação de símbolos e outros caracteres irrelevantes e, por fim, a simplificação do texto. No presente artigo estão descritos os resultados decorrentes da aplicação do método Thesaurus para a simplificação textual como uma das etapas do projeto de pesquisa chamado WordFilter, cujo propósito é o desenvolvimento de um experimento prático que possibilite, por meio de métodos de Mineração de Textos, a análise de termos e expressões presentes em artigos científicos produzidos no meio acadêmico. 2. Mineração de Textos A Mineração de Texto é a parte que trata de dados sem estruturas ou semiestruturados, como termos contidos em textos, com o propósito de extrair informações úteis de um conjunto de termos por meio de um conjunto de técnicas [Morais 2007]. O procedimento mais importante relacionado à descoberta do conhecimento chama-se categorização, que tem a finalidade de classificar dados por semelhança de padrões [Takashima 2008]. Categorizar um texto implica em reunir documentos em grupos respeitando a afinidade entre suas características. Sendo assim, para definir uma categoria é necessário extrair particularidades singulares a fim de obter classes mais heterogêneas possíveis [De Castro 2000]. Dessa forma, um computador deverá tomar decisões a partir de métodos de Inteligência Artificial aplicados sobre o paradigma do Processamento de Linguagem Natural. O processo de minerar textos ocorre em três importantes e complementares etapas: análise, preparação e classificação. Na análise define-se qual abordagem será utilizada, se linguística (verifica-se a funcionalidade do termo em relação ao texto e qual seu contexto geral) ou estatística (tratam-se apenas as frequências dos termos dentro do texto) [De Camargo 2007]. A etapa de preparação organiza o texto por meio da análise léxica que identifica tokens, seguida pela eliminação de Stopwords (palavras consideradas irrelevantes em um contexto), Stemming (exclusão de radicais de palavras como plural, gerúndio e terminações verbais) e Thesaurus (simplificação textual) [Wives 2002]. Por fim, a classificação extrai as informações desconhecidas e úteis para a descoberta do conhecimento, onde são aplicados métodos que analisam termos e seus significados. Durante a etapa de preparação, também considerada como fase de pré-processamento, destaca-se a Simplificação Textual. Segundo Siddharthan (2006) é uma operação que utiliza Processamento da Linguagem Natural para alterar, diminuir ou de outra forma classificar textos, de tal maneira que a gramática seja reduzida enquanto a base subjacente do significado da informação permanece a mesma. Conforme Busarello (2013), também pode ser chamada de sumarização, palavra originada do verbo latino sumere que significa reduzir, diminuir ou sintetizar. A simplificação de textos é uma importante área de pesquisa, uma vez que as linguagens humanas naturais normalmente contêm construções complexas de palavras que 63 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 não são facilmente processadas por meio de automação. Em termos de redução da diversidade linguística a compressão semântica pode ser empregada para limitar e simplificar um conjunto de palavras utilizadas em textos. A partir da simplificação aplicam-se mecanismos de adaptação textual subdivididos em três etapas: análise, transformação e síntese. Na análise é realizado o processamento de um ou mais textos fontes, gerando como saída a representação interna do conteúdo analisado. A etapa de transformação consiste no processo de saída da reprodução interna do sumário. Por fim, a síntese transforma o conteúdo da reprodução interna do sumário em forma de língua natural [Busarello 2013]. Com sua aplicação é possível tornar um texto mais coerente e limitar a existência de ambiguidades, gerando resumos (sumários) a partir de textos maiores. Dentre os métodos mais conhecidos destacam-se SuPor-2, TextRank e Thesaurus [Margarido et al 2008][Busarello 2013]. 3. Thesaurus O método Thesaurus consiste na organização de termos eleitos a partir de um esquema conceitual previamente definido, possibilitando a classificação de informações dentro de um domínio específico de conhecimento. Essa organização é mais que um vocabulário estruturado, mas sim uma metodologia remissiva de termos que remete ao seu significado dentro de um contexto. Contexto onde os termos estão relacionados entre si. No Thesaurus cada termo corresponde a um conceito, ou seja, um termo é um "descritor" ou um "indexador" de uma determinada categoria [INEP 2011]. Dessa forma, nenhum termo pode existir sem estar relacionado a algum outro. Essa relação determinará seu significado. A conceituação dos termos e as relações entre eles são definidas pelo sistema ontológico da área e pelo estudo de cada termo. Uma abordagem é por meio da indexação do conteúdo de documentos utilizando palavras ou termos. Nos anos de 1940 e 1950, alguns pioneiros, como Calvin Mooers, CL Bernier, EJ Crane e HP Luhn, classificaram termos de índice em vários tipos de listas que eles chamavam de "enciclopédia" [Clarke & Zeng 2012]. O primeiro exemplo do gênero, Thesaurus de Roget, foi publicado em 1852 por Peter Mark Roget. As inscrições dessa obra estão listadas conceitualmente, em vez de em ordem alfabética. A norma ISO 25964 determina uma padrão internacional para a recuperação de informação, definindo uma Enciclopédia Thesaurus como um vocabulário controlado e estruturado em que os conceitos são representados por termos, organizados de modo que as relações entre os conceitos são explicitados em termos preferidos, que são acompanhados por sinônimos ou quase sinônimos [ISO 2011]. 4. WordFilter com Thesaurus WordFilter é um projeto de pesquisa, iniciado em 2012, com o propósito de analisar e desenvolver tecnologias pertinentes a Descoberta de Conhecimento em Textos. Desenvolveuse um sistema (em PHP) capaz de examinar textos científicos, escritos nos idiomas Português e Inglês, e obter informações úteis, dentre elas a identificação da(s) área(s) técnica(s) que cada texto está inserido. Inicialmente o experimento prático focou na classificação textual de artigos publicados em eventos científicos relacionados à Computação. Resumidamente, o WordFilter é subdividido nas seguintes etapas, conforme ilustrado no esquema da Figura 1: • Inserção de textos: conversão de arquivos do formato PDF para o TXT, a padronização de caracteres para o padrão ANSI e o registro na base de dados; 64 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 • Correção de caracteres: análise léxica a partir da fragmentação do texto em caracteres por meio da Tokenização, varredura e eliminação de símbolos (caracteres especiais, acentuações e pontuações), conversão para caracteres maiúsculos e a eliminação de Stopwords (palavras consideradas irrelevantes, como preposições, pronomes, artigos e conjunções). • Simplificação: substituição de termos com o propósito de diminuir o volume de termos significativos para a classificação e aprimorar ainda mais a qualidade dos resultados na extração do conhecimento. • Categorização: última etapa, correspondente ao processamento de algoritmos destinados a calcular a que área(s) cada documento de texto pertence. Para isso foram utilizados os métodos Contagem (frequência de termos), Contagem-versusPeso (cálculo baseado em frequência e pesos conferidos aos termos), Similaridade dos Cossenos (modelo vetorial) e Coleta de termos (aplicação de algoritmos genéticos). Figura 1. Esquema resumido do sistema WordFilter. Na etapa de simplificação foi aplicado o método Thesaurus. A partir dos termos relacionados em um vocabulário controlado foram realizadas substituições de termos simples (palavras) presentes em textos por outros com equivalência semântica. Esses termos foram manualmente escolhidos e organizados pela equipe de pesquisa (professores e acadêmicos), que cadastrou em uma base de dados chamada KeyList (em MySQL). A KeyList é composta por termos-chave e os respectivos termos relacionados, também chamados de termos descritores (plurais, sinônimos e idioma inglês). Por exemplo, o termo ubiqua possui as correspondências ubiquas, ubiquo, ubiquos, onipresente, onipresentes, onipresenca, onipresencas, omnipresente, omnipresentes, omnipresenca, omnipresencas, unipresente, unipresentes, unipresenca, unipresencas, ubiquitous, everyware e everywares. Analisando de forma mais abrangente, o termo ubíqua pode ser traduzido por diferentes termos, que por sua vez enquadram-se na subárea Computação Móvel da área Computação. No processo de simplificação, termos descritores são substituídos pelos termos-chave, preservando a equivalência de significado entre as palavras. Como resultado, um texto original passa a ter um número significativamente inferior de palavras, restando apenas aquelas relevantes para o processo de Categorização. Tomando como exemplo o fragmento de texto a seguir: “O uso crescente de dispositivos móveis e a ampla difusão de redes sem fio 65 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 vêm estimulando as pesquisas relacionadas com computação móvel e ubíqua. Neste contexto, composto por comunicação wireless e onipresença, surgem questões importantes relacionadas a transferência de dados ad hoc entre equipamentos como smartphones e tablets, ...”. Ao final do processo de simplificação o sistema alcançaria o seguinte resultado: “hardware movel comunicacao rede semfio movel ubiqua comunicacao semfio ubiqua comunicacao adhoc hardware pda pda”. Neste experimento cada termo chave foi ponderado com um peso entre 1 e 3, determinando o quão significativo cada um é para determinada subárea. Observou-se que Thesaurus, além de aumentar o desempenho da Categorização, facilitou o procedimento de atribuição de pesos entre os termos-chave, já que cada termo simples tem associado a si diversos outros, todos com significado equivalente e consequentemente com mesmo peso. A análise prática do uso de Thesaurus foi feita com base em 1.303 artigos publicados em 51 eventos científicos de diferentes áreas relacionadas à computação nos anos de 2005 a 2013. Do total, apenas 776 fizeram parte dos resultados apresentados na Tabela 1, uma vez que 527 (40%) continham falhas na representação dos caracteres. Ao total, foram preprocessadas 22.110.531 palavras (a partir de textos no padrão ANSI), com média de 28.493 palavras por artigo. Tabela 1. Resumo dos resultados dos testes práticos. Tempo médio de execução (1) Total de simplificações (2) Média de simplificações (3) Total de Média de termos resultantes termos resultantes (4) (5) Sem Thesaurus 2.203 ms 0 0 1.293.136 1.666 Com Thesaurus 5.711 ms 39.140 50 83.956 108 Na Tabela 1 consta uma transcrição resumida dos valores obtidos com e sem o emprego de Thesaurus, sendo: (1) o tempo necessário para completar a etapa de préprocessamento (inserção, correção e simplificação); (2 e 3) correspondente as ocorrências de simplificação por equivalência de significado em termos presentes nos textos; (4 e 5) os termos resultantes do pré-processamento, utilizados na etapa de Categorização. 5. Conclusões O objetivo inicial da aplicação de Thesaurus era diminuir as diferenças mínimas entre as palavras para aumentar o desempenho do processo de Categorização. Observou-se que isso realmente ocorreu e de forma significativa. Apesar de repercutir no acréscimo de 38% no tempo de pré-processamento, houve uma redução de 93,5% na quantidade de termos resultantes. Além do êxito na simplificação textual, Thesaurus também promoveu uma reorganização dos termos do dicionário de termos simples (KeyList). Fez com que a equipe de desenvolvimento tivesse que reagrupar esses termos a fim de sintetizá-los no menor número possível de termos-chave sem que houvesse perda de significado. Em contrapartida, esse procedimento permitiu, por meio das relações entre os termos, uma melhor compreensão das áreas que os artigos estão inseridos, tornando melhores os resultados da Categorização. Passaram de 78% para 86% de exatidão, ou seja, um aumento de 8% no acerto das áreas predominantes dos artigos analisados com a classificação automática de termos [Pezzi, 2012]. Por outro lado, uma pesquisa em vocabulário controlado também pode conduzir a resultados insatisfatórios, uma vez que depende de termos previamente catalogados, podendo deixar de recuperar algumas palavras que são realmente relevantes. Isto é particularmente problemático quando a questão envolve a busca de termos e subtermos suficientemente tangentes à área de assunto. Portanto, a pesquisa deverá prosseguir com adição de técnicas de 66 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Clustering, de forma a refinar os agrupamentos de termos por semelhança e, com isso, conduzir a etapa de simplificação à resultados ainda superiores. Referências Busarello, Alexandre. (2013) Protótipo para Sumarização Automática de Textos Escritos em Língua Portuguesa. Monografia de Bacharelado em Ciência da Computação da Universidade Regional de Blumenau – FURB. Clarke, Stella G. Dextre e Zeng, Marcia Lei. (2012) Standard Spotlight: From ISO 2788 to ISO 25964: the evolution of thesaurus standards towards interoperability and data modeling. Winter 2012, v.24, n.1. De Araujo, José Marcelo Pereira. (2007) Processo da Descoberta do Conhecimento em Dados Não-Estruturados: estudo de caso para a inteligência competitiva. Dissertação de Mestrado em Gestão do Conhecimento e da Tecnologia da Informação - Universidade Católica de Brasília – UCB. De Camargo, Yuri Barwick Lannes. (2007) Abordagem linguística na classificação automática de textos em português. Dissertação de Mestrado em Engenharia Elétrica, Universidade Federal do Rio de Janeiro – UFRJ. De Castro, Patrícia Fiuza. (2000) Categorização automática de textos. Dissertação de Mestrado em Ciências em Sistemas e Computação, Inst. Militar de Eng. do Rio de Janeiro. Do Nascimento, Adriana Aparicio Sicsú Ayres. (2011) Metodologia para Recuperação de Documentos Através da Associação entre Termos. Tese de Doutorado em Engenharia Civil - Universidade Federal do Rio de Janeiro – UFRJ. INEP. Thesaurus Brased (2011). < http://portal.inep.gov.br/pesquisa-thesaurus> Acessado em agosto de 2013. ISO. ISO 25964-1:2011: Information and documentation - Thesauri and interoperability with other vocabularies (2011) <http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=53657> Acessado em julho de 2013. Margarido, P.R.A.; Pardo, Thiago Alexandre Salgueiro; Aluísio, Sandra Maria. (2008) Sumarização Automática para Simplificação de Textos: Experimentos e Lições Aprendidas. Porto Alegre: Anais do Workshop de Usabilidade, Acessibilidade e Inteligibilidade aplicadas em interfaces para analfabetos, idosos e pessoas com deficiência. Morais, Edison Andrade Martins. (2007) Contextualização de Documentos em Domínios Representados por Ontologias Utilizando Mineração de Textos. Dissertação de Mestrado em Ciência da Computação, Universidade Federal de Goiás – UFG. Pezzi, Daniel da Cunha; Pozzatto, Maurício da Silva; Colvero, Taís C. Appel. (2012) WordFilter: Classificação de Textos Científicos com Métodos de Mineração de Dados. XI Simpósio de Informática da Região Centro do RS - SIRC, Centro Universitário Franciscano – UNIFRA. Sales, Luana Farias. (2006) Ontologias de Domínio: estudo das relações conceituais e sua aplicação. Dissertação de Mestrado em Ciência da Informação - Universidade Federal Fluminense – UFF. Siddharthan, Advaith. (2006) Syntactic Simplification and Text Cohesion. Holanda: Springer Science, Research on Language and Computation – Vol. 4, pag.77-109. Takashima, Rafael da Silva. (2008) Speetv: um protótipo de sistema interativo para TV digital com o uso de um agente reconhecedor de comandos de voz. Monografia de graduação em Ciência da Computação, Universidade Federal do Pará – UFPA. Wives, Leandro Krug. (2002) Tecnologias de descoberta de conhecimento em textos aplicadas a inteligência competitiva. Monografia de graduação em Ciência da Computação, Universidade Federal do Rio Grande do Sul – UFRGS. 67 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Um Comparativo de Consumo Elétrico entre Arquiteturas x86 e ARM em Servidores de Bancos de Dados Leonardo B. Motyczka1, Edilaine R. Ferrari1, Luciano Destefani1, Vinícius Maran1 1 Departamento de Ciências Exatas e Engenharias (DCEEng) – Universidade Regional do Noroeste do Estado do Rio Grande do Sul (UNIJUI) Caixa Postal 15.064 – Ijuí – RS – Brasil {leomoty, edi.revers, lucianodestefani}@gmail.com, [email protected] Abstract. A major concern in servers is directly related to the power consumption of these servers. This concern is directly related to operating costs and environmental issues. Thus, recent studies suggest the search for alternative technologies currently used in servers. In this study, we compared the power consumption between x86 and ARM architectures when applied to the use of NoSQL and relational DBMSs. Thus, it was possible to identify some characteristics as the application of certain architecture or database model. Resumo. Uma das grandes preocupações em servidores está diretamente relacionada com o consumo de energia elétrica destes servidores. Esta preocupação está diretamente relacionada a custos de operação e questões ambientais. Desta forma, trabalhos recentes propõem a busca por alternativas as tecnologias utilizadas atualmente em servidores. Neste trabalho, realizamos uma comparação de consumo elétrico entre arquiteturas x86 e ARM quando aplicadas ao uso de SGBDs relacionais e NoSQL. Desta forma, foi possível identificar características conforme a aplicação de determinadas arquiteturas ou modelos de banco de dados. 1. Introdução Atualmente, há uma grande preocupação com o consumo de energia elétrica de servidores. Esta preocupação está diretamente relacionada aos custos de operação e questões ambientais. Desta forma, trabalhos recentes propõem a busca por alternativas as tecnologias utilizadas atualmente em servidores. Estas alternativas são aplicadas em diversas áreas e a diversos tipos de aplicações. Uma das aplicações mais comuns em servidores são os sistemas gerenciadores de bancos de dados (SGBDs). Bancos de dados são coleções lógicas e coerentes de dados que possuem algum significado e que representam algum aspecto do mundo real. Além do modelo relacional – utilizado pela maioria dos SGBDs comerciais, outros modelos tem sido propostos para a estruturação de dados. Neste trabalho, foi criado um estudo de caso, e baseado neste estudo de caso, foi realizada uma comparação do ponto de vista do consumo elétrico de dois servidores de bancos de dados medindo quantas instruções são executadas por watt. 68 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Esta comparação foi feita com a utilização de duas variantes: (i) arquiteturas de processadores x86 e ARM, e (ii) Modelos de bancos de dados relacionais e orientados a documentos JSON. Os resultados foram obtidos através da implementação de uma ferramenta de benchmark, a qual avalia a viabilidade de se utilizar computadores baseados na arquitetura ARM como servidores, considerado a eficiência energética. O artigo está estruturado da seguinte forma: Na Seção 2 são apresentadas as ferramentas de bancos de dados utilizadas no comparativo, a Seção 3 apresenta conceitos importantes relacionados a arquiteturas x86 e ARM. Na Seção 4 é apresentada a metodologia da comparação de consumo elétrico. A Seção 5 apresenta os resultados do estudo comparativo e as discussões sobre estes resultados. A Seção 6 apresenta as conclusões deste trabalho. 2. Ferramentas de Bancos de Dados Nas ultimas três décadas a tecnologia de banco de dados vem evoluído rapidamente, conquistando maior espaço nas comunidades acadêmicas, porém são os sistemas de banco de dados relacionais que continuam dominando este tipo de tecnologia na área empresarial. 2.1. PostgreSQL O PostgreSQL (Postgresql, 2013) é um Sistema Gerenciador de Banco de Dados de código aberto, o qual possui vários recursos utilizados em outros gerenciadores pagos, como chave estrangeira, consultas complexas, integridade transacional, suporte ao modelo hibrido objeto-relacional, controle de concorrência multiversão, facilidade de acesso, gatilhos, visões indexação por texto, entre outros. 2.2. CouchDB O CouchDB (Couchdb, 2013) é um banco de dados não relacional, utilizado principalmente para web. Basicamente ele utiliza documentos para definir uma estrutura no banco, armazenando uma chave associada ao documento. Dentre as principais características, pode-se destacar: Armazenamento de dados com documentos JSON; Acesso de documentos com o navegador web, via HTTP; Combina e transforma documentos com JavaScript; Suporte para aplicativos móveis; Possui detecção de conflitos automática; Mecanismo de armazenamento tolerante a falhas, priorizando a segurança dos dados. Desta forma, cada documento JSON armazenado no CouchDB é um objeto que consiste em campos nomeados. Esses valores de campo podem ser cadeias de caracteres, valores booleanos, números, datas, listas ordenadas ou mapas associativos. 3. Arquiteturas de Servidores de SGBDs 3.1. Arquitetura x86 A nomenclatura X86, segundo Das (2010), surgiu a partir do conjunto de instruções de máquina, filosofia e da forma de uso que fora introduzido junto com o processador 8086. Mesmo que desenvolvido pela Intel, outras companhias também utilizaram o mesmo vocabulário, apesar de que seu design interno diferisse. Com os passar dos 69 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 anos, o x86 evoluiu e tornou-se o padrão de fato para computadores, notebooks a supercomputadores, mantendo compatibilidade com versões anteriores da arquitetura. O conjunto de processadores da família x86 define um conjunto de tipos de instruções. Estes tipos são: movimentação de dados, aritmética e lógica, e sequenciamento. Adicionalmente, define outros tipos de instruções como manipulação de strings, manipulação de bits, e suporte a linguagens de alto nível (Abd-el-Barr, 2004). Os processadores x86, ao contrário dos ARM com RISC puro, são híbridos com decodificadores CISC/RISC, ou seja, eles recebem instruções CISC, que são convertidas em instruções RISC para serem trabalhadas internamente buscando aperfeiçoar o processamento através do uso de pipeline. Pelo fato da arquitetura x86 suportar muitas instruções acabou se tornando a preferida entre os programadores, o que consequentemente aumentou à oferta de softwares levando à arquitetura a maioria dos computadores pessoais e servidores. 3.2. Arquitetura ARM É uma arquitetura de 32 bits baseada no sistema de instruções RISC usada principalmente em sistemas embarcados. A arquitetura começou a ser desenvolvida em 1983 pela empresa Acorn Computers de Cambridge, na Inglaterra. Esta era uma aposta para concorrer com processadores mais complexos que se encontravam no mercado como o caso do 286 da Intel (Sloss, 2004). A arquitetura RISC - Reduced Instruction Set Computer, serve de base para os chips ARM, e é uma arquitetura voltada ao desempenho e baixo custo criada em resposta a a arquitetura x86. Contrário aos microchips Intel, a RISC possui poucas e simples instruções dentro do processador, o que torna a execução de suas instruções consideravelmente rápida. Segundo Sloss (2004), processadores ARM são o componente chave de muitos dispositivos embarcados. Os núcleos ARM são utilizados largamente em dispositivos móveis, PDAs e muitos outros dispositivos portáteis do dia a dia. O Raspberry Pi pode ser definido com um computador do tamanho de um cartão de crédito desenvolvido no Reino Unido pela Fundação Raspberry Pi. Todo o hardware é integrado em uma única placa, sendo um dos seus principais objetivos estimular o ensino de ciência da computação básica em instituições de ensino. É baseada em um sistema com um único chip (SoC - System on a Chip), desenvolvido pela Broadcom, utiliza o modelo BCM28357 que inclui um processador ARM1176JZF-S de 700 MHz, GPUVideoCore IV, e 512 MB de memória RAM. O projeto não inclui uma memória não-volátil - como um disco rígido - mas possui uma entrada de cartão SD para armazenamento de dados. 4. Metodologia do Comparativo Os bancos de dados foram avaliados de acordo com a relação entre a quantidade de operações possíveis no banco de dados por segundo e o consumo de determinada plataforma. Este consumo será mensurado utilizando um multímetro e uma fonte de bancada, os mesmos serão apresentados junto com os resultados. 70 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 A fim de comparação destes bancos de dados em arquiteturas distintas fora desenvolvido uma ferramenta de benchmark utilizando a linguagem de programação C# e executada na máquina virtual Mono - multiplataforma e livre de custos (BORNSTEIN, 2004). Esta ferramenta é capaz de medir o tempo necessário para executar um conjunto de instruções no modelo CRUD (Create, Read, Update, Delete) nos bancos de dados PostgreSQL e CouchDB. O número de instruções é extraído a partir do tempo necessário para executar um determinado teste em uma plataforma com um número fixo de iterações. Por exemplo, caso a entrada seja 5000 iterações e o tempo necessário para executar este conjunto seja 2 segundos, então, serão 2500 instruções por segundo. O hardware utilizado na comparação consiste no equipamento disponível, estes sendo um notebook Dell XPS 15 (L502X) utilizando o sistema operacional Windows, e uma Raspberry Pi utilizando a distribuição Raspbian baseada em Linux, que é um computador de baixo consumo e que pode ser comprado, em média, por US$ 35. As especificações do notebook Dell XPS 15 (LX502) são as seguintes: • Intel Core i7 2630QM 2 GHZ, 4 cores (8 threads), 6 GB DDR3 1333 MHZ Já o Raspberry Pi conta com as seguintes especificações: • ARM1176JZF-S (armv6k) 700 MHZ, 1 core (1 thread), 512 MB RAM Foi realizada uma análise comparativa da utilização de dois bancos de dados de categorias diferentes em plataformas distintas, sendo estes os bancos de dados PostgreSQL e CouchDB e as plataformas ARM e X86. 5. Resultados e Discussão A plataforma de testes utilizadas (Figura 1) consiste em uma Fonte de Bancada (A), um multímetro (B). Em A é apresentado a tensão e a corrente utilizada pela Raspberry Pi (5V e aproximadamente 0.4A), enquanto em B é apresentado a corrente em um determinado momento de tempo pelo notebook. A B Figura 1. Plataforma de Testes Conforme as medições de correntes, e utilizando a definição de potência (P = I * U). Onde I é a corrente consumida pelo circuito e U é o valor de tensão. Foi possível obter o consumo de 2W para a Raspberry Pi e de 66W para o notebook. Em ambos casos, os valores apresentados são médias e podem estar considerando mais do que os dispositivos necessários para o teste, no caso do notebook, o consumo da tela, wireless, etc. 71 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 ms / número de operações ms / número de operações Figura 3. Tempos de resposta das operações realizadas no banco de dados CouchDB na arquitetura x86 (a esquerda), e ARM (a direita) A Figura 2 apresenta o tempo médio (ms) de cada uma das operações convencionais em um banco de dados a partir de um número de iterações desenvolvidas no CouchDB. A tendência é que quanto maior a quantidade de iterações maior será o tempo final de execução. Ainda, as operações de update e delete não obtiveram valores consistentes com aqueles apresentados no x86 e portanto foram desconsiderados. A Figura 3 apresenta os tempos de resposta das operações realizadas no banco de dados PostgreSQL. ms / número de operações ms / número de operações Figura 3. Tempos de resposta das operações realizadas no banco de dados PostgreSQL na arquitetura x86 (a esquerda), e ARM (a direita) Após a realização dos testes de comparação dos tempos de resposta de acordo com as operações e arquiteturas, realizamos uma comparação de seleções por watt considerando as arquiteturas x86 e ARM, e as ferramentas PostgreSQL e CouchDB. Os resultados são apresentados na Figura 5. É possível perceber que o PostgreSQL é o banco de dados que possui maior eficiência energética tanto no x86 como no ARM para a ação de selecionar dados contidos na base de dados. O CouchDB possui uma otimização interna utilizando árvores B que permitiria a execução mais rápida de Selects subsequentes, por este motivo foram realizadas duas iterações do Select para verificar se haveria um ganho significativo em performance. 72 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Figura 5. Análise de consultas por watt Apesar de ser possível produzir um número de magnitude de 5000 instruções por watt em um banco de dados ARM, este caso não pode ser replicado numa Raspberry Pi, mas pode ser analisado como uma tendência na hora de considerar utilizar uma ou mais placas ARM como um servidor de banco de dados. 6. Conclusões A tendência de utilizar processadores ARMs para processos que hoje são genuinamente uma fatia do mercado x86 é uma viável até certo ponto. O estudo realizado neste artigo apresenta que é possível obter uma maior eficiência energética se considerado puramente as tendências de performance em relação ao consumo total do sistema. É constatado que um banco de dados não-relacional como o CouchDB, se sai melhor em operações de leitura do que nas outras operações mensuradas. Também foi percebida uma otimização interna para leituras subsequentes para uma mesma base de dados inalterada. Esta característica possui potencial para aplicações que envolvam poucas alterações na base de dados mas muitas leituras e desejem baixo consumo. Para trabalhos futuros, serão realizadas otimizações dos processos da ferramenta de benchmark de forma que possa ser realizado as operações de Update e Delete em sistemas ARM. Além da averiguação da viabilidade de utilizar a replicação de banco de dados para compensar a baixa performance relativa de um dispositivo como a Raspberry Pi. Referências Bibliográficas Abd-el-Barr, M; El-Rewini, H. Fundamentals of Computer Organization and Architecture. Wiley-Interscience. 2004. Bornstein N. M., Dumbill, E.. Mono: A Developer's Notebook. O'Reilly. ISBN 0-59600792-2. July 2004. CouchDB Website. Disponível em: <http://couchdb.apache.org>. Acesso em 08/06/2013. Das, Lyla B.. The X86 Microprocessors: Architecture and Programming (8086 To Pentium). Pearson, 2010. PostgreSQL Website. Disponível em http://www.postgresql.org.br/, acesso em 07/06/2013. Sloss, A. N.; SYMES, Dominic; WRIGHT, Chris. ARM System Developer’s Guide: Designing and Optimizing System Software. Editora Morgan Kaufmann, 2004. 73 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Ferramenta para Gestão de Custo utilizando Redes de Sensores Rodrigo Ap. Morbach1, Tatiana A. Pazeto2, Leonardo de S. Mendes¹ 1 2 Faculdade de Engenharia Elétrica e de Computação – Universidade Estadual de Campinas (UNICAMP)– Campinas – SP – Brasil Universidade Federal do Mato Grosso (UFMT) – Campus Universitário de Rondonópolis – Rondonópolis – MT – Brasil Resumo. O presente artigo tem por objetivo mostrar os benefícios da utilização de um sistema de gerenciamento de redes de sensores baseado em políticas, aplicado em Redes Metropolitanas de Acesso Aberto. O intuito do protótipo é reduzir gastos consoantes a energia elétrica em ambientes nesse cenário, mediante o gerenciamento em tempo real e notificações de alertas, caso os limiares definidos sejam ultrapassados. Os principais recursos envolvidos são: redes de sensores para monitorar o ambiente e gateway que recebe os dados e transmite para o gerenciador desenvolvido. Além dos recursos, algumas tecnologias de ponta são empregadas, tais como Internet das Coisas, Gerenciamento baseado em Políticas e Redes Metropolitanas de Acesso Aberto. Através dos gráficos gerados e do envio de e-mail, em caso de alertas, há possibilidade de medidas corretivas em tempo hábil, evitando desperdícios. 1. Introdução Gastos com recursos básicos como água e energia em prédios públicos e privados podem representar um montante considerável no final das contas. Assim é importante controlá-los para evitar desperdícios. Para isso, há a necessidade da implantação de sensores que controlem o ambiente em tempo real e reportem os dados capturados para uma central de monitoramento. A partir destes, medidas podem ser tomadas em tempo hábil, minimizando os prejuízos. Avanços recentes em termos de comunicação wireless e sistemas computacionais propiciam a realização desse tipo de gerenciamento sem intervenção humana direta. Evoluções em termos de Redes de Sensores Sem Fio (RSSF) e o advento de Internet das Coisas (IoT), em conjunto com redes ópticas de altas velocidades possibilitando a criação de Redes Metropolitanas de Acesso Aberto (RMAA) apresentam grande potencial para pesquisa em diversas áreas do conhecimento. Neste aspecto, este artigo apresenta um protótipo para gerenciamento de contabilização, o qual armazena os dados e gera estatísticas em forma de gráficos, facilitando a tomada de decisões. Através do gerenciamento baseado em políticas, alarmes são criados para notificar em tempo real o que está ocorrendo no ambiente monitorado. Para tanto emprega as tecnologias supracitadas. O artigo está estruturado em 6 seções. Modos de gerenciamento e PBNM são abordados na seção 2. A seguinte descreve as tecnologias utilizadas no protótipo proposto. Trabalhos correlatos são apresentados na seção 4. A seção 5 descreve o funcionamento do gerenciador. Por fim, as conclusões e referências são expostas. 74 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 2. Modos de gerenciamento e gerenciamento baseado em políticas (PBNM) A Organização de Padrões Internacionais (ISO) define um modelo de gerenciamento de rede dividido em cinco categorias, a citar [Kurose e Ross, 2009]: gerenciamento de performance, falhas, configuração, segurança e contabilização. Este último grava os recursos consumidos, estabelece métricas e quotas. Permite a alocação de recursos de privilégios de acesso e tarifação baseada em usuário. Na visão do usuário, prove informações quantitativas sobre os objetos, as quais servem para fazer análises qualitativas sobre os recursos consumidos. Em ambientes de redes tradicionais os administradores gerenciam os equipamentos físicos de modo direto e manual, sem a possibilidade de interação rápida e automatizada. PBNM é uma alternativa para solucionar esse problema, sendo definido pelo paradigma evento-condição-ação para prover respostas rápidas às alterações na rede, baseando-se em políticas predefinidas através de interfaces de abstração/tradução [Monleon et al., 2011]. Assim, um sistema PBNM deve traduzir políticas escritas em linguagem de alto-nível para comandos em nível de rede. A RFC 3198 [Wasterinen et al. 2001], define a terminologia para PBNM, cujos elementos fundamentais são apresentados na Figura 1. Figura 1. Elementos que compõe PBNM A ferramenta de gerenciamento (Figura 1) possibilita a criação e edição de regras, as quais são armazenadas no repositório de políticas. Estas são traduzidas e habilitadas, caso seja necessário, pelo Policy Decision Point (PDP). As políticas podem ser definidas utilizando linguagens específicas, como o Ponder, Policy Description Language (PDL), ou em formato XML. Estas são então aplicadas nos Policy Enforcement Point (PEP), que são as entidades gerenciadas. A troca de informações pode ser feita por protocolos consolidados, como Simple Network Management Protocol (SNMP) e Common Open Policy Service (COPS). 3. Tecnologias para gestão de custos Redes de Sensores Sem Fio (RSSF) são usadas para coleta e disseminação de dados provenientes do monitoramento de objetos de interesse. Estas são compostas por chips eletromecânicos (MEMS) com capacidade de comunicação wireless e equipados com algum tipo de módulo sensor, como temperatura, luz ou umidade [Liu e Wassel, 2011]. De modo geral, os sensores percebem fenômenos naturais do ambiente, coletam e enviam os dados para um dispositivo com maior capacidade, denominado sorvedouro. Este pode realizar um pré-processamento dos dados para envio a uma estação central. Com o advento de Internet of Things (IoT), novas oportunidades emergem. A essência da IoT é que objetos físicos estejam conectados a Internet, provendo dados em tempo real e até mesmo serem controlados remotamente [Trinchero et al., 2011]. IoT apresenta grande potencial para implementação em sistemas de gerenciamento, nas mais diversas áreas [Li, Xiaoguang e Ke, 2011]. Sua utilização com RSSF é composta por 75 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 três camadas principais. Os MEMS são responsáveis por coletar dados de interesse e enviá-los para as aplicações através da Internet e encontram-se na camada de percepção. Visando a conversão dos dados para o transporte confiável, na camada de transmissão encontram-se os gateways. Por fim, os sistemas de gerenciamento estão disponíveis na camada de aplicação. Ambientes e cidades inteligentes são construídas a partir de uma Rede Metropolitana de Acesso Aberto (RMAA). Esta pode ser definida como uma rede convergente acessível a toda população municipal, permitindo oferecer vários serviços, em sua maioria baseados nos protocolos TCP/IP [Mendes, Botolli e Breda, 2010]. 4. Trabalhos correlatos Uma rede de sensores e atuadores para automação doméstica com a possibilidade de gerenciamento através de uma aplicação web é proposta por Trinchero et al. (2011). Através dela era possível monitorar os acessos as residências, gerenciar a temperatura do ambiente, dentre outras funcionalidades que podem ser configuradas pelo morador. Os resultados apresentados, realizados entre 2010 e 2011, mostraram que houve redução no consumo de energia, economia no consumo de gás e também de água, devido ao gerenciamento de recursos e dispositivos. Informações sobre o consumo de energia de equipamentos podem ser providas em tempo real usando IoT. Uma arquitetura baseada em Eletronic Product Code (EPC) foi elaborada por Hada e Mitsugi (2011). Para isso, sensores foram instalados em um refrigerador e em um ar-condicionado, formando uma rede ZigBee. A conclusão obtida foi a redução no consumo de energia devido ao gerenciamento. Ainda há poucas aplicações envolvendo IoT e RSSF para o gerenciamento e monitoramento de cenários em maiores escalas [Pires, Breda e Mendes, 2009]. Uma delas é proposta por Taddia, Nanni e Mazzini (2009), na qual um meio de transporte de dados padrão, sendo estes destinados a uma única estação central é proposto. No estudo de caso, diversos sensores foram usados para monitoramento ambiental. O acesso aos dados reportados pela RSSF e opções de configuração poderia ser feito através de uma ferramenta desenvolvida. Contudo, as informações encontravam-se disponíveis apenas localmente, impossibilitando o gerenciamento remoto. Além disso, não foi mencionado como os dados eram reportados aos usuários, pois nenhuma proposta de interface ou forma de apresentação estatística foi descrita. Uma solução para fusão de dados provenientes de sensores heterogêneos, visando a vigilância em locais públicos foi idealizada por Museux e Vanbockryck (2007). Conforme os autores, as fontes são distintas e o volume de dados é grande, necessitando de diferentes meios de análise. Logo, o sistema manipula fontes heterogêneas, com o intuito de diminuir os custos de processamento e aumentar a velocidade de ações preventivas/corretivas. 5. Protótipo para gerenciamento proposto A proposta está baseada na revisão literária sobre as tecnologias relacionadas e também em trabalhos correlatos. Assim, visando fornecer uma ferramenta de auxílio aos gestores, o sistema de gerenciamento idealizado, denominado SIGMA, visa apresentar informações dos ambientes em tempo real, as quais são coletadas por redes de sensores. As redes de sensores estabelecidas no cenário de uma RMAA coletam dados referentes a temperatura, iluminação, ruído, umidade do ar, dentre outras variáveis ambientais. As redes devem estar conectadas a Internet para prover dados constantemente, de modo que o usuário esteja atualizado sobre as alterações dos parâmetros monitorados através da ferramenta 76 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 proposta. O SIGMA pode ser acessado por membros autorizados por uma pessoa responsável, sendo que o mesmo usa a arquitetura composta de três níveis. As redes de sensores, que ocupam o nível mais baixo da arquitetura, coletam informações do ambiente. Os dados coletados são enviados para um dispositivo gateway, localizado um nível acima, o qual faz a conversão das informações para serem enviadas pela Internet, provida pela RMAA. Por fim, usuários autorizados podem acessar o sistema na camada de aplicação. O sistema pode ser registrado sobre um domínio, sendo acessado via Internet, ou em uma Intranet. Para ter acesso à aplicação, o usuário precisa estar cadastrado em uma base de dados. Nesta, o administrador informa qual o nível de privilégio do usuário, sendo que os gestores só acessam dados dos ambientes pelos quais são responsáveis. A tela de entrada do sistema possui um padrão comum para aplicações web que exigem autenticação por parte do usuário, através de login e senha. Este controle de acesso é realizado por um usuário máster. Uma vez autenticado no sistema, o usuário visualiza a interface de gerenciamento dos ambientes (Figura 2) ao qual ele tem algum vínculo e privilégio suficientemente concedidos por um administrador. Figura 2. Tela inicial Figura 3. Tela com gráficos Conforme a Figura 2, dados atualizados sobre os parâmetros monitorados nos ambientes são apresentados na tela inicial do sistema. Há também a informação da média das últimas horas, sendo esse parâmetro alterável, conforme a preferência do usuário. Para ter acesso a informações mais detalhadas do ambiente de interesse, o usuário deve navegar no item "Locais" do menu principal. Neste item, localizado no lado esquerdo da página, é possível visualizar os dados coletados na forma de gráficos (Figura 3). Os gráficos são exibidos mediante a escolha de um dos ambientes existentes no item "Locais". Após isso, deve ser definido um intervalo de datas para a exibição dos resultados gráficos. Os usuários com perfil de administrador de rede podem visualizar a disposição dos nodos no ambiente. Para isso, uma planta-baixa da localidade é apresentada (Figura 4(a)). 77 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Figura 4: (a) Planta-baixa e configuração de um nodo; (b) Criação de alarmes Na Figura 4(a) percebe-se que o administrador da rede pode definir os parâmetros para o funcionamento dos dispositivos sensores. Neste aspecto, o mesmo deve configurar: o tipo de coleta que o sensor irá usar; se os dados serão transmitidos sempre ou de acordo com critérios agendados; determinar a quantidade mínima de pacotes para a transmissão dos dados; deixá-lo em estado de atividade ou em modo sleep; acordar o nó de acordo com o tempo determinado. Com o intuito de identificar se o dispositivo encontra-se em funcionamento, o administrador pode definir um intervalo para o encaminhamento de um pacote de status. Afinal, se o sensor for orientado a evento e tal não ocorreu, o sensor pode permanecer muito tempo sem transmitir, dando a impressão que o sensor está inativo. Visando aplicar os conceitos de PBNM, um exemplo de interface para a configuração de políticas é apresentado na Figura 4(b). Esta é disponibilizada ao usuário administrador do ambiente monitorado, o qual pode criar alarmes personalizados, os quais servirão para alertálo caso os valores definidos sejam ultrapassados. Estes são gravados em um repositório, sendo analisados constantemente, visando notificar os administradores em tempo real. Conforme a Figura 4(b), para a criação de um alarme o usuário deve selecionar o prédio onde o ambiente está localizado. O combobox é previamente carregado com os locais que o usuário tem acesso. Ao selecionar uma localidade, o segundo campo contendo os ambientes é carregado. No exemplo, este corresponde ao almoxarifado. Selecionado o ambiente desejado, há informações de alarmes previamente criados. O usuário pode visualizar os parâmetros configurados para os alarmes já existentes, no sentido de editá-los ou excluí-los. Também há a possibilidade de criar um novo alarme. Os parâmetros são: nome, o qual deve identificar o alarme; a condição de acionamento do alarme; um e-mail válido para o qual a mensagem deve ser enviada; e por fim, a mensagem desejada. Com a criação de políticas para as variáveis monitoradas é possível que o ambiente seja controlado de acordo com as definições do administrador. Além disso, a possibilidade de criação de alarmes permite que ações preventivas e corretivas sejam tomadas brevemente, no sentido de evitar acidentes e/ou gastos desnecessários. A partir das definições de administradores dos ambientes e do gerenciador proposto, é possível gerar políticas que visam economia para o setor. Por exemplo, usando sensores de iluminação e movimento juntamente com atuadores para acionamento ou desativação de dispositivos, é possível verificar em quais períodos há maior movimentação de pessoas e condições de iluminação natural, definindo políticas para o acionamento de lâmpadas. 6. Conclusões e trabalhos futuros Este artigo apresentou um protótipo que pode ser usado pela administração de empresas, visando redução no consumo de energia. Isso pode ser feito através do gerenciamento e/ou dos 78 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 alarmes criados e reportados em tempo real. O mesmo foi projetado aplicando os conceitos de RMAA, IoT, redes de sensores, além do emprego de PBNM e tecnologias web. A partir do SIGMA é possível constatar que o mesmo pode ser implantado em uma Internet como numa Intranet. Outrossim, há possibilidade de sumarizar as informações através de gráficos, os quais podem ser criados a partir das definições dos períodos e locais de interesse dos administradores. Além disso, estes podem escolher o tipo de gráfico que facilite a análise desejada, além de reportar a medição atual. Os administradores também podem criar alarmes personalizados, definindo limiares para os parâmetros monitorados. Desta forma, caso os valores definidos sejam ultrapassados, uma mensagem com o nome do alarme e o texto de alerta são enviados para o endereço de e-mail fornecido, possibilitando uma intervenção ágil. Em trabalhos futuros pretende-se implantar e testar a proposta, sendo isso realizado através da RMAA onde possam ser utilizados sensores para consumo de energia, temperatura e movimentação de pessoas, os quais suportem a tecnologia ZigBee. Desse modo será possível analisar o desempenho do protótipo e elencar as principais dificuldades encontradas. Referências Hada, H.; Mitsugi, J. (2011). "EPC base Internet of Things Architecture". In International Conference on RFID-Technologies and Applications, pp. 527-532, IEEE. Kurose, J. F; Ross, K. W. (2009). "Computer Networks - A Top-Down Approach", 5th ed., vol. 1. Pearson, 2009, pp.774-778. Li, L.; Xiaoguang, H. Ke, C. (2011). "The Applications Of WiFi-based Wireless Sensor Network In Internet Of Things And Smart Grid", In 6th IEEE Conference on Industrial Electronics and Applications, pp. 789-793. Liu, R.; Wassel, I. J. (2011). “Opportunities and Challenges of Wireless Sensor Networks Using Cloud Services,” In ACM CoNEXT. Proceedings of workshop on Internet of Things and Service Platforms, vol. 4. Tokyo, Japan. Mendes, L. S.; Bottoli, M. L.; Breda, G. D. (2010). "Digital cities and open mans: A new communications paradigm," IEEE Latin America Transactions, 8(4):394-402. Monleon, R. B et al. (2011). "Specification of a Policy Based Network Management architecture", Military Communications Conference, 2011, pp.1393,1398, 7-10 Nov. Museux, N., Vanbockryck, J. (2007)."Event based heterogeneous sensors fusion for public place surveillance," In International Conference Information Fusion, 10th, pp.1,8, 9-12. Pires, F.M., Breda, G. D., Mendes, L. S. (2009). "Sensor and actuator networks in metropolitan scenarios", In IJCNS International Journal of Computer Sciense and Network Security, volume 9, páginas 44-51. Taddia, C.; Nanni, S.; Mazzini, G. (2009). "Technology Integration for the Services Offered by the Public Administrations," In INTERNET '09. First International Conference on Evolving Internet, pp.142,146, 23-29. Trinchero, D.; et al. (2011). "Integration of smart house sensors into a fully networked (web) environment". In Sensor, IEEE, pp. 1624-1627, Limerick, Irlanda. Wasterinen, A., et al. (2001). “Terminology for Policy-Based Management,” IETF, RFC 3198, nov., 2001. 79 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 PROCESSAMENTO DIGITAL DE IMAGENS NA DIFERENCIAÇÃO QUANTITATIVA DE CÂNCER DE MAMA Rodrigo Luiz Antoniazzi, Patricia M. Mozzaquatro1 1 Departamento de Ciência da Computação – Universidade de Cruz Alta (UNICRUZ) Rodovia Municipal Jacob Della Méa, Km 5.6 – 98.020-290 – Cruz Alta – RS – Brasil [email protected], [email protected] Abstract. Second most common worldwide, breast cancer is the most common among women, accounting for 22% of new cases each year, according to INCA (2013). Breast cancer is the abnormal and uncontrolled growth of cells. These cells are arranged in different edge shapes, sizes and symmetry, having different types of tumors. Therefore, this study developed a software to estimate the fractal dimension of breast tumors (benign and malignant). Further, also examined for comparison with the fractal dimension of a circle, as the predominant forms of cancer are circular recesses. Resumo. Segundo tipo mais frequente no mundo, o câncer de mama é o mais comum entre as mulheres, respondendo por 22% dos casos novos a cada ano, conforme INCA (2013). O câncer de mama é o crescimento anormal e descontrolado das células. Essas células se dispõem em formatos diferentes de bordas, tamanhos e simetria, tendo-se diferentes tipos de tumores. Portanto, neste trabalho desenvolveu-se um software para estimar a dimensão fractal dos tumores de mama (benignos e malignos). Ainda, também se analisou a comparação com a Dimensão Fractal de uma circunferência, pois as formas predominantes de câncer são circulares com reentrâncias. 1. Introdução Segundo tipo mais frequente no mundo, o câncer de mama é o mais comum entre as mulheres, respondendo por 22% dos casos novos a cada ano, conforme INCA (2013). Se diagnosticado e tratado oportunamente, o prognóstico é relativamente bom, contudo, no Brasil, as taxas de mortalidade por câncer de mama continuam elevadas, muito provavelmente porque a doença ainda é diagnosticada em estádios avançados INCA (2013). As imagens de câncer de mama mostram as mais variadas formas irregulares. Pode-se afirmar que a sua forma não responde a um único fator, e que sua geração é espontânea e aleatória. As formas regulares são estudadas pela geometria euclidiana. Às figuras são atribuídas dimensão inteira conforme ocupam o lugar no espaço, portanto, essa teoria não levam em conta o contorno irregular dessas figuras (qualquer figura plana possui dimensão euclidiana igual a dois), conforme Mandelbrot (1983). 80 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 No século passado surgiu a geometria fractal, uma das mais recentes áreas da matemática, que permite estudar objetos do mundo real de figuras com contornos irregulares, que não seguem leis matemáticas de funções contínuas, e que apresentam grande complexidade. As formas que não seguem funções contínuas, geralmente, estão ligadas à natureza e ao desenvolvimento da vida. A geometria fractal veio complementar a geometria euclidiana, segundo Mandelbrot (1998). Segundo Mandelbrot (1983), uma maneira de determinar a dimensão fractal de figuras planas é por meio da análise e processamento de sua imagem digital. As imagens usadas até hoje para determinar propriedades quantitativas de objetos são aquelas obtidas em imagens médicas por meio de tomografia. As imagens digitais por tomografia integradas ao processamento digital de imagens permitem, de maneira rápida e precisa, determinar características de objetos. 2. Processamento de Imagens Desde 1964 a diversidade de técnicas de processamento de imagens vem crescendo vigorosamente. Tais técnicas melhoram a informação visual, facilitando a análise e a interpretação humana, segundo Gonzalez e Woods (2000). No campo da medicina, elas possibilitam a identificação, o realce e a classificação de estruturas de interesse clínico. Atualmente, a utilização de modos computacionais que trabalham com a associação de técnicas de extração e identificação de características em imagens, com conceitos de processamento digital de imagens, vem trazendo resultados satisfatórios no auxílio à detecção de doenças. Por meio da extração de informações relevantes a partir da análise precoce deste tipo de tumor, segundo Tambasco e Magliocco (2011), os resultados podem ser satisfatórios para auxiliar no tratamento. Conforme Marques e Vieira (1999), durante o processo de análise e identificação de imagens, é necessária a extração de medidas, características ou informação de uma dada imagem. Para isso, pode ser utilizada a técnica de segmentação, que consiste na subdivisão da imagem em partes ou objetos constituintes, permitindo a identificação de diferenças entre duas ou mais partes de um mesmo objeto, a discriminação de suas partes e a separação do objeto e o plano de fundo da imagem. Esta técnica possibilita a extração de características importantes da imagem, tais como bordas, texturas, cores ou métrica. Posteriormente, efetua-se a classificação das imagens a partir das características e representações obtidas pelas etapas anteriores do processamento. 3. Geometria Fractal No final da década de 50, Mandelbrot (1983) começou a estudar a geometria de uma ampla variedade de fenômenos naturais irregulares, e na década de 60 ele compreendeu que todas essas formas geométricas tinham algumas características comuns bastante notáveis. Ao longo de alguns anos, Mandelbrot sistematizou seus estudos dando origem a uma nova matemática para descrever e analisar a complexidade das formas irregulares do mundo que nos rodeia. Segundo Barbosa (2002), na geometria clássica, o conceito de dimensão usado é o euclidiano. Existem, contudo, figuras geométricas irregulares que não podem ser caracterizadas por dimensões inteiras. Nesse caso, surge a geometria fractal como uma maneira de analisar as irregularidades dessas figuras complexas. 81 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 De acordo com Guzmán (1993), a dimensão euclidiana apresenta sérias limitações para a representação dos fenômenos caóticos da natureza, pois na maioria das vezes, os fenômenos analisados não se apresentam perfeitamente planos ou como volume, portanto, uma dimensão fracionária caracterizaria melhor o fenômeno, indicando que o sistema é fractal. Uma maior dimensão fractal significa que o objeto é mais irregular. Ao aumentar o objeto, percebe-se melhor sua irregularidade e, portanto, a estimativa da dimensão fractal aumenta também, ou seja, esse valor é uma medida da proporção do espaço realmente ocupado por um sistema desordenado, podendo refletir a conformação das partículas que o constituem, Mandelbrot (1983). 3.1 Método Box Counting para a estimativa da dimensão fractal Dentre os vários cálculos, conforme Peitgen (1992), de dimensão fractal existentes, o Box Counting é um dos mais utilizados, devido a facilidade de aplicação. Segundo esses autores, o método de Box Counting, consiste em dividir a imagem em quadrados e contar quantos quadrados contêm a forma analisada. Aumenta-se ou diminui-se progressivamente o tamanho dos quadrados e repete-se a contagem. Assim, tem-se uma série de dados: números de quadrados e suas dimensões. A função logarítmica lineariza a função exponencial que permite o cálculo da dimensão fractal. O método conforme Coelho (1995) é aplicável a qualquer estrutura. A dimensão fractal é dada pelo coeficiente angular da reta obtida por ajuste no gráfico Log ( L) x Log ( N ) . 4. Ambiente experimental A determinação da dimensão fractal de figuras foi realizada com o programa computacional desenvolvido, aplicando o método de Box Counting. O programa foi aplicado à: circunferências e tumores de mama, malignos e benignos. O valor médio encontrado da dimensão fractal da circunferência foi de 1,0090545570, conforme ilustrado na Tabela 1. Observa-se na Tabela 1 que o intervalo de confiança ao nível de 1% abrange o valor bibliográfico correspondente, e considerando-se, até a segunda casa decimal os valores são coincidentes. Salienta-se que a circunferência, na geometria euclidiana, corresponde a uma dimensão 2 e o valor estimado da dimensão fractal pelo método desenvolvido corresponde a dimensão euclidiana de linhas. Com a finalidade de testar o método desenvolvido para o cálculo da dimensão fractal aplicado a qualquer tipo de imagem, escolheram-se tumores de mama (malignos e benignos). A seguir, apresentam-se os valores da dimensão fractal da circunferência com diferentes raios. 82 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Tabela 1. Dimensão fractal das circunferências: somente perímetro Dimensão Fractal Circunferência De origem bibliográfica Calculada Circunferência de raio = 3 1,0191627639 Circunferência de raio = 5 1,0969094613 Circunferência de raio = 7 1,0464165340 Circunferência de raio = 9 0,9804604611 Circunferência de raio = 18 0,9868736947 Circunferência de raio = 20 0,9989682708 Circunferência de raio = 23 0,9755105730 Circunferência de raio = 25 0,9617329595 Circunferência de raio = 30 1,0154562964 Média aritmética da circunferência 1,0090545570 Intervalo de confiança 1% P(0,9622098966<x<1,055899217) 1 - A seguir, apresentar-se-ão dois exemplos das diferentes etapas que integram a aplicação do software correspondente. Nessa sequência, ilustra-se a determinação da dimensão fractal a partir de um tumor maligno de mama. Os módulos da aplicação, a partir da imagem original, consistem: disponibilização da imagem na tela do computador, limiarização e detecção de borda. A imagem original da mancha está ilustrada na Figura 1 (A). (A) (B) (C) Figura 1. Tumor de mama maligno. Fonte: http://marathon.csee.usf.edu/Mammography/Database.html A imagem da Figura 1(A) submetida ao processo de limiarização resultou na imagem apresentada na Figura 1(B). Por último, o processo de detecção de bordas incluindo eliminação de ruídos teve como resultado a Figura 1(C). Aplicando-se o software desenvolvido para os tumores benignos obtiveram-se os valores apresentados na Tabela 2. 83 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Tabela 2. Dimensão fractal calculada dos tumores benignos Identificação dos tumores processados Dimensão Fractal Calculada 7A 1,1189656400 7B 1,1610522677 7C 1,1429153875 7D 1,1540715828 7E 1,1657610864 7F 1,1595704887 7G 1,1588299010 7H 1,1307185085 Média aritmética dos tumores processados 1,14898560783 Intervalo de confiança 1% P(1,148018961<x< 1,149952255) A dimensão fractal dos tumores benignos está compreendida entre 1,148018961 e 1,149952255, com valor médio 1,14898560783 e desvio padrão de 0,000138112 . Comparando-se a dimensão fractal obtida para os tumores benignos com a dimensão fractal da circunferência, observa-se que esse parâmetro detectou uma maior irregularidade dos tumores benignos, haja vista que a dimensão fractal dos tumores benignos é maior que a dimensão fractal da circunferência (dimensão fractal da circunferência = 1,0090545570 e dimensão fractal média dos tumores benignos = 1,149952255). Aplicando-se o software desenvolvido para os tumores malignos obtiveram-se os valores apresentados na Tabela 3. Tabela 3. Dimensão fractal calculada dos tumores malignos Identificação dos tumores processados Dimensão Fractal Calculada 2A 1,4872243024 2B 1,4966122225 2C 1,4990751472 2D 1,5395701250 2E 1,5021822267 2F 1,4909108039 2G 1,4561278842 2H 1,4810843430 2I 1,4889989932 2J 1,5387343522 Média aritmética dos tumores processados 1,4980520390 Intervalo de confiança 1% P(1,416305141<x<1,579798937) 84 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Os testes realizados para o cálculo da dimensão fractal dos tumores de mama malignos resultaram na média de 1,4908520390 (da dimensão fractal) com intervalo de confiança de 1,416305141 a 1,579798937. 5. Conclusão Neste trabalho, foram realizadas estimativas da dimensão fractal, com o software desenvolvido, da circunferência e imagens de tumores de mama, benignos e malignos. A média da dimensão fractal estimada dos tumores benignos foi de 1,4980520390 com desvio padrão de 0,000138112 . A média da dimensão fractal estimada dos tumores malignos foi de 1,4908520390 com intervalo de confiança de 1,416305141 a 1,579798937. Comprova-se que, existe diferença significativa no nível de 1% entre os valores médios de ambos os tumores. Portanto, conclui-se que a dimensão fractal mostrou-se eficiente na diferenciação quantitativa de imagens digitais de tumores de mama. 7. Referências BARBOSA, Ruy M. Descobrindo a geometria fractal para a sala de aula. Belo Horizonte, MG : Autêntica , 2002. COELHO, R. C; COSTA, L. da F. - “The Box-Counting Fractal Dimension: Does it Provide an Accurate Subsidy for Experimental Shape Characterization? If So,How to Use It?”, Anais do Sibgrapi. p. 183-191, 1995. GONZALEZ, R; WOODS, A. Processamento de Imagens digitais. São Paulo: Edgard Blucher, 2000. GUZMÁN, M. Estructuras Fractales y sus Aplicaciones. Ed. Labor S. A, Barcelona. Espanha.p. 270. 1993. INCA. Programa Nacional de Controle do Câncer de Mama. Disponível em: < http://www2.inca.gov.br/wps/wcm/connect/acoes_programas/site/home/nobrasil/prog rama_controle_cancer_mama/>. Acesso em: 11 junho 2013. MANDELBROT, B. The Fractal Geometry of Nature, New York, 1983. MARQUES FILHO, Ogê; VIEIRA NETO, Hugo. Processamento Digital de Imagens, Rio de Janeiro: Brasport, 1999. PEITGEN, H.,JÜRGENS, H. SAUPE, D. Fractals for the classrom - Part one. SpringerVerlag, New York, 1992. TAMBASCO M., MAGLIOCCO A. M. Relationship between tumor grade and computed architectural complexity in breast cancer specimens. Hum Pathol, 2011. 85 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 TRANSFERÊNCIA DE DADOS COM QR CODE Lucas R. Souza, Matias A. Bortoluzzi, Osmar M. Santos, Renato Machado, Andrei P. Legg 1 Grupo de Pesquisa em Processamento de Sinais e Comunicações (GPSCom) Universidade Federal de Santa Maria (UFSM) – Santa Maria, RS – Brasil [email protected], [email protected], [email protected], [email protected], [email protected] Abstract. This paper describes how to communicate data through a visual channel. The data to be transmitted are encoded into several bi-dimensional barcodes data packets. These barcodes are displayed in a monitor and can be read by any hardware that has a camera and decoding software. The work focuses on the use of QR codes as the basic barcode for data communication. This kind of communication introduces the possibility to download files through any visual video channel (without the need of wireless or wired connections). Implementation details and experimental results are presented. Resumo. Este trabalho tem como objetivo descrever uma forma de comunicação dados através de um canal visual. Para isso, os dados a serem transferidos são codificados em vários pacotes, representados por um código de barra bidimensional. Tais códigos são apresentados em um monitor e podem ser lidos em qualquer hardware que possua uma câmera e que contenha o software necessário para decodificar esta sequência. Em especial, o trabalho foca no uso do QR Code como barcode básico para comunicação de dados. Isso possibilita o download de arquivos através de qualquer canal visual de vídeo (sem a necessidade de um conexão wireless ou cabeado). Por fim, detalhes da implementação, assim como testes, são apresentados. 1. Introdução Os códigos de barra (barcode) tem se popularizado ao longo dos anos, muito em função do uso crescente de smartphones e aparelhos celulares com câmeras, os quais possibilitam fotografar o código de barra impressos em diversos veículos de comunicação, como revistas, folders, livros, etc. Aumentar a capacidade e/ou a confiabilidade da comunicação e diminuir o tempo de processamento são algumas tendências para esta tecnologia. Em virtude disso, este trabalho apresenta uma alternativa para se aumentar a taxa de transmissão de dados, aplicando, para isso, conceitos de comunicações de dados e tratando um barcode como um pacote de dados. Neste tipo de comunicação de dados que utiliza um canal visual, a ideia básica é fazer com que um arquivo seja dividido em pedaços, nos quais adicionam-se metadados para auxiliar na etapa de decodificação. Durante a codificação estes dados (mais metadados) são codificados seguindo o padrão QR Code e, em seguida, amostrados em sequência, em um processo chamado de Video barcode. [Xu Liu et al. 2008]. Dessa maneira, a variável tempo, como mostrado na Figura 1, é adicionada fazendo com que seja possível codificar um arquivo, teoricamente, sem restrições de tamanho que pode ser lido por um software de decodificação. O padrão QR Code foi escolhido por sua popularidade e boa documentação. 86 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Figura. 1. Representação gráfica do código tridimensional A utilização de um padrão de comunicação utilizando o canal visual é possível fazer o download de arquivos a qualquer momento, de forma segura, com qualquer hardware e sem a necessidade de uma conexão Wi-fi, Bluetooth, ou rede móvel. Tornase, portanto, muito útil para arquivos pequenos e para propagandas em geral. O presente artigo é estruturado da seguinte forma. A próxima seção descreve o padrão QR Code. Na Seção 3 é apresentado o modelo para transferência de dados utilizando QR Codes. A implementação deste modelo é descrita na Seção 4. Resultados da implementação são apresentados na Seção 5. O artigo conclui na Seção 6 com conclusões e trabalhos futuros. 2. QR Code É um padrão japonês para códigos bidimensionais criado pela Denso Wave e definido pela ISO/IEC 18004. Este padrão foi utilizado na implementação da comunicação de dados apresentada neste documento, devido sua grande popularização, muito em função do sucesso dos smartphones, que possuem grande capacidade de codificação e decodificação dos dados, independente do ângulo da câmera. Morfologicamente, o QR Code consiste em uma matriz composta de módulos quadrados (pretos e brancos) e padrões de alinhamento e localização que auxiliam na decodificação do mesmo. 2.1. Especificações Nesta subseção será apresentada algumas das especificações definidas na ISO/IEC 18004 para a codificação do código, tais como código corretor de erros, formatos, modelos e versões. O QR code possui 4 formatos, 40 versões e 4 opções para a correção de erros. Estas características são codificadas como mostra a Figura 2. O formato define quais tipos de caracteres serão codificados. Podem ser codificados quatro tipos de dados: numéricos, alfanuméricos, byte (ISO/IEC 8859-1) e kanji (caracteres orientais). O formato normalmente é escolhido através de um algoritmo de exclusão que é útil para reduzir o tamanho do barcode, porém não necessário. A versão, por sua vez, define o “tamanho” do barcode. Cada versão possui um tamanho máximo de módulos. No formato mais simples de codificação QR Code cada módulo, ou visualmente cada cor (preta e branca), corresponde a um bit, seja de dados, padrões de localização, ou de correção de erros. 87 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Além da informação de versão, o QR Code utiliza o código corretor de erros Reed-Solomon, com 4 diferentes níveis de correção L, M, Q, H, cada qual podendo recuperar até 7, 15, 25, 30 por cento de dados danificados, respectivamente. Zona Branca Padrão de localização Separador Padrões Funcionais Padrão de temporização Padrão de alinhamento Informações de formato Informações de versão Região de Codificação Dados e Codewords de correção de erros Figura. 2. QR code e seus padrões 3. Transferência de Dados com QR Code Nesta seção é descrito o método utilizado para transferir dados de um dispositivo transmissor (codificador de dados) até um receptor (decodificador de dados). 3.1. Operações de Codificação (Saída) de Dados Para o envio de dados, primeiramente, divide-se os dados em vários pacotes (também chamados de frames), que possuem um cabeçalho, possibilitando a decodificação independente da ordem em que os frames foram recebidos, constituído das seguintes partes: -! Tipo (início, meio e fim): utiliza-se um caractere para que o decodificador tenha uma estimativa de começo e fim; -! Número: contém a informação sobre a sequência do pacote; -! Tamanho: tamanho dos dados; -! Dados: inclui os dados codificados de carga “útil” de cada pacote. Para que os dados transmitidos sejam mostrados em um monitor, codifica-se cada pacote (frame) em um arquivo de vídeo. Para isso, foi escolhido o padrão GIF (Graphics Interchange Format). A escolha deste padrão é em função da facilidade de variação de seus parâmetros (frames, intervalo) e por ser extremamente leve quando comparado a outros padrões. 3.2. Operações de Decodificação (Entrada) de Dados A entrada de dados é feita a partir da decodificação em tempo real de vários barcodes. Cada frame da câmera é recebido, decodificado. Os dados decodificados são adicionados na memória do dispositivo receptor para que depois possam ser 88 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 reorganizados, utilizando as informações de tipo e número dos pacotes descritos na seção anterior. Além disso, deve-se ter controle sobre quais frames são válidos. Para isto, primeiramente procura-se por um QR Code na imagem e caso não seja encontrado, os dados são descartados e espera-se por outro frame. Depois que o código é encontrado, ele é decodificado e os dados principais sobre o pacote (tipo e número) são extraídos. Se o mesmo pacote já tiver sido decodificado este também é descartado e espera-se pelo próximo frame da câmera. Para as operações de entrada, necessita-se de um algoritmo de decodificação (para barcode) eficiente, pois é necessário que cada barcode seja decodificado em tempo real. Enquanto isso, o processador também necessita receber os dados da câmera o mais rápido possível. Este processo é demonstrado na Figura 3. COMEÇO Recebe Frame Frame Contém QR code? Não Sim Decodifica o barcode Decodifica Informações do cabeçalho Pacote Repetido Verifica Validade do Pacote Pacote Válido Adiciona Dados no Buffer Não Todos Pacotes Recebidos? Sim Reorganiza os Pacotes FIM Figura 3. Fluxograma de decodificação 4. Implementação do Algoritmo Nesta seção são apresentadas informações da implementação das operações de codificação e decodificação anteriormente descritas. A implementação do algoritmo ocorreu no sistema operacional Android utilizando a linguagem de programação Java e um aparelho celular modelo GT-S5360b (Samsung Galaxy Y). Este aparelho possui uma câmera de 0,0768 MP (320x240) e um processador de 832 MHz. Para a implementação utilizou-se a API (Application Programming Interface) do sistema operacional Android, e a biblioteca externa Zxing para codificar e decodificar barcodes, além de várias outras bibliotecas padrões do Android e da linguagem Java. Ao focar no uso do sistema operacional Android e da linguagem Java, o desenvolvimento do sistema foi orientado a objetos. Isso facilitou a reutilização de código e a divisão do processo de codificação e decodificação. Estas características são úteis para a implementação de trabalhos futuros. 89 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Para que o usuário possa visualizar a imagem capturada pela câmera foi utilizado o processo descrito pela documentação do Google, o camera preview. Com esta mesma interface foi utilizado o método abstrato onPreviewFrame para poder receber da câmera, seus dados. A partir deste frame transforma-se esta imagem em uma imagem binária e, então, procura-se pelos padrões do QR Code. Caso ocorra falha na busca pelos padrões, os dados são descartados e o receptor espera a câmera enviar os dados atualizados. Caso o código seja reconhecido, o algoritmo descrito na Figura 3 é aplicado em alto nível, utilizando em sua grande maioria a manipulação de strings. Para a implementação do processo de codificação descrito na Seção 3.1, criou-se uma matriz binária codificada a partir de cada pedaço dos dados a serem codificados. A partir desta matriz, é possível criar um vetor de Image (estrutura padrão para imagens do Java) e, então, codificá-lo em um arquivo do tipo GIF, utilizando uma biblioteca open source “AnimatedGifEncoder” [Kevin Weiner 2003]. Pode-se, através desta biblioteca, variar o intervalo entre cada frame e fazer com que a transferência do arquivo fique em um loop infinito. 5. Avaliação da Implementação Para a avaliação do método descrito neste trabalho, existem basicamente dois parâmetros para a medição da taxa de comunicação em bits por segundo: (1) a quantidade de informação em um frame e, (2) sua taxa de atualização (frequência). Teoricamente, a taxa de comunicação é igual a quantidade de dados codificados em um frame de D bits, multiplicado pela frequência P em frames/segundo com que estes dados são transmitidos. Logo a taxa de comunicação é P x D bps [Xu Liu et al. 2008]. Aumentando P ou D a taxa teoricamente deveria aumentar linearmente, porém com o aumento da taxa de atualização o processador terá menos tempo para decodificar os dados, ocasionando perdas de pacotes e, por conseguinte, redução drástica da velocidade de transmissão. Com o aumento da capacidade de cada frame, a imagem fica mais difícil de ser decodificada, aumentando, também, a possibilidade de erros aleatórios e o tempo de processamento. Para a avaliação da taxa de transferência, os arquivos foram divididos em 6 pedaços e foram variados dois parâmetros: (1) o tamanho de dados em um QR Code e, (2) a frequência de atualização. Para esta avaliação o celular foi fixado para diminuir erros por trepidação e distorção, coletando resultados em um cenário ideal. As médias para 100 repetições da transmissão são apresentadas na Tabela 1. Tabela 1. Tabela com os valores obtidos 700 bytes, 250ms 700 bytes, 200ms Valor máximo: 3,174 kbps Valor máximo: 3,404 kbps Valor mínimo: 2,480 kbps Valor mínimo: 1,647 kbps Valor médio: 2,803 kbps Valor médio: 3,001 kbps 1000 bytes, 250ms 1000 bytes, 225ms Valor máximo: 4,579 kbps Valor máximo: 4,761 kbps Valor mínimo: 3,701 kbps Valor mínimo: 2,439 kbps Valor médio: 3,913 kbps Valor médio: 4,285 kbps 90 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 6. Conclusões Neste trabalho foi apresentada uma transferência de dados utilizando QR Code. Discutiu-se tanto o processo de codificação e decodificação de informações. Assim como detalhes da implementação do sistema representando esses processos. Os dados experimentais mostrados foram positivos, com uma taxa maior que 3.3kbps e 430 bytes/s, obtidas em [Xu Liu et al. 2008] e [Memeti, Stiller 2012], respectivamente. Apesar dos valores obtidos ainda serem muito baixos em comparação com outros padrões de comunicação sem fio (Wi-fi e 3G, por exemplo), espera-se com o aumento da capacidade das câmeras e dos processadores que essas taxas aumentem, tornando esta técnica viável nos próximos anos. 6.1. Trabalhos Futuros Pela análise dos resultados, observou-se que existem basicamente três fatores que limitam a taxa de transmissão: (1) a qualidade das câmeras, (2) o tempo de decodificação de cada frame e, (3) a quantidade de perda de pacotes, sendo que na localização, segmentação e decodificação é necessário que o algoritmo seja rápido e confiável. Para esta última limitação, [Ying-Hong Liang et al. 2007] mostra um algoritmo de binarização em condições adversas. Uma outra forma de ter uma confiabilidade maior sem aumentar drasticamente o tempo de processamento, seria utilizar programação concorrente com vários processos distribuindo o processamento, sendo um responsável pela localização e segmentação e outros pela decodificação [Memeti, Stiller 2012]. Uma maneira de aumentar a taxa de transferência logaritmicamente, (log2 N, onde N é o número de cores) é o uso de barcodes coloridos [Bagherinia, Roberto 2011]. Este tipo de código é mais difícil de ser decodificado e possui um tempo maior de processamento. Outra possibilidade relevante seria desenvolver um padrão, como propostos por [Xu Liu et al. 2008] e [Memeti, Stiller 2012], buscando suprir necessidades do Video Code. Referências Xu Liu, David Doermann, Huiping Li (2008), “VCode – Pervasive Data Transfer Using Video Barcode”, IEEE transactions on multimedia, vol. 10, no. 3, pages 361 - 371. Ying-Hong Liang, Zhi-Yan Wang, Xiao-Ye Cao, Xiao-Wei Xu (2007), “Realtime Recognition of 2d Bar Codes in Complex Image Conditions”, Proceedings of the Sixth International Conference on Machine Learning and Cybernetics, Hong Kong, pages 1669 - 1704. Bagherinia, H., Manduchi, R. (2011), “A Theory of Color Barcodes”, Proceedings of the IEEE Color and Photometry in Computer Vision Workshop, Espanha. Memeti, J, Stiller, B. (2012), “Data Transfer Using a Camera and a Three-Dimensional Code”, Bachelor Thesis, University of Zurich. Denso Wave, “QR Code Area”, http://www.qrcode.com/en/, acessado em 2013. Kevin Weiner (2003), “AnimatedGifEncoder”, http://www.fmsware.com/stuff/gif.html, acessado em outubro de 2013. Zxing, “Zxing”, http://code.google.com/p/zxing/, acessado em outubro de 2013. 91 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Algoritmos de Pré-processamento para a Detecção de Vasos em Imagens de Fundo de Olho Adriano Quilião de Oliveira1 , Daniel Welfer2 1 2 Instituto de Informática – Universidade Federal do Rio Grande do Sul (UFRGS) Caixa Postal 15.064 – 91.501-970 – Porto Alegre – RS – Brasil Campus Tecnológico de Alegrete – Universidade Federal do Pampa (UNIPAMPA) Alegrete – RS – Brasil [email protected], [email protected] Abstract. Eye fundus images are used by medical experts in diagnosing diseases such as diabetic retinopathy and hypertension. Vessels and arteries are important part of this process, but in order to be analyzed must be segmented. Thus there are many proposals for algorithms for automatic segmentation, but none have the necessary quality to be used in an automated tool, since they exhibit considerable rate points segmented incorrectly. One of the main obstacles in this process, is that the images obtained in examinations are usually noisy, poorly contrasted and feature unevenly illuminated. This paper presents an algorithm that seeks primarily to correct errors arising from the design of these images. The proposed algorithm was evaluated on two free bases (DRIVE and STARE), where we obtained an average improvement of more than 2% in sensitivity. Resumo. Imagens de fundo de olho são utilizadas por médicos especialistas no diagnóstico de doenças como, retinopatia diabética e hipertensão. Vasos e artérias são peça importante neste processo, mas para que sejam analisados precisam estar segmentados. Desta forma, existem muitas propostas de algoritmos de segmentação automática, porém nenhum apresenta a qualidade necessária para que seja empregado em uma ferramenta automatizada, visto que apresentam uma taxa considerável de pontos segmentados de forma incorreta. Um dos principais empecilhos neste processo, é que as imagens obtidas em exames são geralmente ruídosas, mal contrastadas e apresentam iluminação desigual. Este trabalho apresenta um algoritmo que visa corrigir primariamente erros decorrentes da concepção destas imagens. O algoritmo proposto foi avaliado em duas bases livres (DRIVE e STARE), onde foi obtida uma melhora média de mais de 2% em sensitividade. 1. Introdução Imagens de fundo de olho fornecem informações patológicas relevantes sobre mudanças causadas por doenças oculares e sinais precoces de doenças sistêmicas, como diabetes e hipertensão [Luo et al. 2002]. O Diabetes Mellitus, quando na forma de uma complicação ocular mais grave, é o principal agente causador de perda parcial ou total da visão em pessoas ainda em idade ativa [Welfer 2011]. Porém, quando diagnosticada precocemente, pode ser tratada, retardando ou impedindo a cegueira [Jayanthi et al. 2010]. Algumas características dos vasos como a largura, tortuosidade e ramificação anormal, são utilizadas por especialista no diagnóstico destas doenças, mas para isto estes precisam estar segmentados [Staal et al. 2004]. Dessa forma, a segmentação automática dos vasos é uma etapa importante pois facilita a avaliação de suas características, tornando o processo mais prático e rápido. 92 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 A segmentação automática dos vasos sanguíneos é uma tarefa complexa, e muitas vezes, prejudicada pela qualidade das imagens da retina. Estas imagens são obtidas de diferentes formas, e podem apresentar características distintas e defeitos decorrentes de erros da aquisição. Entre os defeitos mais comumente encontrados, destaca-se a presença de ruído, a falta de luminosidade uniforme e a ausência de um contraste ideal [Walter et al. 2002]. Diversas abordagens para correção de iluminação e contraste em imagens da retina foram propostas [Foracchia et al. 2005, Osareh et al. 2002], porém estas quando utilizadas junto a algoritmos de segmentação não são satisfatórias. Isto ocorre porque vasos são estruturas extremamente sensíveis e podem ser facilmente suprimidas, o que inviabiliza o uso de técnicas que realizam grandes alterações no formato do histograma da imagem. O ruído excessivo é comum nestas imagens e, geralmente, não é tratado por métodos de segmentação, o que é um grande erro visto que a grande maioria dos métodos é dependente da boa definição das bordas dos vasos. Como a orientação de muitos métodos dá-se pela busca de regiões continuas com bordas bem definidas, estruturas como a região de transição entre a retina e o fundo da imagem e o contorno do disco óptico podem ser confundidas com vasos sanguíneos. O presente trabalho tem como objetivo gerar uma imagem mais natural, menos ruidosa e com os vasos mais contrastados. Isto é realizado através de um algoritmo de préprocessamento, o qual busca corrigir a iluminação e o contraste, além de remover ruído e tratar da forte variação de intensidade da região de transição entre a retina e o fundo da imagem. O algoritmo proposto é avaliado com o método de segmentação de Zhang et al.[Zhang et al. 2010] e, os resultados, analisados considerando acurácia, sensitividade e especificidade. O restante deste artigo é distribuído como segue. Na Seção 2, são apresentados alguns trabalhos relacionados ao pré-processamento de imagens da retina. Na Seção ?? é explicitado o algoritmo desenvolvido, bem como as imagens e ferramentas utilizadas para teste e desenvolvimento. A Seção 4 avalia e discute os resultados obtidos. Por fim, a Seção 5 expõe algumas considerações finais e apresenta algumas indicações para trabalhos futuros. 2. Trabalhos Relacionados Visualizando separadamente os canais vermelho, verde e azul (do espaço de cores RGB), é possível perceber que o canal verde é o que apresenta os vasos mais bem definidos e contrastados, além de fornecer uma imagem menos ruidosa que a dos demais canais [Walter and Klein 2001, Mendonça and Campilho 2006, Soares 2007]. Osareh et al. [Osareh et al. 2002], propõem corrigir a variação de luminosidade entre as imagens, com o uso de Especificação de Histogramas. Nesta abordagem a imagem com distribuição luminosa mais adequada é selecionada e o histograma de todas as demais é equalizado de acordo com o desta. Esta abordagem possui como foco principal a detecção de Retinopatia Diabética, mas não apresenta bons resultados para a segmentação de vasos, visto que o formato do histograma é alterado, e isso pode ocasionar a supressão de pequenos vasos. A abordagem de Forachia et al. [Foracchia et al. 2005], visa corrigir o contraste e a iluminação, com base em uma estimativa de foreground (vasculatura, disco óptico e demais estruturas da retina) e o restante é configurado como background. As duas partes são tratadas em separado, com abordagens diferentes, que baseiam-se em estimativas de média e cálculo de desvio padrão de vizinhança. Esta abordagem utiliza uma estimativa baseada na distância de Mahalanobis para diferenciar as partes da imagem, e esta estimativa não fornece uma boa precisão das estruturas que compõem o foreground, assim, partes deste, são tratados de forma errada como pixels de background. 93 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Walter e Klein [Walter and Klein 2001], antes de seu algoritmo de segmentação, aplicam um filtro Gaussiano simples, seguido de uma abertura morfológica, para respectivamente, eliminar ruído e remover pequenas "paredes"que possam tornar a árvore vascular desconexa. Este filtro é seguido de uma abertura morfológica de tamanho dois que preenche descontinuidades da rede vascular. Apesar de gerar um mínimo aumento no número de falsos positivos, por conta do operador de abertura, este aumenta significativamente a quantidade de pixel marcados como vasos de forma correta. Visando reduzir as variações locais de intensidade nos vasos, Mendonça e Campilho [Mendonça and Campilho 2006] subtraem da imagem original a sua estimativa de background, gerada por um filtro de média com janela deslizante. Após isto, é aplicado um filtro de redes de detecção rotacionado em diferentes direções, para realçar pequenos vasos. Este trabalho apresenta bons resultados, mas o filtro de realce pode magnificar estruturas indesejadas gerando falsos positivos. 3. Materiais e Métodos Para avaliar o algoritmo proposto, foram utilizadas duas bases de imagens de fundo de olho, STARE [Hoover et al. 2000] e DRIVE [Staal et al. 2004], que são amplamente empregadas na avaliação de métodos de segmentação de vasos. Ambas fornecem todas as imagens avaliadas, isto é, marcadas manualmente por especialistas (ground truth), as quais servem para quantificar o comportamento de métodos computacionais na segmentação de vasos. Os testes e implementações deste trabalhos foram realizados utilizando o software MATLAB [MATLAB 2010], juntamente com algumas toolboxes de processamento de imagens. 3.1. Algoritmo Proposto A técnica proposta é dividida em etapas, exemplificadas na Figura 1, e é explicada detalhadamente no decorrer dessa seção. Figura 1. Diagrama com as fases do algoritmo de pré-processamento proposto. O algoritmo proposto utiliza o canal verde (f g na Figura 1), da imagem original (f ). Para eliminar o forte contraste da região de transição entre a retina e a parte que está fora do campo de vista da câmera, é criada uma extensão sintética desta membrana. O processo é guiado por uma máscara que delimita a retina, visualizada na Figura 2(a), que é estendida gradativamente com infomação de vizinhança, seguindo o processo desenvolvido por Soares [Soares 2007]. O processo é iterativo e os pixels adjacentes a retina são selecionados utilizando grau de vizinhança 4 (vizinhos de transição), e então são substituídos utilizando 8-vizinhança. A cada iteração a máscara que delimita a retina é dilatada 94 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 utilizando como elemento estruturante um diamante de tamanho um. Desta forma, é gerada uma imagem com a retina estendida (Figura 2(c)). (a) (b) (c) Figura 2. Imagens que ilustram o processo de extensão da retina; (a) Máscara que delimita a retina; (b) Canal verde (f g); (c) Resultado final da extensão da retina (f e). Após isso, com base em Walter e Klein [Walter and Klein 2001], aplica-se em f e um filtro Gaussiano com desvio padrão 2 (dois) e com janela de tamanho 3 x 3, seguido de uma abertura morfológica de tamanho 2 (dois), para respectivamente, remover o ruído e as estruturas que possam obstruir a continuidade da rede de vasos, formando f w. Para finalizar, realiza-se a correção da iluminação e contraste, no qual utiliza-se um modelo adaptado de Koalar et al. [Kolar et al. 2011]. Inicialmente é calculado o valor médio de vizinhança, com uma janela de 39 x 39 pixels, para cada um dos canais da imagem original em separado. A média para os canais vermelho (µR) e azul (µB), é estimada em f , mas para o canal verde utiliza-se f e. Então, o coeficiente de correção (KG) para o canal verde é calculado, utilizando a estimativa de média dos demais canais, onde KG = µR + µf e + µB. (1) Por fim, é aplicado o modelo de correção proposto, que é descrito na seguinte equação: f c(x, y) = f e(x, y) KG(x, y) ⇤ 0.5, (2) onde f c(x, y) são os pontos (x, y) do canal verde estendido (f e), já com o modelo de correção aplicado. 4. Resultados e Discussões Para avaliar o algoritmo proposto, foi utilizado um método de segmentação de vasos, que recebe como entrada a imagem original, com e sem o auxílio do pré-processamento. O algoritmo para auxiliar na geração dos resultados foi proposto por Zhang et al. [Zhang et al. 2010], e utiliza o filtro MF-FDOG, que é composto por uma combinação de dois filtros gaussianos, rotacionados em diferentes direções, onde estes devem corresponder a seção transversal dos vasos. O método de pré-processamento proposto apresenta resultados positivos, pois quando aplicado na base DRIVE alcançou uma melhora média de 2,65% em sensitividade e 1,47% nas imagens do projeto STARE. Isto é, resultou em um aumento na fração de falsos negativos, ou seja, aumentou a detecção de pixels pertencentes a rede de vasos. As medidas de acurácia obtidas com o método foram positivas, apresentando uma 95 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Tabela 1. Resultados obtidos na segmentação de vasos das imagens da base DRIVE [Staal et al. 2004]. Método Acurácia Sensitividade Especificidade MF-DOG 92,99% 58,51% 98,76% Algoritmo Proposto + MF-DOG 93,27% 61,16% 98,68% Tabela 2. Resultados obtidos na segmentação de vasos das imagens da base STARE [Hoover et al. 2000]. Método Acurácia Sensitividade Especificidade MF-DOG 94,84% 71,53% 98,25% Algoritmo Proposto + MF-DOG 94,91% 73,00% 97,94% melhora de 0,17% na média das duas bases, o que simboliza um aumento geral na quantidade de pixels segmentados corretamente. A desvantagem encontrada neste método foi o decréscimo na especificidade que alcançou 0,19% na média das bases. Este algoritmo apresenta resultados visuais expressivos, e isto pode ser visto onde problemas de detecção, marcados em vermelho na Figura 3(b), são evitados, somente com o uso do mesmo, o que pode ser observado na Figura 3(c), na região delimitada em verde. (a) (b) (c) Figura 3. Resultado final do processo de segmentação. (a) Imagem segmentada manualmente; (b) Sem utilizar o algoritmo de pré-processamento; (c) Utilizando o algoritmo de pré-processamento. 5. Conclusão Este trabalho tem como objetivo melhorar a qualidade das imagens da retina, minimizando o impacto de seus defeitos, assim aperfeiçoando o resultado de métodos de segmentação dos vasos. A tarefa é complexa, visto que a estrutura que compõe a rede vascular é muito sensível, e a grande maioria dos algoritmos não se adapta a esta finalidade. O algoritmo proposto reduz o número de falsos negativos, aumentando a correta marcação de pixels pertencentes a rede vascular. Esta melhora é resultado de uma imagem de entrada menos ruidosa e com vasos mais bem definidos. Além disso, os resultados obtidos, quando comparados com trabalhos semelhantes encontrados na literatura, como o de Kolar et al. [Kolar et al. 2011], mostra-se superior nas medidas de acurácia e sensitividade. 96 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Como trabalhos futuros, tal algoritmo pode ser analisado, considerando a detecção de outras doenças, pois mesmo sendo desenvolvido com foco na segmentação de vasos, este não restringe seu uso a apenas estes métodos. Contudo, ainda há espaço para redução de falsas detecções na região do disco óptico, que atinge uma gama bem variada de métodos de segmentação de vasos. Referências Foracchia, M., Grisan, E., and Ruggeri, A. (2005). Luminosity and contrast normalization in retinal images. Medical Image Analysis, 9(3):179–190. Hoover, A., Kouznetsova, V., and Goldbaum, M. H. (2000). Locating blood vessels in retinal images by piece-wise threshold probing of a matched filter response. IEEE Trans. Med. Imaging, 19(3):203–210. Jayanthi, D., Devi, N., and SwarnaParvathi, S. (2010). Automatic diagnosis of retinal diseases from color retinal images. CoRR, abs/1002.2408. Kolar, R., Odstrcilik, J., Jan, J., and Harabis, V. (2011). Illumination Correction and Contrast Equalization in Colour Fundus Images. 19th European Signal Processing Conference (EUSIPCO 2011), pages 298 – 302. Luo, G., Chutatape, O., and Krishnan, S. M. (2002). Detection and measurement of retinal vessels in fundus images using amplitude modified second-order gaussian filter. IEEE Trans. Biomed. Engineering, 49(2):168–172. MATLAB (2010). Página do MATLAB na MathWorks. http://www.mathworks. com/products/matlab. accessed in 22 September 2013. Mendonça, A. M. and Campilho, A. C. (2006). Segmentation of retinal blood vessels by combining the detection of centerlines and morphological reconstruction. IEEE Trans. Med. Imaging, 25(9):1200–1213. Osareh, A., Mirmehdi, M., Thomas, B. T., and Markham, R. (2002). Classification and localisation of diabetic-related eye disease. 2353:502–516. Soares, J. V. B. (2007). Segmentação de vasos sanguíneos em imagens de retina usando wavelets e classificadores estatísticos. Dissertação de mestrado, IME, Instituto de Matemática e Estatística, USP. Staal, J., Abràmoff, M. D., Niemeijer, M., Viergever, M. A., and van Ginneken, B. (2004). Ridge-based vessel segmentation in color images of the retina. IEEE Trans. Med. Imaging, 23(4):501–509. Walter, T. and Klein, J.-C. (2001). Segmentation of color fundus images of the human retina: Detection of the optic disc and the vascular tree using morphological techniques. 2199:282–287. Walter, T., Klein, J.-C., Massin, P., and Erginay, A. (2002). A contribution of image processing to the diagnosis of diabetic retinopathy - detection of exudates in color fundus images of the human retina. IEEE Trans. Med. Imaging, 21(10):1236–1243. Welfer, D. (2011). Métodos Computacionais para Identificar Automaticamente Estruturas da Retina e Quantificar a Severidade do Edema Macular Diabético em Imagens de Fundo do Olho. Tese de doutorado, INF, Instituto de Informática UFRGS, Universidade Federal do Rio Grande do Sul. Zhang, B., Zhang, L., 0006, L. Z., and Karray, F. (2010). Retinal vessel extraction by matched filter with first-order derivative of gaussian. Comp. in Bio. and Med., 40(4):438– 445. 97 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Especificação de requisitos de monitoração em Infraestruturas Virtuais: perspectiva do usuário Fernando Terra Wasilewski1 , Guilherme Koslovski1 Programa de Pós-Graduação em Computação Aplicada Universidade do Estado de Santa Catarina (UDESC) Campus Universitário Prof. Avelino Marcante - 89.219-710 1 [email protected], [email protected] Abstract. Nowadays, users can reserve virtual resources across Internet to compose a infrastructure for executing their applications. Within this scenario they have to specify attributes that represent their applications’ requirements and trust in infrastructures providers concerning correctness of resources provisioning. This work contributes by introducing a grammar to specify monitoring attributes considering the user’s perspective, along with validation through the extension of a high-level language and experimental analyzes. Resumo. Atualmente, usuários podem reservar recursos virtuais através da Internet para compor uma infraestrutura para executar suas aplicações. Este conceito introduziu novos desafios para usuários: quantificar e especificar atributos que representam os requisitos de suas aplicações e confiar nos provedores de infraestruturas sobre o correto aprovisionamento dos recursos. Este trabalho contribui introduzindo uma gramática para especificar atributos de monitoração considerando a perspectiva do usuário, juntamente com a validação através da extensão de uma linguagem de alto nível e análises experimentais. 1. Introdução A Internet está constantemente evoluindo, transformando-se de uma rede de comunicação em um sistema de computação, comunicação e armazenamento [Buyya et al. 2008]. Atualmente, usuários podem reservar e utilizar recursos virtuais seguindo um modelo de reserva pay-as-you-go, no qual a tarifação ocorre de acordo com a capacidade solicitada e o período de tempo em que são utilizados. Neste contexto, a criação, o gerenciamento, e a destruição dos recursos são responsabilidades do provedor, devido ao fato dos usuários não possuírem acesso aos recursos físicos, mas somente à Infraestrutura Virtual (IV). A etapa inicial de instanciação de uma IV requer a utilização de ferramentas e modelos para este fim. Usualmente, as IVs são definidas através de linguagens e APIs que permitem uma especificação em alto nível dos recursos virtuais, bem como dos aspectos dinâmicos que descrevem a IV durante a sua execução. Na literatura atual, destacam-se os modelos que possuem iniciativas de padronização em andamento: Open Cloud Computing Interface (OCCI) com o objetivo de padronizar o gerenciamento remoto dos recursos virtuais [OCCIWG 2009]; Open Virtualization Format (OVF), que possibilita o transporte de recursos computacionais entre diferentes ambientes de virtualização [DMTF 2009]; Virtual Infraestructure Modeling Language (VXDL) [Koslovski et al. 2008], que permite uma especificação padronizada, portável, transparente e extensível de IVs. 98 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Neste cenário, existe um aspecto importante atualmente não explorado por completo: considerando que as aplicações não possuem conhecimento sobre os requisitos físicos, torna-se necessária a especificação de quais atributos, métricas e valores são pertinentes para que os usuários verifiquem se o Service-level Agreement (SLA) está sendo cumprido. Este trabalho apresenta quatro contribuições para o problema exposto: i) identificação de requisitos de monitoração comuns às diferentes aplicações usualmente executadas em IVs; ii) introdução de uma gramática e a extensão de uma linguagem para a descrição destes requisitos; iii) definição de templates para auxiliar o processo de monitoração; iv) análise experimental ilustrando o cenário em questão e a pertinência das extensões propostas. Para realizar a análise experimental, exploramos um mecanismo de monitoração de recursos virtuais independente do provedor de serviço [Pfitscher et al. 2013]. Este trabalho está organizado da seguinte forma: na Seção 2 são discutidos os trabalhos relacionados. Na Seção 3 são identificados requisitos de monitoração. A proposta de uma gramática, a extensão da linguagem e a identificação dos templates são abordados na Seção 4 enquanto uma análise experimental é apresentada na Seção 5. Por fim a Seção 6 apresenta as conclusões e as perspectivas de continuação deste trabalho. 2. Trabalhos relacionados Recentemente, ferramentas para monitoração de recursos virtuais têm sido desenvolvidas e entregues como um serviço complementar por provedores comercias como Amazon e RightScale. O foco destas ferramentas é explorar a elasticidade introduzida por Nuvens Computacionais. [Pfitscher et al. 2013] discutiu a implementação de um mecanismo para monitoração de recursos virtuais em espaço de usuário, independente do provedor de serviço. Esta abordagem coleta informações sobre as MVs e infere métricas sobre a utilização dos recursos compartilhados. Entretanto, o conjunto de métricas apenas abrange uma análise parcial do comportamento real das aplicações. O modelo proposto em VXDL [Koslovski et al. 2008] permite a especificação da evolução dos recursos virtuais e da topologia de rede durante a execução da IV. Este modelo requer um pré-conhecimento por parte do usuário que deve informar o provedor sobre as possíveis alterações que podem ocorrer em seus recursos, bem como o tempo exato em que serão utilizados. Esta abordagem demonstrou-se eficiente para aplicações com comportamento estável e predefinido, mas é insuficiente para atender requisitos dinâmicos. 3. Identificação dos requisitos de monitoração Inicialmente, identificamos os atributos relativos a monitoração que podem ser solicitados por usuários considerando a total abstração dos recursos físicos e o não conhecimento de sua composição, bem como a busca por independência e portabilidade entre provedores. Aprovisionamento automatizado de recursos: a carga de utilização de uma IV pode sofrer variação com o passar do tempo, tornando IVs de configuração estática não eficiente para sistemas com alta variação no uso de recursos durante a sua execução. Com isso, torna-se necessária a mudança da configuração da IV. No momento da especificação da IV, o usuário deve ser capaz de estipular em quais situações ela deve ser modificada, como por exemplo através da definição de porcentagens de utilização de recursos. Quando o conjunto de recursos atinge um nível de utilização acima e/ou abaixo estipulado pelo usuário, o provedor de serviço deve então alocar ou desalocar recursos. Assim o sistema não desperdiçará os recursos e também não será afetado caso necessite de mais recursos. 99 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Verificação de SLA: durante a contratação de um serviço, o provedor indica quais configurações de processamento, armazenamento e comunicação podem ser ofertadas. É fato que em Nuvens Computacionais o usuário não obtém acesso aos recursos físicos (hardware e topologia de rede) necessitando solicitar e confiar no provedor quanto as reais configurações disponibilizadas. O usuário pode solicitar informações como i) tempo de CPU disponibilizado para uma máquina virtual (MV); ii) largura de banda utilizada por um canal de comunicação; iii) latência média entre dois pontos internos da IV; iv) informações sobre escrita e leitura nas unidades de armazenamento. Em diversos casos, as informações devem ser refinadas em métricas que representem a real utilização dos recursos, como picos de utilização, ocupação de filas, período de análise, e limiares de saturação [Pfitscher et al. 2013], possibilitando um refinamento no seu aprovisionamento. 4. Especificação dos requisitos identificados Nesta seção identificamos requisitos de monitoração que podem ser potencialmente adicionados aos modelos existentes. A especificação destes requisitos é expressada pela gramática EBNF proposta e ilustrada na Figura 1. Nesta gramática, os atributos de utilização de recursos computacionais e rede foram baseados em [Pfitscher et al. 2013], onde as métricas: i) peak representa o limiar para caracterizar a saturação de um recurso, ii) peakThreshold representa o limiar para o percentual de pontos em saturação, iii) underLimit e upperLimit representam as margens de utilização do recurso e as métricas de rede iv) variationCoefficient representa o coeficiente de variação (CoV) do consumo de banda e iv) queue indica a presença ou não de fila na interface de rede da MV. Os atributos window e period representam respectivamente a janela de tempo em que o recurso será monitorado e o período de tempo em que essa monitoração será reexecutada. Esta gramática permite a definição da utilização que o usuário espera do serviço no momento da sua contratação, atribuindo valores às métricas de utilização de um recurso virtual de computação (resourceUtilization) ou da largura de banda de um canal virtual (bandwidthUtilization). utilization = resourceUtilization | bandwidthUtilization | status; resourceUtilization = expertNodeMetrics; bandwidthUtilization = expertLinkMetrics; status = ’critical’ | ’regular’ | ’low’; expertNodeMetrics = peak, peakThreshold, underLimit, upperLimit,window,period; peak = longSimple; peakThreshold = longSimple; underLimit = longSimple; upperLimit = longSimple; window = longSimple, timeUnit; period = longSimple, timeUnit; timeUnit = ’ms’ | ’s’; expertLinkMetrics = queue, variationCoefficient; queue = ’present’ | ’absent’; variationCoefficient = number; Figura 1. Gramática EBNF para os requisitos de monitoração. Ao definir os valores de underLimit e upperLimit, o usuário espera que o percentual de utilização de seu recurso permaneça entre estes valores. Para realizar esta verificação, o mecanismo de monitoração [Pfitscher et al. 2013] realiza uma média aritmética do consumo durante a utilização do recurso dentro da janela de tempo (window) determinada pelo usuário. Desse modo, o valor da média pode estar em três regiões (considerando que os valores atribuídos à underlimit e upperLimit não sejam 0% e 100%, respectivamente), resultando em diagnósticos distintos: i) caso esteja entre os valores determinados, a utilização do recurso está adequada; ii) caso esteja acima do valor upperLimit, o recurso está 100 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 subprovisionado; iii) caso a média de utilização esteja abaixo do valor underLimit e os pontos em saturação (ou seja, acima do valor atríbuído à peak pelo usuário) ultrapassem o limiar estabelecido (peakThreshold), o provisionamento está adequado, pois apesar da média de utilização estar abaixo do esperado, há a presença de picos de utilização que justificam o provisionamento; iv) caso a média esteja abaixo do valor underLimit e não haja picos de utilização, o recurso é diagnosticado como superprovisionado. Com relação aos atributos do canal virtual, o usuário é capaz de definir o valor do CoV do consumo da banda (variationCoefficient) e o estado desejado da fila (queue) em suas interfaces de rede. O mecanismo de monitoração resulta em três diagnósticos: i) caso o CoV calculado seja menor que o valor estabelecido pelo usuário e não haja fila (queue == absent) na interface de rede durante o período monitorado, o provisionamento do recurso está adequado; ii) caso o CoV calculado também seja menor que o estabelecido pelo usuário, mas com a presença de fila (queue == present) na interface de rede, o recurso está subprovisionado; iii) caso o CoV calculado for maior que o CoV definido pelo usuário e não haja a presença de fila (queue == absent), o recurso está superprovisionado. 4.1. Extensão da VXDL A linguagem VXDL tem como objetivo suprir a necessidade de usuários e provedores quanto a modelagem de IVs. O modelo considera IVs como entidades únicas, que contêm recursos de computação, comunicação e armazenamento. Estes podem ser organizados em topologias virtuais que evoluem durante o tempo de vida da IV [Koslovski et al. 2008]. Para exemplificar a funcionalidade dos atributos identificados, foi elaborado uma extensão da linguagem VXDL que permite a definição dos atributos referentes a monitoração de IVs. Estes atributos podem ser especificados em dois momentos distintos: i) durante a requisição do usuário, com o intuito de configurar o serviço do provedor; ou ii) como resposta de um mecanismo de monitoração, informando o status da real utilização dos recursos. A Figura 2 ilustra parcialmente a extensão proposta1 . Figura 2. UML - Extensão da linguagem VXDL para requisitos de monitoração. 4.2. Definição de templates A definição dos valores dos atributos que são utilizados nas métricas de monitoração exige um maior conhecimento por parte do usuário sobre as características da IV a ser solicitada. Para auxiliar o usuário nessa definição, são propostos três templates de utilização de CPU e rede que objetivam representar o nível de utilização de um determinado recurso. Estes templates podem ser utilizados tanto no momento da solicitação do serviço, quanto na verificação de SLA através da apresentação do diagnóstico de monitoração. Na Tabela 1 são apresentados os templates critical, regular e low para os recursos de CPU e rede, cujos valores dos atributos foram baseados em [Pfitscher et al. 2013], com exceção do valor do atributo variationCoefficient, que foi adaptado com base nas observações dos 1 O diagrama UML completo pode ser visualizado em http://sdrv.ms/18yNZbK. 101 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 testes realizados na Seção 5. Entretanto, estes valores podem ser sugeridos pelo provedor de serviço, adequando-se a qualquer cenário de utilização. Atributo peak (%) peakThreshold (%) underLimit (%) uperLimit (%) Template de CPU critical regular 95% 30% 80% 50% 100% 80% low 95% 30% 0% 50% Atributo variationCoefficient (%) queue (present | absent) Template de rede critical regular low 50% 50% 50% present absent absent Tabela 2. Templates sugeridos para a utilização da rede Tabela 1. Templates sugeridos para a utilização da CPU 5. Análise experimental Para validar a extensão proposta, foram realizadas duas análises experimentais: i) a execução de uma aplicação distribuída (NAS parallel benchmarks) e ii) a transferência de arquivos em um protótipo de Nuvem Computacional. A coleta dos dados (e.g., uso de CPU e largura de banda) durante a execução dos testes foi realizada em todas as MVs envolvidas no experimento através do mecanismo de monitoração desenvolvido em [Pfitscher et al. 2013]. Nos dois cenários foi utilizado o hypervisor Xen 4.2 para a criação de quatro MVs: 4 VCPU, 512 MB de RAM, 5 GB de armazenamento e SO Debian Squeeze 6.0.7-64bit. Para hospedar as MVs foram utilizados dois hosts com o mesmo hardware e software: quad-core AMD Phenom II X4 2.8 GHz, 4 GB de RAM, 500 GB de armazenamento (SATA 7200 rpm) e SO Ubuntu 12.04-64bit. A conexão foi realizada através de um switch 100 Mbps. A limitação da banda nos dois cenários foi realizada com a modificação do arquivo de configuração no momento da criação das MVs. 5.1. NAS parallel benchmarks A execução de cada aplicação que compõem o benchmark NAS [Bailey et al. 1994], classe B (BT, CG, EP, FT, IS, LU, MG, e SP) foi realizada com o MPICH 3.0.4 durante 30 minutos envolvendo as quatro MVs em dois diferentes casos, tendo como única diferença a largura de banda disponibilizada para as MVs. A escolha dos templates para a composição dos cenários foi realizada com base nas informações de utilização da cpu e rede presentes em [Subhlok et al. 2002]. A utilização de CPU nos três casos resultou sempre no status critical em todas as MVs, ficando com a média de utilização acima de 80% em todas as aplicações. Já a utilização da rede resultou em status distintos conforme apresentado nas Tabelas 3 e 4. Os resultados sumarizados nas Tabelas representam a real utilização dos recursos que compõe a IV solicitada. A extensão proposta é capaz de encapsular e representar as métricas coletadas pelo mecanismo de diagnóstico, bem como transportar uma configuração inicial para o mecanismo (templates). Neste cenário, o usuário (ou um serviço) poderá refinar a composição de sua IV para realizar uma próxima execução, aumentando ou diminuindo o número de recursos e sua configuração. BT CG EP FT IS LU MG SP cv(%) 50 50 50 50 50 50 50 50 Informado queue present present present present present present present present status critical critical critical critical critical critical critical critical cv (%) 27,37 23,24 294,42 57,25 29,56 55,68 67,38 24,98 Monitorado queue present absent absent absent present absent absent absent status critical regular low low critical low low regular BT CG EP FT IS LU MG SP Tabela 3. Utilização solicitada e monitorada com 10 Mbps (mv01). cv(%) 50 50 50 50 50 50 50 50 Informado queue absent absent absent absent absent absent absent absent status regular regular regular regular regular regular regular regular cv (%) 42,80 26,17 295,99 60,01 45,31 46,16 83,42 38,56 Monitorado queue absent absent absent absent absent absent absent absent status regular regular low low regular regular low regular Tabela 4. Utilização solicitada e monitorada com 100 Mbps (mv01). 5.2. Transferência de arquivos A transferência de arquivos foi realizada durante um intervalo de aproximadamente 10 minutos envolvendo três MVs: mv01 com o papel de um servidor de arquivos, mv02 102 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 e mv04 com os papéis de dois clientes requisitando, ao mesmo tempo, o mesmo arquivo com o tamanho de 3 GB localizado na mv01. Este teste se dividiu em dois casos: limitação da largura de banda das MVs em i) 50 Mbps e ii) 100 Mbps. A utilização de CPU nos dois casos resultou sempre no status low em todas as MVs, ficando com a média de utilização abaixo de 50% e com peakThreshold (% de pontos em saturação) abaixo de 30%. A utilização da rede resultou em status distintos para cada MV conforme apresentado nas Tabelas 5 e 6. De forma similar ao exemplo anterior, a extensão proposta adaptou-se ao cenário de transferência de arquivos. Os requisitos computacionais, de processamento e comunicação, bem como as métricas de utilização diferem da expectativa do usuário. mv01 mv02 mv04 cv(%) 50 50 50 Informado queue status absent regular absent regular absent regular cv (%) 2,69 9,68 8,76 Monitorado queue status present critical absent regular absent regular mv01 mv02 mv04 Tabela 5. Utilização solicitada e monitorada com 50 Mbps. cv(%) 50 50 50 Informado queue status absent regular absent regular absent regular cv (%) 3,69 12,73 12,22 Monitorado queue status present critical absent regular absent regular Tabela 6. Utilização solicitada e monitorada com 100 Mbps. 6. Conclusão Este artigo apresentou uma discussão sobre a especificação dos requisitos de monitoração por parte dos usuários identificando requisitos que são independentes de provedores. Estes requisitos foram traduzidos em um conjunto de atributos e representados como uma gramática. Como prova de conceito, a gramática foi anexada a linguagem VXDL, e a extensão proposta foi analisada através da especificação, execução e monitoração de aplicações comumente executadas em Nuvens Computacionais. A proposta foi capaz de expressar os requisitos e encapsular a real utilização dos recursos virtuais. Futuramente, visamos a integração automática das extensões com mecanismos de gerenciamento para o desenvolvimento de uma ferramenta capaz de adequar as IVs em tempo de execução. Agradecimentos Os autores gostariam de agradecer a PROBIC/UDESC pelo auxílio financeiro, bem como a [Pfitscher et al. 2013] por disponibilizaram o mecanismo de monitoração. Referências Bailey, D., Barszcz, E., Barton, J., Browning, D., Carter, R., Dagum, L., Fatoohi, R., Fineberg, S., Frederickson, P., Lasinski, T., et al. (1994). The NAS parallel benchmarks. Buyya, R., Yeo, C. S., and Venugopal, S. (2008). Market-oriented cloud computing: Vision, hype, and reality for delivering it services as computing utilities. In Proc. of the 10th IEEE Int. Conf. on HPCC, Washington, DC, USA. IEEE Computer Society. DMTF (2009). White Paper DSP2017: Open Virtualization Format Specification (OVF). Koslovski, G., Vicat-Blanc Primet, P., and Charão, A. S. (2008). VXDL: Virtual Resources and Interconnection Networks Description Language. In The 2nd GridNets. OCCIWG (2009). Open Cloud Computing Interface Working Group (OCCI-WG). Pfitscher, R. J., Pillon, M. A., and Obelheiro, R. R. (2013). Diagnóstico do provisionamento de recursos para máquinas virtuais em nuvens IaaS. 31o SBRC, pages 599–612. Subhlok, J., Venkataramaiah, S., and Singh, A. (2002). Characterizing NAS benchmark performance on shared heterogeneous networks. In Proc. of the 16th Int. Parallel and Distributed Processing Symp., pages 91–99, Washington, USA. IEEE. 103 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Análise de Detecção de Intrusão em Redes de Computadores utilizando Snort e Suricata Cléber Taschetto Murini1 Renato Preigschadt de Azevedo1 1 Colégio Técnico Industrial de Santa Maria (CTISM) Universidade Federal de Santa Maria (UFSM) Av.Roraima, 1000 - Camobi - Santa Maria - RS - Brasil {cleber, renato}@redes.ufsm.br Abstract. This study aims to analyze network traffic, where it may be affected by possible defects and / or failures causing unavailability on the network and affecting the quality of service. This paper proposes to examine two tools in Network Intrusion Detection (NIDS) that are Snort and Suricata, which will be put into operation by analyzing network in a Teaching Institution and comparing these results with a database of synthetic (DARPA). Resumo. Este trabalho tem o objetivo de analisar o trafego da rede, onde este pode ser afetado por possíveis anomalias e/ou falhas causando indisponibilidade na rede e afetando a qualidade de serviço. Este trabalho propõem a análise de duas ferramentas de Detecção de Intrusão na Rede (NIDS) que são o Snort e o Suricata, as quais serão colocadas em funcionamento fazendo uma análise de rede em uma Instituição de Ensino e comparando esses resultados com uma base de dados sintética (DARPA). 1. Introdução Com o crescente uso da internet e sistemas web na atualidade temos que verificar a importância aos possíveis Ataques de Negação de Serviço (DoS, Denial of Service), devido a isto o presente projeto demostra Sistemas de Detecção de Intrusão em Redes de Computadores (NIDS, Network Intrusion Detection System) baseados no Snort e o Suricata. Este trabalho realiza uma revisão bibliográfica referente à NIDS e também uma pequena demonstração das ferramentas Snort e Suricata, que são softwares Open Source (código fonte aberto). 2. Detecção de Intrusão em Redes de Computadores De acordo com (Barford Et Al. 2002), redes de computadores sem análise de tráfego não podem operar eficientemente ou com segurança. A análise de tráfego é uma atividade essencial para o correto funcionamento da mesma. Os NIDS em redes de computadores são utilizados para permitir o monitoramento do tráfego de dados de computadores ou um segmento de rede. A análise é realizada em dados coletados da rede, ou em base de dados disponíveis ao NIDS. O Snort é um sistema de detecção e prevenção de intrusos de código fonte aberto, baseado em rede (NIDS), seu criador foi Marty Roesch, que disponibilizou sua 104 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 primeira versão de testes no ano de 1998, se tornando bastante popular por suas flexibilidades nas configurações de regras e atualizações comparadas com outras ferramentas disponíveis (Snort, 2013). Já o Suricata é um produto recente e menos difundido, desenvolvido pelo OISF (Open Information Security Foundation), também é baseado em assinaturas. Este motor incorpora um normalizador HTTP e analisador (biblioteca HTTP), que fornece processamento avançado de fluxos HTTP, permitindo a compreensão do tráfego na camada 7 do modelo OSI (Suricata, 2013). As principais vantagens de um NIDS são: baixo custo (Wang, 2009), pois são necessários sondas somente em alguns pontos estratégicos da rede, monitoração passiva, isto é, não interfere no tráfego de rede normal resistente a intrusão. Conforme (Rehman R. U. 2013) o posicionamento mais comum para um Sistema de Detecção de Intrusão, nesse caso o Snort e o Suricata, é mostrado na Figura 1 abaixo. Figura 1. Localização dos Sistemas de Detecção de Intrusão (Fonte: Rehman R. U. 2013, pag. 10) Em alguns casos a análise feita pelos NIDS abrange segmentos da rede mais sensíveis, dependendo da política de segurança definindo o que realmente se quer proteger. Devido a este fato normalmente esses sistemas ficam após os firewalls e roteadores conforme é mostrado acima (Rehman R. U. 2013). 3. Conclusões A Internet está no caminho para se tornar o meio de comunicação para todos os tipos de informações, desde a simples transferência de arquivos de computadores até a transmissão de voz, vídeo ou informações interativas em tempo real, Como consequência temos a crescente vulnerabilidade a ataques, devido isso que este trabalho demostrou um pouco do funcionamento dos NIDS e suas ferramentas. Referências bibliográficas Barford, P., Kline, J., Plonka, D., and RON, A. (2002) A signal analysis of network traffic anomalies. In IMW ’02: Proceedings of the 2nd ACM SIGCOMM Workshop on Internet measurment, pages 71–82, New York, NY, USA. ACM. Snort (2013) Documentação. http://www.snort.com.br/documentacao.asp Setembro. Suricata (2013)Suricata-Vs_Bufo. http://www.aldeid.com/wiki/Suricata-vs-snort Setembro. Wang, J. (2009) Computer network security: theory and practice. Higher Education Press. Rehman U. R. (2013) Intrusion Detection Systems with Snort: Advanced IDS Techniques with Snort, Apache, MySQL,PHP, and ACID. http://ptgmedia.pearsoncmg.com/images/0131407333/downloads/0131407333.pdf Setembro. 105 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Automação e Segurança Eletrônica Lucas Bastos1, Marcos Righi Brasil1, Nicoli Rodrigues1, Péricles Feltrini1, Sérgio Righi1, Alessandro A. Mainardi de Oliveira1 1 Ciência da Computação – Centro Universitário Franciscano (UNIFRA) Rua dos Andradas, 1614 – 97.010-032 – Santa Maria – RS – Brasil [email protected], {marcos_righi, sergio_rhr}@yahoo.com.br, {nicoli.v.r, feltrin10}@gmail.com, [email protected] Resumo. Este trabalho consiste no desenvolvimento de um sistema microcontrolado para automação residencial, via internet. Neste sistema são utilizados os hardwares Arduino e Ethernet Shield. O objetivo consiste em fazer o controle de acesso e de alarme, através de dispositivos móveis. 1. Introdução Manter a segurança de propriedades públicas e privadas é uma necessidade constante. Existe uma busca pela melhor maneira de gerenciar a segurança de estabelecimentos, e a tecnologia disponibiliza novas formas de se obter tal segurança. Neste artigo é apresentado e descrito um projeto que busca alcançar essas metas. Este projeto foi desenvolvido visando a mobilidade do monitoramento de estabelecimentos. A escolha pela execução deste trabalho baseia-se na possibilidade de monitorar a segurança de residências ou estabelecimentos públicos e privados, sem a necessidade de estar fisicamente no local. Dessa forma, é possível manter um controle sobre quem entra e ativa o alarme. Visa-se a tranquilidade e segurança dos usuários do sistema, obtidos através de uma aplicação simples e fácil de utilizar. 2. Descrição do Projeto Para este projeto, foi desenvolvido um aplicativo em Java para Android, através da IDE Eclipse [Holzner 2004]. Através de uma senha, o usuário poderá liberar o acesso ao local, permitindo a entrada por uma fechadura eletrônica. O sistema é controlado pela plataforma Arduino, um sistema operacional completo que possui uma unidade central de processamento, memória e portas de entrada e saída [Schmidt 2011]. O sinal é enviado pelo dispositivo móvel através de sockets e é recebido pelo Ethernet Shield, um módulo que permite que a placa Arduino seja conectada à uma rede de internet e permite o acesso remoto [McRoberts 2011]. O microcontrolador recebe o sinal, interpreta e ativa os dispositivos de alarme e fechadura. A fechadura eletrônica e o alarme são acionados através de um sinal elétrico de 12V. Como a tensão liberada pelo Arduino é 5V, foi utilizada uma relé. O sistema ainda conta com o controle de acesso que envia uma mensagem de texto ao administrador informando quem entrou no local, ligou ou desligou o alarme. 106 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 3. Conclusão O uso do Sistema proposto neste trabalho traria praticidade e simplicidade no gerenciamento da segurança de uma ou mais propriedades. Com investimentos futuros na aprimoração e no aperfeiçoamento do sistema, tornar-se-ia possível ampliar a gama de funcionalidades disponíveis na aplicação e melhorar ainda mais o sistema de monitoramento. Referências bibliográficas Holzner, Steve. (2004) “Eclipse: Programming Java Applications”, O’Reilly Media, Estados Unidos. Schmidt, Maik. (2011) “Arduino: A Quick-Start Guide”, The Pragmatic Programmers, Estados Unidos. McRoberts, Michael. (2011) “Arduino Básico”, Novatec, Brasil. 107 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Comparação entre Ferramentas de Programação Paralela no Modelo de Memória Compartilhada Charles Steinmetz1, Ana Paula Canal1, Guilherme Chagas Kurtz¹ 1 Curso de Sistemas de Informação – Cento Universitário Franciscano Caixa Postal 1614 – 97.010-032 – Santa Maria – RS – Brazil [email protected], [email protected], [email protected] Resumo. O presente trabalho apresenta uma comparação entre ferramentas de programação paralela que utilizam threads: Java Threads, OpenMP e Pthreads. Para tal comparação, foi implementado um algoritmo de multiplicação de matriz por vetor para cada ferramenta onde os testes foram feitos alterando as dimensões da matriz e o número de threads. 1. Introdução A busca por maior desempenho de processamento pode ser alcançada por diversas técnicas de programação, sendo que uma delas é a programação paralela. Neste sentido, ferramentas como Java Threads [SILBERSCHATZ, 2004], OpenMP [OPENMP, 2013] e Pthreads [CAVALHEIRO, 2004] ajudam o desenvolvedor a paralelizar sua aplicação. Uma thread é uma linha de execução das instruções de um programa. É uma unidade básica de utilização de CPU (Central Processing Unit) [SILBERSCHATZ, 2004]. Ela contém um ID de thread, compartilha com outras threads pertencentes ao mesmo processo sua seção de código, seção de dados e outros recursos do sistema operacional, como arquivos abertos e sinais [SILBERSCHATZ, 2004]. 2. Programação com Threads Como, antigamente cada sistema implementava a sua própria versão de threads criou-se o padrão POSIX1003.1-2001 estabelecido pelo IEEE, conhecido com Pthreads que oferece mecanismos de sincronização, como semáforos, mutexes e variáveis condicionais, além de mecanismos para o gerenciamento e manutenção dos diversos threads pertencentes a um sistema [CAVALHEIRO, 2004]. O OpenMP é uma alternativa para a programação paralela com memória compartilhada, ou seja, à programação para as arquiteturas com múltiplos núcleos [OPENMP,2013]. Também é um padrão para programação paralela definido pela indústria de hardware, software e academia. Permite uma programação mais fácil em relação às outras bibliotecas de threads, possibilitando a inclusão de diretivas ao compilador. Outra alternativa à programação paralela é Java Threads. Em uma aplicação Java há ao menos uma thread que começa a executar no momento em que o programa é iniciado. Ela é conhecida como thread principal, onde é a partir dela que são geradas as threads filhas, e é a última a encerrar a execução. Todas as threads são gerenciadas pela máquina virtual Java (Java Virtual Machine) [SILBERSCHATZ, 2004]. 108 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 3. Desenvolvimento Para realização deste trabalho, foi implementado um algoritmo de multiplicação de matriz por vetor (Matriz X Vetor) para as três ferramentas estudadas, a fim de perceber vantagens e desvantagens no uso de cada ferramenta. Foram realizados testes de execução com matrizes de dimensões de 10000x10000, 12500x12500, 15000x15000 e 17500x17500 e para cada um desses casos foi executado com duas e quatro threads. A Tabela 1 apresenta tempos de execução com ferramentas para a linguagem C, mostrando o quanto é vantajoso o uso de threads ao uso da programação sem threads para tarefas extensas e repetitivas. Tabela 1. Tabela comparative entre ferramentas de programação paralela para a linguagem C Experimento 10000 x 10000 12500 x 12500 15000 x 15000 17500 x 17500 C sem threads 328418 us 534597 us 774398 us 1 s 22939 us Pthread ( 2 threads) 205096 us 301595 us 412474 us 848124 us Pthread ( 4 threads) 205615 us 294695 us 397947 us 544014 us OpenMP ( 2 Threads) 193325 us 296652 us 434766 us 598857 us OpenMP ( 4 Threads) 189057 us 282813 us 403894 us 545299 us Quanto a implementação dos algoritmos, as três ferramentas apresentam suas particularidades, onde Java proporciona uma maior abstração do código, tendo uma classe para threads com métodos para manipulação. OpenMP oferece diretivas que facilitam a paralelização de laços, o que tornou-se bastante simples a implementação desse algoritmo. Já Pthreads aumenta um pouco o nível de dificuldade, pois não há muita abstração como no Java e é necessário utilizar ponteiros e criar estruturas de dados para serem passadas por parâmetro para a função que será executada pelas threads. 4. Considerações Finais Com este trabalho, pode-se perceber que, para determinadas situações, é vantajoso o uso da ferramenta OpenMP em relação a Java Threads e Pthreads, pois esta ferramenta é mais simples de se usar. Outro fator que pode-se perceber é referente ao número de threads utilizadas, onde obteve-se o maior desempenho com o número de threads próximo ao número de núcleos da máquina em que se estava executando. Como trabalhos futuros, tem-se o aprimoramento dos testes realizados e a obtenção de medidas de desempenho. Referências Cavalheiro, G. G. H. “Princípios da programação concorrente.” Em: Escola Regional de Alto Desempenho ERAD, 2004. OpenMP: Simple, Portable, “Scalable SMP Programming. OpenMP.” Disponível em http://www.openmp.org/. Acesso em: Setembro, 2013. Silberschatz, P. Baer Galvin, e G. Gagne “Sistemas Operacionais com Java”, 6ª. Edição. 2004. 109 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Comparativo de Inserção entre Banco de Dados Cassandra e MySQL Samuel Lautert Jardim1, Sylvio André Garcia Veiera2 1 Acadêmico do Curso de Sistemas de Informação – Centro Universitário Franciscano (UNIFRA) 2 Professor orientador – Centro Universiatário Franciscano (UNIFRA). [email protected], [email protected] Resumo. Este artigo descreve uma breve introdução ao banco de dados NoSql Cassandra, ainda pouco utilizado na maioria dos ambientes de programação, também é realizado um comparativo entre Cassandra e MySQL, que é SQL. Os resultados são bastante promissores, obtendo redução de cerca de 50 % nos tempos de resposta de processamentos. 1. Introdução MySQL é um dos banco de dados mais populares no meio dos desenvolvedores, sua escalabilidade é vertical. Já Cassandra é um banco de dados horizontal, escrito em Java, desenvolvido pelo Facebook. Em 2008, seu código-fonte foi aberto a toda comunidade, e hoje é mantido pela Apache Software Foundation. As tecnologias nas quais foi baseado seu desenvolvimento são o Dynamo, da Amazon, resgatando as características de distribuído, e o Bigtable, do Google na modelagem dos dados (HEWITT, 2011). Surgiu na necessidade de lidar com muitas gravações e leituras no sistema de mensagens do Facebook, no qual, o volume de dados gerado diariamente é muito grande, dificultando o escalonamento com métodos tradicionais de banco de dados relacionais. (LAKSHMAN; MALIK, 2010). Neste trabalho foi realizado um comparativo de inserção de dados entre Cassandra e MySQL. 2 Comparativo Realizou-se a inserção de 3.444.463(três milhões quatrocentos e quarenta e quatro mil quatrocentos e sessenta e três)registros, utilizando a ferramenta Pentaho Spoon no qual fez a transformação das linhas em comandos de INSERTs (inclusões) CQL para Cassandra e SQL para MySQL e o envio dos mesmos para o próprio localhost de acordo com a configuração de cada software. 110 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 5 4,5 4 3,5 3 2,5 4,51 2 Tempo /s 1,5 2,29 1 0,5 0 Cassandra MySQL Figura 1 - Comparativo de tempo em segundos entre Cassandra e MySQL. 3 Considerações Finais No teste realizado as condições da máquina para os dois softwares foram equivalentes e suas configurações default, sem alteração. Com isto obteve-se o tempo de processamento no Cassandra de 2,29 segundos e no MySQL 4,51 segundos, equivalente à 50,77% de performance maior de Cassandra, conforme Figura 1. Sendo assim observou-se que o tempo de escrita do Cassandra foi muito superior, mesmo não sendo em ambiente de cluster. Desta forma ficou evidenciado o potencial de Cassandra para ser uma das principais ferramentas para atender as atuais, e novas necessidades no mundo do Big Data. O fato de ser um banco de dados Open Source contribui muito, tornando o custo do projeto muito menor, possibilitando a pequenas empresas o atendimento a uma gama de serviços bem maior, com uso da disponibilidade da informação. Referências LAKSHMAN, Avinash; MALIK, Prashant. Cassandra: A Decentralized Structured Storage System. 2010. Disponível em: <http://www.cs.cornell.edu/projects/ ladis2009/ papers/lakshman-ladis2009.pdf>. Acesso em: 10 set. 2012. HEWITT, Eben. Cassandra:The Definitive Guide. Estados Unidos: O’Reilly Media, 2011. DATASTAX. Apache Cassandra™ 1.1 Documentation. DATASTAX. 2012. Disponível em: <http://www.datastax.com/doc-source/pdf/cassandra11.pdf>. Acesso: em 15 nov. 2012. 111 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Construção do protótipo de um servidor de ROMs em rede para o emulador HalfNES Eric Prates dos Santos, Marcos Righi Brasil Bacharelandos em Ciência da Computação – Centro Universitário Franciscano Santa Maria – RS {ericprates,marcosrighi}@unifra.edu.br Resumo. A distribuição de arquivos via rede é uma questão a ser investigada para permitir a boa construção de um sistema distribuído. Este artigo discorre sobre um projeto de criação de um pequeno protótipo de servidor de ROMs para o HalfNES, um emulador de código aberto, permitindo que um usuário jogue no emulador buscando a ROM disponível em outro computador via rede local. Sugerem-se, ao final, algumas possibilidades de aprimoramento do protótipo inicial. 1. Justificativa e objetivos do projeto A disciplina de Sistemas Distribuídos trata-se de uma área da Ciência da Computação que investiga “sistemas autônomos que trabalham juntos para dar a aparência de um único sistema coerente” [Tanenbaum e Steen 2006]. Nos dias de hoje, aplicações assim classificadas buscam “esconder a complexidade” de sistemas mais robustos, embora tenham suas dificuldades em fazê-lo. Experimentar tais dificuldades em nível de implementação e entender na prática como um sistema desta natureza pode ser construído foram motivadores do projeto que resultou neste artigo. Relata-se aqui, brevemente, a execução de tal projeto de sistema distribuído, na forma de um servidor de arquivos via rede. Para este fim, investigou-se programas emuladores de vídeo games de código aberto existentes, com o objetivo de modificar um deles de forma a buscar-se a ROM (arquivo imagem do game original) via rede, ao invés de diretamente no PC do usuário que roda o emulador, como é tradicional. 2. Execução e protótipo resultante Para a execução do projeto de um sistema desta natureza, decidiu-se utilizar o emulador do sistema Nintendo de código aberto HalfNES, desenvolvido na linguagem Java por Andrew Hoffman, cujos executáveis e códigos-fontes encontram-se disponíveis no link https://code.google.com/p/halfnes/. Utilizou-se tal aplicativo em detrimento de outros emuladores de código aberto pela inteligibilidade do seu código, e pela extensibilidade e familiaridade da linguagem Java, que permitiram fácil modificação do projeto original. A partir do emulador e de seus códigos já existentes, foram realizadas algumas modificações para que o mesmo conectasse, via sockets TCP, a um servidor em rede que aguardasse conexões em uma porta específica. Para realizar o papel deste servidor, desenvolveu-se uma pequena aplicação na mesma linguagem, que possui uma lista de ROMs (arquivos de imagem dos cartuchos do sistema Nintendo, com a extensão “.nes”), 112 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 pré-definida, a serem lidas a partir da pasta C:\ROMS do computador em que a aplicação está rodando. No protótipo desenvolvido até o momento, o usuário do emulador deve entrar com o endereço IP da máquina onde a aplicação servidor roda. Se encontrada, a mesma retorna uma lista das ROMS lá disponíveis, e este pode escolher um jogo para ser executado em seu computador. O jogo selecionado é então carregado, ficando armazenado temporariamente na pasta padrão do usuário do emulador. Quando o mesmo é fechado, o arquivo é apagado. O emulador original sofreu as seguintes modificações: uma opção foi adicionada ao menu para carregamento de ROM via rede; e caixas de diálogo controlam o processo de entrada do IP da máquina servidor, conexão com a mesma e retorno da lista de jogos. Outros métodos, como os responsáveis pela abertura de ROMs, entretanto, permanecem os mesmos do aplicativo original. 3. Conclusões sobre o projeto A tendência natural de um sistema é a evolução, motivada pelo pedido de mudanças [Sommerville 2011]. Finalizado este primeiro protótipo, mudanças diversas podem ser propostas, tendo em vista tanto a usabilidade do programa como uma mais fácil redistribuição. Entre as mudanças focadas em usabilidade propõe-se: identificação automática dos dispositivos visíveis na rede local para seleção (ao invés da entrada manual do endereço de IP por parte do usuário), seleção das ROMs a serem disponibilizadas pelo servidor em tempo de execução, e integração do programa servidor com o programa emulador, criando uma única aplicação híbrida, porém coesa. Após a implementação de tais mudanças, uma forma de fácil “redistribuição” do software seria a transformação do mesmo em um applet Java, hospedável na internet. Percebeu-se que metodologia utilizada para a modificação deste emulador pode também ser aplicada a programas semelhantes, ou em um espectro mais amplo, a qualquer programa de manipulação de arquivos, para permitir a distribuição destes via rede. Referências bibliográficas Tanenbaum, A. S e Steen, M. V. (2006). Distributed Systems: Principles and Paradigms. Prentice Hall, 2ª edição. Sommerville, I. (2011). Software Engineering. Pearson, 9ª edição. 113 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Descoberta de Serviços para Dispositivos Móveis em Ambientes Pervasivos Thomás F. Matos1, Ricardo G. Martini1 1 Ciências da Computação – Universidade Franciscana (UNIFRA) Caixa Postal: 151 – 97.010.032 – Santa Maria – RS – Brasil {[email protected], [email protected] Abstract. With the breakthrough of Pervasive Computing and mobile devices, its spread has been increasing in people's lives, along with the increasing amount of available services in pervasive environments. With this idea, this paper proposes the creation of an software for mobile devices that have the Android operating system, because it's in full expansion and growth throughout the world, with a considerable growing of users. This system aims to make access to services offered by a television in a pervasive environment, allowing users to use these services from their mobile devices. Resumo. Com o grande avanço da Computação Pervasiva e dos dispositivos móveis, sua disseminação tem sido cada vez maior na vida das pessoas, juntamente com a crescente quantidade de serviços disponíveis em ambientes pervasivos. Com esta ideia, este trabalho tem como proposta a criação de um software, para dispositivos móveis que possuam o sistema operacional Android, pois o mesmo está em plena expansão e crescimento em todo o mundo, com uma gama considerável de usuários. Este sistema tem como objetivo efetuar o acesso aos serviços oferecido por uma televisão em um ambiente pervasivo, possibilitando aos usuários utilizarem estes serviços a partir de seus dispositivos móveis. 1. Introdução O conceito de Computação Pervasiva surgiu pela primeira vez pelo cientista chefe do Centro de Pesquisa Xerox PARC, Mark Weiser em 1988 e explanado em sua obra, anos depois, “o computador do século 21” em 1991. Para Weiser (1991), a Computação Pervasiva estará em tudo o que nos rodeia e não somente nos computadores, tão integrada na nossa sociedade que será mais transparente que a própria eletricidade ou escrita. O ambiente pervasivo deve ser capaz de detectar todo e qualquer tipo de dispositivos que venham fazer parte dele. Com estas interações os computadores agem de formainteligente no ambiente, o qual os usuários se encontram. Este ambiente deve conter diversos tipos de sensores e oferecer uma gama de serviços computacionais (CHEN et al., 2003). A computação pervasiva possui diversas características como, heterogeniedade, integração, invisibilidade, mobilidade, entre outras, cuja a qual mais importante é a sensibilidade de contexto. 114 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 1.1. Sensibilidade de Contexto Uma das mais conceituadas definições de sensibilidade de contexto é a que Dey (2000) descreve. Segundo o autor, contexto é toda e qualquer informação que seja relevante e possa ser usada para caracterizar a situação de uma entidade. Entende-se por entidade uma pessoa ou um lugar, um objeto que seja relevante para a interação entre aplicação e usuário. 1.2. Descoberta de Serviços Na visão de Murphy, Picco e Roman (2001), descoberta de serviços funciona como um serviço de diretórios, onde são armazenadas as ofertas de serviços que poderão ser utilizados pelos usuários. Entre principais funções da descoberta de serviços estão à oferta, descoberta, escolha e utilização de serviços que são disponibilizados através de diversos dispositivos. Alguns protocolos para a implementação deste serviço de descoberta são, o Bluetooth, Jini, Salutation e o Universal Plug and Play (UPnP). 2. Desenvolvimento Neste trabalho será utilizada a metodologia ágil FDD, pois é uma metodologia que está cada vez mais sendo disseminada por ser um modelo ágil, iterativo e incremental, e que trabalha com funcionalidades, o que torna seu desenvolvimento mais compreensível e eficaz. Será desenvolvida uma aplicação, para dispositivos móveis, que seja sensível ao contexto e que efetue a descoberta de serviços em ambientes pervasivos e ofereça estes serviços ao usuário. Isto aplicado em um estudo de caso onde o ambiente pervasivo será uma casa e o dispositivo que irá ceder os serviços é um televisor LED 40’ Samsung, o dispositivo cujo qual acessará estes serviços, é um smartphone Android 4.2.2 Samsung. 3. Conclusão Com base nos dados coletados e no estudo realizado nesta parte inicial do trabalho, constata-se o grande avanço da Computação Pervasiva nos dias de hoje e o fundamental processo de descoberta de serviços, utilizando protocolos de comunicação, para ser possível a comunicação entre diversos tipos de dispositivos e com isso possibilitar a utilização deste novo paradigma em diversas áreas, oferecendo uma vasta gama de serviços em ambientes pervasivos. 4. Referências Chen, H.; Finin, T.; Joshi, A. (2003) An ontology for context-aware pervasive computing environments.The Knowledge Engineering Review. Dey, A. K. (2001) Understanding and Using Context. Personal Ubiquitous Comput., v.5. Murphy, A.; Picco, G.; Roman, G. C. (2001) Lime: a middleware for physical and logical mobility. 21st International Conference in Distributed Computing Systems. Proceedings, (ICDCS). Weiser, M. (1991) The Computer for the 21st Century. Scientific Am. 115 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Descoberta de Serviços e Dispositivos de Automação Microcontrolados em Ambientes Inteligentes Reiner Franthesco Perozzo1, Alexandre de Oliveira Zamberlan2, Carlos Eduardo Pereira3 1 Departamento de Ciência da Computação – Centro Universitário Franciscano (UNIFRA) – Santa Maria – RS – Brasil 2 3 Departmento de Sistemas de Informação – Centro Universitário Franciscano (UNIFRA) – Santa Maria – RS – Brasil Departamento de Engenharia Elétrica – Universidade Federal do Rio Grande do Sul (UFRGS) – Porto Alegre – RS – Brasil {reiner.perozzo,alexz}@unifra.br, [email protected] Resumo. Este trabalho apresenta a proposta de uma arquitetura de software capaz de permitir a descoberta e a utilização de serviços e dispositivos de automação baseados em microcontroladores, os quais estão inseridos em Ambientes Inteligentes – os quais podem ser considerados como ambientes automatizados cientes ao contexto. Dentre as características principais da arquitetura destacam-se: (i) a utilização de um protocolo de comunicação de dados que permita a descoberta de serviços e a interoperabilidade entre dispositivos de automação microcontrolados e (ii) o desenvolvimento de um software adaptativo para gerenciamento do Ambiente Inteligente através de diferentes plataformas computacionais. 1. Introdução O atual cenário tecnológico envolvendo dispositivos eletrônicos, microcontroladores e construção de software permite que, a cada dia, possam ser inseridos no mercado novas soluções de automação residencial. Na mesma linha, os projetos de computação ubíqua e pervasiva estão ganhando destaque, principalmente pelo avanço da computação embarcada, a qual inclui sistemas autônomos, adaptativos e cientes ao contexto [Helal 2005]. Esses sistemas adaptativos e flexíveis são considerados “sistemas inteligentes” em que sensores, atuadores e outros dispositivos de automação podem interagir e comunicar-se um com os outros, usando diferentes padrões (protocolos) de comunicação [Edwards 2006]. No contexto da automação predial e residencial esses sistemas são conhecidos como Ambientes Inteligentes (AmI) e possuem como característica a multimodalidade de interação humano-computador oferecida para o gerenciamento de seus dispositivos e serviços [Anastasopoulos et al. 2005]. 2. Proposta O objetivo deste trabalho é a criação de uma arquitetura de software capaz de permitir a descoberta e a utilização de serviços e dispositivos de automação baseados em 116 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 microcontroladores, os quais estão inseridos em AmI. Esse trabalho busca desenvolver uma estratégia que possibilite o gerenciamento do AmI através de plataformas computacionais heterogêneas, tais como computadores pessoais (PCs) tablets e smartphones. A arquitetura proposta está dividida em três componentes: (i) o AmI, com os serviços associados aos seus respectivos dispositivos de automação; (ii) a aplicação de gerenciamento do AmI baseada na web e capaz de se adaptar às diferentes plataformas computacionais de interação humano-computador; (iii) o repositório de WebServices, em que cada dispositivo de automação ou serviço poderia ser representado, descoberto e utilizado por meio da Web Services Description Language (WSDL). Nesse caso, o WebService utilizado deve conhecer e implementar a comunicação com o dispositivo de automação. A Figura 1 apresenta uma visão geral da arquitetura proposta neste trabalho. Figura 1. Visão Geral da Arquitetura Proposta 3. Considerações Finais Existem inúmeras diferenças entre AmI e os tradicionais ambientes de automação residencial. A primeira delas é que o AmI deve ser ciente ao contexto, ou seja: deve ser capaz de identificar e interagir com os dispositivos de automação que são inseridos dinamicamente no ambiente. Outra diferença importante é a quebra de paradigma, em que deixa-se de lado o fato de apenas controlar dispositivos e parte-se para um cenário em que há serviços automatizados disponíveis. Nesse caso, podem ser implementados os conceitos de descoberta e composição de serviços, sendo que um serviço composto poderia utilizar recursos de três dispositivos de automação, por exemplo. Dentro desse contexto, o trabalho apresentou uma proposta de arquitetura de software em que a principal contribuição é obter a interoperabilidade do AmI através de WebServices com a utilização da WSDL – e permitir o gerenciamento do AmI através de diferentes plataformas computacionais, fazendo uso de aplicações baseadas na web e cientes do contexto. Referências Anastasopoulos, M.; et al. (2005). “Towards a Reference Middleware Architecture for Ambient Intelligent Systems, Proceedings of the Workshop for Building Software for Pervasive Computing. Edwards, W. K. (2006). “Discovery Systems in Ubiquitous Computing”. IEEE pervasive computing, New York, v. 5, n. 2, p. 70-77. Helal, S. et al. (2005). “The Gator Tech Smart House: A Programable Pervasive Space”, IEEE Pervasive Computing, p 64 - 74. 117 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Documentação de Requisitos para Personalização de Interfaces Web Carla Luz da Veiga, Paulo Ricardo Baptista Betencourt (Orientador) Universidade Regional Integrada do Alto Uruguai e das Missões Departamento de Engenharias e Ciência da Computação – Santo Ângelo, RS – Brasil [email protected], [email protected] Abstract: This article discusses the steps required for customization of interfaces, as the customization and usability, as the vast amount of information available on the Web makes it difficult for the user to find relevant information clearly and quickly. Resumo: Este artigo trata dos passos necessários para personalização de interfaces, quanto à customização e usabilidade, pois a grande quantidade de informações disponibilizadas na Web dificulta o usuário em encontrar informações relevantes de forma clara e rápida. 1. Introdução O que os usuários querem são boas ferramentas, sistemas fáceis de aprender e que os ajude a realizar seu trabalho. Querem software que não os retarde, não engane ou confunda; que não facilite a prática de erro ou dificulte a finalização do seu trabalho (CONSTANTINE, 1995 apud PRESSMAN, 2011). Pois o problema está em encontrar as informações relevantes de forma clara e rápida; ausência de uma metodologia de desenvolvimento de ambiente Web para sites institucionais; a não utilização dos recursos para recuperação e rápido acesso da informação; pouca utilização de uma metodologia e instrumentos centrados no aumento, melhoria e facilidade de uso dos serviços interativos. 1. 1. Objetivo geral Propõe-se neste artigo, um modelo de documentação de requisitos que aborde o método de aplicação interativa baseada em transações, com um sistema com composto a partir de componentes reusáveis, em um software distribuído e com metodologia Iconix. 1. 2. Justificativa Com a grande diversificação de conteúdos disponibilizados na Internet, fica difícil para o usuário conseguir as informações que são relevantes, tornando a busca cansativa e fazendo com que o usuário desista de utilizar determinada página Web, passando a procurar outra, onde os conteúdos estejam disponibilizados de forma mais amigável (SCHMITT e OLIVEIRA, 2009). 2. Estado da arte Interface Web são as interfaces de usuários que usam tecnologia dos aplicativos Web, onde parte dessa interface é acessível através de um navegador (PAULA Fl, 2009). A análise dos requisitos serve para que os clientes e desenvolvedores entrem em acordo sobre o que o sistema fará e a especificação fornece uma diretriz para os projetistas, razão pela qual se valida o sistema, pois determina que especificação seja consistente com a definição dos requisitos (PFLEEGER, 2004). O Iconix é um processo adaptado ao padrão da UML, com uma característica exclusiva chamada Rastreabilidade dos Requisitos, que permite checar em todas as fases se os 118 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 requisitos estão sendo atendidos, dividido em dois grandes setores, que podem ser desenvolvido paralelo e recursivamente. O modelo estático é formado pelos Diagramas de Domínio e Classe que modelam o funcionamento do sistema sem dinamismo e interação com o usuário. Já o dinâmico mostra a interação entre o usuário e o sistema, através de ações onde o sistema apresenta resposta ao usuário em tempo de execução. O estático é refinado incrementalmente durante iterações sucessivas do dinâmico e trabalha a partir de um protótipo de interface onde se desenvolvem os diagramas de caso de uso. Com os resultados obtidos é possível desenvolver o diagrama de sequência e complementar o modelo de domínio com novos métodos e atributos (MAIA, 2005). 3. Metodologia Pretende-se demonstrar os métodos existentes para personalização de interfaces; Avaliar as ferramentas, identificando as limitações e semelhanças; Analisar os requisitos e modificar para posterior integração dos componentes reusáveis, utilizando serviços com orientação a objetos em sistemas legados em páginas Web dinâmica, que oferecem suporte a recursos de aplicações específicas e Desenvolver um cenário e sistematiza-lo. A metodologia utilizada será através de modelos de processo evolucionário, através da prototipação, onde o cliente define uma série de objetivos gerais para o software, mas não identifica detalhadamente os requisitos para funções e recursos (PRESSMAN, 2011). Será utilizado o Basalmiq Mockup que é uma aplicação desenvolvida na linguagem de programação ActionScript, que executa adobe AIR (Adobe Integrated Runtime) para desenvolver protótipos ou modelos (mockups), como as telas de um sistema desktop, ou sistema/páginas Web ou mobile (MALHERBI, 2013). 4. Considerações finais A contribuição para área da informática refere-se ao conjunto de diretrizes que auxiliará os desenvolvedores a decidir a melhor forma de personalizar páginas Web, demonstrando as principais técnicas, softwares e ferramentas, as quais facilitarão o acesso aumentando a usabilidade e a fidelização sem aumentar o custo e nem dificultar a manutenção e as atualizações, independentes de plataforma (navegador). 5. Referências Bibliográficas Maia, José Anízio (2005). Construindo softwares com qualidade e rapidez usando ICONIX. Disponível em: http://www.guj.com.br. Acessado em Outubro de 2013. Malherbi, Eduardo (2013). Prototipação de Sistemas utilizando a Ferramenta Balsamiq Mockup. Disponível em: http://www.devmedia.com.br/prototipacao-de-sistemasutilizando-a-ferramenta-balsamiq-mockup/27232. Acessado em Outubro de 2013. Paula Fl, Wilson de Pádua (2009). “Engenharia de software: fundamentos, métodos e padrões”. 3ª edição. Rio de Janeiro: LTC, 2009. Pfleeger, Shari Lawrence (2004). “Engenharia de software: teoria e prática”. 2ª edição. São Paulo: Prentice Hall, 2004. Pressman, Roger S (2011). “Engenharia de software: uma abordagem profissional”. 7ª edição. Porto Alegre: AMGH, 2011. Schmitt, Valdenise;; Oliveira, Leonardo Gomes (2009). “Personalização de Notícias – Uma Edição de Jornal para cada Leitor”. http://www.eptic.com.br/arquivos/Revistas/vol.XI,n1,2009/16-ValdeniseSchmittLeonardoOliveira.pdf. Acessado em Março de 2012. 119 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Jogo da Velha Microcontrolado Utilizando Arduino Nathan S. Difante¹, Mirkos Ortiz Martins¹ 1 Centro Universitário Franciscano (UNIFRA) Santa Maria – RS – Brasil [email protected], [email protected] Abstract. This work consists of the construction of a puzzle game known as "Tic Tac Toe". It will consist of an Arduino which is a hardware and software platform, which allows two players to interact in the same game, and also consists of microelectronic components such as Light Emitting Diode (LED), seven segment displays and buttons. Resumo. Este trabalho consiste na construção de um jogo de raciocínio conhecido como “Jogo da Velha”. Ele será composto por um Arduino que é uma plataforma de hardware e software, que possibilita que dois jogadores interajam no mesmo jogo, e também composto por componentes microeletrônicos como Light Emitting Diode (LED), botões e displays sete segmento. 1. Introdução Desde os tempos primitivos até os dias atuais, o jogo está e sempre esteve presente no cotidiano dos indivíduos [HUIZINGA 2005]. Enumeram-se características, segundo Huizinga (2005), que identificam o jogo: ser realizado em um determinado espaço, seguir uma determinada ordem, possuir duração limitada e possuir um número de regras que devem ser respeitadas. Com o decorrer do tempo, surgiram diversos estilos de jogos, como por exemplo, jogos de tabuleiros, de cartas e atualmente jogos eletrônicos. Assim, com a constante evolução dos jogos eletrônicos e visando desenvolvimento e aperfeiçoamento de novas tecnologias este trabalho tem como objetivo a implementação de um hardware para controlar o jogo de tabuleiro “Jogo da Velha”. 2. Desenvolvimento Será desenvolvido neste trabalho um jogo, com um sistema de controle de componentes eletrônicos, mais especificamente uma matriz de LED e o jogo conhecido como “Jogo da Velha”. O Jogo da Velha é jogado em turnos alternados entre dois jogadores humanos. O jogo passa-se num tabuleiro de 3x3 posições nas quais os jogadores fazem suas marcas em uma das posições durante as rodadas [CARROLL 2004]. Para o sistema de controle eletrônico será usada uma placa Arduino que é uma plataforma de prototipagem eletrônica [ARDUINO 2013]. Também serão utilizados componentes eletrônicos tais como botões, que é destinado a abrir ou fechar um circuito elétrico através da abertura ou fechamento do mesmo [ELECTRIC 2013] e displays de sete segmentos que é usado como forma de exibir a visualização do escore e informação alfanumérica (binário, octodecimal, decimal ou hexadecimal) que possa ser prontamente compreendida pelo usuário sobre as operações internas de um dispositivo [TOCCI 2007]. 120 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 3. Conclusão Neste trabalho foram apresentados conceitos referentes aos jogos e à área de eletrônica. É feita uma abordagem em relação às regras do Jogo da Velha, aos componentes eletrônicos e ao Arduino que será a base principal da construção do jogo proposto neste trabalho. Através destes recursos, que foram estudados e descritos no referencial teórico deste trabalho, é possível ter uma noção sobre a construção do jogo e a implementação do software, e como funcionará a comunicação entre os elementos. A partir do projeto desenvolvido neste trabalho com a metodologia cascata, pretendese desenvolver o Jogo da Velha microcontrolado utilizando a placa Arduino. 4. Referências Arduino. Arduino. Disponível em <http://www.arduino.cc>. Acesso em Março de 2013. Carroll, M. T., Dougherty S.T. Tic-Tac-Toe on a finite plane. Mathematics magazine, vol. 77 no. 4, Outubro 2004. Electric, Johnson. O Essencial sobre Interruptores. Disponível em <http://www.baerswitch.com/O-Essencial-sobre-Interruptore.293.0.html?&L=7>. Acesso em maio de 2013. Huizinga, Johan. Homo Ludens - O jogo como elemento da cultura. São Paulo: Perspectiva, 2005. Tocci, Ronald J. Sistemas Digitais: princípios e aplicações. 10ª edição, São Paulo, 2007. 121 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Medidor de consumo energético microcontrolado. Marcelo G. Bona1, Alessandro A. Mainardi de Oliveira1 1 Sistemas de Informação – Centro Universitário Franciscano (UNIFRA) Rua dos Andradas, 1614 – 97.010- 032 – Santa Maria – RS – Brasil [email protected], [email protected] Abstract . This paper aims to provide an alternative to monitor and store the amount of electricity used in a home. To accomplish this you would use one Arduino Uno board Ver 3 with an ATmega328 microcontroller, with the function to receive the data from the sensor and perform your reading. The information will be stored on a memory card and transferred to a database, creating spreadsheets and graphs of consumption. With these results the user can view the schedules most appropriate use of their power. Resumo. O presente trabalho visa oferecer uma alternativa, para monitorar e armazenar a quantidade de energia elétrica utilizada em uma residência. Para alcançar este objetivo será utilizada uma placa Arduino Uno Ver. 3, com um microcontrolador ATmega328, com a função de receber os dados vindos do sensor e realizar sua leitura. As informações serão armazenadas em um cartão de memória e transferidas para um banco de dados, gerando planilhas e gráficos de consumo. Com os resultados obtidos o usuário pode visualizar os horários mais adequados do uso de sua energia elétrica. 1. Introdução O Brasil possui a matriz energética mais renovável do mundo industrializado com 45,3% de sua produção proveniente de fontes como recursos hídricos, biomassa e etanol, além das energias eólica e solar. As usinas hidrelétricas são responsáveis pela geração de mais de 75% da eletricidade do País (Portal Brasil 2013). Este trabalho tem por intenção elaborar um dispositivo capaz de fazer a leitura da quantidade de energia elétrica utilizada em uma residência, os dados são armazenados em um cartão de memória e transferidos para um banco de dados, responsável por gerar as informações em forma de gráficos ou planilhas. A escolha pela execução deste trabalho realiza-se em função da possibilidade de utilizar um dispositivo com a finalidade de informar ao usuário, os períodos do dia em que mais se consome energia elétrica. Desta forma, em um futuro onde, as tarifas serão cobradas por horários, é possível saber quais os melhores momentos de utilizar determinados aparelhos elétricos. 2. Desenvolvimento Este trabalho objetiva desenvolver um sistema de monitoramento da energia consumida e, assim, desenvolver um protótipo que seja capaz de informar em quais horários do dia, ocorre o consumo de energia elétrica. 122 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Na construção do projeto, será utilizada uma placa Arduino Uno Rev. 3, fabricada na Itália (Arduino 2013). Como razões pela escolha do Arduino, citam-se: o baixo custo, a facilidade oferecida pela plataforma para projetar sistemas. Juntamente com a placa o dispositivo contará com um sensor modelo SCT-013000, que é responsável pela leitura da energia elétrica, um cartão de memória onde será armazenado os dados e transferidos via conexão USB para uma base de dados, na qual será utilizado o software mySQL. Podendo assim garantir o armazenamento gerando planilhas com as informações coletadas, as quais o usuário poderá consultar e visualizar seu consumo em um determinado período de tempo (Openenergymonitor 2012). 3. Conclusão Atualmente a energia elétrica residencial consumida possui uma cobrança baseada em sua quantidade, quando o limite de uso é ultrapassado, a cobrança é alterada, portanto no futuro, esta cobrança será realizada por períodos do dia. (Date 2003). Utilizando o projeto é possível coletar informações sobre o consumo de energia elétrica em uma residência, possibilitando assim a identificação dos melhores horários para utilizar determinados aparelhos elétricos podendo diminuir custos e direcionando melhor seu consumo. 4. Referência Bibliográfica Arduino. (2013) “Arduino – HomePage”, http://www.arduino.cc, Maio. Date, C. J. (2003), “Introdução a Sistemas de Banco de Dados”, http://books.google.com.br/books?hl=ptBR&lr=&id=xBeO9LSlK7UC&oi=fnd&pg=PP23&dq=banco+de+dados&ots=x9SA e-Ag3O&sig=LpOMVtFKZ6rITlMQlynFxmD7z9U, Julho. Openenergymonitor. (2011), “How to build an arduino http://www.openenergymonitor.org/emon/node/58, Maio. energy monitor”, Portal Brasil. (2013), http://www.brasil.gov.br/cop/panorama/o-que-o-brasil-esta fazendo/matriz-energetica, Julho. 123 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Proposta de Desenvolvimento de Software para Aplicação da Métrica de Estimativa Através da Análise de Pontos por Casos de Uso Matheus Ricalde de Souza1, Fernando Garcia1, Gustavo Cantarelli1 1 Sistemas de Informação – Centro Universitário Franciscano (UNIFRA) Rua dos Andradas1614 – 97.010-032 – Santa Maria – RS – Brasil [email protected], [email protected], [email protected] Resumo. Esse trabalho tem como objetivo expor a funcionalidade da Métrica de Pontos por Caso de Uso, com o intuito de desenvolver um software que obtenha os Pontos por Casos de Uso automaticamente, auxiliando assim os desenvolvedores de software a obter uma estimativa de software mais precisa. Abstract. This paper aims to expose the functionality of Metrics for Use Case Points, in order to develop a software that gets the points for Use Cases automatically, thus helping software developers to obtain a more accurate estimation of software. 1. Introdução A qualidade do desenvolvimento do produto de software sempre foi um grande desafio dentro das organizações de desenvolvimento de software. A principal causa deste problema é a falta de um processo de desenvolvimento de software efetivo e claramente definido. Assim, a definição de um processo de software tornou-se um requisito essencial para a obtenção de produtos de software com qualidade. Para a obtenção de uma melhora consistente, os processos necessitam de informações mais precisas sobre estimativas. As estimativas de tamanho podem ser realizadas através de Pontos de Casos de Uso (PCU). Os PCU foram criados por Gustav Karner em 1993, como uma adaptação específica dos Pontos por Função. A análise de sistemas orientados a objetos já utiliza os diagramas de casos de uso para a descrição de funcionalidades do sistema em relação ao usuário. A análise de PCU foi criada para que seja possível estimar o tamanho do sistema ainda na fase de levantamento de casos de uso, utilizando documentos gerados nesta fase como alternativa para o cálculo dimensional. Uma vez que os casos de uso do sistema sejam levantados é possível estimar o tamanho do software baseado em um conjunto simples de métricas e modificadores. 2. Pontos por Casos de Uso Os PCU devem ser utilizados logo no início do ciclo de desenvolvimento do projeto, na fase de definição dos requisitos com base no modelo de casos de uso. O modelo de casos de uso é uma técnica largamente utilizada na indústria para capturar e descrever os requisitos funcionais de um software. Esse modelo consiste na sistematização de diagramas e descrições de casos de uso (ANDA, 2002). 124 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Considerando-se que o modelo de casos de uso foi desenvolvido para capturar os requisitos baseados no uso e na visão dos usuários, faz sentido basear a estimativa de tamanho e recursos de projetos de software através dos PCU (DAMODARAN; WASHINGTON, 2003). A fim de organizar a aplicabilidade da métrica, Karner (1993) desenvolveu seis passos que são necessários para a geração da estimativa por PCU: Calcular o peso dos atores do sistema, calcular o peso dos casos de uso, obter o PCU não-ajustado, calcular os fatores técnicos, calcular os fatores ambientais e por último calcular o PCU ajustado através do calculo: PCU não-ajustados X Fatores Técnicos X Fatores Ambientais. 3. Desenvolvimento O software será desenvolvido utilizando a linguagem de programação Java, o banco de dados MySql e a metodologia ICONIX. Quando o usuário digitar o descritivo do caso de uso, o software automaticamente calculará o PCU não ajustado, através do total da complexidade de atores somado ao total da complexidade dos casos de uso. Após, o usuário digitará o descritivo dos casos, onde ele atribuirá valores ao Fator de Complexidade Técnica, composto por treze itens. Depois, irá atribuir os valores do Fator Ambiental, este composto por oito itens. Por fim, o usuário selecionará a quantidade de homens/hora e o software calculará os PCU, gerando assim, um relatório técnico e um relatório simples, dirigido ao público em geral. 4. Considerações Finais Neste estudo foi mostrado o porquê da utilização de Pontos por Casos de Uso, demostrando que o seu cálculo é realizado através da soma dos PCU não ajustados, dos Fatores Ambientais e dos Fatores Técnicos e ainda como será o funcionamento do software para a realização deste cálculo. Em uma segunda etapa desse estudo, será feita a implementação do software para a realização dos Pontos por Casos de Uso através dos descritivos dos casos de uso. Referências Anda, B. (2002) “Comparing effort estimates based on use case points with expert estimates. Empirical Assessment in Software Engineering (EASE)”, Keele, Toronto. Damodaran, M.;; Washington, A. (2003) “Estimation using use case points. Computer Science Program”. Disponível em: http://bfpug.com.br/Artigos/UCP/DamodaranEstimation_Using_Use_Case_Points.pd f. Acesso em 15/08/13. Karner, G. (1993) “Resource Estimation for Objectory Projects. Objectory Systems SF AB”. Disponível em: http://www.bfpug.com.br. Acesso em 15/08/13. 125 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Proposta de integração entre CAD e CNC para Máquinas de Corte Herysson R. Figueiredo, Reiner F. Perozzo, Alexandre de O. Zamberlan Curso de Sistemas de Informação – Centro Universitário Franciscano Santa Maria – RS – Brasil [email protected], {reiner.perozzo,alexz}@unifra.br Resumo. O presente trabalho encontra-se no contexto de Desenho Auxiliado por Computador e a sua integração com máquinas de corte. Objetiva-se com a pesquisa, propor uma solução que integre desenhos construídos em software CAD e que sejam interpretados por máquinas CNC. 1. Introdução Este trabalho está inserido na área de Sistemas de Informação, mais precisamente em sistemas que auxiliam no projeto e no desenvolvimento de produtos na área industrial (design industrial). Esses sistemas são conhecidos como Computer Aided Drafting/Design – CAD (Desenho Auxiliado por Computador), Computer Aided Manufacturing – CAM (Fabricação Auxiliada por Computador) e Comando Numérico Computadorizado (CNC). Segundo Souza e Ulbrich (2009), a palavra drafting pode ser traduzida como desenho técnico que representa a utilização de vistas em duas dimensões (2D) para representar um objeto tridimensional (3D). Dessa forma, esse sistema CAD está limitado a realizar somente representações bidimensionais, criando vistas em 2D para a representação de geometrias tridimensionais. Os sistemas CAD podem possuir integração com os sotfwares CAM, um sistema que é empregado na criação de programas para operação de máquinas CNC. E por fim, os Comandos Numéricos Computadorizados, que são comandos ou instruções de controle de máquinas de corte, de fresamento, usinagem, entre outras, ou seja, qualquer máquina que trabalhe sobre eixos de coordenadas cartesianas [Souza e Ulbrich, 2009]. Dentro da área industrial, há no mercado uma baixa variedade de fornecedores de softwares ou ferramentas que realizam a integração entre sistemas CAD (nível conceitual) e motores de corte (nível físico), além disso, as soluções disponíveis tem alto custo associado. Segundo [Bastianik e Dias Romeu,2006], há algumas ferramentas, como VModel, SE Drawing e DWG DXF Convert 1.0 que integram de alguma forma CAD aos motores de corte. Das ferramentas encontradas, nenhuma apresenta uma solução adequada, ou por apresentar licença cara, ou por não fornecer código fonte para possíveis adaptações, ou por ser instável quanto à integração desejada. 1. Desenvolvimento Software CAD tem como padrão o formato de arquivo DWG, onde é possível salvar os projetos 3D no formato 2D. Além disso, há o formato DXF, que é um formato de leitura 126 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 textual, ou seja, mais próximo de formatos como XML ou TXT, passíveis de interpretadores e/ou compiladores. Dessa forma, busca-se uma alternativa para que uma máquina de corte, por meio de CNC, possa realizar a construção (corte) de peças projetadas em CAD. Sendo assim, surge o objetivo geral do trabalho, que é projetar uma solução computacional que realize a integração entre os desenhos produzidos no CAD e os motores de corte. E para que isso se concretize, busca-se: realizar estudo sobre os processos e ferramentas existentes na área de desenho industrial; pesquisar sobre formatos de arquivos CAD e CAM, e provável interpretação; pesquisar e testar integração de software CAM com CNC; realizar estudo sobre interpretação e compilação, bem como técnicas de construção de interpretadores e compiladores; modelar e projetar uma solução de integração; implementar e avaliação a proposta construída. No trabalho proposto, a máquina que será utilizada como referência é conhecida como máquina de corte, que tem como objetivo realizar cortes em chapas metálicas, geralmente em indústrias metalúrgicas, na manufatura de componentes para equipamentos de pequeno à grande porte. Essa máquina tem como principais componentes a mesa de trabalho, eixo-árvore, motores de acionamento e respectivos controladores [Tecnopampa, 2013]. 3. Considerações Com esta investigação, pretende-se projetar uma solução mais acessível de integração entre sistemas CAD (nível conceitual) e motores de corte (nível físico). Referências Bastianik, Mirella Silene; Dias Romeu Marcelo Hugo (2006) “Desenvolvimento de uma Ferramenta para visualização e conversão de arquivos DXF e VRML”. Monografia (Conclusão de Curso em Ciência da Computação) – Centro Universitário Eurípides de Marília, Fundação de Ensino Eurípides Soares da Rocha, Marília. Souza, Adriano Fagali de; Ulbrich, Cristiane Brasil Lima (2009) “Engenharia integrada por computador e sistemas: CAD/CAM/CNC”. São Paulo, SP: Artliber, 332 p. Santos, João (2011) “AutoCAD 2012 & 2011: guia de consulta rápida”. Lisboa: FCA, 554 p. Tecnopampa (2013) “Industria de Maquinas LTDA” Disponível http://www.tecnopampa.com.br/#!tecnocut/c8tx. Acessado em 03/09/2013 em Fialho, Arivelto Bustamante (2008) “Solidworks: office premium 2008: teoria e prática no desenvolvimento de produtos industriais - plataforma para projetos CAD”. São Paulo, SP: Érica, 560 p. 127 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Sistema de Recomendação para Controle da Diabetes Rodrigo Rath1, Lucas de S. Teixeira2, Sylvio A. G. Vieira1 Alexandre de O. Zamberlan1 1 Curso de Sistemas de Informação – Centro Universitário Franciscano Santa Maria – RS – Brasil 2 Curso de Educação Física – FAMES Santa Maria – RS – Brasil [email protected], [email protected], {sylvio, alexz}@unifra.br Resumo. Este artigo apresenta uma proposta de um sistema de informação com técnicas de mineração de dados para o controle diário da diabetes. O software em questão, a partir de uma base de dados de alimentos consumidos, qualidade de sono, tipo e quantidade de atividade física, encontra padrões de boas combinações (alimentos e exercícios, por exemplo) e recomenda variações de alimentação e atividades físicas. 1. Introdução Segundo a Sociedade Brasileira de Diabetes [SBD, 2013], a diabetes mellitus, ou simplesmente diabetes, está associada a doenças metabólicas em que pessoas possuem níveis elevados de glicose no sangue, pelo fato do pâncreas não produzir suficientemente insulina, ou as células do corpo não responderem à insulina que é produzida. A doença, quando não tratada corretamente, pode gerar complicações cardíacas, cerebrais, renais, problemas na visão, entre outras. De acordo com o Portal da Saúde do Governo Federal Brasileiro [PS, 2013], “diabetes está se tornando a epidemia do século e já afeta cerca de 246 milhões de pessoas em todo o mundo. Até 2025, a previsão é de que esse número chegue a 380 milhões”. No Brasil, a ocorrência média de diabetes na população adulta é de 5,2%, o que representa quase 6,4 milhões de pessoas. A prevalência aumenta com a idade, isto é, o diabetes atinge 18,6% da população com idade superior a 65 anos [PS, 2013]. Conforme a [SBD, 2013] e a [ADA, 2013], o tratamento é baseado em conceitos básicos, como: conscientização do paciente; alimentação adequada para cada tipo de diabetes e para o perfil do paciente; vida ativa; uso de medicamentos; monitoração constante e regular dos níveis de glicose. Portanto, surge um desafio, qual a melhor combinação de tipo e quantidade de exercícios físicos mínimos, ingestão alimentar ideal máxima, quantidade mínima ideal de medicamentos para se ter um controle da diabetes. Dessa forma, propõe-se o uso de descoberta de conhecimento por meio de técnicas de mineração de dados em um sistema de informação que se comporte como um sistema de aconselhamento ou recomendação, a fim de indicar ou sugerir tipos e quantidades de atividades físicas, tipos e quantidades de alimentos, por exemplo, ao paciente para o melhor controle da doença. 128 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Segundo [Tan, et al., 2009], Mineração de Dados é uma etapa, tida como a mais importante, do processo de Descoberta do Conhecimento em Banco de Dados. Todos os autores da área defendem que a mineração de dados é o processo de extrair informações válidas, antes desconhecidas, de grandes bases de dados, auxiliando no processo de tomada de decisão. Os mesmos autores afirmam que a mineração de dados apóia o conhecimento indutivo, descobrindo novas regras e padrões nos dados minerados. Em [Carvalho 2005] e [Tan, et al., 2009], os objetivos da mineração de dados são a predição (capacidade de realizar previsões a partir de uma fonte de dados) e a descrição (capacidade de encontrar padrões nos dados armazenados). 2. Desenvolvimento O objetivo desta investigação é projetar e implementar um sistema informatizado de recomendação, tendo como fluxo: registro de dados de pacientes (glicose, insulina, quilocalorias, carboidratos, qualidade sono, atividades físicas); aplicação de técnicas mineração de dados (base de dados previamente preparada); extração de padrões de boas combinações (alimentação, exercícios, medicação, etc); novamente registro de dados de pacientes; recomendação ou aconselhamento a partir dos dados registrados e dos padrões encontrados. Para que o objetivo seja alcançado, busca-se pesquisar, instalar, testar o ambiente WEKA, compilando definições e uso; pesquisar e compilar trabalhos correlacionados; projetar sistema de recomendação ao controle da diabetes; implementar e integrar o sistema de recomendação com o ambiente WEKA; realizar testes e avaliação de coeficientes de acerto obtidos. Finalmente, para a construção do sistema, algumas técnicas e tecnologias serão utilizadas: metodologia de desenvolvimento FDD; sistema de banco de dados PostgreSQL; linguagens de programação PHP e frameworks relacionados; ambiente de mineração de dados WEKA com os algoritmos de mineração.. 3. Considerações finais Com a pesquisa deste trabalho, busca-se contribuir com um sistema que auxilie diariamente o controle de níveis de glicose no sangue, otimizando a ingestão máxima ideal de alimentos e a quantidade minima ideal de exercícios. Referências bibliográficas ADA (2013) “American Diabetes Association”. http://www.diabetes.org. Agosto. Carvalho, Luís Alfredo Vidal de. (2005) “Datamining: a mineração de dados no marketing, medicina, economia, engenharia e administração”. Rio de Janeiro, RJ: Ciência Moderna, 225 p. PS (2013) “Portal da Saúde”. http://portal.saude.gov.br/portal/saude/. Agosto. SBD (2013) “Sociedade Brasileira de Diabetes”. http://www.diabetes.org.br. Agosto. Tan, Pang-Ning; Steinbach, Michael; Kumar, Vipin (2009). “Introdução ao datamining: mineração de dados”. Rio de Janeiro, RJ: Ciência Moderna, 900 p. 129 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 Sistema para Localização e Gerenciamento de Táxis Jones Rigue Franco¹, Reiner Franthesco Perozzo2 1 Sistemas de Informação - Centro Universitário Franciscano 97010-032 - Santa Maria - RS – Brasil 2 Ciência da Computação - Centro Universitário Franciscano 97010-032 - Santa Maria - RS – Brasil [email protected], [email protected] Resumo: A computação móvel vem ganhando um espaço considerável no desenvolvimento de aplicações que visam facilitar a vida das pessoas em suas atividades diárias. Com base nesse contexto, este trabalho propõe um sistema baseado em dispositivos de computação móvel para o rastreamento de veículos de uma frota de táxi. O objetivo consiste em oferecer maior qualidade e agilidade nos serviços de utilização de táxis, tanto do ponto de vista do passageiro quanto para os taxistas. O sistema está baseado em três aplicações: (i) Gerenciador web; (ii) Gerenciador taxista; (iii) Gerenciador passageiro. 1. Introdução A utilização dos serviços de táxis é cada vez mais frequente, por diversos motivos, que vão desde a falta de veículo por parte dos passageiros, necessidades eventuais ou, até mesmo, a comodidade e a relação custo versus benefício oferecido. Entretanto, algumas dificuldades relacionadas com a comunicação, a localização, a segurança de taxistas e de passageiros ainda persiste nos dias de hoje. Dentro desse cenário, uma estratégia que abrangesse os mais variados recursos tecnológicos da computação móvel poderia melhorar o atendimento, a agilidade e as atuais necessidades tanto de passageiros quanto de taxistas. O gerenciamento das chamadas de táxi é, atualmente, feito através de centrais telefônicas que recebem uma solicitação do passageiro, informando a sua localização. A partir dessa informação o atendente solicita, por um sistema de rádio táxi, o deslocamento de um veículo mais próximo para prestar o serviço [Táxi, 2013]. Entretanto, o passageiro pode não possuir qualquer tipo de informação sobre o táxi e o taxista em questão. Talvez, algumas informações prévias sobre o veículo e sobre o motorista, pudessem servir como base para a utilização, ou não, daquele táxi em questão. Esse poder de decisão, a priori, poderia aumentar a qualidade do serviço prestado, bem como aumentar a segurança e o conforto dos utilizadores desses serviços. 2. Proposta de Solução Diante disso, a proposta deste trabalho tem por objetivo criar um sistema para realizar a mediação entre o atendente da central e o passageiro, assim o passageiro não precisará mais ligar para a central e pedir o táxi ele poderá visualizar na tela do seu respectivo smartphone [Android, 2013], o mapa com os táxis que se encontram na sua área/perímetro. O mesmo poderá, também, realizar a filtragem através da definição de um perfil ao qual ele desejar como (tipo de carro, ar condicionado, cadeirinha de bebê, entre outras), visualizando as informações sobre o táxi e o taxista antes dele chegar até a 130 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 sua localização. O sistema possibilitara a partir dessa filtragem o usuário fazer a solicitação do táxi disponível que ele deseja, a partir dessa solicitação o taxista receberá um alerta de que há uma chamada, o mesmo poderá então visualizar a posição do usuário que fez a chamada e com isso decidir se fará ou não a corrida. A Figura 1 ilustra a visão geral do funcionamento do sistema. O sistema contara com uma parte Web onde serão cadastrados todas as informações referentes aos taxistas. Figura 1 - Sistema de Gerenciamento da Frota de Táxi. 3. Conclusão Este trabalho ressalta a importância da computação móvel, aplicada à localização, tendo como propósito principal auxiliar e agilizar a comunicação entre a central de atendimento de taxistas e o passageiro. Além disso, o aplicativo móvel possibilitará que os passageiros façam buscas de taxistas de sua preferência baseada no seu perfil, dando-lhes mais segurança e confiança por saberem previamente o perfil do taxista que foi chamado. Outro ponto interessante é que o sistema web permitirá saber exatamente onde cada taxista da sua frota se encontra através da localização [Geolocalização, 2013] do seu smartphone onde será mostrado no Google Maps [Maps, 2013] o mesmo, possibilitando um maior controle e segurança para os taxistas. Referências Android. Android. Disponível em: <http://www.android.com/about/>. Acessado em maio 2013. Geolocalização. O que é GeoLocalização. Disponível <http://www.tecmundo.com.br/o-que-e/3659-o-que-e-geolocalizacao-.htm>. Acessado em maio de 2013. em: Maps. Google Maps. Disponível em: <https://maps.google.com.br/>. Acessado em Junho de 2013. Táxi, Táxi. Disponível em: <http://pt.wikipedia.org/wiki/T%C3%A1xi>. Acessado em junho de 2013. 131 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 SmartACG - Um aplicativo smart para auxı́lio no gerenciamento das atividades complementares de graduação sob a visão do aluno. Rafhael R. Cunha1 , João Pablo Silva da Silva1 1 Universidade Federal do Pampa (UNIPAMPA) Alegrete – RS – Brasil Resumo. Esta resenha tem por finalidade propagar os passos relacionados até o presente momento para a elaboração de uma aplicativo Smart que funcionará sob a plataforma Android. Para isso, foi realizado estudos bibliográficos e coletas de opiniões com o intuito de construir funcionalidades que condigam com as expectativas do usuário. O proposito final do aplicativo é auxiliar no gerenciamento das atividades complementares de graduação (ACG), melhorando o processo atual sob a perspectiva dos alunos. 1. Introdução No contexto atual da Universidade Federal do Pampa (Unipampa), é estabelecido aos alunos como uma das etapas para a conclusão da graduação, realizar atividades que tem por objetivo complementar o conhecimento adquirido por estes no decorrer do curso. Essas atividades denominadas ACGs recebem um peso (horas) e devem ser comprovadas de forma individual. Atualmente, o processo é todo realizado de forma manual, sendo assim, posterior a abertura do prazo de aproveitamento de ACGs, o aluno solicitante deve realizar todos os trâmites de maneira ostensiva para conseguir indexar a ACG solicitada ao seu histórico escolar. Com base nesse cenário, foi proposto o desenvolvimento do SmartACG, um aplicativo smart para suporte ao controle das ACGs pelos alunos. A intensão da ferramenta é coletar dados sobre as ACGs em tempo de execução, para posterior classificação e solicitação de aproveitamento. Este aplicativo é caracterizado smart por cuidar do aproveitamento das ACGs no instante que o aluno está desatento participando dela, realizando assim uma tarefa inesperada mas que condiz com sua expectativa [Herczeg 2010]. 2. Desenvolvimento Para a efetivação do aplicativo pretendido, primeiramente se realizou uma revisão sistemática com o intuito de definir qual a melhor maneira de construção de um aplicativo smart. Com base nos trabalhos estudados, verificou-se que existe a propensão da utilização da plataforma Android para desenvolvimento desse tipo de aplicativo. Posteriormente, efetuou-se um estudo bibliográfico para compreender os conceitos relacionados a aplicativos smart e distinguir a forma pertinente para seu desenvolvimento assumindo como premissa as boas práticas da engenharia de software. Definiu-se que o aplicativo será desenvolvimento para funcionar na plataforma Android. Para isso, se utilizará o ambiente de desenvolvimento do próprio Android, que viabiliza bibliotecas de interface de programação do aplicativo e ferramentas de 132 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 desenvolvimento necessárias para construir, testar e depurar aplicativos para o Android [Android 2013]. Por recomendações da [Android 2013], preferiu-se a utilização do ambiente integrado de desenvolvimento (IDE) Eclipse, que segundo o [Lecheta 2009], é uma plataforma tecnológica de proposito geral que pode ser utilizada para programar em diferentes linguagens, alem da criação de IDEs personalizadas por muitos SDKs particulares. O eclipse em conjunto com o plugin chamado ADT, permite a criação de aplicativos para o Android. Depois de definido o ambiente de desenvolvimento, realizou-se uma pesquisa por meio de um formulário eletrônico com os alunos da Unipampa - campus Alegrete a fim de colher sugestões de funcionalidades que beneficiarão os alunos se utilizadas. A pesquisa ficou disponı́vel aos alunos no perı́odo de uma semana, entre 02/09/2013 à 09/09/2013, e obteve 41 respostas, sendo consideráveis 83%. Desses 83%, cerca de 60% respondeu que um sistema smart para eles deveria ter a possibilidade de fazer o cadastro das informações da atividade realizada para posterior submissão dessas a secretaria acadêmica e agregado a essa funcionalidade fosse também possı́vel anexar documentos comprovatórios nos casos que este é necessário. No presente momento, está se formulando a arquitetura do aplicativo smart que contemple a funcionalidade desejada e siga as boas práticas elucidadas na engenharia de software. Terminado a definição da arquitetura, o aplicativo vai ser construı́do utilizando as ferramentas escolhidas. Depois do término de sua implementação, se fará a validação dele com os discentes que responderam o formulário anteriormente, com o objetivo de averiguar se o aplicativo condiz com as suas expectativas e de fato ocasionou melhorias caraterizando smart, segundo [Crutzen 2006]. 3. Conclusões Após o término de disponibilidade do formulário de sugestões de funcionalidades que agregassem melhorias na forma de validar ACGs, ficou eminente que uma aplicação com este fim de fato se utilizada de forma adequada proporcionará agilidade no processo, simplificando os trâmites que hoje fazem-se necessários para o aproveitamento das ACGs. Com isso, o aluno que utilizar o aplicativo ganhará tempo para desempenhar outras atividades, alem de comodidade mobilidade em sua utilização visto que o aplicativo funcionará através de dispositivos móveis, podendo ser utilizado no local que lhe achar conveniente. References Android, G. (2013). Get the Android SDK. Disponivel em: http://developer. android.com/sdk/index.html. [Acesso em: 02 set.2013]. Crutzen, C. K. (2006). Invisibility and the meaning of ambient intelligence. International Review of Information Ethics, 6(12):52–62. Herczeg, M. (2010). The smart, the intelligent and the wise: roles and values of interactive technologies. In Proceedings of the First International Conference on Intelligent Interactive Technologies and Multimedia, pages 17–26. ACM. Lecheta, R. R. (2009). Google Android - Aprenda a criar aplicacoes para dispositivos Moveis com o Android SDK. Editora Novatec. 133 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 SOFTWARE PARA DESCRIPTOGRAFIA MÚLTIPLA DE DADOS E ANÁLISE SOBRE GPGPU Douglas Tybusch, Gustavo Stangherlin Cantarelli Sistemas de Informação - Centro Universitário Franciscano 97010-032 - Santa Maria - RS – Brasil [email protected], [email protected] Resumo: Este trabalho trata da implementação do algoritmo criptográfico AES (Advanced Encryption Standard) de forma paralelizada, utilizando a tecnologia OpenCL para a obtenção de maior velocidade no processo descriptográfico. Esta implementação tem como objetivo criar um comparativo de velocidade entre as capacidades de processamento de uma CPU (Central Processing Unit) e uma GPU (Graphical Processing Unit). Este comparativo se mostra necessário devido ao grande avanço nas tecnologias de processamento geral das ultimas gerações de GPU, como também ao aumento da utilização de criptografia e descriptografia na transferência e armazenamento de dados. 1. Introdução No passado, as ferramentas utilizadas para desenvolver softwares para GPUs eram muito específicas, limitando-se a renderização de gráficos. Em 2006 a desenvolvedora de chips Nvidia lançou com sua nova geração de placas de vídeo, o CUDA (Compute Unified Architecture), uma arquitetura de computação unificada, como uma extensão para a linguagem C, onde permitia a “conversão” de programas single-thread em programas paralelos a serem executadas em suas GPUs [LUKEN, OUYANG, e DESOKY, 2009]. O CUDA serviu de base para a criação de novas tecnologias, como o OpenCL. Com as crescentes demandas de transferências de dados, surge a necessidade de armazenar dados de forma segura, e acessa-los de forma rápida. Embora o método de criptografia AES seja seguro e eficiente, a quantidade de dados a serem criptografados simultaneamente é grande e crescente, gerando tempos de resposta cada vez mais baixos [LUKEN, OUYANG, e DESOKY, 2009]. 2. Objetivos Este trabalho tem por objetivo desenvolver um sistema de descriptografia múltipla de dados de forma paralela, a fim de gerar um comparativo de performance entre o modo clássico de processamento via CPU com método de processamento paralelo através de GPGPU (Computação de Propósito Geral na Unidade de Processamento Gráfico), resultante da evolução de tecnologias como o OpenCL e últimas gerações de GPUs. 2.1 Objetivos específicos •Implementar e paralelizar o algoritmo AES para descriptografia de arquivos de um banco de dados; 134 XII Simpósio de Informática - SIRC 2013 ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013 •Efetuar testes de performance comparativos do algoritmo AES implementado tanto para processamento via CPU quanto via GPU; •Desenvolver um software de auxílio para controle do banco de dados e organização de testes de performance; 3. OpenCL e programação GPGPU OpenCL é um framework para desenvolvimento de programas de execução heterogênea, incluindo uma linguagem de programação baseada no C99, para o desenvolvimento de kernels, possuindo algumas diferenças e limitações, como a não utilização de recursão e ponteiros para funções, não declaração de campos de bits, entre outros [FARBER, 2013]. Para satisfazer as necessidades de computação paralela e utilização de kernels, a linguagem foi estendida com funções como sincronização, paralelização em vetores e operações, e maior estruturação na alocação de dados na memória, bem como funções para determinação de características arquitetônicas de um dispositivo, como capacidade de memória, quantidade de núcleos e threads deste dispositivo [FARBER, 2013]. 4. Padrão de Criptografia Avançada (AES) O AES é uma especificação para criptografia de dados eletrônicos estabelecido pelo National Institute of Standards and Technology (NIST) [NIST, 2001]. Criptografia é uma técnica para conversão de dados de sua forma original, para formatos ilegíveis, afim de proteger estes dados, e serem recuperadas apenas por detentores da chave criptográfica. O algoritmo Rijndael, publicado em 1998, foi selecionado como o algoritmo padrão pelo NIST em 2001. Este algoritmo permite a criptografia de informações de forma simétrica, utilizando a mesma chave para os processos de criptografia e descriptografia, e a utilização de blocos de dados de tamanho fixo de bits [NIST, 2001]. 5. Considerações finais Com o desenvolvimento deste projeto, espera-se criar uma análise sobre a implementação do algoritmo AES, e sua paralelização pelo OpenCL. Após a implementação dos aplicativos, espera-se a obtenção de informações comparativas e conclusivas a partir de testes de benchmark relativos a eficácia da paralelização deste algoritmo. Referências bibliográficas Luken, B. P.; Ouyang, M.; Desoky, A. H. (2009) “AES and DES Encryption with GPU”, 22nd International Conference on Parallel and Distributed Computing and Communication Systems, ISCA PDCCS, v., p.67-70. Farber, R (2013) ”Code Project. Part 2: OpenCL™ – Memory Spaces”, http://www.codeproject.com/Articles/122405/Part-2-OpenCL-Memory-Spaces, Junho. National Institute Of Standards And Technology (NIST) (2013) “ADVANCED ENCRYPTION STANDARD (AES)”, http://csrc.nist.gov/publications/fips/fips197/fips197.pdf, Julho. 135