• Nenhum resultado encontrado

Plataforma colaborativa para mineração de notas fiscais eletrônicas

N/A
N/A
Protected

Academic year: 2021

Share "Plataforma colaborativa para mineração de notas fiscais eletrônicas"

Copied!
47
0
0

Texto

(1)

Universidade Federal do Rio Grande do Norte Centro de Ciências Exatas e da Terra

Departamento de Informática e Matemática Aplicada Bacharelado em Engenharia De Software

Plataforma colaborativa para mineração de

notas fiscais eletrônicas

Danilo Damasceno Gomes

Natal-RN Novembro de 2018

(2)

Danilo Damasceno Gomes

Plataforma colaborativa para mineração de notas

fiscais eletrônicas

Monografia de Graduação apresentada ao Departamento de Informática e Matemática Aplicada do Centro de Ciências Exatas e da Terra da Universidade Federal do Rio Grande do Norte como requisito parcial para a obtenção do grau de bacharel em Engenharia de Software.

Orientador

Prof. Doutor Ivanovitch Medeiros Dantas da Silva

UFRN – Universidade Federal do Rio Grande do Norte DIMAp – Departamento de Informática e Matemática Aplicada

Natal-RN Novembro de 2018

(3)

Gomes, Danilo Damasceno.

Plataforma colaborativa para mineração de notas fiscais eletrônicas / Danilo Damasceno Gomes. - 2018.

46f.: il.

Monografia (Bacharelado em Engenharia de Software)

-Universidade Federal do Rio Grande do Norte, Centro de Ciências Exatas e da Terra, Departamento de Informática e Matemática Aplicada, Curso de Engenharia de Software. Natal, 2018. Orientador: Ivanovitch Medeiros Dantas da Silva.

1. Engenharia de software - Monografia. 2. Plataforma colaborativa - Monografia. 3. Notas fiscais - Monografia. 4. Mineração de dados - Monografia. I. Silva, Ivanovitch Medeiros Dantas da. II. Título.

RN/UF/CCET CDU 004.41

Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas - SISBI

Catalogação de Publicação na Fonte. UFRN - Biblioteca Setorial Prof. Ronaldo Xavier de Arruda - CCET

(4)

Monografia de Graduação sob o título "Plataforma colaborativa para mineração de notas fiscais eletrônicas"apresentada por Danilo Damasceno Gomes e aceita pelo Departamento de Informática e Matemática Aplicada do Centro de Ciências Exatas e da Terra da Uni-versidade Federal do Rio Grande do Norte, sendo aprovada por todos os membros da banca examinadora abaixo especificada:

Dr. Ivanovitch Medeiros Dantas da Silva

Orientador

INSTITUTO METRÓPOLE DIGITAL Universidade Federal do Rio Grande do Norte

M.e Gustavo Bezerra Paz Leitão INSTITUTO METRÓPOLE DIGITAL Universidade Federal do Rio Grande do Norte

Ma. Marianne Batista Diniz da Silva Universidade Federal de Sergipe

(5)

Este trabalho é dedicado a Deus, a minha mãe Ivonete que sempre me apoiou e a minha avó Maria de Fátima protetora da nossa família.

(6)

Agradecimentos

Agradeço a minha mãe pela oportunidade de estudar e realizar esse trabalho.

Aos meus amigos de classe de trabalho no Instituto Metrópole Digital e no Tribunal de Justiça do Rio Grande do Norte.

Aos meus professores que durante todo o curso me instruíram, em especial ao Professor Ivanovitch Medeiros e ao professor Itamir Barroca.

(7)

Todas as grandes coisas são simples. E muitas podem ser expressas numa só palavra: liberdade; justiça; honra; dever; piedade; esperança.

(8)

Plataforma colaborativa para mineração de notas

fiscais eletrônicas

Autor: Danilo Damasceno Gomes Orientador: Prof. Doutor Ivanovitch Medeiros Dantas da Silva

Resumo

As plataformas colaborativas são cada vez mais comuns, facilitando a vida das pessoas em como se locomovem, veem anúncios, se hospedam ou interagem socialmente, com esse pensamento buscando interação, inovação e facilidade foi criado uma plataforma para notas fiscais eletrônicas aplicado no contexto do estado do Rio Grande do Norte. Na plataforma será possível enviar e consultar informações completas das notas fiscais, informações essas cedidas voluntariamente pelos usuários do sistema. Será apresentado também as tecnologias utilizadas e os casos de uso do sistema e de um aplicativo móvel desenvolvido. Como resultado deste trabalho se obteve a plataforma colaborativa em produção com dados reais de notas fiscais além do aplicativo móvel que envia informações fiscais com uso do QR code e que procura produtos ordenados pelo preço e pela data, como exemplo de serviço.

(9)

Collaborative platform for electronic invoice mining

Author: Danilo Damasceno Gomes Supervisor: Prof. Doutor Ivanovitch Medeiros Dantas da Silva

Abstract

Collaborative platforms are increasingly common, facilitating people’s lives in how they get around, see ads, stay or interact socially, with that thought seeking interaction, in-novation and ease has created a platform for electronic invoices applied in the context of the state of Rio Grande do Norte. In the platform it will be possible to send and consult complete information of the invoices, information voluntarily given by the users of the system. It will also show the technologies used and the use cases of the system and a developed mobile application. As a result of this work we obtained the collaborative plat-form in production with real data of invoices besides the mobile application that sends information using QR code and that looks for products ordered by price and by date, as an example of service.

(10)

Lista de figuras

1 Metodologia de desenvolvimento . . . p. 16

2 Logo do Python . . . p. 20

3 Logo do MongoDB . . . p. 21

4 Logo do Flask . . . p. 22

5 Logo da Digital Ocean . . . p. 23

6 Logo do Android . . . p. 23

