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
Download

ISSN: 2175-0955 - Santa Maria, RS - Outubro, 2013