UNIVERSIDADE ANHEMBI MORUMBI ANDRESSA PEREIRA DE OLIVEIRA BRUNO NORONHA FRAGOMENI MILDREDH HARUE NOGUEIRA NAIME IOSIMUTA VICTOR HIGINO VASCONCELLOS SMARTCOMPRAS: DESENVOLVIMENTO DE UM APLICATIVO PARA CELULARES SMARTPHONE. São Paulo 2011 ANDRESSA PEREIRA DE OLIVEIRA BRUNO NORONHA FRAGOMENI MILDREDH HARUE NOGUEIRA NAIME IOSIMUTA VICTOR HIGINO VASCONCELLOS SMARTCOMPRAS: DESENVOLVIMENTO DE UM APLICATIVO PARA CELULARES SMARTPHONE. Trabalho de Conclusão Curso apresentado como exigência parcial para a obtenção do título de Bacharel em Ciência da Computação da Universidade Anhembi Morumbi. Orientador: Dr. Augusto Mendes Gomes Júnior São Paulo 2011 S644 Smartcompras: desenvolvimento de um aplicativo para celulares smartphone / Andressa Pereira de Oliveira [et. al.]. – 2011. 106f.: il.; 30 cm. Orientador: Augusto Mendes Gomes Júnior. Trabalho de Conclusão de Curso (Graduação em Ciência da Computação) – Universidade Anhembi Morumbi, São Paulo, 2011. Bibliografia: f.67-71. 1. Ciência da Computação. 2. Código de Barras. 3. Mineração de Dados. 4. Processamento de Imagens. 5. Software – Vendas. I. Título. CDD 004 ANDRESSA PEREIRA DE OLIVEIRA BRUNO NORONHA FRAGOMENI MILDREDH HARUE NOGUEIRA NAIME IOSIMUTA VICTOR HIGINO VASCONCELLOS SMARTCOMPRAS: DESENVOLVIMENTO DE UM APLICATIVO PARA CELULARES SMARTPHONE. Trabalho de Conclusão Curso apresentado como exigência parcial para a obtenção do título de Bacharel em Ciência da Computação da Universidade Anhembi Morumbi, sob a orientação do Dr. Augusto Mendes Gomes Júnior. Aprovado em ___________ Nome do orientador/titulação/IES ___________ Nome do convidado/ titulação/IES ___________ Nome do convidado/IES Dedicamos este trabalho aos nossos pais e irmãos que nos ajudaram em todos os momentos que precisamos. AGRADECIMENTOS Agradecemos à Deus pela vida, saúde e sabedoria nos fornecida. Agradecemos ao nosso orientador, Dr. Augusto Mendes, pelo suporte prestado e por todo o conhecimento compartilhado. Agradecemos as nossas famílias e amigos pela paciência e, acima de tudo, por estarem ao nosso lado quando precisamos. Agradecemos à cada integrante do grupo que, entre muitos problemas, souberam superar as diferenças e entregar o projeto com qualidade. “O verdadeiro ato da descoberta não consiste em descobrir novas terras, mas em enxergá-las com outros olhos!” Marcel Proust RESUMO Este trabalho apresenta como tema central o estudo do processamento de imagens e da mineração de dados, e tem como objetivo desenvolver um software de compras que utilize o Android como sistema operacional. Este software irá realizar a captura e o processamento de uma imagem de código de barras, e aplicar conceitos de mineração de dados, com o intuito de identificar os perfis dos clientes e oferecer produtos eventualmente adquiridos que possuam um menor custo no instante da compra. Compras realizadas pessoalmente em supermercados demandam tempo e desgaste físico, uma vez que é necessário colocar e retirar o produto do carrinho diversas vezes e ainda comparar preços de produtos adquiridos constantemente. Ao mesmo tempo em que a tecnologia para celulares cresce consideravelmente, disponibilizando maiores comodidades ao usuário. O objetivo deste trabalho é integrar duas áreas importantes para o mercado (tecnologia e marketing), oferecendo conforto e comodidade ao consumidor. O processamento de imagem engloba a transformação da imagem em uma imagem digital, tratamento da cor, melhoria e restauração, segmentação e representação, e por fim reconhecimento de objetos e padrões. E o código de barras será a imagem principal neste trabalho. A mineração de dados envolve análise, tratamento, modelagem, avaliação dos resultados obtidos e por fim a implementação da mineração. Dentre os diversos algoritmos utilizados na implementação da técnica de mineração de dados, Árvore de Decisão, Redes Neurais e Apriori. Palavras-Chaves: Mineração de dados, Processamento de Imagem, Código de barras, Android. ABSTRACT This work has as its central theme the study of image processing and data mining, and aims to develop shopping software that uses the Android operating system. This software will perform the capture and processing of a barcode image, and apply concepts of data mining, in order to identify customer profiles and offer products that may have accrued that have a lower cost at time of purchase. Purchases made in person at supermarkets demand time and physical stress, since it is necessary to insert and remove the product from the cart several times and also compare prices of products purchased constantly. At the same time the technology for mobile phones grows considerably, providing more facilities to the user. The objective is to integrate two important areas to the market (technology, marketing), offering comfort and convenience to the final consumer. The image processing includes transforming the image into a digital image, color treatment, improvement and restoration, segmentation and representation, and finally recognizing objects and patterns. And the bar code will be the main image in this work. Data mining involves analysis, processing, modeling, evaluation of results and finally the implementation of mining. Among the various algorithms used in implementing the data mining technique, we studied decision tree, neural networks and Apriori. Keywords: Data Mining, Digital Image Processing, Bar Code, Android. LISTA DE SIGLAS E ABRREVIAÇÕES API Application Programming Interface CRISP-DM Cross Industry Standard Process for Data Mining CRM Customer Relationship Management EAN European Article Numbering Association EDGE Enhanced Data-Rates for Global Evolution GPS Global Positioning System GSM Global System for Mobile IDC International Data Corporation ISBN International Standard Book Number ISSN International Standard Serial Number KDD Knowledge Discovery in Databases PDA Personal Digital Assistant RGB Red Green Blue SOAP Simple Object Access Protocol SD Secure Digital UML Unified Modeling Language UPC Universal Code Products URL Uniform Resource Locator ILUSTRAÇÕES Figura 1 - Etapas completas de processamento de imagem. ............................................... 20 Figura 2 – Etapas básicas de processamento de imagem ................................................... 21 Figura 3 – Cores RGB e escala de cinza a partir das cores RGB. ....................................... 22 Figura 4 - Exemplo de código de barras .............................................................................. 24 Figura 5 – Exemplo de código de barras UPC-A.................................................................. 26 Figura 6 – Exemplo de código de barras UPC–E ................................................................. 27 Figura 7 – Exemplo de código de barras EAN 13 ................................................................ 27 Figura 8 – Exemplo de código de barras EAN 8 .................................................................. 28 Figura 9 – Exemplo de código de barras do tipo ISBN ......................................................... 29 Figura 10 – Exemplo de código de barras do tipo ISSN. ...................................................... 29 Figura 11 – Antes e depois do processo de binarização de uma placa veicular ................... 32 Figura 12 - Antes e depois do processo de erosão de uma placa veicular. .......................... 32 Figura 13 - Antes e depois do processo de erosão de uma placa veicular ........................... 32 Figura 14 – Ciclo de vida do processo de mineração de dados ........................................... 35 Figura 15 – Fluxograma do processo KDD .......................................................................... 38 Figura 16 – Exemplo de árvore de decisão .......................................................................... 41 Figura 17 – Exemplo de redes neurais ................................................................................ 42 Figura 18 – Pseudocódigo do algoritmo Apriori.................................................................... 43 Figura 19 - Arquitetura do Sistema Android ......................................................................... 44 Figura 20 - Ciclo de vida de uma atividade .......................................................................... 46 Figura 21 - Diagrama Entidade-Relacionamento do software SmartCompras ..................... 50 Figura 22 - Diagrama de Caso de Uso do software SmartCompras ..................................... 52 Figura 23 - Diagrama de Classe do software SmartCompras .............................................. 54 Figura 24 – Arquitetura do sistema. ..................................................................................... 56 Figura 25 – Arquitetura da biblioteca ZXing ......................................................................... 59 Figura 26 – Informações inseridas no banco de dados através do aplicativo SmartCompras ............................................................................................................................................ 65 Figura 27 - Projeto do banco de dados do software SmartCompras .................................... 92 Figura 28 - Diagrama de Atividade - UC6 ............................................................................ 93 Figura 29 - Diagrama de Atividade – UC19.......................................................................... 94 Figura 30 - Diagrama de Atividade - UC22 .......................................................................... 95 Figura 31 - Diagrama de Atividade - UC26 .......................................................................... 96 Figura 32 - Diagrama de Atividade - UC31 .......................................................................... 97 Figura 33 - Diagrama de Seqüência- UC6 ........................................................................... 98 Figura 34 - Diagrama de Seqüência- UC19 ......................................................................... 99 Figura 35 - Diagrama de Seqüência- UC22 ....................................................................... 100 Figura 36 - Diagrama de Seqüência- UC26 ....................................................................... 101 Figura 37 - Diagrama de Seqüência- UC31 ....................................................................... 102 Figura 38 - Primeira tela de cadastro do SmartCompras ................................................... 104 Figura 39 - Segunda tela de cadastro do SmartCompras .................................................. 104 Figura 40 - Terceira e última tela de cadastro do SmartCompras ...................................... 105 Figura 41 - Tela de login do SmartCompras ...................................................................... 105 Figura 42 - Tela Principal do SmartCompras ..................................................................... 106 Figura 43 - Tela para digitar o código de barras................................................................. 106 Figura 44 - Tela de detalhe do produto .............................................................................. 106 Figura 45 - Tela do carrinho de compras ........................................................................... 107 Figura 46 - Tela para escolha da forma de pagamento ...................................................... 107 SUMÁRIO 1 INTRODUÇÃO ................................................................................................................. 16 1.1 OBJETIVO ..................................................................................................................... 16 1.2 JUSTIFICATIVA ............................................................................................................. 17 1.3 ABRANGÊNCIA ............................................................................................................. 17 1.4 ESTRUTURA DO TRABALHO....................................................................................... 18 2 PROCESSAMENTO DE IMAGEM ................................................................................... 19 2.1 DEFINIÇÃO ................................................................................................................... 19 2.1 CAPTURA DE IMAGEM E PROCESSAMENTO DA COR ............................................. 21 2.2 MELHORIA E RESTAURAÇÃO DA IMAGEM ................................................................ 22 2.3 SEGMENTAÇÃO E REPRESENTAÇÃO ....................................................................... 23 2.4 RECONHECIMENTO DO OBJETO E DE PADRÕES .................................................... 24 2.5 CÓDIGO DE BARRAS ................................................................................................... 24 2.5.1 Conceitos .................................................................................................................... 25 2.5.2 Padrões ...................................................................................................................... 26 2.5.3 Leitura de Código de Barras ....................................................................................... 29 2.6 APLICAÇÕES ................................................................................................................ 31 2.6.1 Reconhecimento de placa veicular.............................................................................. 31 3 MINERAÇÃO DE DADOS ................................................................................................ 33 3.1 FASES DA MINERAÇÃO DE DADOS ........................................................................... 33 3.2 ANÁLISE DESCRITIVA E ANÁLISE DE PROGNÓSTICOS .......................................... 36 3.3 BUSCA DE CONHECIMENTO ...................................................................................... 37 3.4 TÉCNICAS DE MINERAÇÃO DE DADOS ..................................................................... 38 3.5 TIPOS DE ALGORITMOS ............................................................................................. 40 3.5.1 Árvores de decisão ..................................................................................................... 40 3.5.2 Redes Neurais ............................................................................................................ 41 3.5.3 Apriori ......................................................................................................................... 42 4 ANDROID ......................................................................................................................... 44 5 MODELAGEM DO SISTEMA SMARTCOMPRAS............................................................ 47 5.1 LEVANTAMENTO DE REQUISITOS ............................................................................. 47 5.1.1 Requisitos Funcionais ................................................................................................. 47 5.1.2 Requisitos Não-Funcionais ......................................................................................... 48 5.2 MODELAGEM DO BANCO DE DADOS ........................................................................ 48 5.3 DIAGRAMA DE CASO DE USO .................................................................................... 49 5.4 DIAGRAMA DE CLASSE ............................................................................................... 53 6 DESENVOLVIMENTO DO SMARTCOMPRAS ................................................................ 55 6.1 ARQUITETURA DA SOLUÇÃO ..................................................................................... 55 6.2 CAPTURA E PROCESSAMENTO DO CÓDIGO DE BARRAS ...................................... 56 6.2.1 Captura do código de barras ....................................................................................... 57 6.2.2 Processamento do código de barras ........................................................................... 57 6.3 MINERAÇÃO DE DADOS .............................................................................................. 59 7 TESTES............................................................................................................................ 62 7.1 CONFIGURAÇÃO DE REDE ......................................................................................... 62 7.2 CAPTURA E PROCESSAMENTO DE IMAGEM ............................................................ 62 7.3 WEBSERVICE ............................................................................................................... 63 7.4 APRIORI ........................................................................................................................ 64 7.5 SISTEMA DE COMPRA................................................................................................. 64 8 CONCLUSÃO................................................................................................................... 66 8.1 TRABALHOS FUTUROS ............................................................................................... 67 APÊNDICE .......................................................................................................................... 73 A REQUISITOS FUNCIONAIS: ........................................................................................... 73 B DESCRIÇÃO FORMAL DOS CASOS DE USO ................................................................ 75 C PROJETO DO BANCO DE DADOS ................................................................................. 92 D DIAGRAMAS DE ATIVIDADES ........................................................................................ 93 E DIAGRAMA DE SEQUÊNCIA .......................................................................................... 98 F REQUISITOS DO CELULAR UTILIZADO NO TESTE: ................................................... 103 G TELAS DO SISTEMA ..................................................................................................... 104 16 1 INTRODUÇÃO Há 10 anos, eram poucas pessoas que utilizavam celulares. Já nos dias de hoje, esse recurso ganhou uma importância considerável. Segundo a IDC (International Data Corporation - 2011) o mercado de smartphone cresceu 79,7% no primeiro trimestre de 2011. Além do layout, as funcionalidades e aplicações que o celular possui, são requisitos muito avaliados no momento da compra. Pensando nisso, os desenvolvedores de softwares para smartphone seguem trabalhando com a idéia de tornar este equipamento essencial e necessário no dia a dia, sendo capaz de dispensar outros aparelhos de diversas funcionalidades. Atualmente os smartphones realizam tarefas de outros equipamentos, como por exemplo, os despertadores, o GPS(Global Positioning System), aparelhos de reprodução de música e vídeo, etc. Ainda assim, existem ramos pouco explorados, como por exemplo, o doméstico. Além da tecnologia, a área de compras também vem recebendo grande investimento. Seja de maneira virtual ou local, as lojas vem cada dia mais buscando inovações tecnológicas a fim de serem mais competitivas no mercado. Devido à concorrência acirrada, nem sempre é possível oferecer o melhor preço de determinados produtos, e gerar conforto e comodidade ao cliente pode ser um grande diferencial. Este trabalho desenvolve um software para auxiliar seus usuários no momento de realizar uma compra em supermercado, com o intuito de possibilitar conforto e economia de tempo ao usuário. 1.1 OBJETIVO O objetivo deste trabalho é a modelagem e o desenvolvimento de um software para smartphone que permita realizar compras em um supermercado. Para alcançar este objetivo alguns conceitos são estudados e/ou implementados como: a leitura e interpretação de código de barras, a conexão do software com o banco de dados do supermercado para a verificação de disponibilidade dos produtos desejados e a utilização dos conceitos de mineração de dados, para traçar o perfil do usuário de acordo com as compras realizadas. 17 1.2 JUSTIFICATIVA Atualmente, as maneiras mais comuns de se realizar uma compra são: à distância, através de um site ou por telefone, fisicamente, se deslocando ao mercado. Porém, analisando as alternativas, a segunda mostra-se desgastante ao usuário, uma vez que ele precisa adicionar os produtos ao carrinho, retirá-los para passar ao caixa, recolocá-los no carrinho e por fim coloca-los em seu carro, enquanto a primeira alternativa, por mais cômoda que seja, não permite que o cliente “toque” ou veja em tamanho real o produto desejado, não podendo avaliar informações que possuam na embalagem do mesmo. Segundo a Associação Brasileira de Automação Comercial (2011), existem empresas que estudam uma 3ª alternativa de compra, onde no carrinho de compras que o cliente está utilizando possui um PDA (Personal Digital Assistant - computador de bordo) que possuiria um mapa do mercado capaz de localizar todos os produtos do mercado e, além disso, no próprio carrinho o cliente pode scannear o código de barras e já empacotar os produtos. O Grupo Pão-de-Açúcar, juntamente com outras treze grandes redes de supermercado e empresas de tecnologia, trabalha em uma loja conceito no Shopping Iguatemi localizado na cidade de São Paulo. A possibilidade de integração de diferentes tecnologias, todas em uso e crescendo no mercado, proporciona a criação de um sistema que simplifique a rotina de compras realizadas, economizando tempo, uma vez que não será necessário colocar compras no carrinho, pegar filas, empacotar, etc, que possibilite oferecer aos clientes a funcionalidade de comparação de preço de produtos de mesma subcategoria e ainda promoções ou sugestões de produtos de acordo com as compras já realizadas, durante a realização de uma nova compra. 1.3 ABRANGÊNCIA Para a elaboração deste trabalho foi realizado um estudo sobre processamento de imagens, uma vez que é realizada a leitura de código de barras via celular, de forma a possibilitar o tratamento de imagens de códigos de barras. Também foi realizado um estudo sobre mineração de dados, em que é 18 traçado o perfil do cliente baseado em suas preferências, de acordo com suas compras. O banco de dados foi criado baseado no diagrama entidade-relacionamento. Através de uma rede é possível conectar-se com o banco do supermercado com o intuito de manipular e consultar dados desse banco. O trabalho não abrange cobrança de valores, apenas disponibiliza as formas de pagamento de acordo com os critérios do supermercado e abrange somente o desenvolvimento para celulares com tecnologia smartphone que possuam o Android versão 2.2 como Sistema Operacional. 1.4 ESTRUTURA DO TRABALHO Os capítulos 2, 3 e 4 consistem na revisão bibliográfica, onde o capítulo 2 aborda o conceito de processamento de imagens, além de sua utilização, o capítulo 3 aborda o conceito de mineração de dados e técnicas para executá-la e o 4 nos conceitos de código de barras. A partir do capítulo 5 o sistema SmartCompras começa a ser moldado. No capítulo 5 é realizada a modelagem do SmartCompras, e o 6 mostra como foi o sistema foi implementado. O capítulo 7 explica o ambiente utilizado para os testes, apresenta os resultados obtidos e por fim, o capítulo 8 finaliza o projeto com as conclusões da monografia e propõe sugestões de temas para trabalhos futuros. 19 2 PROCESSAMENTO DE IMAGEM O processamento de imagem é um conjunto de operações realizadas em uma imagem, que tem como objetivo melhorar a sua qualidade para que a interpretação dos dados e o reconhecimento dos objetos contidos nela sejam feitos de forma mais precisa (GONZALEZ; WOODS, 2008). Neste capítulo são abordados os principais conceitos e as diversas técnicas de processamento de imagem, com o intuito de alcançar o melhor resultado para o seu processamento. 2.1 DEFINIÇÃO A definição de imagem segundo o dicionário Michaellis é “Coleção de bits representando os pixels que caracterizam uma imagem na tela ou em uma impressora”. Gonzalez e Woods (2008) definem a imagem de maneira semelhante. A imagem é uma função bidimensional, em que a amplitude de uma determinada coordenada mostra a intensidade ou o nível de cinza naquele ponto da imagem, e é definida como uma imagem digital quando a mesma possuir um número finito de pixels. O processamento de imagem utiliza diversas técnicas para melhorar as informações visuais, o que tem ajudado na resolução de problemas, que mesmo sem relacionamento entre eles (problemas distintos), necessitam de melhorias visuais nas informações para análise e interpretação humana. No mundo tecnológico, a extração das informações contidas na imagem segue um procedimento base, em que são feitas operações com intuito de analisar objetos contidos na imagem, gerando assim, modelos matemáticos. Para realizar o processamento de uma imagem, é necessário convertê-la para uma imagem digital (representada por funções bidimensionais ou mais dimensões, em caso de coloridas e multiespectrais). Após essa conversão existem outras etapas para o processamento de imagem digital (figura 1), porém nem todos os algoritmos passam por todas as etapas. Desta forma, o processamento da imagem é dividido em 4 grupos, conforme ilustra a figura 2. Na figura 1 são exibidas etapas para o processamento da imagem, etapas essas que consistem nas captura da imagem (image acquisition), no aprimoramento 20 (image enhancement), na restauração (image restoration), no processamento da cor (color image processing), no processamento de ondas e multi-resolução (wavelets and multiresolution processing), na compressão (compression), no processamento morfológico (morphological processing), na segmentação (segmentation), na representação e descrição (representation & description) e por fim no reconhecimento do objeto (object recongnition). As informações utilizadas em cada uma dessas etapas são encontradas ou trocadas na base de conhecimento (knowledge base). Figura 1 - Etapas completas de processamento de imagem. Fonte: GONZALEZ e WOODS (2008) Para todos os passos de processamento de imagem é necessário a implementação de softwares, havendo necessidade de utilizar hardwares somente para captura e exibição das imagens, devido à velocidade de atuação. Os próximos tópicos detalham as etapas básicas para o processamento das imagens, sendo elas: - Captura da imagem e processamento da cor; - Melhoria e restauração da imagem; - Segmentação e representação; - Reconhecimento de objetos padrões. 21 Figura 2 – Etapas básicas de processamento de imagem. Fonte: O AUTOR (2011) 2.1 CAPTURA DE IMAGEM E PROCESSAMENTO DA COR Existem várias maneiras diferentes para capturar uma imagem, como por exemplo, câmeras de vídeos, scanners ou sensores dedicados (infravermelho, raiox, etc) (MUENZ, 2008) . Assumindo que a entrada seja feita através de uma câmera (que atualmente já possui um nível de sensibilidade muito alta), é necessário fazer uma conversão de sinal analógico para digital, em que a imagem digital é discretizada espacialmente (em coordenadas x e y) e em luminância (que são os níveis de cinza). As intensidades são indexadas em uma tabela de conversão chamada “Look-Up Table” (ROSA, 2008). Durante a conversão (para digital) é importante saber que essa digitalização precisa ser feita nos dois componentes da imagem: espacial e amplitude. Um processo conhecido como Amostragem (GONZALEZ; WOODS, 2008) define o componente espacial, nesse processo a imagem é representada em sua forma mais simples (função contínua e infinita), que se transforma em uma matriz finita de pixels (ou elementos picturais) com tamanhos iguais. Já o processo de amplitude (denominado quantização), a partir de uma função contínua de amplitude, define o nível discreto de cinza permitido para cada pixel, fazendo atribuições funcionais de valores de níveis de cinza para cada par de coordenadas distintas da função, transformando essa imagem em uma função bidimensional (2-D). A qualidade da imagem original com aproximação pela matriz depende da quantidade de amostras e níveis de cinza que foram utilizados no processo, quanto maiores esses números, melhor a qualidade. Caso haja necessidade de manter pequenos os números de níveis de cinza, pode-se utilizar a técnica de espaçamento 22 irregular (BERTHOUD, 2004), distribuindo esses níveis em espaços que variam de estreitos a muito grandes. Há ainda a possibilidade de existir grandes níveis de cinza em uma escala, e pequenos em outras. Nesse caso, o procedimento ideal é espaçar de maneira suave onde há maiores níveis e, sem suavidade nos menores. No modelo de cor RGB (Red, Green e Blue), um dos mais simples e freqüentemente utilizado, todas as cores são representadas a partir da mistura das três cores primárias, porém, nem todas as cores possíveis pelo sistema RGB são identificadas pelos olhos humanos, sendo que geralmente essas cores são utilizadas apenas em computadores. A conversão em escala de cinza nesse modelo parte do princípio de que todos os bytes de cada pixel precisam ter o mesmo valor. Portanto, para realizar essa conversão é necessário percorrer toda a imagem pixel a pixel, alterando seus respectivos valores para que todos fiquem com seus valores iguais. Uma opção para realizar essa conversão, é obter o valor RGB atual, calcular sua média aritmética e repassar o valor obtido ao R, ao G e ao B do pixel atual, realizando esse processo nos demais pixels. A figura 3 mostra uma imagem em RGB e em escala de cinza. Figura 3 – Cores RGB e escala de cinza a partir das cores RGB. Fonte: O AUTOR (2011) 2.2 MELHORIA E RESTAURAÇÃO DA IMAGEM Após a captura/conversão da imagem são necessárias algumas correções para que, posteriormente, o algoritmo possa interpretá-la de forma mais eficaz. Estas correções podem ser feitas através de filtros e são denominadas melhoria da imagem. Porém, esta melhoria é muito subjetiva, cabendo ao observador dizer se o resultado está satisfatório, tendo então a restauração da imagem. Este passo é fundamentado principalmente em funções e métodos matemáticos (estatística). Para este passo, existem várias técnicas (GONZALEZ; WOODS, 2008), como 23 por exemplo: • A filtragem inversa em que uma estimativa da imagem restaurada é encontrada pela divisão da imagem degradada e da estimativa da função de degradação; • A filtragem de Wiener minimiza a diferença entre a imagem inicial e a restaurada, considerando também os ruídos, ou seja, é como a filtragem inversa que também trata ruídos; • A transformação geométrica em que os pixels são alterados espacialmente para distorcer as imagens e etc. 2.3 SEGMENTAÇÃO E REPRESENTAÇÃO A segmentação é a primeira fase do processamento, se considerar a informação que é necessária extrair da imagem, e por mais fácil que pareça para um ser humano, é talvez a fase mais complexa para o computador. Nesta fase são identificados os objetos (dividindo a imagem de acordo com o agrupamento de pixels), possibilitando definir regiões de interesse para análise, e para isso é importante saber o tipo de imagem que será segmentada e ter em mente o nível de detalhe, pois sem essas informações o processo se torna mais complexo, uma vez que não existe uma técnica específica para isso e sim técnicas que dependem de uma série de fatores (ALBURQUERQUE, 2000). Há os seguintes exemplos de implementação: • Detecção de descontinuidade: tenta identificar as bordas da imagem, normalmente aplica a técnica gradiente, na qual intensifica as tonalidades tentando aproximar-se ao máximo de uma imagem binária; • Técnicas de limiar: parte do pressuposto que pixels com as mesmas características pertencem à mesma região; • Métodos baseados em regiões: partindo de um pixel (chamado semente), ele é comparado com seus vizinhos, agrupando-os por região. Analisando o código de barras da figura 4, pode-se concluir que ele pode ser segmentado em duas regiões: o fundo da imagem (parte branca) e o das listras (parte preta). 24 Figura 4 - Exemplo de código de barras. Fonte: ERDEI (1994) Após o resultado da segmentação é realizado a parametrização, em que se identifica e cria os parâmetros e depois faz a representação, ou seja, o resultado da segmentação é agrupado, podendo gerar uma nova representação (dependendo da necessidade). 2.4 RECONHECIMENTO DO OBJETO E DE PADRÕES Os últimos passos para o processamento da imagem são: fazer o reconhecimento do objeto e do padrão, ou seja, interpretar a informação contida na imagem de acordo com uma base de dados anteriormente definida, lhe fornecer uma identificação e extrair um padrão entre elas. Depois de a imagem estar segmentada e devidamente pré-classificada entre o que é fundo e o que é objeto, deve-se aplicar um algoritmo que seja capaz de reconhecer todas as características do objeto (área, perímetro, posição na imagem, número de furos e etc.). Existem diversos métodos para reconhecimento de padrão, como por exemplo, utilização de redes neurais, abordagem sintática, abordagem estatística, cabendo na hora de aplicá-la, saber escolher a mais eficaz (CONCI, MONTEIRO, 2004). 2.5 CÓDIGO DE BARRAS “O código de barras é um símbolo composto de barras paralelas de larguras e espaçamentos variados” (GROSSMANN, ZYNGIER, 1991) que armazenam informações (ERDEI, 1994). O código de barras surgiu devido à necessidade de identificação dos produtos de maneira automatizada, ou seja, a quantidade de produtos crescia 25 exponencialmente e os mercados/indústrias precisavam de um número único de identificação para cada um deles. Inicialmente existiam duas possibilidades, o código magnético e o código de barras. Embora o código magnético fosse praticamente imune a cópias, era muito caro de se implementar devido a materiais especiais e necessitava um contato físico entre a máquina e o produto, diferentemente do código de barras (mais utilizado) que é mais simples, com menor custo em sua fabricação e fácil de realizar sua leitura (GROSSMANN, ZYNGIER, 1991). O primeiro país a utilizar o código de barras foi os Estados Unidos da America e utilizava o padrão UPC (Universal Code Products - mais detalhes na seção 2.5.2). Segundo o site Linha Base (2010), existem dois tipos de código de barras, os numéricos e os alfanuméricos, sendo que as características de um código de barras podem aparecer em diversos padrões. 2.5.1 Conceitos Para analisar um código de barras, alguns conceitos são fundamentais. Suas definições são: a. Barras: é responsável por absorver a luz do scanner. Geralmente possui a cor preta e seu tamanho varia de um a vários módulos; b. Caractere Inicial: é o caractere que indica o inicio do código; c. Caractere Final: é o caractere que indica o fim do código; d. Dígito: cada um dos caracteres representados por barras e espaços, podendo ser, numéricos ou alfanuméricos; e. Espaço: é responsável por refletir a luz do scanner, geralmente possui a cor da embalagem e seu tamanho varia de um a vários módulos; f. Fator de Magnitude (FM): é responsável por aumentar (em até 200%) ou diminuir (em até 80%) o código de barras, a partir da dimensão inicial do código; g. Módulos: é o elemento mais estreito do código de barras, independentemente de ser um espaço ou uma barra, onde todos os outros caracteres têm tamanho múltiplo ao modulo, como por exemplo, a zona muda e outros elementos do código de barra; h. Separadores: caractere auxiliar que permite a identificação das extremidades do código, bem como do sentido da leitura, permite também separar as zonas do código de barras e são formados por barras e espaços; 26 i. Sinais de enquadramento: são as marcas que delimitam a área do código de barra; j. Zonas Mudas: são espaços antes do caractere inicial e após o caractere final, com tamanho de, no mínimo, 10 módulos (caso seja menor, o scanner não o consegue ler) que possibilitam a leitura do código juntamente com o padrão escolhido. 2.5.2 Padrões Existem diversos padrões de código de barras, mas são abordados abaixo somente os principais existentes, com maior ênfase no EAN 13 (European Article Number). Os padrões são: a) UPC (Universal Product Code) – Criado pelos Estados Unidos e possui duas versões (ERDEI, 1994), sendo que a UPC-A possui doze (12) caracteres numéricos que são representados por 2 espaços e 2 barras. A figura 5 ilustra um exemplo de código de barras no padrão UPC-A. Figura 5 – Exemplo de código de barras UPC-A. Fonte: ERDEI (1994) Analisando a figura 5, os números do código de barra UPC-A são subdivididos em 4 grandes grupos, sendo eles: A – Categoria do produto; B – Identificação do fabricante do produto; C – Identificação do produto; D – Digito de verificação. E a versão UPC – E (figura 6) é um código reduzido que consiste em retirar, seguindo 1 dos 4 modelos, os números 0 (zero) considerando 2 (dois) atributos – número do fabricante e número do produto. 1º modelo: Caso, no código UPC-A, o número do fabricante termine em 000, 100 ou 200, o UPC-E terá os 2 primeiros números do fabricantes, os 3 últimos 27 números do produto, seguido pelo terceiro número do fabricante. 2º modelo: Caso, no código UPC-A, o número do fabricante termine em 00, precedido de um número entre 3 e 9, o UPC-E terá os 3 primeiros números do fabricantes, os 2 últimos números do produto, seguido do número 3. 3º modelo: Caso, no código UPC-A, o número do fabricante termine em 0 e não atende nenhum dos requisitos dos 2 modelos apresentados anteriormente, o UPC-E terá os 4 primeiros números do fabricantes, o último número do produto, seguido do número 4. 4º modelo: Caso, no código UPC-A, o número do fabricante não termine em 0, o UPC-E terá todos os números do fabricantes e o último número do produto, seguido do número 4. Figura 6 – Exemplo de código de barras UPC–E. Fonte: ERDEI (1994) b) EAN (European Article Numbering Association) - Criado para utilização no mercado europeu é também muito utilizado no Brasil (GROSSMANN, ZYNGIER, 1991). Assim como o UPC, possui duas versões, sendo elas a EAN 13 utilizada no mundo inteiro (exceto pelos Estados Unidos e Canadá), possui 13 dígitos e 30 barras e 29 espaços que codificam a informação (ERDEI, 1994), conforme ilustrado pela figura 7. Figura 7 – Exemplo de código de barras EAN 13. Fonte: ERDEI (1994) 28 Analisando a figura 7, os números do código de barra EAN 13 são subdivididos em 4 grandes grupos (GROSSMANN, ZYNGIER, 1991), sendo eles: -Número do país: os três primeiros dígitos – (BRASIL = 789); -Identificação do fabricante do produto: este número pode variar de 4 a 5 dígitos, dependendo da quantidade de produtos que a empresa possui; -Identificação do produto: assim como a quantidade de dígitos do fabricante, a identificação do produto também varia de 4 a 5 dígitos; -Dígito de verificação: o último dígito que consiste em conferir se o leitor efetuou uma leitura corretamente. A seguir está o passo a passo de como criar o dígito verificador ou conferir se a leitura foi feita corretamente (GROSSMANN, ZYNGIER, 1991): Passo 1 - Enumerar de 1 a 13 os dígitos do código de barras (iniciando do código verificador terminando no primeiro dígito do país). Passo 2 – Somar todos os valores dos dígitos ímpares a partir do terceiro dígito. Passo 3 – Somar todos os valores dos dígitos pares e multiplicar por 3. Passo 4 – Somar o resultado do passo 2 e do passo 3. Passo 5 - O dígito verificador será o menor número encontrado que, somado ao resultado do passo 4, se iguala a um número múltiplo de 10. E a versão EAN 8: Possui 8 dígitos e é utilizado somente em embalagens pequenas, ele é a forma reduzida do código EAN 13, conforme representado pela figura 8. Figura 8 – Exemplo de código de barras EAN 8. Fonte: ERDEI (1994) c) Codificação internacional de livros e revistas – Ainda existem outros 2 tipos de códigos de barras que são os de Livros (ISBN – International Standard Book Number) e o de revistas (ISSN – International Standard Serial Number ), que devido a um acordo da ISBN e da ISSN eles utilizam o código EAN, porém a estrutura do código é diferente. No ISBN, o código de barras, ilustrado na figura 9, é constituído por (ERDEI, 29 1994): - Identificação ISBN (978 ou 979); - Número ISBN do livro; - Caractere de verificação. Figura 9 – Exemplo de código de barras do tipo ISBN. Fonte: GROSSMANN, ZYNGIER (1991) Já no ISSN o código de barras, ilustrado na figura 10, é constituído por: - Identificação ISSN (977); - Número ISSN da publicação; - Dígito extra; - Caractere de verificação. Figura 10 – Exemplo de código de barras do tipo ISSN. Fonte: REVISTA INFO (2010). 2.5.3 Leitura de Código de Barras Técnicas complexas para decodificar códigos de barras só eram utilizadas em computadores. Contudo, graças ao avanço tecnológico, atualmente é possível realizar essa decodificação em aparelhos móveis, desde que possuam qualidade no processamento câmera (é necessário uma imagem de boa qualidade) e grande espaço em memória, igualando-se a um computador. A captura de código de barras pode ser feita por um feixe de laser, ou por algoritmos de reconhecimento de imagens que são capturados através da câmera de um celular, desde que haja garantia de que não haverá interferência (problemas como sombras, falta de foco, imagens com excesso ou falta de iluminação, etc) na imagem. Independentemente da maneira que se captura a imagem do código de 30 barras, o seu processamento é similar, portanto, somente está explicado o processamento da imagem no item “Captura pela câmera do celular”. a) Captura pela câmera do celular O ideal para capturar um código de barras através de uma câmera de celular é utilizar códigos de barras impressos em uma área ampla e com pequena densidade de informações impressa. Em códigos com alta densidade de informação, cada uma das informações é armazenada em pequenos detalhes da imagem, tornando a captura mais complexa. O ideal que se tenha uma câmera de alta resolução e códigos de barras visivelmente grandes com pouca densidade de informação. Devido à grande probabilidade de ruídos nas imagens capturadas por uma câmera de um celular, é necessário aplicar técnicas de processamento digitais antes de se obter o código de barras. Dessa forma, a imagem é convertida em escala de cinza, seguindo o conceito de conversão de imagens em RGB. Além disso, é provável que o código de barras não esteja devidamente alinhado, por isso é necessário também detectar as bordas (caracterizadas por tons de cinza). O código resulta em grandes quantidades de pixels de bordas, indicando as direções perpendiculares à direção que deve ser percorrida para a leitura do código de barras. Assim, tornam-se simples identificar a direção da imagem. Uma vez que se obtiveram as direções da imagem é possível construir um histograma (maneira comum de se representar níveis de cinza) de direções, com o intuito de localizar a borda comum da imagem que corresponde as direções das barras do código. Para identificar as larguras das barras, é utilizada a direção obtida no histograma e uma constante, fazendo com que a imagem seja percorrida em linha reta, o que, finalmente, possibilita a leitura do código de barras e depois é feita a conta do código verificador para verificar se o código lido é o correto. b) Captura pelo scanner Existem inúmeros tipos de scanners diferentes e cada um possui um mecanismo próprio para fazer a captura do código de barras. Scanner é um instrumento capaz de emitir e receber um feixe de luz 31 vermelho. Ao iluminar (ou percorrer) toda a largura do código de barras e receber o feixe refletido, o decodificador é responsável por converter para um sinal elétrico digital, processá-lo, verificando se realmente o código de barras foi lido corretamente, e por fim transmiti-lo a um computador central. Dependendo do modelo do scanner, o decodificador pode ficar dentro do scanner ou em um circuito externo ao scanner (ERDEI, 1994). 2.6 APLICAÇÕES Existem inúmeras aplicações para o processamento de imagem digital. As principais áreas são: a. Reconhecimento de placa veicular; b. Reconhecimento de caracteres; c. Análise de cromossomos; d. Mapeamento de terrenos e superfícies; e. Detecção de faces e objetos; f. Sistemas de segurança; g. Monitoramento da poluição; h. Planejamento Urbano; i. Análise de clima e temperatura; j. Determinação do tipo k. Tomografia computadorizada; l. Ultrassonografia. O reconhecimento de placa tem um objetivo muito similar ao reconhecimento de código de barras, por isto, na seção 2.6.1 existe uma explicação mais detalhada de como a placa veicular é processada. Já o reconhecimento facial, abordado na seção 2.6.2, possui diversas técnicas e a escolha de qual aplicar depende do objetivo de implementação. 2.6.1 Reconhecimento de placa veicular. Inicialmente é feita a captura da placa veicular, sendo a segunda etapa o préprocessamento, onde é identificado a região da placa, e por fim a imagem resultante do pré-processamento é classificada, podendo então identificar os caracteres 32 presentes na placa veicular. Para isso, os seguintes conceitos são utilizados (CONCI, MONTEIRO, 2004): - Binarização (Limiarização): Consiste na transformação da placa veicular de tons de cinza para pixels preto e branco (figura 11). Para alguns autores, este processo consiste em retirar o plano de fundo da imagem. Figura 11 – Antes e depois do processo de binarização de uma placa veicular. Fonte: CONCI, MONTEIRO (2004) - Erosão: Consiste em reduzir de tamanho uma imagem, contanto que não perca as características geométricas importantes (figura 12) , com o intuito de facilitar o reconhecimento de um caractere que esteja “grudado” ou muito próximo a outro. (Problema comumente encontrado no reconhecimento de caracteres de uma placa veicular). Figura 12 - Antes e depois do processo de erosão de uma placa veicular. Fonte: CONCI, MONTEIRO (2004) - Segmentação dos caracteres: última fase do pré-processamento é a segmentação de caractere, ou seja, separar as letras e os números (figura 13). Figura 13 - Antes e depois do processo de erosão de uma placa veicular. Fonte: CONCI, MONTEIRO (2004) 33 3 MINERAÇÃO DE DADOS O grande avanço tecnológico tem gerado grande volume de dados, e conseqüentemente criado a necessidade de novas técnicas e ferramentas capazes de transformar grande número de dados em informações significativas e em conhecimento. Informações que possuem importância considerável para planejamento, gestão e tomada de decisões, não podem ser descobertas ou identificadas apenas com recursos de gerenciamento do banco de dados comum. Devido à necessidade de extração dessas informações surgiu à mineração de dados, também conhecido como Data Mining (NAVEGA, 2002). Na década de 80, empresas perceberam que não aproveitavam todas as informações que tinham de seus clientes. Com isso, decidiram extrair essas informações, com o intuito de definir perfis e padrões de clientes, tornando a empresa mais competitiva. Inicialmente os dados só eram extraídos, os conceitos de mineração de dados que existem atualmente foram desenvolvidos e amadurecidos ao longo dos anos (AMO, 2004). Tal amadurecimento torna fundamental o processo de mineração de dados em empresas que sabem aplicá-lo e que apliquem o conceito de CRM (Customer Relationship Management), pois conseguem um auxilio fundamental para tomada de decisões, aumentando a probabilidade de se obter sucesso (BRAGA, 2005). Mineração de dados é o nome dado ao processo de análise de objetos que visa encontrar padrões escondidos nos dados compreensíveis para pessoas e extrair informações sem conhecimento prévio de um banco de dados (AMORIM, 2006). O processo de mineração de dados é uma etapa do processo KDD (Knowledge Discovery in Databases – em português, Descoberta de Conhecimento em Base de dados), que, segundo Addrians e Zantinge (1996), permite a extração não trivial de conhecimento previamente desconhecido e potencialmente útil de um banco de dados. 3.1 FASES DA MINERAÇÃO DE DADOS Como dito anteriormente, a mineração de dados vai além de uma simples extração de dados. Atualmente dados tratados adequadamente são de grande 34 importância em propagandas específicas para um determinado público alvo. Uma vez traçado o perfil de clientes, torna-se mais fácil identificar em quais campanhas (de propaganda) melhor se encaixa o que aumenta a possibilidade de venda dos produtos desejados, uma vez que já se sabe a quem deve ser oferecido (NAVEGA, 2002). A especificação do que se deseja encontrar nos dados, como por exemplo, tipo de regularidade, categoria de padrões, ou até mesmo padrões que podem surpreender, é conhecida como tarefas. Já a especificação de métodos que garantem como descobrir padrões é conhecida como técnica de mineração de dados (NAVEGA, 2002). Existem diversas técnicas de mineração de dados, por isso, deve-se escolher a melhor para o problema a ser resolvido. Particularmente, cada problema possui uma determinada técnica, portanto, o sucesso de cada tarefa depende da intuição e experiência do analista que implementará a mineração de dados. A interpretação dos padrões descobertos, e a possibilidade de retorno aos outros processos é determinada na etapa final da mineração de dados, no pósprocessamento. A partir do objetivo proposto, analisam-se as informações obtidas na extração, identificando e apresentando as melhores (SFERRA, CORRÊA, 2001). Para a garantia da obtenção dos conhecimentos relevantes, é importante estabelecer metas bem definidas. A maioria desses métodos são baseados em técnicas de aprendizado de máquina, reconhecimento de padrões e estatísticas. Em 1996 três empresas especializadas no, até então imaturo, mercado de mineração de dados, criaram um modelo de processos genérico (figura 14), tendo como objetivo padronizar as etapas (ciclo de vida) do processo de mineração, nomeando o projeto como CRISP-DM (Cross Industry Standard Process for Data Mining) (SFERRA, CORRÊA, 2001). O ciclo de vida é compreendido pelas seguintes etapas: • Entendimento do Negócio (Business Understanding): Fase inicial que tem como foco, juntamente com o negócio, levantar quais são os objetivos, bem como requisitos do projeto. Uma vez entendido os objetivos, é definido o problema e projetado um plano inicial. • Seleção dos Dados (Data Understanding): A partir da coleção de dados, inicia a primeira captura de dados, buscando com que o time de projeto tenha um 35 primeiro contato com o banco de dados, a fim de identificar possíveis problemas de qualidade e detectar subconjuntos que se julgam interessantes para criar hipóteses. Figura 14 – Ciclo de vida do processo de mineração de dados. Fonte: SFERRA,CORRÊA (2001) • Limpeza (ou Preparação) dos Dados (Data Preparation): Fase de preparação dos dados, onde se tratam ruídos, dados estranhos ou inconsistentes, através de limpeza, transformação, integração e/ou formatação dos dados da etapa anterior. Ocasionalmente são desempenhadas diversas vezes e de maneira aleatória. É responsável também por preparar os dados para a ferramenta de modelagem. • Modelagem dos Dados (Modeling): Fase que aplica técnicas de modelagem sobre conjunto de dados anteriormente preparado, tendo seus parâmetros calibrados, para obter valores otimizados. Pode-se aplicar diversas técnicas de modelagem para o mesmo problema, sendo que algumas técnicas possuem requerimentos específicos na forma de dados, podendo então voltar para a etapa anterior. • Avaliação dos Dados (Evaluation): Nesta fase é avaliado o modelo gerado na fase de modelagem. Esta etapa visa garantir a qualidade do modelo e verificar se as expectativas da organização serão alcançadas e se alguma questão importante do negócio ainda não foi englobada. A decisão sobre a utilização dos resultados da mineração é obtida no fim desta fase e seus resultados podem ser mostrados de várias formas, desde que, possibilitem uma análise criteriosa, e a verificação da 36 necessidade de retorno a algum dos processos anteriores. • Execução (Deployment): Fase que define a implementação do projeto de mineração de dados. Podendo ser o analista que designará as ações que devem ser tomadas, baseando-se na visão do modelo, ou aplicando o modelo a diferentes conjuntos de dados. Existe, também, a possibilidade de o cliente poder realizar as etapas de execução, contanto que ele tenha compreendido as medidas que deverão ser tomadas para empregar os modelos criados. Essa fase não é a final do projeto, uma vez que o conhecimento gerado precisará de uma organização e deverá ser apresentado de maneira a dar a visibilidade desejada pelo cliente. 3.2 ANÁLISE DESCRITIVA E ANÁLISE DE PROGNÓSTICOS Análise descritiva é responsável por investigar os dados com o intuito de descrever fatos relevantes que não são de conhecimento dos usuários, validando o conhecimento encontrado. Segundo Cortes et al (2002) pode-se subdividi-la em dois processos: • Análise Prévia: visa percorrer uma base dados buscando identificar anomalias ou resultados raros, que ameaçam influenciar os resultados da mineração de dados. • Descobrimento: responsável por examinar uma base de dados buscando padrões até então não reconhecidos, ou seja, sem que exista uma idéia ou hipótese previamente estabelecida. A partir dos padrões encontrados na análise descritiva, a análise de prognósticos investiga os dados com o intuito de obter resultados, prognosticando o comportamento de um conjunto de dados. Pode ser dividida em três processos distintos: Estimação, Predição e Classificação. • Estimação: A partir de padrões já conhecidos é possível estimar valores. • Predição: Baseado em diversos valores prediz um comportamento futuro. • Classificação: A partir de características em comum, classifica os objetos em classes previamente definidas (seção 3.4) 37 3.3 BUSCA DE CONHECIMENTO Na abordagem de mineração de dados é descrito ao usuário como conduzir o processo de mineração de dados. Na abordagem denominada busca de conhecimento, o usuário tenta descobrir algo ainda desconhecido iniciando o processo de exploração dos dados (figura 15). O usuário pode ainda decidir se a abordagem do conhecimento será feita de forma direta, ou indireta, ambas descritas a seguir: • Direta: o usuário tem uma meta orientada, um valor prognosticado, uma classe a ser atribuída aos registros, ou um determinado relacionamento a ser explorado. Existe uma vaga idéia do que se busca, de acordo com os seguintes passos: - Identificar as fontes dos dados selecionados para a mineração; - Selecionar os dados necessários; - Preparar os dados para análise; - Construir e trinar o modelo computacional; - Avaliar o modelo computacional. • Indireta: sua meta não é definida, as ferramentas acabam sendo mais livres em sua aplicação sobre os dados, tendo como resultado esperado a descoberta de alguma estrutura significante nos dados. Os seguintes passos são aplicados na busca indireta: - Identificar as fontes dos dados; - Preparar os dados para análise; - Construir e trinar o modelo computacional; - Avaliar o modelo computacional; - Aplicar o modelo computacional no novo conjunto de dados; - Identificar potenciais objetivos para busca de conhecimentos direta; - Gerar novas hipóteses para teste. 38 Figura 15 – Fluxograma do processo KDD. Fonte: CÔRTES et al (2002). 3.4 TÉCNICAS DE MINERAÇÃO DE DADOS As técnicas de mineração de dados podem ser aplicadas em qualquer método da mineração de dados e existem diferentes maneiras de implementá-las. As cinco primeiras listadas a seguir tem um caráter mais genérico e uma visão mais global (CARVALHO, 2001), porém também existem outras técnicas, sendo algumas citadas neste trabalho. • Classificação: processo utilizado para encontrar um conjunto de características em um objeto, que descrevem e distinguem classes ou conceitos, podendo assim classificá-lo em classes previamente definidas. Existem dois processos para esta classificação, o da discriminação, onde se classifica de acordo com características especificas que todos possuam e o da caracterização, onde se classifica por sumarização, ou seja, por valores próximos. • Estimativa: determina um valor provável baseado em dados semelhantes ou previamente extraído. • Previsão: baseado em dados anteriores faz uma avaliação dos possíveis novos valores (determinação do futuro). • Análise de Agrupamento (Cluster): sempre que um objeto possuir similaridade com outro, ambos são agrupados em um determinado agrupamento (cluster). Uma vez criado este agrupamento (cluster) de objetos, é identificada uma classe, gerando aglomerações que descrevem dados. A análise de agrupamento (cluster) é uma técnica que tem como objetivo detectar a existência de diferentes grupos, em um determinado conjunto de dados, e caso existam, determina quais são esses grupos, não existindo, portanto, classes previamente definidas. 39 • Análise de Afinidade: técnica utilizada para descobrir elementos ou fatos que normalmente ocorrem simultaneamente, proporcionando a extração de regras. • Regras de associação: é representada pela expressão X → Y, onde X e Y são conjuntos de itens, tal que X é o antecedente da regra e Y é o conseqüente. Determina relações entre campos de um determinado banco de dados. • Modelos e Relacionamentos entre Variáveis: utiliza técnicas estatísticas como, por exemplo: regressão linear simples, múltiplas e modelos lineares por transformação, para verificação de relacionamentos funcionais. Esta técnica faz a associação de um item a uma ou diversas variáveis de predição de valores reais, consideradas independentes e exploratórias. • Modelo de dependência: existem dois níveis de modelo de dependência que descrevem dependências significativas entre variáveis: o estruturado, que especifica quais variáveis são localmente dependente, e o nível quantitativo, que utilizando escalas numéricas é capaz de especificar o grau de dependência. • Sumarização: esta técnica reduz o número de valores, a partir de agregações. A sumarização é principalmente utilizada no pré-processamento dos dados, quando são determinados valores inválidos por meio do cálculo de medidas estatísticas, no caso de variáveis quantitativas e variáveis categóricas. Porém, a sumarização também pode ser utilizada no momento de apresentar resultados, uma vez que o intuito da mineração é, também, poder apresentar os resultados de maneira fácil e prática. Freqüentemente utilizada em análises exploratórias de dados com geração automatizada de relatórios, que são responsáveis pela descrição de conjunto de dados. • Análise de Outliers (exceções): técnica utilizada para identificar os objetos que não seguem o padrão da maioria. Estes outliers (exceções) dependendo do objetivo podem ser descartados como ruído, ou pode ser o foco de outro processo (como contra fraudes). • Análise de padrões seqüenciais: utilizada para, uma vez que os dados estejam em seqüência, traçar a ordem cronológica dos acontecimentos. (Exemplo: <{casa}, {móveis}, {...} {televisão}>, ou seja a pessoa inicialmente comprou a casa, tempos depois, comprou móveis e por fim uma televisão). • Análise de Séries Temporais: tem por objetivo modelar o estado do processo, extraindo e registrando desvios e tendências no tempo. Quatro padrões 40 compõem as séries: variações cíclicas, tendência, variações irregulares e variações sazonais. Ela determina características seqüenciais, como por exemplo, dados com dependência no tempo. 3.5 TIPOS DE ALGORITMOS Dentre os diversos tipos de algoritmos utilizados para aplicar distintas técnicas de mineração de dados, pode-se destacar árvore de decisão (RUSSELL, NORVIG, 2004), redes neurais (HAYKIN, 2001) e Apriori (AMO, 2004). As seções a seguir detalham estes algoritmos. 3.5.1 Árvores de decisão Este algoritmo representa o aprendizado de máquina, baseado na abordagem de dividir-para-conquistar, sendo um algoritmo alternativo mais rápido de se construir. O seu funcionamento é recursivo, dividindo os dados (nomeados como ramo ou galho) com base nos valores dos campos de entrada (RUSSELL, NORVIG, 2004). O ramo inicial, denominado raiz, é subdividido em conjuntos (ramos filhos), com base em valores de um determinado campo de entrada. Os filhos também podem ser divididos em sub-ramos, que podem ser divididos novamente, e assim sucessivamente até não mais poderem ser divididos, denominando-os como galhos terminais ou folhas, e se encontram no nível mais baixo da árvore (SFERRA, CORRÊA, 2001). Uma árvore de decisão é também um fluxograma (figura 16), onde cada nó interno denota um teste em atributo e cada ramo representa o resultado do teste e por fim a folha representa a distribuição do registro. Na sua utilização recomenda-se treinar o método, usando diversas amostras de dados, até descobrir as melhores regras para a segmentação do conjunto dos dados. Outro ponto a ser estudado é a poda de árvores, que produz árvores menores, com precisão potencialmente melhor, não havendo garantia de que após a poda a estrutura torne-se simples. 41 Figura 16 – Exemplo de árvore de decisão. Fonte: FONSECA (1994) 3.5.2 Redes Neurais Este algoritmo se baseia em conceitos de organização e aprendizado do cérebro humano, ou seja, tentar elevar o nível do algoritmo de maneira a superar o cérebro humano (HAYKIN, 2001). Como este algoritmo visa oferecer métodos práticos para funções de aprendizado, compreendendo procedimentos computacionais que envolvem o desenvolvimento de estruturas matemáticas, e sua representação é dada por atributos contínuos, discretos ou por vetores. As redes neurais consistem na interconexão de um número simples de unidades de processamento (neurônios), e tem por objetivo realizar cálculos de determinadas funções matemáticas (funções de ativação). As duas principais estruturas são: o nó correspondente ao neurônio e o link que corresponde as conexões entre os neurônios que são dispostos em uma ou mais camadas interligadas por diversas conexões, que estão associadas a pesos de armazenamento de conhecimento (figura 17). Como vantagem apresenta robustez ao lidar com erros no conjunto de treinamento, o que possibilita alta tolerância aos dados com ruídos e, também, boa escalabilidade. Porém, necessita da definição de um grande número de parâmetros e de maior força computacional o que, diferente de regras, não é facilmente compreensível para pessoas. 42 Figura 17 – Exemplo de redes neurais. Fonte: BARBOSA et al(2002) 3.5.3 Apriori “O Apriori é um algoritmo que minera conjuntos de itens freqüentes para regras de associação booleanas” (PINOTI, 2002). Este algoritmo visa resolver o problema de Itemset freqüente, sendo que Itemset é o conjunto de itens numa única transação e a porcentagem com que o itemset aparece é denominado suporte (AMO, 2004). Para executar as 3 fases principais do algoritmo (geração, poda de candidatos e o cálculo do suporte) espera-se como entrada, o banco de dados e o nível mínimo de suporte definido/esperado e como saída os itemset freqüentes considerando as entradas (AMO, 2004). Em cada fase ocorre o seguinte: • Geração de candidatos: nesta fase, o algoritmo percorre as informações procurando candidatos para itemsets. • Poda de candidatos: nesta fase, o algoritmo filtra as informações da fase anterior, ou seja, um itemset que não apareceu no seu candidato anterior pode ser descartado, uma vez que ele pode não ser freqüente. • Cálculo de suporte: por fim, é calculada a freqüência com que o itemset aparece, ou seja, varre-se o banco de dados uma única vez, verificando todas as transições e conforme atenda o critério é adicionado 1 ao contador. Paras as 2 primeiras fases (geração e poda de candidatos) não é necessário a utilização de memória secundária, apenas a principal e portanto não existe a necessidade de percorrer o banco de dados todo, exceto quando a lista de itemsets é devidamente grande e não cabe na memória principal (AMO, 2004). 43 Fazendo uma análise do algoritmo da figura 18, a primeira etapa do algoritmo de Apriori conta quantas vezes cada produto apareceu em compras diferentes. Uma vez contabilizada a quantidade de cada item, o algoritmo armazena apenas os números considerados “freqüentes” (escolhe-se um parâmetro) e todos os pares de itens freqüentes possíveis são comparados, verificando se isso ocorre na mesma compra. Esse passo é repetido até que não tenha mais nenhuma combinação. Quando não existirem mais combinações, o algoritmo de Apriori seleciona a última seqüência que teve combinação. Figura 18 – Pseudocódigo do algoritmo Apriori. Fonte: PITONI (2002) 44 4 ANDROID O Android é um sistema operacional, específico para dispositivos móveis, baseado no kernel do Linux e desenvolvido pela Google, e hoje sendo gerenciado pela Open Handset Alliance (JANTSCHER ET al, 2009). Conforme ilustrado na figura 22, no nível mais baixo pode-se encontrar o Linux, no qual a maioria do gerenciamento é realizado, seguido pelo nível de bibliotecas nativas do Android, mesmo sendo escritas em C/C++, para executar um aplicativo é necessária uma máquina virtual (Dalvik Virtual Machine) que chama as interfaces Java. O próximo nível é composto pelo framework de aplicações disponibilizadas pelo Google, uma vez que as APIs (Application Programming Interface – Interface de Programação de Aplicativos) já estão disponibilizadas. Neste nível, também, contém o gerenciador de atividades, responsável pelos ciclos. Por fim, existe o nível da aplicação em si, onde os desenvolvedores podem disponibilizar suas aplicações, utilizando componentes da camada anterior (JANTSCHER ET al, 2009). Por questões de segurança, cada aplicativo recebe um ID e tem uma máquina virtual “exclusiva”. Figura 19 - Arquitetura do Sistema Android. Fonte: JANTSCHER et al (2009) Para o desenvolvimento de novos aplicativos para o Android é importante ter em mente que não são todas as classes das bibliotecas do JavaME e do JavaSE que executam, e são necessários os seguinte requisitos: 45 • Conhecimento em Java (mesmo que a máquina virtual seja a Dalvik VM o código é desenvolvido, preferencialmente, em Java); • SDK do Android ou, a plataforma sugerida, Eclipse IDE com Android Development Tools (ADT) plug-in. No momento da implementação do aplicativo no smartphone é necessário instalar, também, o arquivo de extensão “.apk” que contém outro arquivo chamado AndroidManifest.xml, que contém as informações básicas e necessárias (i.e. nome de classes) para a instalação do aplicativo (MARTINS, 2009). A interface com usuário é baseada no conceito de View (parte da tela – Widgets) e ViewGroup (disposição dos objetos). Para o Android existem 4 componentes básicos, sendo eles, atividades (todas as ações disponíveis para cada tela), serviços, provedores de conteúdo (possibilitam a troca de informações entre aplicativos) e receptores de broadcast (respondem a eventos). Para iniciar uma atividade, por exemplo, o objeto Intent deve ser utilizado (ele contém a ação a ser executada) (MARTINS, 2009). Uma atividade possui basicamente 4 estados, ilustrados na figura 23 e tem a sua comunicação realizada com um dos sete métodos listados. No método onCreate a atividade é iniciada e define a interface com o usuário, uma vez criada, a atividade passa pelos métodos onStart e onResume que é quando a atividade está executando. A atividade passa para o método onPause sempre que outra atividade é aberta. Caso o usuário opte por voltar a utilizar esta atividade, ela retornará para o método onResume e caso outra aplicação precise de memória o processo é encerrado (o sistema opta pela atividade que não está tendo mais interação com o usuário) e a atividade volta para o onCreate. Além dessas possibilidades, ainda no método onPause, a atividade pode não estar mais visível e portanto ir para o método onStop. Uma vez no estado onStop a atividade possui as mesmas opções que no onPause, com apenas duas diferenças que são, caso o usuário volte a utilizar a atividade, ela deve passar pelo método onRestart para depois voltar para o onStart e caso ela continue sem visibilidade ela é encaminhada para o método onDestroy que realmente finaliza a atividade. 46 Figura 20 - Ciclo de vida de uma atividade. Fonte: MARTINS(2009) 47 5 MODELAGEM DO SISTEMA SMARTCOMPRAS A modelagem do sistema SmartCompras é fundamental para o seu desenvolvimento. Este capítulo detalha a modelagem do sistema, definindo os requisitos e elaborando os diagramas através da linguagem UML (Unified Modeling Language) (BOOCH et al, 2005). 5.1 LEVANTAMENTO DE REQUISITOS Como uma das partes mais importantes da modelagem de um sistema, os requisitos funcionais e não funcionais devem ter claramente definidos tudo que o cliente espera do sistema. Para o sistema SmartCompras pode-se destacar como principais requisitos a funcionalidade de captar a imagem, processá-la, realizar uma compra e permitir que o cliente decida por ter o seu perfil traçado ou não. Nas seções 4.1.1 e 4.1.2 estão disponíveis todos os requisitos levantados para o sistema SmartCompras. 5.1.1 Requisitos Funcionais Os principais requisitos funcionais são listados a seguir, sendo o restante anexado no apêndice A. • RF7. O sistema deve ser capaz de ler e interpretar o código de barras do produto; • RF8. O sistema deve permitir que o usuário digite o código de barras; • RF11. O sistema deve mostrar na tela os dados do produto identificado pelo código de barras; • RF14. O sistema deve traçar o perfil do cliente de acordo com as compras já realizadas por ele; • RF16. O sistema deve permitir a finalização da compra; • RF18. O sistema deve perguntar ao usuário se ele permite traçar um perfil de suas compras; • RF19. O sistema deve permitir que o usuário escolha ou não manter no 48 seu carrinho os produtos comprados com maior freqüência; • RF20. O sistema deve encaminhar ao usuário os produtos compatíveis com seu perfil, caso o usuário deseje traçar o seu perfil; • RF21. O sistema deve imprimir na tela todos os produtos do carrinho com a quantidade e seus respectivos valores e pedir confirmação, quando o usuário decide concluir a compra; • RF26. O sistema deve enviar a lista de produto (produto, quantidade e valor), endereço do usuário e forma de pagamento para o sistema do mercado; • RF29. O sistema deve permitir que o administrador cancele uma compra finalizada. 5.1.2 Requisitos Não-Funcionais Os requisitos não-funcionais para o sistema SmartCompras são: • RFN1. O sistema deve executar em todos os dispositivos móveis que possuam como sistema operacional o Google Android versão 2.2, possuam câmera e conexão com a internet; • RFN2. O sistema deve ler o código de barras em, no máximo, 5 segundos; • RFN3. O sistema deve atualizar o banco de dados no dispositivo móvel em, no máximo, 5 minutos após o login do cliente; • RFN4. O sistema deve ter taxa de acerto quanto a leitura de código de barras igual a 80%; • RNF5. O sistema deve garantir a segurança dos dados do cliente; • RFN6. O sistema deve ter tempo de resposta entre as páginas inferior a 3 segundos considerando que a conexão tenha um bom sinal; • RFN7. O sistema não deve permitir que o usuário altere ou exclua a base de dados de produto. 5.2 MODELAGEM DO BANCO DE DADOS Para o sistema SmartCompras, foi utilizado uma modelagem de banco de dados relacional. Desta forma, dois fluxos foram desenhados, sendo eles: o modelo 49 conceitual e o projeto do banco de dados. O projeto do banco de dados pode ser encontrado no apêndice C, enquanto o modelo conceitual, diagrama de entidade e relacionamento (DER), está ilustrado na figura 19. O diagrama de atividade é apresentando no apêndice D, enquanto o de sequência E é apresentado no apêndice. 5.3 DIAGRAMA DE CASO DE USO Através do diagrama de Caso de Uso (figura 20) é possível descrever todas as funcionalidades do sistema. Para o sistema SmartCompras os principais casos de uso estão listados a seguir e as especificações formais de todos pode ser encontrado no apêndice B. UC 6 - Tirar foto do código de barras desejado Após o usuário logar-se no sistema, através de usuário e senha, o sistema deve abrir o software para captura de código de barras. O usuário deve capturar o código de barras desejado e, em seguida o sistema deve processá-lo e imprimir na tela as informações do produto. Caso o usuário não consiga capturar o código, ou deseje digitar o mesmo, o sistema deve abrir um campo para a digitação. Se o produto impresso não for o desejado, o usuário deve removê-lo do carrinho e refazer o processo. Caso o código de barras não esteja cadastrado no banco de dados do supermercado, é exibida uma mensagem “Produto não encontrado!” e caso o produto não esteja disponível no momento, o sistema exibe a mensagem “Produto indisponível”. Em ambas as situações (não cadastrado ou indisponível) o sistema volta ao começo do caso de uso. Um campo deve ser aberto para o usuário digitar a quantidade do produto desejado, essa quantidade é adicionada ao carrinho, e seus respectivos valores adicionados ao valor total. Caso o usuário não especifique a quantidade, o sistema trata a quantidade como uma unidade do produto. Se não houver disponível a quantidade desejada, o sistema exibe uma mensagem “Quantidade indisponível” e o usuário deve digitar uma nova quantidade, até digitar um valor disponível e válido. 50 Figura 21 - Diagrama Entidade-Relacionamento do software SmartCompras. Fonte: O AUTOR (2011) 51 UC 19 – Finalizar compra Com o usuário tendo ao menos um produto no carrinho, o sistema deve habilitar a opção de finalizar a compra. Quando o usuário desejar finalizar a compra, o sistema deve solicitar confirmação de finalização e, se o usuário não confirmar o sistema deve chamar o UC6 e cancelar a finalização de compra. Uma vez que o usuário confirme a finalização, o sistema deve chamar o UC20 que imprime todos os produtos do carrinho na tela e, se o usuário quiser excluir algum produto o sistema deve chamar o UC15 para a exclusão de produtos. Confirmado os produtos do pedido do usuário, o sistema deve chamar o UC21 que solicita confirmação do endereço de entrega, exibir o valor total do pedido e chamar o UC22 que solicita a forma de pagamento, assim que informado, deve informar o número do pedido ao usuário. Após isso, o sistema encaminhará todos os dados da compra para o supermercado e manterá o carrinho de produtos freqüente. UC 22 – Informar forma de pagamento Sempre que solicitada a finalização de uma compra, o sistema deve exibir as formas de pagamento disponíveis e solicitar a escolha de uma forma de pagamento. O usuário deve informar a forma de pagamento, e confirmar via solicitação do sistema. Após a confirmação o sistema chama o UC23 que encaminha os dados do pagamento ao supermercado. Caso o usuário não escolhe nenhuma das formas de pagamento, o sistema exibe a mensagem “Selecione uma forma de pagamento” e o usuário volta ao inicio desse fluxo. UC26 – Cancelar compra Com uma venda finalizada, o sistema deve solicitar o motivo do cancelamento, o gerente informa o motivo do cancelamento e o sistema solicita uma confirmação de cancelamento, o gerente confirma que deseja cancelar a venda. Caso o gerente não confirme ou não de um motivo para cancelamento, o sistema deverá exibir a mensagem “Cancelamento não efetuado! 52 Após a confirmação do cancelamento o sistema deve retirar os produtos do carrinho, cancelar a venda, e exibir a mensagem “Compra cancelada!”. UC 31 – Escolher se quer que trace seu perfil Um usuário devidamente logado no sistema, através de usuário e senha, é questionado pelo sistema se deseja traçar um perfil. Caso ele deseje traçar o perfil, o sistema chama o UC30 para traçar o perfil sempre que ele se logar e exibe a mensagem “Obrigado!”. Se a escolha for não traçar o perfil, o sistema exibe a mensagem “Perfil não traçado!”. Figura 22 - Diagrama de Caso de Uso do software SmartCompras. Fonte: O AUTOR (2011) 53 5.4 DIAGRAMA DE CLASSE Baseado nas funcionalidades do sistema, foi desenhado o diagrama de classe (figura 21), onde as principais classes são “Clientes”, “Pedido” e “Produtos”. A classe Cliente tem uma lista de endereços, telefones e logins associados a ela. A classe Produto possui uma marca e uma categoria/subcategoria associada. A classe Pedido tem um cliente, um status, uma forma de pagamento e uma lista de detalhes de produtos que relaciona a quantidade de produtos escolhida. E partindo destas classes, os seus atributos e métodos foram gerados. 54 Figura 23 - Diagrama de Classe do software SmartCompras. Fonte: O AUTOR (2011) 55 6 DESENVOLVIMENTO DO SMARTCOMPRAS O sistema SMARTCOMPRAS foi desenvolvido utilizando o paradigma de orientação a objetos e o sistema operacional Android na versão 2.2 ou superior. A leitura e a interpretação do código de barras foi implementada em Java, sendo que todas as classes também estão implementadas em Java (versão 6). A interface de comunicação entre o usuário e o dispositivo móvel é realizada através de arquivos XML. O banco de dados foi modelado através das ferramentas brModelo (construção do DER e do Projeto Lógico de Banco de Dados) e do Astah Comunity (construção dos diagramas de Classe, Uso, Atividade e Sequencia) e implementado com o MySQL (versão 5.2.34). Através da linguagem SQL o algoritmo Apriori foi implementado, tornando o seu funcionamento interno ao banco de dados. As próximas seções detalham o desenvolvimento do sistema SMARTCOMPRAS, detalhando a implementação o Apriori e da captura e processamento de imagem, bem como a arquitetura da solução implementada. 6.1 ARQUITETURA DA SOLUÇÃO O banco de dados do sistema foi desenvolvido em MySQL, porém o Android suporta apenas o SQLite (que funciona internamente no próprio celular). Com isso foi necessário desenvolver um WebService (abordado neste tópico) responsável por realizar a comunicação entre o banco de dados (MySQL) e o aplicativo disponível no smartphone (Android). O WebService é uma tecnologia que realiza a comunicação entre sistemas, podendo ser de diferentes plataformas e linguagens, utilizando um dos modelos (ou protocolos) existentes, (TANENBAUM & STEEN, 2011) sendo utilizado o SOAP neste trabalho. O SOAP (Simple Object Access Protocol) é um protocolo para ambientes descentralizados e distribuído, no qual, após receber uma mensagem a converte para XML, sendo que a troca de mensagem é realizada entre diferentes nós SOAP (SUDA, 2003). Conforme ilustrado na figura 24, o nó SOAP Servidor, implementado no WebService se comunica com o nó SOAP Cliente, implementado no Smartphone 56 Android. Para realizar esta comunicação os objetos devem ser serializados, ou seja, podem ser transferidos como parâmetros e depois montados novamente. Esta comunicação entre os nós utiliza a estrutura de requisição de documento, ou seja, toda a mensagem é enviada de uma única vez, não sendo necessário aguardar o relatório de confirmação para enviar a outra parte da mensagem. Para disponibilizar o WebService, foi utilizado dentro do projeto o servidor GlassFish, que é um servidor de aplicação desenvolvido pela SUN, responsável por fornecer um ambiente que possibilite executar um WebService ou uma aplicação web. O banco de dados MySQL e o WebService estão alocados em um mesmo servidor, e sua comunicação é feita utilizando uma classe responsável por informar a URL (Uniform Resource Locator) do servidor e através do plugin DriveManager é realizada a conexão com o banco de dados. A aplicação envia uma requisição, através da rede, (utilizando o conceito de mensagem SOAP) para o WebService, que busca a informação dentro do banco de dados e retornar toda a informação solicitada para a aplicação. Figura 24 – Arquitetura do sistema. Fonte: O AUTOR (2011). 6.2 CAPTURA E PROCESSAMENTO DO CÓDIGO DE BARRAS A captura e processamento de imagem é uma das partes mais difíceis de ser desenvolvida devido a grande gama de diferentes códigos de barra existentes e 57 devido ao fato de que quem irá manipular a captura da imagem é o usuário, sendo necessário implementar diferentes ângulos de leitura. Um ponto importante do Android é que ele possui diversas bibliotecas, como por exemplo a biblioteca Zxing (Zebra Crossing) que é responsável por fazer a captura e a interpretação de diferentes códigos de barras. O BarCode Scanner. Como ela não foi desenvolvida apenas para aplicativos Android, ela possui diversas classes e métodos que não são necessários implementar em um aplicativo Android. Neste trabalho foi desenvolvido a captura e processamento de código de barras, porém para o processamento do código de barras também foi utilizado à biblioteca Zxing. 6.2.1 Captura do código de barras A captura da imagem foi inicialmente projetada para realizar a captura utilizando o conceito normal de uma captura de foto, após o usuário apertar o botão a imagem é salva no cartão SD (Secure Digital). Porém, se a imagem não estiver com a qualidade mínima para ser processada, o usuário deveria tirar outra foto e, como isso poderia ocorrer com freqüência, o usuário poderia ficar descontente. Para evitar este problema foi estudado e implementado o stream de vídeo, no qual é aplicado, através do método onPreviewFrame() a funcionalidade de processar frame por frame o que estiver no stream, sem necessitar salvar a imagem. Esta solução inicialmente informa os parâmetros nos quais a câmera deve operar e, através do SurfaceHolder (classe do Android para trabalhar com a câmera) ativa o stream de vídeo, uma vez ativado, a imagem é processada conforme o que será explicado no item 6.2.2. 6.2.2 Processamento do código de barras Para realizar o processamento é necessário aplicar uma série de transformações na imagem, conforme abordado no capítulo 2 deste trabalho. O primeiro conceito implementado é a transformação para a escala de cinza, para depois detectar a borda. Os estudos para a detecção de borda foi focado em apenas um algoritmo, que obteve sucesso na implementação, por isso, para a detecção de borda foi 58 implementado o algoritmo do Operador de Sobel, que através da expressão: g(x,y) = X2 + Y2, onde o X é uma matriz da máscara resultante de variação no sentido horizontal e o Y no sentido vertical, é possível realçar as colunas do código de barras, descartando qualquer ruído na imagem. Uma vez descartado os ruídos, é necessário binarizar todos os pixels do vetor gerado. Isso é feito comparando o valor do pixel, ou seja, atribui-se 0 a posição do vetor do pixel lido caso o valor seja maior do que -128, senão atribui-se ao valor 1. Após fazer essas duas transformações, finaliza-se o Operador de Sobel com as margens de cada coluna, bastando apenas, decodificar o código de barra em si. Para esta decodificação, existe um algoritmo que inicia armazenando o valor do marcador de início e o marcador final. Uma vez reconhecido as duas extremidades do código, o algoritmo o separa em duas partes, a primeira responsável por identificar o primeiro dígito, enquanto a segunda armazena o restante do código. O primeiro dígito é a primeira parte a ser feita, pois dependendo do seu valor a decodificação do restante do código passa a ser diferente, ou seja, dependendo da paridade do primeiro dígito a interpretação dos próximos 6 dígitos podem ser distintas. Uma vez interpretado o primeiro dígito, automaticamente foi identificado os 6 números seguintes. Ao alcançar a parte intermediária do código de barras, a maneira de interpretar é diferente, passando por tanto a realizar outra verificação para identificar o código de barras. Foi estudado os métodos implementados pela biblioteca Zxing (figura 25) para dar continuidade ao processamento de imagem. Nesta biblioteca existe dezenas de classes, pois ela interpreta não somente os códigos de barra EAN-13, como todos os outros tipos de código de barra existentes, além de poder ser utilizada em qualquer plataforma (OWEN, 2011). Para o tratamento da imagem, as principais classes utilizadas são: Reader é responsável por identificar as extremidades do código de barras (utilizando a classe Result) e por verificar qual o tipo de código de barra (utilizando a classe DecodeHintType). Binarizer é responsável pela conversão dos dados em escala de cinza para um vetor de bits, essa transformação para escala de cinza é realizada na classe LuminanceSource. Para a decodificação do EAN 13 é importante relembrar que o primeiro número do código de barra define a interpretação que deverá ser aplicada no 59 restante do código, sendo assim a classe EAN13Reader () da biblioteca ZXing utiliza o primeiro dígito para definir como será a decodificação do restante do código de barras. Esta classe importa 3 outras classes também desta biblioteca, sendo elas, a BarcodeFormat, a NotFoundException e a BitArray. A BarcodeFormat é responsável por identificar que tipo de código de barra o aplicativo está processando, lembrando que esta biblioteca permite processar qualquer tipo de código de barras. NotFoundException é utilizada quando não é possível processar uma imagem, ou seja, quando a biblioteca não tem certeza se é um código de barra ou não. BitArray é responsável por fazer toda a gestão do array onde ficará armazenada as informações do código processado. Figura 25 – Arquitetura da biblioteca ZXing. Fonte: O AUTOR (2011) 6.3 MINERAÇÃO DE DADOS Toda vez que um cliente realiza uma compra, ela fica armazenada no banco de dados com 3 principais objetivos, o primeiro é para que o próprio mercado tenha maior controle sobre as compras de seus clientes, o segundo é com o intuito de 60 oferecer ao cliente maior comodidade – uma vez que ele pode optar por realizar a mesma compra, evitando que ele tenha o desgaste de passar por todo o mercado novamente - e o último objetivo, mas não menos importante, é para ter informações suficientes do cliente para poder aplicar conceitos de Mineração de Dados permitindo ao supermercado enviar promoções aos seus clientes. A Mineração de Dados deste sistema foi implementada direto no banco de dados MySQL, utilizando o algoritmo do Apriori. Conforme abordado no item 3.5.3, o Apriori resolve o problema do “itemset” freqüente, no qual cada produto adquirido pelo cliente em uma compra é um “itemset” e o algoritmo é responsável por verificar a quantidade de vezes que dois produtos aparecem em uma mesma compra. Foram utilizadas tabelas auxiliares, criadas durante a execução do algoritmo Apriori e que ao finalizar o algoritmo elas são descartadas. Outra particularidade do MySQL é que não se trabalha com vetores ou matrizes, mas sim com tabelas. Uma view (BaseApriori) foi desenvolvida para auxiliar na seleção dos pedidos, sendo assim, é possível determinar o percentual que define se o itemset é freqüente ou não. Por exemplo, pode-se definir que um produto que aparece pelo menos em 60% das compras como freqüente, o que auxilia na oferta de novos produtos e promoções para determinados clientes. Esta porcentagem, do que se considera freqüente, pode ser definida pelo mercado, mas como padrão o sistema estabelecerá 60%. A view BaseApriori realiza um select na tabela de pedido e seleciona os produtos que foram pedidos, que através do innerjoin, (ou seja, copia para uma nova tabela somente as informações onde tanto a informação da tabela A e da tabela B atenderem os parâmetros definidos) irá juntar a tabela de detalhe_pedido, tendo, portanto, o código do pedido e o código do produto. O algoritmo Apriori é chamado sempre que o cliente seleciona um produto para adicionar ao seu carrinho. O intuito da utilização do Apriori neste momento é verificar qual outro produto o cliente costuma comprar quando compra o produto selecionado e com isso, já lhe oferecer esta opção. Neste caso, o Apriori será aplicado apenas em dados específicos do cliente em questão, ou seja, no momento em que for requisitado a execução do Apriori, será passado o CPF do cliente onde o Apriori irá fazer o join (citado anteriormente) somente das compras destes clientes e retornará a informação. 61 Além desta funcionalidade, o Apriori também é utilizado para que o sistema possa definir uma lista de promoções específica para um determinado nicho de cliente, ou seja, o mercado poderá criar uma lista de produtos, passando como parâmetro o perfil que ele desejar, seja por idade, por sexo ou por características de compra, e o Apriori retornaria os itens mais comprados pelos clientes do perfil aplicado. O Apriori pode ser implementado em outras situações, bem como existem outros algoritmos para realizar a mineração de dados, porém neste trabalho, abordamos o Apriori para as funções citadas acima. 62 7 TESTES Concluído o desenvolvimento, iniciaram-se os testes. Os testes foram realizados em ambiente simulado, conforme descrito no item 6.1, e foram executados 3 testes de funcionamento, sendo eles: captura e processamento do código de barra, comunicação utilizando o WebService e a funcionalidade do Apriori. Além dos testes descritos, foi executado o teste de integração, ou seja, a realização de uma compra utilizando as funcionalidades desenvolvidas para o sistema. As telas do teste do sistema bem como suas descrições encontram-se no apêndice G. 7.1 CONFIGURAÇÃO DE REDE Inicialmente, os testes foram realizados em ambiente simulado sendo, portanto, necessário montar uma rede sem fio, que é definida pela Microsoft como ”Redes sem fio que usam ondas de rádio para enviar informações entre computadores. Os três padrões mais comuns de rede sem fio são 802.11b, 802.11g e 802.11a.” O Android suporta apenas as conexões GSM (Global System for Mobile), 3G, EDGE (Enhanced Data-Rates for Global Evolution) e 802.11, portanto foi escolhida a opção 802.11 para os testes. Para montar a rede sem fio, os seguintes equipamentos foram necessários: 1 Roteador DLink; 1 Notebook Vaio (como servidor); 1 Samsung Galaxy 5 (como smartphone). 7.2 CAPTURA E PROCESSAMENTO DE IMAGEM Os testes de captura foram com sucesso, porém ao testar o processamento de imagem, a limitação descrita no item 6.3 foi o primeiro impeditivo para dar continuidade aos testes. Ao melhorar o código e trabalharmos com o cenário perfeito (eliminando o primeiro problema) outro problema foi encontrado: a qualidade da imagem era baixa e durante a binarização da imagem ela ficava toda branca, inclusive as barras pretas 63 o que impossibilitou a continuidade com o código desenvolvido pelo grupo. Portanto, foi utilizada a biblioteca ZXing, descrita no item 6.3. Com esta biblioteca implementada, a captura e o processamento ocorrem internos a ela e somente retorna o resultado com o valor do código de barra. Inicialmente foi testado em um celular com uma câmera de 3.2 mp e os testes foram com sucesso, porém ao executar com o celular de teste, que possui uma câmera de 2.0 mp, foi testado em 7 produtos diferentes, porém apenas foi possível ler 1 produto. Para certificar que o problema era com a câmera, testamos o aplicativo da própria biblioteca ZXING, o Barcode Scanner, que também não identificou os produtos. 7.3 WEBSERVICE O teste do WebService foi feito utilizando o conceito de que toda informação digitada no celular e enviada, deve aparecer no banco de dados. Sendo assim, realizando um novo cadastro, foi possível verificar se a comunicação feita via WebService está ok (ilustrado na figura 26). Durante os testes foram encontrados problemas com a parametrização. Quando enviado apenas uma variável como parâmetros, por exemplo o CPF para realização da mineração de dados, não foram encontrados problemas, porém para passar como parâmetro um objeto inteiro, por exemplo do tipo Cliente, a complexidade foi muito maior. A solução implementada para tratar este tipo de situação foi tratá-las como String e separá-las por ponto e vírgula (;). Uma vez implementado os dois tipos de parâmetros, os testes foram executados considerando o processo de compra e de cadastro. Foram realizadas 9 compras, alternando a quantidade de produtos do carrinho, ou seja, 3 compras foram realizadas inserindo apenas 1 produto no carrinho porém, com diferentes quantidades deste produto, os 3 seguintes foram realizados adicionando diferentes tipos de produto, porém apenas 1 de cada tipo e por fim, foram realizados 4 compras com diferentes quantidades de diferentes produtos e para o cadastro foram realizados 3 testes. Todas as informações foram inseridas com sucesso no banco de dados. 64 7.4 APRIORI Para realizar os testes do Apriori foram utilizadas duas situações, a primeira que foi escolhendo a opção “Promoções do dia” e a segunda foi a de oferecer produtos assim que foi adicionado um novo produto ao carrinho. Para as duas opções todos os testes foram com sucesso. Sendo que foram testados os seguintes cenários: -Caso seja a primeira compra do usuário, nada foi mostrado, pois como não existem compras cadastradas no CPF de um novo usuário, não é possível realizar a mineração. -Caso o cliente já tenha realizado, ao menos, uma compra o Apriori foi executado com sucesso, porém, ficou nítido que somente após a 10ª compra que o Apriori apresentou maior eficiência. A diferença da execução do Apriori, quando com maior quantidade de compras cadastrada no CPF em questão ou com poucas compras cadastradas, foi, na maioria dos testes, similar, sendo quase imperceptível ao usuário esta diferença. 7.5 SISTEMA DE COMPRA Uma vez integrado todo o sistema, realizamos 12 compras, sendo 9 delas com CPFs já existentes no banco de dados para que as funcionalidades de promoções e anteriores pudessem ser testadas e 3 com um cadastro novo utilizando o sistema desenvolvido para realizar o cadastro. As funcionalidades de realizar a compra foram testadas com sucesso, apenas a funcionalidade de comparação de produtos de mesma categoria que não apresentou resultado satisfatório 100% do tempo por utilizarmos um banco de dados de um pequeno comércio, onde a subcategoria não era um quesito preenchido ou preenchido incorretamente. 65 Figura 26 – Informações inseridas no banco de dados através do aplicativo SmartCompras. Fonte: O AUTOR (2011) 66 8 CONCLUSÃO Com a crescente competitividade entre os mercados, ter um sistema que facilite o usuário a realizar as compras, é sem dúvida, um ganho muito grande. A implementação do sistema SmartCompras reduz o tempo de compra do cliente, além de proporcionar maior comodidade. O desenvolvimento para Android é muito similar ao desenvolvimento em Java, exceto por particularidades do próprio sistema Android, durante a implementação do sistema, vale ressaltar que foram encontradas limitações quanto ao processamento de imagem, pois a qualidade da foto do código de barra tirada não permitiu a continuidade dos testes utilizando o código estudado e desenvolvido pelo grupo, porém, uma das grandes facilidades do Android, é que muitas funcionalidades que foram pensadas em desenvolver para este sistema, o Android já possuía uma, ou mais, bibliotecas prontas. Um grande problema encontrado, e ainda sem uma solução eficaz, é referente ao usuário final que possua qualquer tremor em suas mãos, pois este aplicativo não será tão eficiente, uma vez que ele não conseguirá interpretar a imagem e, portanto, não interpretará o código de barras, tendo, o usuário, que digitar o código, mas com isso, toda a facilidade e agilidade do sistema, é perdida, ainda considerando a facilidade para o usuário, outro problema sem solução que o grupo encontrou, foi com relação a usuários sem conhecimento de tecnologia, ou seja, pessoas que possuem limitações para manusear o aparelho celular e o aplicativo. Outra limitação do Android é quanto a comunicação com o banco de dados, pois ele não se comunica com o MySQL, apenas com o SQLite, por isso, implementamos um WebService responsável por essa comunicação, a implementação deste WebService, por mais complexa que tenha sido, para o usuário final é transparente. Considerando a mineração de dados, foram estudados diferentes tipos para realizá-la, e, para este aplicativo, a opção que ofereceu melhor custoXbenefício foi o Apriori, pois ele resolve o problema do itemset freqüente, exatamente o que era necessário e a sua complexidade/tempo de execução mostrou-se a melhor opção para realizar a mineração dos dados. Portanto, este aplicativo, na situação ideal, facilita a realização de compras 67 para o cliente e para o estabelecimento, porém, até o momento, ele ainda possui limitações que podem causar desconfortos dependendo do tipo de usuário. 8.1 TRABALHOS FUTUROS Com a conclusão, pode-se identificar alguns estudos futuros. Sendo eles: melhorar a implementação do processamento da imagem, sem utilizar a biblioteca, bem como o designe da aplicação. Foi identificado oportunidade de novas implementações novas funcionalidades, como por exemplo, um sistema web, exclusivo para o estabelecimento controlar o cancelamento ou para extração de relatórios. A mineração de dados pode ser melhorada a todo instante, novos conceitos e conhecimentos podem ser implementados, aprimorando o resultado da mineração. Não houve tempo para a implementação de todos os casos de uso, sendo que os casos de uso listados a seguir podem ser implementados futuramente: - UC2 - Validar CEP e CPF; - UC7 - Alterar dados pessoais; - UC15 - Ativar e desativar usuário; - UC21 - Confirmar endereço de entrega; - UC25 - Verificar compras realizadas; - UC26 - Cancelar compra; - UC27 - Gerar cancelamento. 68 REFERÊNCIA BIBLIOGRÁFICA ADDRIANS, Pieter; ZANTINGE, Dolf. DataMining. Inglaterra: Addison-wesley, 1996. ALBUQUERQUE, Márcio Portes de; ALBUQUERQUE, Marcelo Portes de. Processamento de Imagens: Métodos e Análises. Revista Científica, Rio de Janeiro: 2001. Disponível em: <www.cbpf.br/cat/pdsi/pdf/ProcessamentoImagens.PDF>. Acesso em: 26 abr. 2011. AMO, Sandra de. Curso de Data Mining. 2003. Programa de Mestrado - Curso de Ciência da Computação, Universidade Federal de Uberlândia, Uberlândia, 2003. Disponível em: <http://www.deamo.prof.ufu.br/CursoDM.html>. Acesso em: 10 maio 2011. AMORIM, Thiago. Conceitos, técnicas, ferramentas e aplicações de Mineração de Dados para gerar conhecimento a partir de bases de dados. 2006. 50 f. Trabalho de Diplomação (Graduação) - Curso de Ciência da Computação, Departamento de Informática, Universidade Federal de Pernambuco, Pernambuco, 2007. Disponível em: <http://www.cin.ufpe.br/~tg/2006-2/tmas.pdf>. Acesso em: 13 maio 2011. ANAIS XIII SIMPÓSIO BRASILEIRO DE SENSORIAMENTO REMOTO, 2007, Florianópolis. Uso de árvore de decisão para predição da prevalência de esquistossomose no estado de Minas Gerais, Brasil. Florianópolis: Inpe, 2007. Disponível em: <http://www.dpi.inpe.br/geoschisto/publicacoes/MartinsFT_SBSR.pdf>. Acesso em: 10 maio 2011. ASSOCIAÇÃO BRASILEIRA DE AUTOMAÇÃO COMERCIAL (Brasil). O futuro será assim. Disponível em: <http://www.afrac.com.br/si/site/13110>. Acesso em: 15 maio 2011. BARBOSA, Anderson Henrique; FREITAS, Marcílio Sousa da Rocha; NEVES, 69 Francisco de Assis Das. Confiabilidade estrutural utilizando o método de Monte Carlo e redes neurais. Revista Escola de Minas, Ouro Preto, v. 58, n. 3, p.x-x, jul. 2005. Disponível em: <http://www.scielo.br/scielo.php?pid=s0370- 44672005000300011&script=sci_arttext>. Acesso em: 26 maio 2011. BOOCH, Grady; RUMBAUGH, James; JACOBSON, Ivar. UML: Guia do Usuário. Rio De Janeiro: Campus, 2005. BRAGA, Luis Paulo Vieira. Introdução à Mineração de Dados. Rio de Janeiro: Epapers, 2005. CARVALHO, Luís Alfredo Vidal De. DATAMINING: A mineração de Dados no Marketing, Medicina, Economia, Engenharia e Administração. São Paulo: Érica, 2001. CONCI, Aura; MONTEIRO, Leonardo Hiss. RECONHECIMENTO DE PLACAS DE VEÍCULOS POR IMAGEM. Niterói, 2004. Disponível em: <www.ic.uff.br/~aconci/CONENPLACAS.pdf>. Acesso em: 15 abr. 2011. CORTES, Sérgio Da Costa; PORCARO, Rosa Maria; LIFSCHITZ, Sérgio. Mineração de Dados: Funcionalidades, Técnicas e Abordagens. 2002. 35 f. Pesquisa - Puc, Rio de Janeiro, 2002. Disponível em: <http://www.dbd.pucrio.br/depto_informatica/02_10_cortes.pdf>. Acesso em: 25 maio 2011. ERDEI, Guillermo E. CÓDIGO DE BARRAS: Desenvolvimento, Impressão e Controle de Qualidade. Rio De Janeiro: Makron Books, 1994. FONSECA, José M. M. R. de; INDUÇÃO DE ÁRVORES DE DECISÃO: HistClass Proposta de um algoritmo não paramétrico. Lisboa, 1994. Trabalho de Diplomação (Mestrado) – Departamento de Informática, Universidade Nova de Lisboa. Disponível em: http://www.uninova.pt/~jmf/Documentos%20pdf/Tese%20Mestrado/Tese%20Mestra do.pdf 70 GONZALEZ, Rafael C.; WOODS, Richard E. Digital Image Processing. 2. ed. New Jersey: Pretice Hall, 2002. GROSSMANN, Fábio; ZYNGIER, Mauro Luiz. CÓDIGO DE BARRAS: DA TEORIA À PRÁTICA. 2. ed. São Paulo: Nobel, 1991 HAYKIN, Simon. REDES NEURAIS: PRINCÍPIOS E PRÁTICA. 2. ed. Porto Alegre: Bookman, 2001. JANTSCHER, Martin; TALHAOUI, Mohammed; VOS, Denis de; CUNHA, Ivan; Roszcyk, Artur; Datsyuk, Mikhail. ANDROID PLATFORM PRESENTATION., 2010. Disponível em: < www.mad-ip.eu/files/reports/Android.pdf> Acesso em: 22 Outubro 2011. LINHA BASE (Brasil). Enciclopédia sobre Código de Barras. 2011 Disponível em: <http://www.linhabase.com.br/codigodebarras/simbologias/default.asp>. Acesso em: 05 maio 2011. MARTINS, Rafael J. Werneck de A., Desenvolvimento de Aplicativo para Smartphone com a Plataforma Android. 2009. 50f. Trabalho de Diplomação (Graduação) – Curso de Engenharia da Computação, Pontifícia Universidade Católica do Rio de Janeiro, Rio de Janeiro, Dezembro de 2009. Disponível em: <www.icad.puc-rio.br/~projetos/android/files/monografia.pdf> Acesso em 20 Outubro 2011. MICROSOFT. O que é necessário para configurar uma rede doméstica. 2011. Disponível em: <http://windows.microsoft.com/pt-BR/windows-vista/What-you-needto-set-up-a-home-network> Acesso em: 18 Outubro 2011 MUENZ, Edison Gustavo. Estudo e implementação de algoritmos de processamento de imagens com técnicas GPGPU. 2008. 53 f. Trabalho de Diplomação (Graduação) - Curso de Ciência Da Computação, Universidade Federal De Santa Catarina, Florianópolis, 2008. Disponível em: 71 <http://projetos.inf.ufsc.br/arquivos_projetos/projeto_833/tcc_EdisonGustavoMuenz.p df>. Acesso em: 19 maio 2011. NAVEGA, SERGIO, 2002, São Paulo. Princípios Essenciais do Data Mining. Cenadem: Anais do Infoimagem, 2002. Disponível em: <http://www.intelliwise.com/reports/i2002.htm>. Acesso em: 15 abr. 2011. OWEN, Sean, GOOGLE CODE: ZXing ("Zebra Crossing"). Disponível em: <code.google.com/p/zxing>. Acesso em: 20 outubro 2011 PITONI, Rafael Moreira. Mineração de Regras de Associação nos. 2002. 61 f. Trabalho de Diplomação (Graduação) - Curso de Ciência Da Computação, Departamento de Instituto De Informática, Universidade Federal Do Rio Grande Do Sul Associação Nos, Porto Alegre, 2002. Disponível em: <http://www.inf.ufrgs.br/gppd/direto/trabalhos/Dissertacao_Pitoni.pdf>. Acesso em: 27 abr. 2011. REUTERS. Crescimento dos smartphones anima mercado no 1º trimestre. G1: Tecnologia & Games, Brasil, 29 abr. 2011. Disponível em: <http://g1.globo.com/tecnologia/noticia/2011/04/boom-dos-smartphones-animamercado-no-1o-trimestre.html>. Acesso em: 15 mar. 2011. RUSSELL, Stuart; NORVIG, Peter. Inteligência Artificial. 2. ed. Rio de Janeiro: Campus, 2004. Revista Info Exame. UM NOTEBOOK COM A SUA CARA. Editora Abril, jun. 2010. SANTOS, Tiago Henrique Tudisco dos; ARTERO, Almir Olivette. Processamento Digital de Imagens de Códigos de Barras usando Telefones Celulares, Presidente Prudente, VI Workshop de Visão Computacional, 2010. Disponível em: < iris.sel.eesc.usp.br/wvc/anais_WVC2010/artigos/poster/72797.pdf>. Acesso em: 24 outubro 2011. SFERRA, Heloisa Helena; CORRÊA, Ângela M. C. Jorge. Conceitos e Aplicações de 72 Data Mining. Revista De Ciência & Tecnologia, Piracicaba, v. 11, n. 22, p.19-34, jul. 2003. Disponível em: <http://www.unifra.br/professores/EDUARDO/Artigo%208.pdf>. Acesso em: 10 maio 2011. SUDAN, Brian, SOAP Web Services. 2003. 75f Tese (Mestrado) – Curso de Ciência da Computação, Computer Science School of Informatics, University of Edinburgh, Edinburgh, 2003. Disponível em: <suda.co.uk/publications/MSc/brian.suda.thesis.pdf>. Acesso em 25 outubro 2011. TANENBAU, Andrew S.; STEEN, Maarten Van. Sistemas Distribuídos: princípios e paradigmas. 2.ed. São Paulo: Pearson Prentice Hall, 2007. 402p. WALTER WEISZFLOG (Brasil). MICHAELIS: Moderno dicionário da língua portuguesa. São Paulo: Companhia Melhoramentos, 1998. 73 APÊNDICE A REQUISITOS FUNCIONAIS: RF1.O sistema deve permitir a criação e alteração de cadastro do usuário; RF2.O sistema deve validar o CEP e o CPF do cliente; RF3. O sistema deve permitir logar o cliente (através de login e senha); RF4. O sistema deve permitir que o cliente armazene seu login e senha e permaneça conectado; RF5. O sistema deve verificar se o cliente está apto a realizar uma compra (ativo/inativo); RF6. O sistema deve permitir a atualização do banco de dados de produto diariamente quando o usuário se logar no sistema; RF7. O sistema deve ser capaz de ler e interpretar o código de barras do produto; RF8. O sistema deve permitir que o usuário digite o código de barras; RF9. O sistema deve permitir que o usuário adicione produtos no carrinho; RF10. O sistema deve criar um pedido; RF11. O sistema deve mostrar na tela os dados do produto identificado pelo código de barras; RF12. Ao adicionar um produto no carrinho, o sistema deve permitir que o usuário escolha a quantidade a ser comprada; RF13. O sistema deve permitir que o usuário exclua um produto do carrinho; RF14. O sistema deve traçar o perfil do cliente de acordo com as compras já realizadas por ele; RF15. O sistema deve validar se o cliente deseja receber ofertas de produtos comprados com freqüência, durante a realização de uma compra; RF16. O sistema deve permitir a finalização da compra; RF17. O sistema deve ser capaz de comparar preço de produtos com a mesma funcionalidade e de marcas distintas; RF18. O sistema deve perguntar ao usuário se ele permite traçar um perfil de suas compras; RF19. O sistema deve permitir que o usuário escolha ou não manter no seu carrinho 74 os produtos comprados com maior freqüência; RF20. O sistema deve enviar ao usuário os produtos compatíveis com seu perfil, caso o usuário deseje traçar o seu perfil; RF21. O sistema deve imprimir na tela todos os produtos do carrinho com a quantidade e seus respectivos valores e pedir confirmação, quando o usuário decide finalizar a compra; RF22. O sistema deve armazenar todas as compras realizadas pelo usuário; RF24. O sistema deve solicitar confirmação ao usuário do endereço a ser entregue; RF25. O sistema deve solicitar a forma de pagamento para o usuário; RF26. O sistema deve enviar a lista de produto (produto, quantidade e valor), endereço do usuário e forma de pagamento para o sistema do mercado; RF27. O sistema não deve duplicar produto, apenas aumentar a sua quantidade; RF28. O sistema não deve permitir que o usuário não escolha nenhuma forma de pagamento; RF29. O sistema deve permitir que o administrador cancele uma compra finalizada; RF30. O sistema deve permitir que o administrador faça a ativação/bloqueio de um usuário; RF31. O sistema deve permitir que o usuário solicite o bloqueio da sua conta; RF32. O sistema deve permitir que o cliente cancele a compra antes de finalizá-la; 75 B DESCRIÇÃO FORMAL DOS CASOS DE USO UC1 – Cadastrar no sistema: Descrição: Caso de uso que realiza o cadastro do usuário no sistema. Ator Principal: Usuário. Pré-Condição: Não há. Fluxo Principal: 1. Sistema solicita dados cadastrais do usuário; 2. Usuário informa dados cadastrais; 3. Sistema valida CEP e CPF informado (chama UC2); 4. Sistema solicita dados de login (usuário e senha); 5. Usuário informa dados de login; 6. Sistema exibe informações (dados cadastrais e de login) e solicita confirmação; 7. Usuário confirma dados; 8. Sistema envia dados ao banco de dados, e cadastra cliente; 9. Sistema exibe mensagem “Cadastro realizado com sucesso!”; 10. Sistema encerra caso de uso. Fluxo de Alternativo: 2.a Usuário não informa dados cadastrais; 2.a.1 Sistema exibe mensagem “Preenchimento obrigatório!” 2.a.2 Sistema volta ao passo 1 do fluxo principal. 4.a Usuário não informa dados de login; 4.a.1 Sistema exibe mensagem “Preenchimento obrigatório!” 4.a.2 Sistema volta ao passo 4 do fluxo principal. 7.a Usuário não confirma dados; 7.a.1 Sistema reabre campos para edição de dados; 7.a.2 Usuário altera os campos desejados; 7.a.3 Volta ao passo 6 do fluxo principal. Fluxo de Exceção: 6.a Login já existente; 6.a.1 Sistema exibe mensagem “Login já cadastrado”; 6.a.2 Sistema reabre campo de login para alteração; 6.a.3 Volta ao passo 6 do fluxo principal. 76 UC2 – Validar CEP e CPF: Descrição: Caso de uso que valida CEP e CPF do cliente. Ator Principal: Usuário. Pré-Condição: Usuário solicitar cadastro no sistema. Fluxo Principal: 1. Sistema solicita CEP e CPF do cliente; 2. Usuário informa CEP e CPF; 3. Sistema valida CEP e CPF informado pelo cliente no cadastro; 4. Sistema volta ao UC1 – “Cadastrar no sistema”; 5. Sistema encerra caso de uso. Fluxo de Alternativo: 2.a Usuário não informa CEP; 2.a.1 Sistema exibe mensagem “Preenchimento obrigatório!”; 2.a.2 Sistema volta ao passo 1 do fluxo principal. 2.b Usuário não informa CPF; 2.b.1 Sistema exibe mensagem “Preenchimento obrigatório!” 2.b.2 Sistema volta ao passo 1 do fluxo principal. Fluxo de Exceção: 2.a CEP inválido; 2.a.1 Sistema exibe mensagem “CEP inválido!”; 2.a.2 Sistema volta ao passo 1 do fluxo principal; 2.b CPF inválido; 2.b.1 Sistema exibe mensagem “CPF inválido!”; 2.b.2 Sistema volta ao passo 1 do fluxo principal. UC3 – Logar no sistema: Descrição: Caso de uso que realiza o login do usuário no sistema. Ator Principal: Usuário. Pré-Condição: Usuário possuir cadastro no sistema. Fluxo Principal: 1. Sistema solicita login e senha; 2. Usuário informa login e senha; 3. Sistema valida login e senha (chama UC4); 4. Sistema chama UC6 – “Tirar foto do código de barras desejado”; 77 5. Sistema encerra caso de uso. Fluxo de Alternativo: 2.a Usuário não informa login; 2.a.1 Sistema exibe mensagem “Insira um login!”; 2.a.2 Sistema volta ao passo 1 do fluxo principal. 2.b Usuário não informa senha; 2.b.1 Sistema exibe mensagem “Insira uma senha!”; 2.b.2 Sistema volta ao passo 1 do fluxo principal. Fluxo de Exceção: - Não há. UC4 – Validar login e senha: Descrição: Caso de uso que loga o cliente no sistema. Ator Principal: Usuário. Pré-Condição: Usuário possuir cadastro no sistema. Fluxo Principal: 1. Sistema valida login e senha; 2. Sistema chama UC6 – “Tirar foto do código de barras desejado”; 3. Sistema encerra caso de uso. Fluxo de Alternativo: - Não há. Fluxo de Exceção: 3.a Login inexistente; 3.a.1 Sistema exibe mensagem “Digite um login válido”; 3.a.2 Sistema volta ao passo 1 do fluxo principal. 3.a Login já existente; 3.a.1 Sistema exibe mensagem “Senha inválida!”; 3.a.3 Sistema volta ao passo 1 do fluxo principal. UC5 – Atualizar banco de dados disponível no celular: Descrição: Caso de uso atualiza o banco de dados no celular do cliente. Ator Principal: Usuário. Pré-Condição: Usuário solicitar logar-se no sistema. Fluxo Principal: 1. Sistema conecta-se com o banco de dados do supermercado; 2. Sistema atualiza banco de dados; 78 3. Sistema exibe mensagem “Banco de dados atualizado!”; 4. Sistema encerra caso de uso. Fluxo de Alternativo: Não há. Fluxo de Exceção: Não há. UC6 - Tirar foto do código de barras desejado: Descrição: Caso de uso que realiza a captura do código de barras. Ator Principal: Usuário. Pré-Condição: Cliente estar devidamente logado no sistema, através de usuário e senha e fotografar um produto existente no banco de dados do supermercado. Fluxo Principal: 1. Sistema abre software para captura de código de barras; 2. Usuário captura código de barras desejado; 3. Sistema processa o código de barras (chama UC8); 4. Sistema se comunica com o banco de barras do supermercado (chama UC09); 5. Sistema imprime informações do produto (chama UC10); 6. Usuário informa a quantidade desejada (chama UC12); 7. Sistema adiciona a quantidade de produtos no carrinho; 8. Sistema soma o valor do produto adicionado, ao valor total da compra; 9. Sistema encerra caso de uso. Fluxo Alternativo: 2.a Usuário deseja digitar o código de barras; 2.a.1 Sistema habilita campo de código de barras (chama UC11); 2.a.2 Volta ao passo 3 do Fluxo Principal. 5.a Produto impresso errado; 5.a.1 Usuário remove produto do carrinho (chama UC15); 5.a.2 Volta ao passo 1 do Fluxo Principal. 7.a Usuário não informa a quantidade desejada; 7.a.1 Sistema preenche automaticamente a quantidade com 1; 7.a.2 Volta ao passo 6 do Fluxo Principal. Fluxo de Exceção: 2.a Usuário não consegue capturar o código de barras; 2.a.1 Usuário solicita digitar o código de barras; 2.a.2 Sistema habilita campo de código de barras (chama UC11); 79 2.a.3 Volta ao passo 3 do Fluxo Principal. 3.a Código de barras não cadastrado no Banco de Dados; 3.a.1 Sistema exibe mensagem “Produto não encontrado!”; 3.a.2 Volta ao passo 1 do Fluxo Principal. 3.b Produto não disponível; 3.b.1 Sistema exibe a mensagem “Produto indisponível!”; 3.b.2 Volta ao passo 1 do Fluxo Principal. 7.a Usuário insere uma quantidade não disponível; 7.a.1 Sistema exibe a mensagem “Quantidade indisponível!”; 7.b.2 Volta ao passo 5 do Fluxo Principal. UC7 – Alterar dados pessoais: Descrição: Caso de uso que altera os dados pessoais do usuário no sistema. Ator Principal: Usuário. Pré-Condição: Cliente estar cadastrado no sistema. Fluxo Principal: 1. Sistema abre campos de cadastro e senha para edição; 2. Usuário altera dados desejados; 3. Sistema salva novos dados; 4. Sistema exibe mensagem “Dados alterados com sucesso!”; 5. Sistema encerra caso de uso. Fluxo Alternativo: 2.a Usuário não altera dados; 2.a.1 Sistema encerra caso de uso. Fluxo de Exceção: Não há. UC8 – Interpretar código de barras: Descrição: Caso de uso que converte o código de barras para escala de cinza, e interpreta-o. Ator Principal: Sistema. Pré-Condição: Cliente capturar um código de barras. Fluxo Principal: 1. Sistema converte o código de barras para escala de cinza; 2. Sistema interpreta o código de barras; 80 3. Sistema chama o UC9; 4. Sistema encerra caso de uso. Fluxo Alternativo: Não há. Fluxo de Exceção: Não há. UC9 – Comunicar com o banco de dados do mercado: Descrição: Caso de uso que realiza a comunicação do sistema com o banco de dados do supermercado. Ator Principal: Sistema. Pré-Condição: Cliente estar realizar a captura de um código, e ele já estar devidamente interpretado. Fluxo Principal: 1. Sistema comunica-se com o banco de dados do supermercado; 2. Sistema localiza produto capturado no banco; 3. Sistema encerra caso de uso. Fluxo Alternativo: Não há. Fluxo de Exceção: 2.a Sistema não encontra produto; 2.a.1 Sistema exibe mensagem “Produto não encontrado!”; 2.a.2 Sistema encerra caso de uso. UC10 – Mostrar o produto escolhido na tela: Descrição: Caso de uso que imprime as informações do produto na tela do Smartphone. Ator Principal: Sistema. Pré-Condição: Capturar um código de barras de um produto existente no banco de dados do supermercado. Fluxo Principal: 1. Sistema imprime informações do produto; 2. Sistema encerra caso de uso. Fluxo de Alternativo: Não há. Fluxo de Exceção: Não há. 81 UC11 – Digitar código de barras: Descrição: Caso de uso que permite a digitação do código de barras. Ator Principal: Usuário. Pré-Condição: Não há. Fluxo Principal: 1. Sistema abre campo para digitação do código de barras; 2. Usuário digita código de barras; 3. Sistema encerra caso de uso. Fluxo de Alternativo: 2.a Usuário não digita código de barras; 2.a.1 Sistema exibe mensagem “Digite um código de barras” 2.a.2 Sistema volta ao passo 1 do fluxo principal. Fluxo de Exceção: Não há. UC12 – Escolher quantidade do produto: Descrição: Caso de uso que solicita a quantidade de produtos desejados. Ator Principal: Usuário. Pré-Condição: Usuário ter capturado um código de barras válido. Fluxo Principal: 1. Sistema abre campo para digitação da quantidade; 2. Usuário informa quantidade; 3. Sistema coloca quantidade no carrinho; 4. Sistema encerra caso de uso. Fluxo de Alternativo: 2.a Usuário não informa quantidade; 2.a.1 Sistema insere a quantidade 1 no carrinho 2.a.2 Sistema encerra caso de uso. Fluxo de Exceção: 3.a Quantidade não disponível; 3.a.1 Sistema exibe mensagem “Quantidade indisponível”; 3.a.2 Volta ao passo 1 do fluxo principal. UC13 – Criar um pedido: Descrição: Caso de uso que cria um pedido. 82 Ator Principal: Sistema. Pré-Condição: Cliente colocar ao menos 1 (um) produto no carrinho. Fluxo Principal: 1. Sistema verifica se já há um pedido para o carrinho; 2. Sistema cria um pedido; 3. Sistema encerra caso de uso. Fluxo de Alternativo: Não há. Fluxo de Exceção: 2.a Já existe um pedido para o carrinho; 2.a.1 Sistema encerra caso de uso; UC14 – Remover produto: Descrição: Caso de uso que remove produto do carrinho. Ator Principal: Usuário. Pré-Condição: Haver ao menos 1 (um) produto no carrinho. Fluxo Principal: 1. Sistema solicita confirmação de exclusão; 2. Usuário confirma exclusão; 3. Sistema exclui produto do carrinho; 4. Sistema subtrai o valor do produto excluído do valor total da compra; 5. Sistema encerra caso de uso. Fluxo de Alternativo: 2.a Usuário não confirma exclusão; 2.a.1 Sistema encerra caso de uso. Fluxo de Exceção: Não há. UC15 – Ativar e desativar usuário: Descrição: Caso de uso que ativa ou desativa um usuário. Ator Principal: Gerente. Pré-Condição: Usuário cadastrado no sistema. Fluxo Principal: 1. Sistema solicita CPF do cliente; 2. Gerente informa CPF do cliente; 3. Sistema busca dados de cliente e exibe; 83 4. Sistema solicita confirmação de ativação/desativação; 5. Gerente confirma ativação/ativação; 6. Sistema ativa/desativa cliente; 7. Sistema exibe a mensagem “Realizado com sucesso!” 8. Sistema encerra caso de uso. Fluxo de Alternativo: 2.a Gerente não informa CPF 2.a.1 Sistema exibe mensagem “Digite um CPF!” 2.a.2 Sistema volta ao passo 1 do fluxo principal. 5.a Gerente não confirma ativação/desativação; 5.a.1 Sistema encerra caso de uso; Fluxo de Exceção: 3.a Sistema não encontra CPF; 3.a.1 Sistema exibe mensagem “CPF inválido!”; 3.a.2 Sistema volta ao passo 1 do fluxo principal. UC16 – Selecionar 2 ou mais produtos para comparação: Descrição: Caso de uso que permite a comparação de dois produtos. Ator Principal: Usuário. Pré-Condição: Usuário estar logado no sistema. Fluxo Principal: 1. Sistema solicita código de barras dos dois produtos; 2. Usuário captura / digita os dois códigos de barras; 3. Sistema interpreta códigos de barras (chama UC8); 4. Sistema compara o preço dos dois produtos (chama UC17); 5. Sistema exibe o produto de menor preço; 6. Sistema encerra caso de uso. Fluxo de Alternativo: 2.a Usuário não informa código de barras; 2.a.1 Sistema exibe mensagem “Insira um código de barras”; 2.a.2 Sistema volta ao passo 1 do fluxo principal. Fluxo de Exceção: 5.a. Produtos diferentes; 84 5.a.1 Sistema exibe mensagem “Produtos distintos, selecione produtos da mesma categoria!”; 5.a.2 Volta ao passo 1 do fluxo principal. 6.a Preços iguais; 6.a.1 Sistema exibe mensagem “Valores iguais”; 6.a.2 Sistema exibe o valor dos produtos; 6.a.3 Sistema encerra caso de uso. UC17 – Comparar preços de um mesmo tipo de produto: Descrição: Caso de uso que compara o preço de dois produtos. Ator Principal: Sistema. Pré-Condição: Usuário capturar dois tipos de produtos do mesmo tipo. Fluxo Principal: 1. Sistema conecta-se com o banco de dados (chama UC9); 2. Sistema localiza os dois produtos; 3. Sistema compara os valores dos dois produtos; 4. Sistema encerra caso de uso. Fluxo de Alternativo: Não há. Fluxo de Exceção: 2.a Sistema não encontra produtos; 2.a.1 Sistema exibe mensagem “Produto não localizado”; 2.a.2 Sistema chama o UC16; UC18 – Verificar quais produtos estão na lista: Descrição: Caso de uso permite a visualização da lista de produtos. Ator Principal: Usuário. Pré-Condição: Existir ao menos um produto no carrinho do usuário. Fluxo Principal: 1. Sistema solicita confirmação de exibição de lista; 2. Usuário confirma a exibição; 3. Sistema exibe a lista de produtos do carrinho (chama UC20); 4. Sistema encerra caso de uso. Fluxo de Alternativo: 2.a Usuário não confirma exibição; 85 2.a.1 Sistema encerra caso de uso; Fluxo de Exceção: Não há. UC 19 – Finalizar compra Fluxo Principal: 1. Sistema pergunta se usuário deseja finalizar a compra; 2. Usuário informa que deseja finalizar a compra; 3. Sistema imprime todos os produtos na tela (chama UC20); 4. Sistema solicita confirmação dos produtos exibidos; 5. Usuário confirma a lista exibida; 6. Sistema solicita confirmação de endereço de entrega (chama UC21); 7. Sistema exibe valor total; 8. Sistema solicita forma de pagamento (chama UC22); 9. Sistema exibe número do pedido para o usuário; 10. Sistema encaminha todos os dados da compra para o supermercado (chama UC23); 11. Sistema armazena no carrinho de produtos freqüente (chama UC24); 12. Sistema encerra caso de uso; Fluxo Alternativo 2.a Usuário não deseja finalizar a compra 2.a.1 Chama UC6; 2.a.2 Sistema encerra caso de uso; 5.a Usuário não confirma a lista exibida 5.a.1 Sistema reabre carrinho para exclusão de produtos (chama UC15); 5.a.2 Sistema encerra caso de uso; Fluxo de exceção: Não há. UC20 – Mostrar todos os produtos na tela. Descrição: Caso de uso mostra todos os produtos do carrinho. Ator Principal: Sistema. Pré-Condição: Existir ao menos um produto no carrinho. Fluxo Principal: 1. Sistema busca produtos no carrinho; 2. Sistema localiza dados dos produtos no banco de dados; 86 3. Sistema exibe informações dos produtos; 4. Sistema encerra caso de uso. Fluxo de Alternativo: Não há. Fluxo de Exceção: 2.a Lista vazia; 2.a.1 Sistema exibe mensagem “Não há produtos a serem exibidos”; 2.a.2 Sistema encerra caso de uso; UC21 – Confirmar endereço de entrega: Descrição: Caso de uso que solicita confirmação do endereço de entrega. Ator Principal: Sistema. Pré-Condição: Usuário finalizar uma compra. Fluxo Principal: 1. Sistema exibe endereços cadastrados; 2. Sistema solicita a seleção de um endereço de entrega; 3. Usuário seleciona um endereço de entrega; 4. Sistema solicita confirmação do endereço de entrega; 5. Usuário confirma endereço de entrega; 6. Sistema encerra caso de uso. Fluxo de Alternativo: 3.a Usuário não seleciona um endereço de entrega; 3.a.1 Sistema exibe a mensagem “Selecione um endereço de entrega!”; 3.a.2 Sistema volta ao passo 1 do fluxo principal. 5.a Usuário não confirma endereço; 5.a.1 Sistema pergunta se usuário deseja inserir novo endereço; 5.a.2 Usuário informa que deseja inserir novo endereço; 5.a.3 Sistema chama UC7 – “Alterar dados cadastrais”; 5.a.4 Sistema encerra caso de uso. Fluxo de Exceção: Não há. UC 22 – Informar forma de pagamento: Descrição: Caso de uso que solicita ao usuário a forma de pagamento da compra realizada. Ator Principal: Usuário. 87 Pré-Condição: Finalizar uma compra. Fluxo Principal: 1. Sistema imprime formas de pagamentos disponíveis; 2. Sistema solicita a forma de pagamento desejado; 3. Usuário informa forma de pagamento; 4. Sistema solicita a confirmação da forma de pagamento; 5. Usuário confirma a forma de pagamento; 6. Sistema encaminha os dados do pagamento ao supermercado (chama UC23); 7. Sistema encerra caso de uso. Fluxo Alternativo: 3.a Usuário não seleciona forma de pagamento: 3.a.1 Sistema exibe a mensagem “Selecione uma forma de pagamento”; 3.a.2 Volta ao passo 1 do Fluxo Principal. 5.a Usuário não confirma forma de pagamento: 5.a.1 Volta ao passo 1 do Fluxo Principal. Fluxo de Exceção: Não há. UC 23 – Enviar dados ao mercado: Descrição: Caso de uso que envia os dados das compras ao supermercado. Ator Principal: Sistema. Pré-Condição: Finalizar uma compra. Fluxo Principal: 1. Sistema envia mensagem ao supermercado “Novo pedido”; 2. Sistema encaminha dados do cliente e do pedido ao supermercado; 3. Sistema encerra caso de uso. Fluxo Alternativo: Não há. Fluxo de Exceção: Não há. UC24 – Manter carrinho de compras freqüente: Descrição: Caso de uso que atualiza carrinho de compras, guardando as ultimas aquisições do usuário. Ator Principal: Sistema. Pré-Condição: Existir ao menos uma compra finalizada do usuário. 88 Fluxo Principal: 1. Sistema armazena as informações da compra atual do usuário; 2. Sistema disponibiliza as últimas compras do usuário para eventuais aquisições semelhantes; 3. Sistema encerra caso de uso. Fluxo de Alternativo: Não há. Fluxo de Exceção: Não há. UC25 – Verificar compras realizadas: Descrição: Caso de uso que permite ao gerente verificar as compras realizadas. Ator Principal: Gerente. Pré-Condição: Existir compras finalizadas. Fluxo Principal: 1. Sistema exibe lista de pedidos finalizados; 2. Sistema solicita a seleção de um pedido; 3. Gerente seleciona um pedido; 4. Sistema exibe informações do pedido (chama UC10); 5. Sistema encerra caso de uso. Fluxo de Alternativo: 3.a Gerente não seleciona um pedido; 2.a.1 Sistema exibe mensagem “Selecione um pedido” 2.a.2 Sistema volta ao passo 1 do fluxo principal. Fluxo de Exceção: Não há. UC 26 – Cancelar compra: Descrição: Caso de uso que permite o cancelamento de uma compra. Ator Principal: Gerente. Pré-Condição: Existir uma venda finalizada. Fluxo Principal: 1. Sistema solicita motivo de cancelamento; 2. Gerente informa motivo de cancelamento; 3. Sistema solicita a confirmação do cancelamento; 4. Gerente confirma o cancelamento; 5. Sistema Cancela a venda (chama UC27); 89 6. Sistema exibe mensagem “Compra Cancelada!”; 7. Sistema encerra caso de uso. Fluxo Alternativo: 4.a Gerente não confirma o cancelamento: 4.a.1 Sistema exibe a mensagem “Cancelamento não efetuado!”; 4.a.2 Sistema encerra caso de uso. Fluxo de Exceção: Não há. UC 27 – Gerar cancelamento: Descrição: Caso de uso que cancela uma compra. Ator Principal: Sistema. Pré-Condição: Gerente solicitar cancelamento. Fluxo Principal: 1. Sistema retira os produtos do carrinho; 2. Sistema atualiza o status do pedido para “Cancelado”; 3. Sistema encerra caso de uso. Fluxo Alternativo: Não há. Fluxo de Exceção: Não há. UC 28 – Escolher se deseja receber promoções: Descrição: Caso de uso que permite ao usuário receber promoções do supermercado. Ator Principal: Usuário. Pré-Condição: Usuário possuir cadastro. Fluxo Principal: 1. Sistema questiona se usuário deseja receber promoções; 2. Usuário informa que deseja receber promoções; 3. Sistema exibe mensagem “Ok!”; 4. Sistema exibe promoções (chama UC29); 5. Sistema encerra caso de uso. Fluxo Alternativo: 2.a Usuário não deseja receber promoções: 2.a.1 Sistema exibe a mensagem “Ok!”; 2.a.2 Sistema encerra caso de uso. 90 Fluxo de Exceção: Não há. UC 29 – Mostrar promoções: Descrição: Caso de uso que exibe as promoções disponíveis para o usuário. Ator Principal: Sistema. Pré-Condição: Usuário desejar receber promoções. Fluxo Principal: 1. Sistema verifica promoções disponíveis no supermercado; 2. Sistema encaminha mensagem com promoções disponíveis; 3. Sistema encerra caso de uso. Fluxo Alternativo: Não há. Fluxo de Exceção: 2.a Não há promoções disponíveis: 2.a.1 Sistema exibe a mensagem “Não há promoções disponíveis!”; 2.a.2 Sistema encerra caso de uso. UC30 – Traçar perfil do usuário: Descrição: Caso de uso que traça o perfil do usuário de acordo com suas aquisições. Ator Principal: Sistema. Pré-Condição: Usuário já possuir compras no supermercado, e desejar traçar perfil. Fluxo Principal: 1. Sistema compara as últimas compras do usuário; 2. Sistema verifica maiores aquisições do usuário; 3. Sistema traça o perfil do cliente de acordo com as aquisições; 4. Sistema encerra caso de uso. Fluxo de Alternativo: Não há. Fluxo de Exceção: 2.a Não há aquisições; 2.a.1 Sistema exibe mensagem “Perfil não traçado”; 2.a.2 Sistema encerra caso de uso. 91 UC 31 – Escolher se quer que trace seu perfil: Descrição: Caso de uso que questiona ao cliente se é desejado traçar um perfil de consumidor. Ator Principal: Usuário Pré-Condição: Usuário estar cadastrado e logado no sistema. Fluxo Principal: 1. Sistema questiona de usuário deseja traçar um perfil; 2. Usuário informa que deseja traçar perfil; 3. Sistema traça o perfil do cliente, sempre que ele se logar (chama UC30); 4. Sistema exibe a mensagem “Obrigado!”; 5. Sistema encerra caso de uso. Fluxo Alternativo: 2.a Usuário não deseja traçar seu perfil: 2.a.1 Sistema exibe a mensagem “Perfil não traçado!”; 2.a.2 Sistema encerra caso de uso. Fluxo de Exceção: Não há. 92 C PROJETO DO BANCO DE DADOS Figura 27 - Projeto do banco de dados do software SmartCompras. Fonte: O AUTOR (2011) 93 D DIAGRAMAS DE ATIVIDADES Figura 28 - Diagrama de Atividade - UC6. Fonte: O AUTOR (2011) 94 Figura 29 - Diagrama de Atividade – UC19. Fonte: O AUTOR (2011) 95 Figura 30 - Diagrama de Atividade - UC22. Fonte: O AUTOR (2011) 96 Figura 31 - Diagrama de Atividade - UC26. Fonte: O AUTOR (2011) 97 Figura 32 - Diagrama de Atividade - UC31. Fonte: O AUTOR (2011) 98 E DIAGRAMA DE SEQUÊNCIA Figura 33 - Diagrama de Seqüência- UC6. Fonte: O AUTOR (2011) 99 Figura 34 - Diagrama de Seqüência- UC19. Fonte: O AUTOR (2011) 100 Figura 35 - Diagrama de Seqüência- UC22. Fonte: O AUTOR (2011) 101 Figura 36 - Diagrama de Seqüência- UC26. Fonte: O AUTOR (2011) 102 Figura 37 - Diagrama de Seqüência- UC31. Fonte: O AUTOR (2011) 103 F REQUISITOS DO CELULAR UTILIZADO NO TESTE: SAMSUNG GALXY 5; Tecnologia Quad Band (850 + 900 + 1800 + 1900 MHz) 3G: UMTS (850 / 2100 MHz) GPRS disponível EDGE disponível 3G disponível Navegador da Internet (WAP 2.0 / xHTML, HTML) Valores SAR: 0.484 W/kg corpo e 0.601 W/kg cabeça Bateria Capacidade da Bateria: 1200 mAh Tempo de conversa: 2G: até 9 h, tempo de conversação Tempo em Standby: até 500 horas Câmera Câmara 2.0 megapixels Zoom digital 4x Display TFT Resolução: 240 X 320 Tamanho da tela: 2,8"; Vídeo Vídeo Player disponível Gravador de Vídeo disponível Streaming de Vídeo disponível Conectividade Bluetooth integrado WAP disponível USB disponível Navegador HTML disponível Wi-Fi (802.11 b/g) GPS disponível Aplicação PC Sync disponível USB Mass Storage disponível Tamanho Peso: 102 g Dimensões: 111,8 x 46,9 x 13,3mm Interface com Usuário Touch Screen Memória Memória para SMS de 100MB Entradas de lista telefônica até memória Memória Externa (microSD de 2 GB). 104 G TELAS DO SISTEMA - Cadastro A realização do cadastro foi efetuada através de três telas, apresentadas abaixo nas figuras 38, 39 e 40: Figura 38 - Primeira tela de cadastro do SmartCompras. Fonte: O AUTOR (2011) Figura 39 - Segunda tela de cadastro do SmartCompras. Fonte: O AUTOR (2011) 105 Figura 40 - Terceira e última tela de cadastro do SmartCompras. Fonte: O AUTOR (2011) - Login O login do sistema é feito a partir de um usuário e senha pré cadastrados, como pode ser visto na figura 41. Figura 41 - Tela de login do SmartCompras. Fonte: O AUTOR (2011) - Página Principal Na página principal do sistema são exibidas as funcionalidades disponíveis no SmartCompras, como mostra a figura 42. 106 Figura 42 - Tela Principal do SmartCompras. Fonte: O AUTOR (2011) - Compra Uma compra é realizada a partir de diversas etapas, como mostram as figuras 43 a 46. Figura 43 - Tela para digitar o código de barras. Fonte: O AUTOR (2011) Figura 44 - Tela de detalhe do produto. Fonte: O AUTOR (2011) 107 Figura 45 - Tela do carrinho de compras. Fonte: O AUTOR (2011) Figura 46 - Tela para escolha da forma de pagamento. Fonte: O AUTOR (2011)