7 Logo do Zxing . . . p. 24

8 Diagrama - Funcionamento da plataforma . . . p. 27

9 Diagrama - Casos de uso da plataforma . . . p. 27

10 Código parcial da função postarProduto . . . p. 28

11 Código das mensagens de sucesso ou erro . . . p. 29

12 Código da função findProduto . . . p. 29

13 Exemplo de retorno da função findProduto . . . p. 30

14 Código da função findProdutos . . . p. 31

15 Exemplo de retorno da função findProdutos . . . p. 31

16 Diagrama de casos de uso do aplicativo . . . p. 33

17 Tela para busca de produto no aplicativo . . . p. 34

18 Tela para cadastrar nota pelo QR Code informando o cliente . . . p. 35

19 Tela para cadastrar nota pelo QR Code de forma anônima . . . p. 35

20 Tela para cadastrar nota pela URL . . . p. 36

21 Tela de sucesso do cadastro . . . p. 36

(11)

23 Nota fiscal eletrônica . . . p. 44

(12)

Lista de tabelas

1 Parâmetros do JSON. . . p. 28

2 Detalhes da requisição para buscar produto. . . p. 29

(13)

Lista de abreviaturas e siglas

UML - Unified Modeling Language

NoSQL - Not Only SQL

HTML - Hypertext Markup Language

HTTP - Hypertext Transfer Protocol

JSON - JavaScript Object Notation

WSGI - Web Server Gateway Interface

NFe - Nota Fiscal eletrônica

API - Application Programming Interface

(14)

Sumário

1 Introdução p. 14 1.1 Problema . . . p. 14 1.2 Motivação . . . p. 15 1.3 Objetivos . . . p. 15 1.4 Metodologia . . . p. 15 1.5 Organização do trabalho . . . p. 16

2 Fundamentação teórica e tecnologias p. 17

2.1 Artigo: Big Data: Unleashing information . . . p. 17

2.2 Relatório Técnico: Mineração de Dados: Conceitos, Tarefas, Métodos e

Ferramentas . . . p. 18

2.3 Estudo de caso: Mineração de dados - Funcionalidades, Técnicas e

Abor-dagens . . . p. 19

2.4 Mini Curso: Bancos de Dados NoSQL: Conceitos, Ferramentas,

Lingua-gens e Estudos de Casos no Contexto de Big Data . . . p. 19

2.5 Python . . . p. 20 2.6 MongoDB . . . p. 21 2.7 VirtualEnv . . . p. 21 2.8 Flask . . . p. 22 2.9 DigitalOcean . . . p. 22 2.10 Android . . . p. 23

2.10.1 Java para Android . . . p. 24

(15)

2.10.3 Volley . . . p. 24

2.11 Nota Fiscal Eletrônica . . . p. 25

3 Plataforma Colaborativa p. 26

3.1 Funcionamento . . . p. 26

3.2 Casos de Uso . . . p. 27

3.2.1 Caso de uso: Inserir Nota . . . p. 27

3.2.2 Caso de uso: Buscar Produto . . . p. 29

3.2.3 Caso de uso: Listar Produtos . . . p. 30

3.3 Colaboração e mineração com a plataforma . . . p. 32

3.4 Resultado . . . p. 32

4 Aplicativo móvel p. 33

4.1 Casos de Uso . . . p. 33

4.1.1 Caso de uso: Buscar Produtos . . . p. 34

4.1.2 Caso de uso: Cadastrar Pelo QR - CODE . . . p. 34

4.1.3 Caso de uso: cadastrar nota pela URL . . . p. 35

4.2 Resultado obtido com o aplicativo . . . p. 36

5 Considerações finais e trabalhos futuros p. 38

5.1 Limitações . . . p. 38

5.2 Trabalhos futuros . . . p. 39

Referências p. 41

Apêndice A -- Nota Fiscal p. 43

(16)

14

1

Introdução

O mundo cada dia mais informatizado traz inúmeras vantagens para a sociedade, seja no mundo dos negócios ao lazer de cada indivíduo. Com esse intuito, o trabalho aqui apresentado levanta a proposta de uma plataforma que agrega informações a respeito das compras de um grupo de indivíduos (colaboradores da plataforma), e com essas informa-ções possibilita a criação de serviços.

Neste trabalho será apresentado uma plataforma para mineração de dados capaz de prover serviços. A plataforma deve receber e fornecer informações a respeito das notas fiscais cadastradas online, não se abrangendo a outras fontes de dados.

Como hipótese principal temos a verificação do funcionamento dessa ferramenta para usuários finais de forma colaborativa, e se é possível, a extração dessas informações pelo canal disposto pelo governo estadual do Rio Grande do Norte.

Para o desenvolvimento desse projeto, deverá ser estudado os conceitos de mineração de dados, o uso da rede de internet para tráfego de informação, o uso de bancos não relacionais para armazenamento de dados e o uso da linguagem Python para a criação das rotinas da plataforma.

1.1

Problema

Com 6,4 milhões de estabelecimentos comerciais no Brasil (SEBRAE, 2018) são geradas milhões de notas fiscais todos os meses. Essas informações ficam guardadas nos bancos de dados das secretarias estaduais e muitas vezes não são utilizadas, porém com esses dados é possível criar diversos serviços que podem ajudar a população e aos lojistas, desde um controle de gastos para os clientes a uma lista de preferência dos clientes para a loja. Neste trabalho iremos apresentar uma solução tecnológica capaz de armazenar e disponibilizar dados das notas fiscais referêntes ao estado do Rio Grande do Norte. As notas fiscais em questão serão apresentadas no capítulo 2.

(17)

15

1.2

Motivação

O assunto pesquisado nesse projeto tem grande relevância, tanto para o meio comercial como para o meio acadêmico, pois permite a possibilidade para serviços de terceiros voltados para a população em caráter social e econômico. A maior motivação desse projeto é criar uma plataforma que possibilite a geração de serviços, utilizando os dados das notas fiscais, que favoreça a redução de custos na compra de produtos pela população do Rio Grande do Norte.

1.3

Objetivos

Os principal objetivo desse trabalho é validar a ideia de uma plataforma web alimen-tada de forma colaborativa cujo os dados se limitem aos das notas fiscais eletrônicas. Além desse objetivo temos:

• Demonstrar os casos de uso da plataforma com diagramas UML

• Criação de um aplicativo mobile que exemplifique um serviço utilizando os dados armazenados na plataforma;

• Demonstrar os casos de uso do aplicativo com diagramas UML;

1.4

Metodologia

A metodologia utilizada para a criação desse trabalho consiste no levantamento de requisitos, com pessoas interessadas pelo projeto, pesquisas de viabilidade tecnológica na internet e o desenvolvimento de um protótipo da plataforma. O desenvolvimento de software foi linear e incremental como demonstra a Figura 1 (CUSTODIO, 2014), com testes que eram realizados por função desenvolvida.

(18)

16

Figura 1: Metodologia de desenvolvimento

Fonte: Rodrigo Custódio, 2014

1.5

Organização do trabalho

Os capitulos desse tralho foram organizados da seguinte maneira:

1. Capítulo 2 apresenta fundamentação teórica do trabalho e suas tecnologias;

2. Capítulo 3 descreve a plataforma colaborativa desenvolvida;

3. Capítulo 4 demonstra o aplicativo móvel desenvolvido;

(19)

17

2

Fundamentação teórica e

tecnologias

Para entender os conceitos gerais que englobam o trabalho aqui desenvolvido, de pes-quisa e software, foi necessário a leitura de alguns artigos e o estudo de várias tecnologias atuais. Os artigos se concentram na parte de mineração de dados e as tecnologias são diversas, para a plataforma foram utilizadas: Python e suas bibliotecas, MongoDB, Vir-tualenv e Flask, tudo hospedado em uma máquina virtual Ubuntu da DigitalOcean. Para o aplicativo mobile as tecnologias utilizadas foram: Android, biblioteca Zxing e biblioteca Volley. Os artigos e tecnologias serão detalhadas nesse capítulo.

2.1

Artigo: Big Data: Unleashing information

O artigo inicia falando dos inumeráveis usos dos dados e seu crescimento exponencial na última década. Cita mecanismos como Google e Baidu search que usam grande volume de dados em suas buscas. É falado como Big Data hoje se tornou uma vantagem para as grandes empresas, sendo que antigamente grande volume de dados era um problema. Vemos no artigo que o uso de técnicas de estatística e probabilidade é necessário para entendimento e manejo dos dados, principalmente para aplicações em tempo real. O artigo traz várias tabelas mostrando as empresas, seus produtos e consumo de espaço em disco e a abordagem de Big Data apropriada. O foco desse texto é dividir Big Data em 4 componentes mostrando suas características e aplicações. A divisão é feita em:

1. Acquisition

• Entendimento do problema pelos dados; • Quantidade de dados de qualidade.

(20)

18

• Acessibilidade sob demanda dos dados.

3. Analytics

• Análise do relacionamento dos dados e seus significados.

4. Application

• Realizar objetivos com os dados obtidos.

Para finalizar, o artigo compara a abordagem tradicional dos dados com a abordagem de Big Data para os 4 tópicos acima e conclui que Big Data e suas técnicas levam forte vantagem (TIEN, 2013). Como esse trabalho pretende criar uma plataforma que armazena grande volume de dados esse artigo serve de norte para o desenvolvimento da ferramenta.

2.2

Relatório Técnico: Mineração de Dados: Conceitos,

Tarefas, Métodos e Ferramentas

O relatório explica como as empresas públicas e privadas podem se beneficiar com o uso e entendimento dos seus dados, provendo melhores serviços a seus clientes. Alguns ramos citados são, medicina, serviços eleitorais, recursos humano, bancos e segurança.

O artigo explica que a mineração de dados é uma fase do KDD(Knowledge Discovery in Databases) e deve identificar novos padrões válidos, úteis e compreensíveis (CAMILO, 2009). Sobre os dados é destacado que se trata da fase mais importante e que no início do processo deve ser feito uma avaliação geral antes de aplicar técnicas mais específicas de identificação de padrões.

No artigo é explicado sobre as tarefas da mineração de dados e seus significados, algumas tarefas são: Descrição, Classificação, Estimação, Predição, Agrupamento e As-sociação. Ainda é falado neste texto diversas técnicas sobre mineração de dados como: Mineração de itens Frequentes, Árvores de Decisão, Classificação Bayesiana, Redes Neu-rais, Aprendizado Tardio e muitas outras.

Para finalizar o artigo cita a mineração de estruturas complexas, como grafos, séries temporais e fluxo de dados e ainda fala sobre ferramentas do mercado como Clementine, WEKA, Pimiento, Oracle Data Mining e outras.

Esse relatório demonstra quais os benefícios dos dados para empresas públicas e priva-das e quais processos são utilizados nos dados. Com a leitura desse relatório fica claro que

(21)

19

a plataforma deve fornecer informações de forma que esses processos possam ser aplicados.

2.3

Estudo de caso: Mineração de dados -

Funcionali-dades, Técnicas e Abordagens

O principal foco desse relatório é a análise dos dados, nesse texto essa análise é dividida em duas: Descritiva e Prognóstica (CORTêS, 2002).

A análise Descritiva é dividida em duas:

1. Análise Prévia: tem como objetivo encontrar anomalias ou resultados raros que possam influenciar os resultados da mineração de dados;

2. Descobrimento: O objetivo é encontrar padrões escondidos, sem que exista uma ideia ou hipótese clara previamente estabelecida.

A análise de prognóstico é dividida em três:

1. Estimação: processo de predizer algum valor, baseado num padrão já existente;

2. Predição: processo para predizer um comportamento futuro.

3. Classificação: processo para predizer algum valor para uma variável categórica.

O relatório ainda aborda muitos conceitos e técnicas de mineração de dados porém como parte diferencial de outros artigos aborda a divisão acima.

2.4

Mini Curso: Bancos de Dados NoSQL: Conceitos,

Ferramentas, Linguagens e Estudos de Casos no

Contexto de Big Data

O minicurso introduz que hoje com a web 2.0 os sistemas precisam trabalhar com grande volume de dados e que o uso e análise desses dados com bancos relacionais está se tornando inviável devido ao tempo de processamento e outras limitações.

O uso de bancos NoSQL vem ganhando espaço nesse cenário de análise de dados, pois tem várias características importantes para esse contexto, dessas características se destacam quatro: manipular dados na ordem de dezenas ou centenas de terabytes; poder

(22)

20

de crescimento elástico horizontal; fácil distribuição dos dados; tipos de dados variados, complexos e/ou semiestruturados (VIEIRA, 2012).

Os bancos de dados NoSQL mais comuns trabalham com os seguintes modelos: base-ado em coluna, documentos, grafos e chave-valor. Sendo cada modelo com suas proprie-dades e se adaptando melhor a cenários específicos.

Para finalizar o artigo traz dois estudos de caso aplicando tecnologias NoSQL, além disso aborda ferramentas do mercado como o Hadoop, Hive, BigCouch. A maior contribui-ção desse artigo neste projeto são os conceitos gerais dos bancos NoSQL e suas utilidades na mineração de dados. Com a leitura desse artigo e demais pesquisas foi decidido que a plataforma iria utilizar um banco de dados NoSQL.

2.5

Python

Figura 2: Logo do Python

A linguagem de programação Python foi criada por Guido van Rossum em 1991 para ser uma linguagem produtiva e com legibilidade, de rápido aprendizado e multi-plataforma, algumas características da linguagem são:

1. Baixo uso de caracteres especiais;

2. O uso de identação para marcar blocos;

3. Coletor de lixo para gerenciar automaticamente o uso da memória.

A linguagem tem uma grande comunidade o que facilita tirar dúvidas e criar projetos de código aberto, possui uma vasta quantidade de bibliotecas de fácil utilização e é muito utilizada em projetos de Big Data (UDACITY, 2018a) e por isso foi escolhido para esse projeto.

É importante citar algumas bibliotecas essenciais utilizadas nesse projeto como a Beautiful Soup, utilizada para varrer páginas HTML e obter conteúdos especificados,

(23)

21

biblioteca Requests responsável pelas requisições HTTP , JSON responsável por formatar os dados e Pymongo que realiza a conexão do script Python com o banco de dados MongoDB.

2.6

MongoDB

Figura 3: Logo do MongoDB

O MongoDB é um banco de dados de documentos desenvolvido em C++ em código aberto, possui alta performance e disponibilidade, não possui esquemas e é multipla-taforma (DEVMEDIA, 2014). Esse banco de dados é usado principlamente em aplicações com grande volume de dados como inteligência artificial e business intelligence (UDACITY, 2018b). No MongoDB foram agregados alguns recursos:

1. Facilidade de gerenciamento;

2. Escalabilidade horizontal e vertical;

3. Preparação para trabalhar na nuvem;

4. Persistência de dados otimizada;

5. Integração com ferramentas de Big Data e outras tecnologias de coleta e análise de dados em massa.

Por ser código aberto e ter esses recursos especificados, além da alta disponibilidade, esse banco foi escolhido para ser utilizado na plataforma.

2.7

VirtualEnv

O virtualEnv é uma ferramenta que permite criar ambientes isolados de desenvolvi-mento em Python, dessa forma é possível criar diversos projetos sem que haja conflito de

(24)

22

bibliotecas ou versões da linguagem de programação. Com essa ferramenta não é necessá-rio o uso de várias máquinas virtuais para desenvolver aplicações conflitantes ao mesmo tempo. O funcionamento do VirtualEnv é simples, basicamente ele cria uma cópia isolada de todos os diretórios necessários para que o script Python possa ser executado (RAMOS, 2018).

2.8

Flask

Figura 4: Logo do Flask

O Flask é um micro-framework desenvolvido em Python voltado para a web. Com Flask é possível criar um sistema com poucos passos. Os três pilares que constituem o framework são (ROCHA, 2014):

1. WerkZeug: biblioteca para desenvolver aplicativos Python construída com uma in-terface simples e universal entre aplicativos e servidores web da especifícação WSGI , a biblioteca pode lidar com requisições e respostas, controle de cache, cookies, status HTTP e roteamento de URLs;

2. Jinja2: template HTML escrito em Python de fácil customização;

3. Good Intentions: Código de boa leitura e escrita com padrões de projetos que per-mitem crescimento e liberdade.

Com a liberdade e robustez que o Flask proporciona a ferramenta foi uma das esco-lhidas para o desenvolvimento da plataforma.

2.9

DigitalOcean

A Digital Ocean é um provedor de máquinas virtuais que provê serviços voltados a desenvolvedores de aplicações. Hoje a empresa é uma das maiores no ramo. Nesse provedor é possível criar ambientes pré-definidos escolhendo ferramentas e sistemas operacionais e com apenas alguns passos ter esses ambiente em pleno funcionamento.

(25)

23

Figura 5: Logo da Digital Ocean

O provedor tem uma comunidade ativa e disponibiliza tutorias, sobre diversas ferra-mentas para facilitar o desenvolvimento de software. Embora paga a plataforma disponi-biliza máquinas baratas que começam no valor de cinco dólares mensais.

Pela facilidade na criação do ambiente de desenvolvimento, comunidade ativa e bons tutoriais a DigitalOcean foi escolhida para hospedar a plataforma de notas fiscais eletrô-nicas.

2.10

Android

Figura 6: Logo do Android

O Android é um sistema operacional baseado em Linux para smartphones, tablets e diversos outros dispositivos. Sua função, em simplicidade, é gerenciar os processos dos aplicativos no hardware em questão. O sistema é de código aberto, mas mesmo assim seu uso foi impulsionado pela empresa Google, sendo hoje o Android o sistema operacional mais utilizado no mundo (GLOBO, 2017).

Por possuir um grande mercado, ser uma plataforma estável, confiável e com ampla comunidade de desenvolvedores o Android foi a plataforma escolhida para o aplicativo móvel desse trabalho. Na plataforma é possível que qualquer desenvolvedor publique seu aplicativo na loja de Apps, porém isso não foi realizado porque o aplicativo aqui desen-volvido é apenas um protótipo.

(26)

24

2.10.1

Java para Android

O java é uma plataforma computacional e uma linguagem de computação criada pela Sun Microsystems em 1995 (ORACLE, 2018). Uma característica marcante da linguagem é que programas nessa linguagem são compilados para um bytecode e executados por uma máquina virtual, o que permite um mesmo programa ser executado em mais de uma plataforma. Os aplicativos desenvolvidos para Android, em sua maioria, são baseados em java.

2.10.2

Zxing

Figura 7: Logo do Zxing

Zxing é uma biblioteca de código aberto para leitura de códigos de barra de uma ou duas dimensões. A biblioteca é feita em java e pode ser utilizada em projetos para aplicativos Android e outras plataformas. A biblioteca foi utilizada para ler QR codes das notas fiscais pelo aplicativo Android.

2.10.3

Volley

Volley é uma biblioteca HTTP para facilitar conexões entre a internet e aplicativos Android de forma rápida e robusta. Além de ser de código aberto a biblioteca tem outras característica:

1. Múltipla concorrência em conexões;

2. Suporte para requisição prioritária;

3. Cancelamento de requisições;

(27)

25

A biblioteca é de fácil instalação e foi utilizada no aplicativo móvel deste projeto para enviar e receber os dados da plataforma.

2.11

Nota Fiscal Eletrônica

A nota fiscal eletrônica (NFE ) é um documento gerado digitalmente e garantido por uma assinatura digital. É utilizado por empresas para documentar transações, se-jam de venda de produtos, serviços, devoluções e exportações. Sua emissão é obrigatória por parte do estabelecimento, a NFe também é utilizada para recolhimento de impostos. Basicamente existem dois modelos de nota fiscal eletrônica a NFCe que é utilizada para venda ao consumidor final e a NFe utilizada para demais operações como exportação (JUNQUEIRA, 2018). Nesse trabalho iremos utilizar a nota fiscal para consumidor final.

(28)

26

3

Plataforma Colaborativa

Dentre todas as definições de plataforma que existem a que mais se assemelha com esse projeto é essa: "Sistemas que são mais valorizados quanto mais pessoas usam"(STARTUP, 2015). Dessa forma a plataforma aqui desenvolvida tem o objetivo de receber e prover informações de notas fiscais para qualquer pessoa ou sistema, agregando valor de forma aberta e colaborativa. Outra definição de plataforma que se encaixa no nosso contexto é a do professor Rodrigo Reis, "Uma plataforma deve fornecer uma função ou serviço útil e permitir acesso a terceiros através de APIs "(REIS, 2014).

A plataforma aqui desenvolvida é um serviço web que recebe e provê informações por meio do protocolo HTTP. A plataforma foi desenvolvida em Python e hospedada em uma máquina virtual na DigitalOcean.

3.1

Funcionamento

Temos a plataforma hospedada em um servidor, aberto para a internet, em que qual-quer dispositivo capaz de realizar requisição HTTP pode se comunicar com o sistema. Por meio de uma requisição, GET ou POST, o programa em Python irá realizar uma inserção ou consulta na base de dados MongoDB. Esse processo é exemplificado na figura 8.

(29)

27

Figura 8: Diagrama - Funcionamento da plataforma

Fonte: Elaborado pelo próprio Autor, 2018

3.2

Casos de Uso

Para desenvolver a plataforma validando a ideia e resolvendo o problema principal, foi mapeado apenas os casos de uso essenciais como demonstra a figura 9.

Figura 9: Diagrama - Casos de uso da plataforma

Fonte: Elaborado pelo próprio Autor, 2018

3.2.1

Caso de uso: Inserir Nota

Nesse caso de uso o dispositivo envia para a plataforma a URL da nota fiscal eletrônica para ser cadastrada na plataforma de forma anônima ou com os dados do cliente. A

(30)

28

URL da nota fiscal pode ser encontrada no QR Code das notas fiscais impressas pelos estabelecimentos.

Para esse caso de uso foi desenvolvida uma função chamada postarProduto(), em que ela recebe pelo método POST, pela URL "/nota"com cabeçalho "Content-Type: application/json"um JSON com os parâmetros indicados na Tabela 1.

Tabela 1: Parâmetros do JSON.

Parâmetro Tipo

link string

cliente string

anonimo boolean

Fonte: Elaborado pelo próprio Autor, 2018.

Com os dados recebidos o script em Python, utilizando da biblioteca BeautifulSoup, faz uma requisição e varredura na página que contém a nota fiscal eletrônica obtendo os produtos e informções como: data, estabelecimento, CNPJ e endereço, armazenando no banco de dados de forma que cada produto seja um documento.

Figura 10: Código parcial da função postarProduto

Fonte: Elaborado pelo próprio Autor, 2018

Após armazenar os produtos no banco de dados ou caso ocorra algum erro o sistema retorna um status HTTP com uma mensagem para o cliente, como demonstra a Figura 11.

(31)

29

Figura 11: Código das mensagens de sucesso ou erro

Fonte: Elaborado pelo próprio Autor, 2018

3.2.2

Caso de uso: Buscar Produto

Nesse caso de uso o cliente envia o nome de um produto para a plataforma querendo receber o registro mais recente de menor preço.

A requisição é feita como indica a Tabela 2, lembrando que o parâmetro é em caixa alta.

Tabela 2: Detalhes da requisição para buscar produto.

URL Método Parâmetro

http://159.65.36.201/produto/<parâmetro> GET String

Fonte: Elaborado pelo próprio Autor, 2018.

Para esse caso de uso foi desenvolvida uma função de nome "findProduto()", Figura 12.

Figura 12: Código da função findProduto

Fonte: Elaborado pelo próprio Autor, 2018

Caso encontre o produto especificado o sistema retorna um JSON com as informações completas do produto mais recente de menor valor. Exemplo de retorno na Figura 13.

(32)

30

Figura 13: Exemplo de retorno da função findProduto

Fonte: Elaborado pelo próprio Autor, 2018

3.2.3

Caso de uso: Listar Produtos

O cliente deseja uma lista, do produto informado, ordenada pela data mais recente e menor preço.

A requisição é feita como indica a Tabela 3, lembrando que o parâmetro é em caixa alta.

Tabela 3: Detalhes da requisição para listar produtos.

URL Método Parâmetro

http://159.65.36.201/produtos/<parâmetro> GET String

(33)

31

A função responsável por responder essa requisição é a "findProdutos()"implementada como na Figura 14.

Figura 14: Código da função findProdutos

Fonte: Elaborado pelo próprio Autor, 2018

O retorno da função é um array de JSON contendo os produtos encontrados. Exemplo na Figura 15.

Figura 15: Exemplo de retorno da função findProdutos

Fonte: Elaborado pelo próprio Autor, 2018

(34)

32

3.3

Colaboração e mineração com a plataforma

Para colaborar com a plataforma é necessário apenas criar um serviço, aplicativo ou até mesmo um sistema mais robusto que utilize do protocolo HTTP para realizar as requisições listadas nos casos de uso. Os detalhes das requisições se encontram em cada caso de uso. A plataforma é aberta e no momento não possui nenhuma credencial para enviar e receber dados das notas fiscais. Provavelmente será implementado no futuro uma credencial apenas para controle.

A mineracão de dados das notas fiscais é possível por sistemas terceiros, atualmente a plataforma é capaz de responder uma lista de produtos de acordo com o nome do produto. Embora limitado, esse caso de uso já permite a mineração dos dados e é apenas um exemplo de como será possível consultar informações em massa para mineração, análise e agregação de dados. Novas requisições e funcionalidades serão acrescentadas a plataforma, mais detalhes na seção de trabalhos futuros.

3.4

Resultado

O resultado obtido com esse trabalho foi uma plataforma web colaborativa, funcional, com seus dados abertos a terceiros, em produção com informações reais extraídas de notas fiscais do Rio Grande do Norte. O sistema permite expansão e é de fácil de comunicação, utlizando o padrão JSON no protocolo HTTP. Atualmente o sistema pode ser encontrado no seguinte endereço: 159.65.36.201.

(35)

33

4

Aplicativo móvel

Para exemplificar um serviço utilizando a plataforma de notas fiscais, foi desenvolvido um aplicativo para sistema operacional Android.

4.1

Casos de Uso

Como a ideia era criar um aplicativo apenas para demonstrar o uso da API, os casos de uso desenvolvidos foram apenas os essenciais para validar a ideia como mostra o diagrama da Figura 16.

Figura 16: Diagrama de casos de uso do aplicativo

(36)

34

4.1.1

Caso de uso: Buscar Produtos

Nesse caso de uso o usuário utiliza o aplicativo para buscar um produto pelo menor preço na data mais recente e visualizar o endereço da loja. O retorno do aplicativo é uma lista de produtos como demonstra a Figura 17.

Figura 17: Tela para busca de produto no aplicativo

Fonte: Elaborado pelo próprio Autor, 2018

4.1.2

Caso de uso: Cadastrar Pelo QR - CODE

O usuário, com sua nota fiscal em mãos, utiliza a câmera do celular para cadastrar os produtos da nota na plataforma. O usuário pode informar o seu nome de cliente como demonstra a Figura 18, ou cadastrar de forma anônima exemplificado na Figura 19.

(37)

35

Figura 18: Tela para cadastrar nota pelo QR Code informando o cliente

Fonte: Elaborado pelo próprio Autor, 2018

Figura 19: Tela para cadastrar nota pelo QR Code de forma anônima

Fonte: Elaborado pelo próprio Autor, 2018

4.1.3

Caso de uso: cadastrar nota pela URL

Com o link da nota fiscal eletrônica o usuário cadastra os produtos da nota pelo aplicativo informando seu nome ou de forma anônima, Figura 20. O link da nota fiscal pode ser obtido lendo o QR Code por ferramentas de terceiros ou utilizando o aplicativo da secretaria de tributação do Rio Grande do Norte, Nota Fiscal Potiguar (SET, 2018).

(38)

36

Figura 20: Tela para cadastrar nota pela URL

Fonte: Elaborado pelo próprio Autor, 2018

Cadastrando a nota pelo QR Code ou pela URL o aplicativo informa o sucesso ou não da solicitação. Exemplo de sucesso na Figura 21.

Figura 21: Tela de sucesso do cadastro

Fonte: Elaborado pelo próprio Autor, 2018

4.2

Resultado obtido com o aplicativo

O aplicativo foi utilizado para cadastrar as notas fiscais tanto pelo QR Code como pela URL, a aplicação funcionou bem e atendeu ao propósito do teste. A aplicação não teve um desenvolvimento complexo e utilizou as tecnologias Zxing para leitura do QR Code e Volley para requisições HTTP. O desenvolvimento da aplicação poderia ter sido para IOS

(39)

37

ou outros sistemas operacionais já que as bibliotecas utilizadas estãos disponíveis para a maioria dos sistemas.

Como forma de demonstrar o uso da plataforma por serviços terceiros a aplicação foi um sucesso, pois recebeu e enviou informação para a plataforma como esperado. O padrão JSON facilitou a manipulação dos dados no desenvolvimento e o fato de não haver autenticação acelerou o processo de criação do aplicativo. O aplicativo está funcional e foi testado no emulador do android e em smartphones reais, a aplicação não foi publicada na loja por ser um protótipo.

(40)

38

5

Considerações finais e trabalhos

futuros

Para desenvolver este trabalho foi necessário uma revisão do que foi aprendido no curso de engenharia de software. Na parte técnica, o desenvolvimento de software e configura-ções de ambiente foram essenciais para o desenvolvimento da plataforma e do aplicativo móvel. Na parte mais teórica do curso, o levantamento de requisitos se fez necessário para entender os casos de uso necessários para validar a ideia. Além dos conhecimentos adqui-ridos no curso a leitura de trabalhos acadêmicos ajudou no entendimento do assunto e a da embasamento a este trabalho de conclusào de curso.

Ao fim deste trabalho podemos constatar uma plataforma de software capaz de obter dados das notas fiscais eletrônicas do Rio Grande do Norte de forma colaborativa, sendo de fácil uso e de livre acesso. Além da plataforma foi desenvolvido um aplicativo Android para demonstrar o uso do sistema e de que serviços de terceiros podem consumir esses dados facilmente. Mais importante do que os sistemas aqui desenvolvidos é a capacidade de crescimento dessa plataforma e de como ela pode ajudar a população do estado a partir de serviços posteriomente desenvolvidos.

5.1

Limitações

No decorrer do desenvolvimento desse projeto foram percebidas algumas limitações, no início a ideia era de que a plataforma pudesse ser utilizada para qualquer nota fiscal dentro do Brasil, porém seria muito trabalhoso já que o controle das notas é feito pelos estados e temos hoje no país 26 estados e um distrito federal. Nesse contexto foi limitado para que a plataforma atendesse apenas o Rio Grande do Norte.

Foram encontradas outras limitações importantes nesse trabalho: as notas fiscais im-pressas facilmente estragam e impossibilitam a leitura do QR Code, assim a leitura do QR Code pelo usuário deve ser feita o quanto antes receber a nota. Muitas vezes

(41)

estabele-39

cimentos comerciais não imprimem o QR Code com o token de acesso a versão eletrônica da nota fiscal, dessa forma é necessário o uso do aplicativo ofical do governo, Nota Fiscal Potiguar, para se obter o link com o token da nota fiscal eletrônica.

A plataforma foi hospedada em uma máquina virtual simples, dessa forma temos limitações de hardware, caso tenha um grande volume de requisições a aplicação pode cair, porém essas limitações podem ser resolvidas com investimento em hardware de forma horizontal e vertical. Ainda na plataforma, há limitações no acesso aos dados já que poucas funções foram implementadas, sendo resolvidas com o desenvolvimento de novas funções.

No aplicativo temos a limitação de envio de notas que ocorre uma por vez, dificuldade na leitura do QR Code que pode ocorrer por rasura ou má qualidade da câmera do smartphone. Além disso o aplicativo tem poucas funções e pode melhorar na parte de designer.

5.2

Trabalhos futuros

Como trabalho futuro é pretendido tornar a plataforma mais robusta, migrando o sistema para uma máquina virtual de alto desempenho e criando novas funcões de acesso e inserção de dados. Após esses ajustes o projeto será amplamente divulgado na sociedade.

Algumas funções pretendidas para a plataforma são:

1. Inserir apenas produtos selecionados da nota fiscal eletrônica;

2. Retornar todas as notas fiscais utilizando filtros dinâmicos como: estabelecimento, data, endereço e cliente;

3. Retornar todas as notas fiscais da plataforma;

4. Introduzir gradualmente as notas fiscais de outros estados da república.

Para o aplicativo mobile será reformulado o seu designer para deixá-lo mais atrativo e fácil de manipular. Será criado um similar para IOS e postar ambos aplicativos em suas lojas online. As funções a serem acrescentadas no aplicativo a princípio são:

1. Login com Facebook ou Google;

(42)

40

3. Criar listas de compras e procurar a de melhor custo benefício dentre os estabeleci-mentos;

4. Favoritar produtos e receber avisos caso entrem em promoção;

5. Utilizar geolocalização na busca de produtos;

6. Melhorar leitura do QR Code da nota fisical;

Após as melhorias nos sistemas e suas divulgações com a população, é pretendido a escrita de um artigo. Utilizando os dados da plataforma o artigo irá discutir sobre estatísticas e análises diversas a respeito do consumo da população potiguar, além da comparação de preços por regiões, datas e estabelecimentos.

(43)

41

Referências

CAMILO, C. O. Mineração de Dados: Conceitos, Tarefas, Métodos e Ferramentas. [S.l.], 2009.

CORTêS, S. da C. Mineração de dados - Funcionalidades, Técnicas e Abordagens. 2002. Disponível em: <ftp://obaluae.inf.puc-rio.br/pub/docs/techreports/02_10_ cortes.pdf>. Acesso em Outubro, 2018.

CUSTODIO, R. Modelo Cascata x Incremental – Quanto Mais Rápido em Produção, Melhor!!! 2014. Disponível em: <https://rodrigoqustodio.wordpress.com/2014/09/ 17/modelo-cascata-x-incremental-quanto-mais-rapido-em-producao-melhor>. Acesso em Outubro, 2018.

DEVMEDIA. Introdução ao MongoDB. jun. 2014. Disponível em: <https:

//www.devmedia.com.br/introducao-ao-mongodb/30792>. Acesso em Outubro, 2018. GLOBO. Android passa Windows e se torna o sistema operacional mais udado

do mundo. 2017. Disponível em: <https://g1.globo.com/tecnologia/noticia/

android-passa-windows-e-se-torna-o-sistema-operacional-mais-usado-do-mundo. ghtml>. Acesso em novembro, 2018.

JUNQUEIRA, A. O que é NFe (Nota Fiscal Eletrônica)? mar. 2018. Disponível em: <https://www.infovarejo.com.br/o-que-e-nfe-nota-fiscal-eletronica/>. Acesso em Dezembro, 2018.

ORACLE. O que é a Tecnologia Java e porque preciso dela? jun. 2018. Disponível em: <https://www.java.com/pt_BR/download/faq/whatis_java.xml>. Acesso em Novembro, 2018.

RAMOS, V. Python e Virtualenv: Como Programar em Ambientes Vir-tuais. 2018. Disponível em: <https://pythonacademy.com.br/blog/

python-e-virtualenv-como-programar-em-ambientes-virtuais>. Acesso em Outubro, 2018.

REIS, R. Q. Uma introdução ao Projeto de Plataformas (ou Ecosis-temas) de Software. 2014. Disponível em: <https://pt.slideshare. net/RoUmaintroduÃğÃčoaoProjetodePlataformas(ouEcosistemas) deSoftwaredrigoReis11/

introduo-ao-projeto-de-plataformas-de-software-o-qu-por-que-como>. Acesso em Outubro, 2018.

ROCHA, B. C. What the Flask? Pt-1 Introdução ao desenvolvimento web com Python. 2014. Disponível em: <http://pythonclub.com.br/ what-the-flask-pt-1-introducao-ao-desenvolvimento-web-com-python. html#o_que_e_flask>. Acesso em Outubro, 2018.

(44)

42

SEBRAE. Pequenos negócios em números. jun. 2018. Disponível em: <http://www.sebrae.com.br/sites/PortalSebrae/ufs/sp/sebraeaz/

pequenos-negocios-em-numeros,12e8794363447510VgnVCM1000004c00210aRCRD>. Acesso em Outubro, 2018.

SET. Nota Fiscal Potiguar. 2018. Disponível em: <https://play.google.com/store/ apps/details?id=br.gov.rn.set.notafiscalpotiguar.app&hl=en_US>. Acesso em Novembro, 2018.

STARTUP, G. da. Introdução às plataformas de software. mar. 2015. Disponível em: <http://www.guiadastartup.com.br/produto-ou-plataforma/>. Acesso em Outubro, 2018.

TIEN, J. M. Big data: Unleashing information. Journal of Systems Science and Systems Engineering, v. 22, n. 2, p. 127–151, 2013.

UDACITY. 6 razões para escolher programar em Python. nov. 2018. Disponível em: <https://br.udacity.com/blog/post/python-o-que-e-como-usar>. Acesso em Outubro, 2018.

UDACITY. O que é MongoDB? Conheça este banco de dados. 2018. Disponível em: <https://br.udacity.com/blog/post/o-que-e-mongodb>. Acesso em Outubro, 2018.

VIEIRA, M. R. Bancos de Dados NoSQL: Conceitos, Ferramentas, Linguagens e Estudos de Casos no Contexto de Big Data. 2012. Disponível em: <http: //data.ime.usp.br/sbbd2012/artigos/pdfs/sbbd_min_01.pdf>. Acesso em Outubro, 2018.

(45)

43

APÊNDICE A -- Nota Fiscal

Abaixo segue uma nota fiscal do estado do Rio Grande do Norte em sua forma física e eletrônica.

Figura 22: Nota fiscal impressa

(46)

44

Figura 23: Nota fiscal eletrônica

(47)

45

APÊNDICE B -- Máquina Virtual

Configurações da máquina virtual que hospeda a plataforma de software, a hospeda-gem é feita pela empresa DigitalOcean.

Figura 24: Configurações da máquina virtual

Referências

Documentos relacionados

Uma maneira viável para compreender uma reação química é através da conservação das massas, isso porque numa abordagem mais ampla, como demonstra no livro

Mesmo com suas ativas participações na luta política, as mulheres militantes carregavam consigo o signo do preconceito existente para com elas por parte não somente dos militares,

Atualmente o predomínio dessas linguagens verbais e não verbais, ancorados nos gêneros, faz necessário introduzir o gênero capa de revista nas aulas de Língua Portuguesa, pois,

Chega-se a essa confrontação, porque cineastas como Godard (e seu programa 6 vezes 2) e Glauber Rocha (no programa Abertura, TV Tupi, 1971), provaram que outro “povoamento” da TV

Tendo como parâmetros para análise dos dados, a comparação entre monta natural (MN) e inseminação artificial (IA) em relação ao número de concepções e

Avaliar a precisão dos resultados obtidos no teste de condutividade elétrica da solução de embebição comparada com outros testes na avaliação da qualidade fisiológica

Para o processo seletivo em nível de mestrado, eventuais empates serão resolvidos, sucessivamente, pela maior nota na prova de conhecimentos e pelo maior

a) ocorrem entre todos os átomos da Tabela Periódica, sendo classificadas em duas: Iônica e Covalente. b) apenas os metais alcalinos podem fazer ligações químicas, essas