Buscar

Barbosa_Prado_Giuliano_Mendes_Gabriela_tcc


Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 110 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 110 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 110 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Continue navegando


Prévia do material em texto

UNIVERSIDADE DE SÃO PAULO
ESCOLA DE ENGENHARIA DE SÃO CARLOS
DEPARTAMENTO DE ENGENHARIA ELÉTRICA
E DE COMPUTAÇÃO
Planex - Website de comparação de taxas de
câmbio
Autor: Gabriela Fusco Mendes
Autor: Giuliano Barbosa Prado
Professor: Prof. Dr. Evandro Luis Linhari Rodrigues
São Carlos
2017
Gabriela Fusco Mendes e Giuliano Barbosa Prado
Planex - Website de comparação de taxas
de câmbio
Trabalho de Conclusão de Curso apresentado
à Escola de Engenharia de São Carlos, da
Universidade de São Paulo
Curso de Engenharia de Computação e Engenharia Elétrica
ORIENTADOR: Prof. Dr. Evandro Luis Linhari Rodrigues
São Carlos
2017
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
AUTORIZO A REPRODUÇÃO TOTAL OU PARCIAL DESTE TRABALHO, 
POR QUALQUER MEIO CONVENCIONAL OU ELETRÔNICO, PARA FINS 
DE ESTUDO E PESQUISA, DESDE QUE CITADA A FONTE. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Barbosa Prado, Giuliano e Fusco Mendes, Gabriela 
B238p Planex - Website de comparação de taxas de câmbio / 
Giuliano Barbosa Prado e Gabriela Fusco Mendes; 
orientador Evandro Luís Linhari Rodrigues. 
 São Carlos, 2017. 
 
Monografia (Graduação em Engenharia de Computação e em 
Engenharia Elétrica) -- Escola de Engenharia de São 
Carlos e Instituto de Ciências Matemáticas e de 
Computação da Universidade de São Paulo, 2017. 
 
1. Câmbio. 2. Cotação. 3. Moeda estrangeira. 4. 
Dólar futuro. 5. Servidor em nuvem. 6. Spring 
framework. 7. Cliente-servidor. I. Título. 
Dedicatória
Dedicamos primeiramente à Deus, por ter nos dado a oportunidade da realização deste
trabalho. Aos nossos pais, irmãos e acompanhantes que, com muito apoio e carinho, não
mediram esforços para que chegássemos a essa etapa da vida. Ao curso de Engenharia de
Computação e Elétrica e às pessoas que convivemos no curso, por nos auxiliaram no desen-
volvimento pessoal e profissional. Aos amigos, por sempre nos apoiarem nos mais diversos
momentos da vida.
Gabriela Fusco Mendes
Giuliano Barbosa Prado
Agradecimentos
Agradecemos ao professor Dr. Evandro Luis Linhari Rodrigues, nosso orientador, que
com todo seu conhecimento e paciência, nos orientou não só nesse trabalho, como na nossa
formação acadêmica. Aos funcionários e demais docentes da Escola de Engenharia de São
Carlos e do Instituto de Ciências Matemáticas e de Computação pelo indispensável apoio e
ensinamento.
Gabriela Fusco Mendes
Giuliano Barbosa Prado
"A diferença entre um homem de sucesso e outro orientado para o fracasso é que um está
aprendendo a errar, enquanto o outro está procurando aprender com os seus próprios
erros."
[Confúcio]
Resumo
Este trabalho apresenta o planejamento e desenvolvimento de uma aplicação web para
estimativa de câmbio baseada em informações fornecidas por usuários e coletadas através
do processamento de dados de páginas de operadoras. Para tanto, elencou-se as ferramen-
tas mais populares no mercado, bem como padrões de projeto, arquitetura e comunicação
no desenvolvimento do back-end e no do front-end. A ideia do projeto nasceu a partir das
posições insatisfatórias do Brasil em educação financeira e dos altos spreads cobrados por
instituições intermediárias de câmbio. Primeiramente o mercado cambial brasileiro foi estu-
dado e seus instrumentos, analisados. O Brasil utiliza o modelo de câmbio flutuante sujo - ou
seja, embora o câmbio varie seguindo as leis do mercado, também sofre eventuais interven-
ções do Banco Central por meio de derivativos. O objetivo do PlanEx é se consolidar como
referência para comparação de dólar turismo e comercial, além de apresentar taxas para ins-
trumentos derivativos. Desta forma, todos os instrumentos foram descritos e comparados em
detalhe. O website lançou suas primeiras bases por meio do Ambiente de Desenvolvimento
Integrado IntelliJ e do framework Spring, que conferiu agilidade e integração ao projeto. O
website foi então hospedado no Heroku, servidor em nuvem escolhido por sua simplicidade e
praticidade, contando com um sistema gerenciador de base de dados integrado Postgres. Um
crawler foi utilizado para mapeamento das páginas das instituições financeiras para obten-
ção de suas cotações. A interface do front-end foi construída de forma a deixar a plataforma
visual e intuitiva ao usuário. Cotações foram simuladas com diversas instituições e os resul-
tados vieram em linha com o esperado.
Palavras-Chave: câmbio, cotação, moeda estrangeira, dólar futuro, servidor em nuvem,
framework Spring, cliente-servidor.
Abstract
This work presents the planning and development of a web application to estimate the
exchange rate based on the information provided by users and gathered by processing data
from pages. In order to do so, it used the most popular tools on the market, as well as design,
architectural and communication standards, both in the back-end and front-end development.
The idea of the project was conceived from Brazil’s unsatisfactory performance on public
financial education and from abusive exchange rates’ spreads charged everyday by financial
institutions. The Brazilian exchange market was studied in detail and its instruments, analy-
zed. Brazil uses the "dirty"floating exchange rate model - which means that, although the
exchange rate varies accordingly to market rules, it also suffers eventual Central Bank in-
terventions through derivatives instruments. The objective of PlanEx is to consolidate itself
as a reference for the comparison of tourist and commercial dollar, in addition to presenting
rates for more refined tools, like derivatives. The website launched its first bases through
IntelliJ Integrated Development Environment and the Spring framework - both are responsi-
ble for accelerating the development of the application and integrating the several layers of
the project. The website was then hosted on Heroku, a cloud server chosen for its simplicity
and practicality, with an integrated Postgres database. A crawler was used to map pages of
financial institutions in order to obtain their quotes. The front-end interface has been built to
make the platform intuitive and visual to the user. Quotations were simulated on PlanEx with
several institutions and results were in line with the expected.
Keywords: exchange, quotes, foreign currency, future dollar, cloud server, Spring fra-
mework, client-server.
Lista de Figuras
1.1 Pergunta 1 - Você já viajou para o exterior? Fonte: Própria. . . . . . . . . . . 26
1.2 Pergunta 2 - Qual seu sexo? Fonte: Própria. . . . . . . . . . . . . . . . . . . 27
1.3 Pergunta 3 - Com que frequência, em média, você viaja para o exterior?
Fonte: Própria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.4 Pergunta 4 - Quais são seus objetivos principais nas viagens? Fonte: Própria. 28
1.5 Pergunta 5 - Em quais situações você geralmente necessita de câmbio? Fonte:
Própria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
1.6 Pergunta 6 - Quais métodos de obtenção/pagamentos em moeda estrangeira
você utiliza? Fonte: Própria. . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.7 Pergunta 7 - Você já pesquisou/sabe a diferença dos impostos cobrados nos
métodos da pergunta anterior? Fonte: Própria. . . . . . . . . . . . . . . . . . 30
1.8 Pergunta 8 - Que banco você geralmente utiliza para o cartão de crédito/dé-
bito utilizado no exterior? Fonte: Própria. . . . . . . . . . . . . . . . . . . . 31
1.9 Pergunta 9 - Que corretora você normalmente utiliza para comprar papel-
moeda? Fonte: Própria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
1.10 Pergunta 10 - Você sabe que, além dos impostos e do valor dólar turismo, é
cobrado umspread (margem de compra/venda) pelas instituições financeiras
que fornecem câmbio? Fonte: Própria. . . . . . . . . . . . . . . . . . . . . . 33
1.11 Pergunta 11 - Você geralmente pesquisa a cotação online da moeda estran-
geira antes de comprar? Fonte: Própria. . . . . . . . . . . . . . . . . . . . . 33
1.12 Pergunta 12 - Você conhece algum aplicativo ou website que compara taxas
de câmbio de diferentes instituições? Fonte: Própria. . . . . . . . . . . . . . 34
1.13 Pergunta 13 - Se sim, qual? Fonte: Própria. . . . . . . . . . . . . . . . . . . 34
1.14 Pergunta 2 - Qual seu sexo? Fonte: Própria. . . . . . . . . . . . . . . . . . . 35
1.15 Pergunta 3 - Em quais situações você geralmente necessita de câmbio? Fonte:
Própria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
1.16 Pergunta 4 - Caso você fosse viajar, qual seria a sua opção inicial de câmbio?
Fonte: Própria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
1.17 Pergunta 4 - Você já pesquisou/sabe a diferença dos impostos cobrados nos
métodos da pergunta anterior? Fonte: Própria. . . . . . . . . . . . . . . . . . 37
1.18 Pergunta 5 - Você sabe que, além dos impostos e do valor dólar turismo, é
cobrado um spread (margem de compra/venda) pelas instituições financeiras
que fornecem câmbio? Fonte: Própria. . . . . . . . . . . . . . . . . . . . . . 37
1.19 Pergunta 6 - Você pesquisaria a cotação online da moeda estrangeira antes de
comprar? Fonte: Própria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
1.20 Pergunta 7 - Você conhece algum aplicativo ou website que compara taxas de
câmbio de diferentes instituições? Fonte: Própria. . . . . . . . . . . . . . . . 38
2.1 Spring IO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.1 Arquitetura do projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
3.2 Modelo Entidade-Relacionamento do banco de dados . . . . . . . . . . . . . 69
3.3 Modelo Relacional do banco de dados . . . . . . . . . . . . . . . . . . . . . 70
3.4 Diagrama da estrutura do Back-End . . . . . . . . . . . . . . . . . . . . . . 71
3.5 Diagrama de classes - Servidor . . . . . . . . . . . . . . . . . . . . . . . . . 73
3.6 Diagrama da estrutura do Front-End . . . . . . . . . . . . . . . . . . . . . . 78
3.7 Diagrama de sequência - Função de adicionar valor . . . . . . . . . . . . . . 82
3.8 Diagrama de sequência - Função de obter cotação . . . . . . . . . . . . . . . 83
3.9 Diagrama de sequência - Função de obter lista de cotações . . . . . . . . . . 84
3.10 Diagrama de sequência - Função de obter lista de provedores . . . . . . . . . 84
4.1 Log do servidor - Crawler. Fonte: Própria. . . . . . . . . . . . . . . . . . . . 87
4.2 Verificação do banco de dados - Crawler. Fonte: Própria. . . . . . . . . . . . 88
4.3 Verificação da página de resultados - addValue . . . . . . . . . . . . . . . . . 88
4.4 Verificação do log - addValue . . . . . . . . . . . . . . . . . . . . . . . . . . 89
4.5 Verificação do banco de dados - addValue . . . . . . . . . . . . . . . . . . . 89
4.6 Verificação da página de resultado - getQuote . . . . . . . . . . . . . . . . . 89
4.7 Verificação do log - getQuote . . . . . . . . . . . . . . . . . . . . . . . . . . 89
4.8 Verificação da página de resultado - getProviders. Fonte: Própria. . . . . . . . 90
4.9 Verificação do log - getProviders. Fonte: Própria. . . . . . . . . . . . . . . . 90
4.10 Verificação do banco de dados - getProviders. Fonte: Própria. . . . . . . . . . 90
4.11 Verificação da página de resultado - getQuoteList. Fonte: Própria. . . . . . . 91
4.12 Verificação do log - getQuoteList. Fonte: Própria. . . . . . . . . . . . . . . . 91
4.13 Interface do website Melhor Câmbio . . . . . . . . . . . . . . . . . . . . . . 92
4.14 Passo a passo do website Cambiar . . . . . . . . . . . . . . . . . . . . . . . 94
4.15 Interface do website Transferwise . . . . . . . . . . . . . . . . . . . . . . . 94
4.16 Logo do aplicativo Monepp . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
4.17 Interface do Valor PRO. Fonte: Própria. . . . . . . . . . . . . . . . . . . . . 97
4.18 Fórmulas para cálculo de uma NDF com vencimento no dia 20 de fevereiro
de 2018 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
4.19 Fórmula suporte para cálculo de uma NDF com vencimento no dia 20 de
fevereiro de 2018 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
4.20 Valores calculados para uma NDF com vencimento no dia 20 de fevereiro de
2018. Fonte: Própria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
21
22
23
Sumário
1 Introdução 25
1.1 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.1.1 Pesquisa de Câmbio . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.2 Objetivo(s) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
1.3 Justificativas/relevância . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
1.4 Organização do Trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2 Embasamento Teórico 41
2.1 O Mercado de Câmbio Brasileiro . . . . . . . . . . . . . . . . . . . . . . . . 42
2.1.1 Funcionamento: câmbio flutuante e intervenções . . . . . . . . . . . 43
2.1.2 O Balanço de Pagamentos . . . . . . . . . . . . . . . . . . . . . . . 43
2.1.3 Dólar Comercial e Dólar Turismo . . . . . . . . . . . . . . . . . . . 44
2.1.4 Derivativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.1.5 Mercado de Opções . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.1.6 Mercado de Swaps . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.1.7 Crise Cambial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.2 O Back-End . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.2.1 IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.2.2 Build Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.2.3 Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.2.4 DAO - Data Access Object . . . . . . . . . . . . . . . . . . . . . . . 51
2.2.5 REST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.2.6 Spring Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.2.7 Servidores em nuvem . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3 Material e Métodos 61
24
3.1 Material . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.1.1 Front-End . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.1.2 Back-End . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.1.3 IntelliJ IDEA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.1.4 Spring Boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.1.5 Heroku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.1.6 Crawler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.2 Métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.2.1 Considerações iniciais . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.2.2 Motivação da arquitetura cliente-servidor . . . . . . . . . . . . . . . 66
3.2.3 Arquitetura do projeto . . . . . . . . . . . . . . . . . . . . . . . . . 68
3.2.4 Banco de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
3.2.5 Back-end . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
3.2.6 Front-end . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
3.2.7 Funcionamento e diagramas de sequência . . . . . . . . . . . . . . . 81
4 Resultados e Discussões87
4.0.1 Verificação das funcionalidades . . . . . . . . . . . . . . . . . . . . 87
4.1 Validação e Experiência do Usuário . . . . . . . . . . . . . . . . . . . . . . 92
4.2 Websites relacionados: oportunidades e concorrência . . . . . . . . . . . . . 92
4.2.1 Inclusão de mais instrumentos finaceiros . . . . . . . . . . . . . . . 95
5 Conclusão 101
5.1 Trabalhos futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
5.1.1 Utilização de IA para predição . . . . . . . . . . . . . . . . . . . . . 102
5.1.2 Notificações de melhores momentos . . . . . . . . . . . . . . . . . . 102
5.1.3 Substituição do Heroku pela AWS . . . . . . . . . . . . . . . . . . . 103
Referências 103
amssymb gensymb
25
Capítulo 1
Introdução
1.1 Motivação
Em uma pesquisa realizada pelo Instituto Gallup sobre analfabetismo financeiro, o Brasil
aparece como 68o lugar, com 35% de acertos. Em outra pesquisa, realizada pela Organização
para a Cooperação e o Desenvolvimento Econômico (OCDE), o Brasil ficou em 27o lugar em
um ranking de 30 países avaliados em educação financeira. [1] Os conhecimentos medidos
por essas pesquisas são necessários para otimização de despesas e recebimentos, compre-
ensão da atuação do Banco Central e Ministério da Fazenda e melhoria geral do contexto
econômico do Brasil.
Embora o mercado de renda variável seja constantemente reconhecido como a cara do
mercado financeiro (maior volatilidade), o mercado de renda fixa é o que movimenta maior
volume e opções de trocas e investimentos. O mercado de câmbio movimenta cerca de 5,3
trilhões de dólares por dia, sendo o maior e mais líquido mercado do mundo. Este mercardo
é global e descentralizado e funciona eletronicamente de forma OTC (over-the-counter mer-
cado de balcão) [2]. Trocas de câmbio são necessárias a todo tempo, especialmente no Brasil,
onde a moeda é não-conversível [3] (um país tem a moeda chamada de conversível quando os
agentes, residentes ou não, são capazes de trocar recursos por demais moedas em transações)
[4]. Um conjunto de normas elaboradas há mais de 50 anos ainda persiste, gerando distorções
e apreciando o prêmio de risco do país.
Neste cenário de maior dificuldade de acesso às moedas estrangeiras, comparado com
outros países emergentes (a Austrália e o Chile, ambos países com moedas conversíveis,
possuem respectivamente 45% e 40% do passivo externo em moeda estrangeira), propõe-
se uma solução em tecnologia de informação para que a população e empresas brasileiras
26
tenham maior domínio e conhecimento sobre as taxas que lhe são cobradas para conversão
de moedas, além de apresentar produtos novos e soluções para diferentes fluxos de capital
e mercadorias. O mercado de câmbio, por sua vez, é feito de investidores institucionais,
corporações, bancos, governos e especuladores. Pessoas físicas e pequenas empresas acabam
atuando como elementos passivos, sempre sujeitos a flutuações e spreads expressivos.
O PlanEx é uma plataforma de comparação de taxas cobradas por casas de câmbio, car-
tões de crédito, bancos e índices financeiros, de forma a iluminar regras e práticas de um
mercado pouco conhecido pela população e, por consequência, otimizar os planejamentos e
investimentos financeiros de pessoas físicas e pequenas empresas. A ideia original do projeto
nasceu em janeiro de 2017 como um aplicativo Android educativo sobre produtos de câmbio,
capaz de oferecer soluções no mercado futuro para fluxos de pequenas empresas (principal-
mente importadoras e exportadoras) e divulgação das regras e cotações do mercado de câmbio
para pessoas físicas. A ideia do projeto evoluiu então para uma de maior apelo comercial para
pessoas físicas e com potencial de impactar mais pessoas, além da conscientização do público
sobre as taxas de câmbio oferecidas pela iniciativa privada.
1.1.1 Pesquisa de Câmbio
Uma pesquisa foi realizada durante o desenvolvimento do PlanEx para auxiliar na compre-
ensão do nível de conhecimento que se tem a respeito do mercado de câmbio no Brasil. A
pesquisa teve início no dia 21 de Setembro e ficou no ar durante um mês, sendo encerrada no
dia 21 de Outubro. Foi coletada uma amostra de 104 respostas às perguntas que se seguem
com os resultados respectivos:
Figura 1.1: Pergunta 1 - Você já viajou para o exterior? Fonte: Própria.
27
1. Você já viajou para o exterior? (104 respostas)
• Sim: 83,7%
• Não: 16,3%
A primeira pergunta realiza a primeira separação de público relevante: a pesquisa busca
entender se as pessoas que responderam o formulário possuem contato direto com o viagens
internacionais. Esta pergunta, vinculada ao conhecimento demonstrado pelo indivíduo nas
demais perguntas, buscam criar um vínculo entre a compreensão do mercado de câmbio e
a exposição direta às viagens. Os participantes da pesquisa que responderem afirmativo a
esta pergunta são direcionados à Pergunta 2 a seguir. Os demais são endereçados à próxima
pergunta 2, mais a frente.
Figura 1.2: Pergunta 2 - Qual seu sexo? Fonte: Própria.
Esta pesquisa visa identificar o sexo do participante.
28
Figura 1.3: Pergunta 3 - Com que frequência, em média, você viaja para o exterior? Fonte: Própria
A Pergunta 3, restrita aos que já viajaram para o exterior, visa se aprofundar na rela-
ção entre contato com o exterior e conhecimento acerca das taxas cobradas no mercado de
câmbio.
Figura 1.4: Pergunta 4 - Quais são seus objetivos principais nas viagens? Fonte: Própria.
A Pergunta 4 do primeiro público visa entender as motivações do mesmo.
29
Figura 1.5: Pergunta 5 - Em quais situações você geralmente necessita de câmbio? Fonte: Própria.
As seguintes opções podem ser escolhidas para a pergunta 5:
• Viagens: 94,3%
• Importação de produtos para uso pessoal: 35,2%
• Importação de produtos para uso profissional: 9,1%
• Assinaturas de sites ou serviços: 22,7%
• Alimentação: 1,1%
• Compras pela internet com cartão de crédito: 1,1%
30
Figura 1.6: Pergunta 6 - Quais métodos de obtenção/pagamentos em moeda estrangeira você utiliza?
Fonte: Própria.
Figura 1.7: Pergunta 7 - Você já pesquisou/sabe a diferença dos impostos cobrados nos métodos da
pergunta anterior? Fonte: Própria.
Esta pergunta é essencial ao PlanEx, que visa conferir visibilidade e espalhar informações
a respeito das diferentes taxas que são cobradas em cada método de pagamento. Embora
todas as pessoas do primeiro público já tenham ido ao exterior pelo menos uma vez, 31,8%
do grupo confessou desconhecer os diferentes impostos cobrados no mercado cambial.
31
Figura 1.8: Pergunta 8 - Que banco você geralmente utiliza para o cartão de crédito/débito utilizado
no exterior? Fonte: Própria.
O PlanEx realiza comparação de taxas de câmbio de diferentes casas e informações sobre
as mais cotadas são muito úteis ao business.
32
Figura 1.9: Pergunta 9 - Que corretora você normalmente utiliza para comprar papel-moeda? Fonte:
Própria.
Pergunta com motivação similar à Pergunta 8.
33
Figura 1.10: Pergunta 10 - Você sabe que, além dos impostos e do valor dólar turismo, é cobrado
um spread (margem de compra/venda) pelas instituições financeiras que fornecem câmbio? Fonte:
Própria.
Spreads geralmente também vêm embutidos no preço, porém a cobrança pode ser de
livre escolha da instituição (respeitando-se a taxa de spread máxima cobrada pela casa). Ao
contrário dos impostos, que são fixados de acordo com a natureza da operação, spreads são
móveis e podem variar grandemente em diferentes locais e com diferentes clientes. O PlanEx
visa identificar as instituições que praticam as melhores políticas de spread.
Figura 1.11: Pergunta 11 - Você geralmente pesquisa a cotação online da moeda estrangeira antes de
comprar? Fonte: Própria.
34As respostas para a Pergunta 11 mostra que mais pessoas buscam a cotação da moeda
(mesmo que não seja um meio uniforme) para realizar algum tipo de comparação.
Figura 1.12: Pergunta 12 - Você conhece algum aplicativo ou website que compara taxas de câmbio
de diferentes instituições? Fonte: Própria.
A Pergunta 12 é, ao fim, a pergunta fundamental do PlanEx. Embora 93,2% dos parti-
cipantes tenham alegado geralmente pesquisar cotações online das moedas estrangeiras em
questão, meros 21,6% conhecem um aplicativo ou website que o façam.
Figura 1.13: Pergunta 13 - Se sim, qual? Fonte: Própria.
Embora o website Melhor Câmbio tenha aparecido de formas diferentes em quase 50%
das respostas à pergunta 13, o número real de pessoas que citaram o mesmo representa uma
pequena parcela do público com experiência internacional (7 em 88 pessoas), representando
35
apenas 7,95% deste público. Conclui-se que o mercado permanece altamente segmentado e
ainda sem um vencedor claro (além do desconhecimento) na comparação de taxas de câmbio.
As próximas perguntas são relativas ao segundo público, que nunca teve experiência in-
ternacional. Os participantes que responderam "Não"à primeira pergunta foram direcionados
direto para a pergunta abaixo. As perguntas que são iguais às que foram passadas ao primeiro
público possuem a mesma motivação. 18 pessoas fazem parte do segundo público.
Figura 1.14: Pergunta 2 - Qual seu sexo? Fonte: Própria.
Público majoritariamente masculino no segundo público (72,2% vs. 58% para o primeiro
público).
Figura 1.15: Pergunta 3 - Em quais situações você geralmente necessita de câmbio? Fonte: Própria.
O item "Importação de Produtos para Uso Pessoal"se sobressai na resposta a esta per-
gunta. Os seguintes itens estavam disponíveis para resposta:
36
• Importação de produtos para uso pessoal;
• Importação de produtos para uso profissional;
• Assinatura de sites ou serviços;
• Não necessito de câmbio.
Figura 1.16: Pergunta 4 - Caso você fosse viajar, qual seria a sua opção inicial de câmbio? Fonte:
Própria.
As seguintes opções estavam disponíveis para escolha:
• Cartão de Crédito;
• Cartão de Débito;
• Cartão Pré-pago;
• Papel-moeda: Corretora de Câmbio;
• Papel-moeda: Banco;
• Papel-moeda: comprado de desconhecidos;
• Transferwise;
• Transferência para conta no exterior;
• Bitcoin.
37
Figura 1.17: Pergunta 4 - Você já pesquisou/sabe a diferença dos impostos cobrados nos métodos da
pergunta anterior? Fonte: Própria.
O público participante que nunca teve experiência no exterior desconhece, em sua maior
parte, os impostos cobrados nos diferentes meios de compra e venda de moeda estrangeira.
Apenas 1 de 18 pessoas alegou conhecer tais impostos.
Figura 1.18: Pergunta 5 - Você sabe que, além dos impostos e do valor dólar turismo, é cobrado
um spread (margem de compra/venda) pelas instituições financeiras que fornecem câmbio? Fonte:
Própria.
38,9% do segundo público alegou ter conhecimento sobre o fato de que spreads são cobra-
dos pelos estabelecimentos na compra e venda de moeda estrangeira, além dos tradicionais
38
impostos. Este valor é significativamente menor do que o relatado pelo primeiro público
(68,2%).
Figura 1.19: Pergunta 6 - Você pesquisaria a cotação online da moeda estrangeira antes de comprar?
Fonte: Própria.
A grande maioria (94,4%) das pessoas do segundo público afirmam que pesquisariam as
cotações online de moeda estrangeira caso viessem a transacionar tais moedas.
Figura 1.20: Pergunta 7 - Você conhece algum aplicativo ou website que compara taxas de câmbio de
diferentes instituições? Fonte: Própria.
Este gráfico mostra de forma mais expressiva a ausência de um big player para novos
entrantes. Nenhuma pessoa do segundo público conhece aplicativos ou websites que realizem
a comparação de taxas de câmbio.
39
1.2 Objetivo(s)
O objetivo deste projeto é a criação de um website e aplicativo de nome PlanEx que permite
a comparação de taxas de câmbio de diferentes casas e auxilia o usuário a tomar decisões
relativas ao melhor momento e lugar para compra e venda de moeda estrangeira.
1.3 Justificativas/relevância
Diante de um mercado com leis e preços desconhecidas pela maior parte da população, esta
acaba se submetendo a custos não razoáveis por um produto sem maior valor agregado. O
PlanEx é importante para disseminar conhecimento sobre o mercado cambial em ambiente
globalizado. Enquanto o Brasil se aproxima cada vez mais de diferentes países e blocos
econômicos, o PlanEx visa transformar o mercado cambial para pessoas físicas em ambiente
competitivo e familiar a todas as partes envolvidas.
1.4 Organização do Trabalho
Este trabalho está distribuído em 7 capítulos, incluindo esta introdução, dispostos conforme
a descrição que segue:
O Capítulo 2 descreve o embasamento teórico - todos os softwares, definições e trabalhos
de terceiros analisados para elaboração do PlanEx.
O Capítulo 3 apresenta os principais materiais e métodos que foram escolhidos e desen-
volvidos ao longo do ano.
O Capítulo 4 discorre sobre todos os resultados obtidos ao longo do projeto e futuras
discussões.
O Capítulo 5 conclui a apresentação, análise e teste do PlanEx.
O código do projeto encontra-se disponível em https://github.com/giulianoprado/planex_srv.
40
41
Capítulo 2
Embasamento Teórico
O capítulo se inicia com uma breve definição do mercado de câmbio brasileiro. O Brasil faz
uso do regime de câmbio flutuante sujo. Isto significa que, embora o país se beneficie de
algumas características do câmbio flutuante, como o mecanismo autorregulador das contas
externas e absorção de ajustes que seriam distribuídos em outros setores da economia, ainda
é sujeito a interferências do Banco Central, que ocorrem por meio de compras de reservas
e swaps cambiais. O embasamento segue com algumas definições de derivativos e Non-
Deliverable Forwards, contratos a termo de moedas que são explorados mais a frente em
outros capítulos e segue com outras definições relevantes para a compreensão do mercado
de câmbio. A seguir, é apresentada a infraestrutura utilizada no Back-End do PlanEx, assim
como comparações e conceitos relevantes. Três IDEs foram comparadas: Eclipse, o IDEmais
popular, grátis e open source, porém com algumas deficiências em autocompleção baseada
em contexto e necessidade de instalação de muitos plug-ins, problemas já resolvidos pelo
IntelliJ; NetBeans, IDE (Integrated Development Environment) open source cujas aplicações
são construídas com o auxílio de componentes modulares e com a mesma desvantagem do
Eclipse em relação à compleção inteligente e um detalhe negativo que é a falta da apresen-
tação de erros no código; e IntelliJ, que foi o IDE escolhido por razões citadas a frente. O
framework Spring é apresentado, assim como partes fundamentais Java que foram utilizadas,
como o DAO e as páginas REST. O capítulo prossegue com a análise de diferentes tipos de
servidores em nuvens. IaaS, PaaS e SaaS são comentados, assim como os maiores players
que utilizam esses serviços (DigitalOcean, AWS, Windows Azure, GCP e Heroku). Baseado
nessas contribuições, o desenvolvimento do PlanEx se deu de forma integrada e fluída.
42
2.1 O Mercado de Câmbio Brasileiro
O salário (preço de aluguel da força de trabalho), o juro (preço dos empréstimos em dinheiro)
e a taxa de câmbio (preço da moeda utilizada em transações internacionais) formam os três
preços fundamentais da economia. [5] O entendimento do panorama geral que constitui o
Mercado de Câmbio Brasileiro é essencial para a eficiência microeconômica, estabilidade da
moeda e o crescimento do país. [6]
O Banco Central do Brasil (BCB) é responsável por regulamentar e fiscalizar o mercado
de câmbio,ambiente onde ocorre compra e venda de moeda estrangeira por agentes autori-
zados pelo Banco Central. Fora deste ambiente, há o mercado paralelo, onde são realizadas
trocas e posses ilegais. Há a necessidade de identificação em todas as trocas dentro do am-
biente legal e, para transações acima de R$3.000,00, é necessária a apresentação da docu-
mentação que suporta a troca. [7] Os agentes aprovados para operar no mercado de câmbio
compreendem:
• Bancos (múltiplos, comerciais, de investimentos, de desenvolvimento, de câmbio);
• Agências de fomento;
• Sociedades de crédito, financiamento e investimento;
• Sociedades corretoras de títulos e valores mobiliários;
• Sociedades distribuidoras de títulos e valores mobiliários;
• Sociedades corretoras de câmbio.
Omercado à vista é dividido entre mercado primário (varejo) e secundário (interbancário).
O mercado primário corresponde às transações do balanço de pagamentos (residentes e não
residentes), ou seja, altera o estoque de moeda estrangeira em posse de residentes; enquanto
o secundário é referente a negociações interbancárias originadas no mercado primário - e não
altera o mesmo. Os contratos de câmbio são os documentos que oficializam as operações de
compra e venda de moeda estrangeira. No contrato deve constar as informações relativas à
moeda estrangeira, à taxa contratada, ao valor respectivo na moeda nacional e aos nomes do
comprador e vendedor. Todas as operações do mercado secundário devem ser registradas no
Sistema de Informações do Banco Central do Brasil (SISBACEN). Uma operação de câmbio
só poderá ser liquidada se estiver devidamente registrada e confirmada no SISBACEN. [8]
43
Há dois tipos de operações de câmbio na perspectiva do tempo de liquidação: a operação
de câmbio pronta, que deve ser liquidada em até dois dias e a liquidação futura, que será
liquidada em prazo maior do que dois dias.
Uma posição de câmbio é representada pelo saldo (net) de operações de câmbio prontas
ou para liquidação futura. [7] Quando uma parte possui uma posição comprada em moeda
estrangeira, esta posição significa que uma instituição autorizada realizou compras de moeda
estrangeira acima do valor de venda da mesma (saldo).
2.1.1 Funcionamento: câmbio flutuante e intervenções
Em 1999, o Brasil adotou o regime do câmbio flutuante. Este regime é benéfico por favorecer
o equilíbrio das contas externas (mecanismo autorregulador) e absorver ajustes que seriam
distribuídos pelos demais preços fundamentais da economia (taxa de juros ou o salário), por
meio dos mesmos mecanismos que permitem tais benefícios: a volatilidade. Quando a moeda
nacional se valoriza, as exportações e a indústria nacional são afetadas. Quando se desvalo-
riza, acarreta pressões inflacionárias. Quando há grande fluxo de capitais entrando no país, a
moeda se valoriza. Quando o fluxo é oposto, geralmente traduzindo aumento da aversão ao
risco por parte do estrangeiro (sendo o Brasil um mercado emergente), a moeda tende a ser
desvalorizada. [9]
Se o Brasil seguisse desta forma, com um câmbio flutuante puro e sem intervenções, a
mudança de 1999 teria representado o fim definitivo do pensamento Keynesiano (modelo do
economista britânico John Maynard Keynes, que defende a intervenção do Estado na econo-
mia). Desde 1999, observamos a prática da política cambial de flutuação suja, caracterizada
pela intervenção do Banco Central. Esta intervenção se dá por meio de compras de reservas
no mercado à vista e a venda e compra de swaps cambiais reversos, que são as trocas entre o
Banco Central e as demais instituições financeiras (derivativos). [10] Este instrumento será
explicado mais a frente.
O real também pode ser afetado por fatores econômicos internacionais, como um aumento
nas taxas de juros nos Estados Unidos comparativo às taxas de juros domésticas. [11]
2.1.2 O Balanço de Pagamentos
O balanço de pagamentos é o registro sistemático estatístico de todas as transações econômi-
cas realizadas durante um período de tempo (um ano, trimestre ou mês) entre os residentes
de um país e o restante do mundo, [12] ou seja, reúne o dinheiro que sai e entra no Brasil
44
em forma de compras e vendas de produtos, empréstimos, serviços etc. Quando o balanço de
pagamentos é positivo, significa que mais recursos entraram no Brasil (superávit), comparado
aos recursos que saíram do país (déficit). [13] Os registros do Balanço são geralmente feitos
em dólares americanos (U$).
Duas principais contas são utilizadas para compor o balanço de pagamentos:
Transações Correntes
As transações correntes são compostas de mais 4 somatórias:
• Balanço Comercial (BC): dada pelo saldo das exportações menos as importações.
• Balança de Serviços (BS): diferença entre o valor de entrada e saída de dinheiro em
serviços como viagens internacionais, seguros, royalties, licenças e fretes.
• Balança de Rendas (BR): corresponde ao pagamento de salários de não residentes que
prestam serviços no Brasil ou brasileiros que prestam serviços no exterior e à renda
enviada de estrangeiros e recebida por brasileiros em outras partes do mundo.
• Transferências Unilaterais Correntes (TUC): transferências que não envolvem troca por
serviços ou bens. Correspondem a doações realizadas entre países.
Conta Capital e Financeira
Composta de duas contas principais: a Conta Capital, que se refere a transferências unila-
terais de ativos reais, financeiros ou intangíveis entre residentes e não-residentes e a Conta
Financeira, que registra todos os fluxos de capitais entre o Brasil e o mundo.
2.1.3 Dólar Comercial e Dólar Turismo
Em 2005, o CVM (Conselho Monetário Nacional) unificou o câmbio comercial (chamado
de "mercado de câmbio de taxas livres") e o câmbio turismo ("mercado de câmbio de taxas
flutuantes") em um mercado único de câmbio legal no Brasil. Os nomes utilizados hoje
(câmbio comercial e câmbio turismo) continuam sendo utilizados, porém para denominar
naturezas diferentes de operação.
O dólar comercial é utilizado por grandes corporações para realização de câmbio tipo im-
portação, exportação, financeiro venda ou compra. Movimentações financeiras do governo
brasileiro no exterior também utilizam como referência o dólar comercial. Não existe uma
45
taxa de câmbio fixada pelo Banco Central. Assim, a taxa é livremente negociada pelas partes
contratantes (comprador e vendedor). O Banco Central apenas divulga a média de taxas pra-
ticadas, conhecida como "PTAX", que serve como referência e não é obrigatória. O PlanEx
utiliza a PTAX para análise de spread bancários[14].
O dólar turismo é utilizado para viagens, compra de passagens aéreas, gastos em países
ou estabelecimentos estrangeiros e conversão de valores em moeda estrangeira acumulados
no cartão de crédito. O dólar turismo é mais "caro"pela necessidade de se ter o dinheiro físico
em mãos, ou seja, ele é realizado por notas, o que encarece os custos para casas de câmbio
e bancos, como o transporte, manutenção e seguro. As agências de câmbio e operadoras de
viagens também possuem como referência a PTAX. As transações de dólar comercial podem
ser realizadas apenas eletronicamente[15].
2.1.4 Derivativos
Derivativos são instrumentos financeiros (contratos ou títulos conversíveis) cujos preços de-
rivam de outros instrumentos. O contrato de dólar futuro deriva do preço do dólar à vista,
e, como Martin Mayer disse em seu artigo "The Next Generation"(publicado na revista
The Bankers, 1997), não representa um investimento, e sim uma expectativa de direção do
dólar[16]. O derivativo de moeda possui como ativo-objetivo a taxa de câmbio de reais por
moeda estrangeira. A liquidação dos contratos não envolve entrega física, havendo apenas a
liquidação da diferença do preço de exercício e o preço à vista. [17]Os participantes do mer-
cado de derivativos podem ser hedgers, especuladores ou arbitradores. Os hedgers desejam
se proteger de possíveis variações nos ativos; os especuladores esperam obter ganhos com as
variações nos preços dos ativos; e os arbitradores desejam obter lucro com a compra de um
ativo mais barato em um mercado e a venda em um outro que esteja mais caro. [9] Em uma
operação de derivativos, os ganhos são iguais às perdas.
Pode-se citar três tipos de derivativos que são comumente utilizados no Mercado de Câm-
bio Brasileiro: Non-Deliverable Forwards (dólar a termo), opções e swaps.
Non-Deliverable Forwards
NDFs (Non-Deliverable Forwards) são contratos a termo de moedas negociados no mercado
de balcão. Uma pessoa física ou jurídica que fecha uma NDF visa fixar uma taxa fixa de
câmbio em uma data futura. No vencimento, a liquidação ocorre pela diferença entre o preço
da taxa contratada e o preço de mercado definido como referência. O NDF pode ser utilizado
46
em situações em que se deseja proteção contra a oscilação de uma moeda - ou de forma
participativa da variação da mesma[18].
Exportadores e importadores, cujos resultados são amplamente dependentes das taxas de
câmbio praticadas no mercado, precisam se proteger contra variações cambiais e volatilidade
do câmbio flutuante. Os importadores são muito afetados por taxas mais altas de moeda
estrangeira, pois precisam comprá-las para financiar suas importações. Os exportadores re-
cebem pagamento por seus produtos e serviços em moeda estrangeira, portanto procuram
vender suas moedas em momento de alta frente ao Real. O NDF se consolida então como
uma alternativa para travamento de taxa de câmbio sem pagamento de tarifas, depósitos,
emolumentos ou corretagem. Desta maneira, se a cotação no vencimento for superior à taxa
a termo, a parte compradora recebe o ajuste do vendedor; caso seja inferior, a parte vendedora
recebe o ajuste do comprador. As operações de NDF estão sujeitas à incidência de imposto
de renda na fonte sobre o valor da liquidação financeira previsto em contrato. [19]
A estrutura a termo da taxa de juros em reais (curva de juros pré-fixada) é utilizada na
precificação do NDF. Esta estrutura é obtida por meio dos preços de ajuste dos contratos
futuros DI (Depósito Interfinanceiro - título de renda fixa que atua como instrumento de
capitação e aplicação de recursos) da B3, sendo que esta divulga o primeiro ponto da curva
diariamente.
Para realizar o cálculo entre os vértices previstos pelos contratos futuros DI da B3, utiliza-
se a interpolação exponencial entre as taxas, conforme a equação 2.1.
Taxat = [(Taxat−1+1)dut−1/252)∗((Taxat+1+1)
dut+1/252)
(Taxat−1+1)dut−1/252)
)(dut−dut−1)(dut+1−dut−1)]252/dut−1
(2.1)
Na qual: Taxa = taxa de juros anual expressa com base em 252 dias úteis;
t = vencimento do fluxo;
t+1 = vencimento do contrato futuro disponível imediatamente superior;
t-1 = vencimento do contrato futuro disponível imediatamente inferior;
du = dias úteis[20].
A primeira conta que deve ser realizada para cálculo de NDFs de várias datas é a do
cupom cambial. O contrato de Futuro de Cupom Cambial de Depósitos Interfinanceiros de
Um Dia atua como ferramenta de proteção contra flutuações da taxa de juros referenciada ao
dólar. O cupom cambial, de forma simplista, é o rendimento em dólares para estrangeiros
que aceitam o risco de investir no Brasil. O ativo subjacente do contrato se constitui na taxa
47
de juros da diferença entre a taxa média de DI de um dia e a variação cambial calculada
pela PTAX 800. Este ativo é calculado e divulgado pelo BCB (Banco Central do Brasil). O
cupom cambial pode funcionar como um ativo de hedge (proteção) para investidores da taxa
de juros brasileira que precisam se proteger contra variação cambial, pois o cupom remunera
o investidor pela diferença entre a variação da taxa de juros em dólares contratada e o que foi
de fato realizado no período[21]. A PTAX 800 nada mais é do que a média ponderada das
taxas de dólar negociadas entre as instituições financeiras.
A curva do cupom cambial é obtida pela diferença entre a curva de juros pré-fixada e a
variação cambial projetada pelas cotações a termo da moeda, conforme a equação 2.2.
CupomCambialt = [
(TaxaPret +1)dut/252
(Forwardt/Spot)
−1]∗ 360
dc
(2.2)
Na qual: t = vencimento do fluxo;
Taxa Pré = taxa de juros anual expressa com base em 252 dias úteis;
du = dias úteis;
dc = dias corridos;
Forward = NDF/preço forward da moeda;
Spot = preço à vista da moeda.
Mercado de dólar futuro
O contrato de dólar futuro é negociado no pregão da BMF em lotes de U$50.000,00 e a cota-
ção é realizada em reais por U$1.000,00, com até três casas decimais. A data de vencimento
do Contrato é o primeiro dia útil (pregão) do mês de vencimento do contrato.
2.1.5 Mercado de Opções
As opções sobre moedas estrangeiras são derivativos que servem como mecanismos de pro-
teção contra movimentos desfavoráveis da taxa de câmbio[22]. Este tipo de derivativo é um
direito, e não uma obrigação de comprar ou vender ativos.
É possível realizar a compra e venda de Opções. As Opções podem ser de dois tipos: call
(direito de comprar moeda estrangeira) ou put (direito de vender a moeda estrangeira). Um
investidor pode comprar ou vender calls, assim como pode comprar ou vender puts. Assim
como no dólar a termo, opções podem ser utilizadas para fins especulativos ou de hedge
(proteção)[23].
48
É necessário pagar um preço para se comprar uma put ou uma call. O valor pago pelo
titular para aquisição do direito de exercer uma opção é chamado de prêmio. O preço acertado
para exercício do direito é classicamente chamado apenas de preço de exercício.
2.1.6 Mercado de Swaps
Instrumentos mais utilizados pelo Banco Central em suas intervenções. O contrato de swap
é um acordo que estabelece uma troca de fluxos entre duas partes. Quando sua liquidação
atinge o vencimento, pode ser semelhante ao mercado a termo. Um swap de moedas consiste
em um fluxo de taxa de juros em uma moeda especificada (por exemplo, o dólar americano)
e um fluxo em taxa de juros em outra moeda especificada (por exemplo, o real). O contrato
de Swap utilizado pelo Banco Central consiste em um swap cambial com ajuste periódico.
2.1.7 Crise Cambial
Quando o índice da média ponderada do percentual mensal das depreciações na taxa de câm-
bio nominal e do percentual do declínio nas reservas cambiais excede sua média por mais
de três vezes o seu desvio-padrão, temos a chamada Crise Cambial, ou seja, quando as taxas
de câmbio nominal e as reservas de um país variam além de três vezes do que geralmente
costumam variar. Os países emergentes (caso do Brasil) tendem a passar por tais crises por
não estarem completamente inseridos no mercado internacional. [6]
2.2 O Back-End
2.2.1 IDE
Um Integrated Development Environment (IDE) é uma plataforma que facilita o desenvol-
vimento de aplicativos. O IDE é desenhado para integrar todas as tarefas de programação
em uma só aplicação, logo, um IDE oferece uma interface central para todas as ferramentas
necessárias a um programador, incluindo:
• Editor de código (text editor) – designado para escrever e editar códigos de programa-
ção.
• Compilador – serve para transformar o código em um arquivo executável pelo compu-
tador.
49
• Debugger – usado durante testes para ajudar a resolver erros nos programas.
• Ferramentas de automação – ferramentas que automatizam tarefas comuns de progra-
madores.
Alguns IDEs específicos podem conter também:
• Class browser – utilizado para examinar e referenciar as propriedades de uma classe
orientada a objetos.
• Object browser – utilizado para examinar os objetos iniciados na execução de uma
aplicação.
• Diagramade hierarquia de classes – ferramenta que permite que o programador visua-
lize as estruturas de um código de programação orientado a objetos.
O objetivo geral de um IDE é economizar tempo e aumentar a produtividade de um programador[24].
Diversos IDEs foram analisados para o desenvolvimento do website. Para o projeto, buscou-
se uma IDE que suportasse Java 8, Spring MVC (como será explicado mais a frente), Git,
Gradle e conseguisse lidar com ambas as camadas de usuário e base de dados.
Eclipse
O Eclipse é o IDE mais popular, sendo grátis e open source. Este IDE é, em sua maioria,
escrito em Java e foi criado pela IBM (International Business Machines) em 2001, com a
missão de tornar-se uma alternativa ao Microsoft Visual Studio. O Eclipse utiliza SWT (The
Standard Widget Toolkit) como biblioteca gráfica e é baseado em plug-ins. O Eclipse possui
o "manufacturer", que atua na interpretação do relatório de erros[25].
Embora o Eclipse seja utilizado em alta escala, não possui certas vantagens que foram
atribuídas ao IntelliJ, como auto preenchimento baseada em contexto. O Eclipse sugere al-
ternativas ao código após a inserção de algumas letras; porém, as sugestões são extensas e
com maior probabilidade de não serem relacionadas ao que o desenvolvedor procura. No
Eclipse é necessário a instalação e configuração de componentes suplementares e mais de um
download para obtenção de todos os plug-ins solicitados para execução do programa.
NetBeans
O Netbeans também é um IDE open source, porém as aplicações são desenvolvidas com o
auxílio de componentes modulares. O Netbeans não possui a ferramenta de interpretação de
50
erros do Eclipse e os erros são mostrados na janela de saída. O Netbeans possui o "Filesys-
tem", que controla as informações da configuração do mesmo. [25]
Quando comparado ao IntelliJ, o NetBeans ainda falha na função de auto completar inte-
ligente e não possui a análise de erros da complexidade do presente no Eclipse e no IntelliJ.
IntelliJ IDEA
O IntelliJ foi o IDE escolhido para o desenvolvimento do PlanEx e será detalhado posterior-
mente.
2.2.2 Build Tools
Automações Build são cruciais para o projeto por possuírem desenvolvimento fluído e ágil e
permitirem administrar o ciclo de vida do software (compilação de código, organização de
dependências, execução de testes etc). Android Ant tornou-se padrão para ferramentas de
construção, porém muitas outras ainda podem ser utilizadas:
Tool DevOps phase Tool Type Conf. format Language License
Ant Build Build XML Java Apache
Maven Build Build XML Java Apache
Rake Build Build Ruby Java MIT
Gradle Build Build Based on Groovy Java and Groovy-based DSL Apache
Jenkins Build Cont. Integration UI Java MIT
TeamCity Build Cont. Integration UI Java Commercial
Bamboo Build Cont. Integration UI Java Commercial
Build Tools [26]
Ferramentas que utilizam XML tem como grande desvantagem a prolixidade. Gradle e
Rake tentam resolver os problemas de Ant e Maven, ao trocar XML por linguagens progra-
máveis. [26] Gradle administra dependências de forma fácil de compreender e compatível
com diversas outras aplicações. É também compatível com seus concorrentes, Maven e Ivy.
Além disso, o Gradle possui algumas características de linguagens programáveis.
2.2.3 Java
Java possui três edições diferentes disponíveis de plataforma:
51
• J2SE (Java 2 Standart Edition): oferece funcionalidades de programação core, ou seja,
é a edição mais básica, utilizada principalmente para aplicações em desktop;
• J2ME (Java 2 Micro Edition): tecnologia utilizada para programar aplicações que ro-
dam em pequenos dispositivos portáteis (celulares e sistemas embarcados) e possui
poder de processamento limitado, limite de bateria, display pequeno, entre outros;
• J2EE (Java2 Platform Enterprise Edition): tecnologia para escrever aplicações de back
end para empresas, mais versátil e amplamente utilizada por desenvolvedores. A arqui-
tetura J2EE permite a criação e desenvolvimento de projetos baseados em componentes.
Esta plataforma consiste em conjunto de protocolos e APIs (interfaces de programação
de aplicação) que possibilita um modelo multi-camada com componentes que podem
ser reutilizados. [27]
Conforme as aplicações web foram evoluindo, novas plataformas começaram a surgir e
ganhar popularidade. Frameworks MVC (Model-View-Controller) são arquiteturas que entre-
gam soluções e facilitam a distribuição de tarefas nos aplicativos. O Modelo (Model) realiza
a parte inteligente do sistema: cálculos, processamento, integrações etc. A Visão (View)
refere-se ao contato com o usuário (telas) e podem ser compostas de arquivos HTML, JSL,
imagens, CSS e Javascript. O Controlador (Controller) recebe as solicitações do usuário e
forma objetos correspondentes que serão repassados ao Modelo. [28]
Existem vários frameworks MVC disponíveis para uso, como o Apache Struts, o Spring
MVC, Zend Framework, JSF (Java Server Faces), Vraptor, etc. Esse tipo de framework
fica totalmente no servidor, sendo que todas as funções supracitadas ocorrem no mesmo,
utilizando sua memória e seus recursos. [29]
2.2.4 DAO - Data Access Object
O Java Database Connectivity (JDBC), parte fundamental do Java SE, define uma série de
padrões de API para facilitar o acesso a bases de dados relacionais, ou seja, APIs que per-
mitam a execução de códigos SQL contra um banco de dados. O Spring oferece diferentes
métodos de template para diferentes operações de JDBC. Cada método é responsável pelo
controle do processo como um todo, porém é possivel recriar diferentes tarefas do processo.
O objetivo do DAO (Data Access Object) é evitar que o desenvolvedor misture diferentes
tipos de lógica (como lógica de acesso de dados, lógica de negócios e lógica de apresentação)
em um único módulo. O DAO separa a lógica de acesso de dados das demais lógicas. Os
52
módulos independentes de lógica de acesso de dados são chamados de Data Access Objects.
[30]
2.2.5 REST
O REST (Representational State Transfer - em português, Transferência de Estado Repre-
sentacional) é um estilo de arquitetura utilizado para desenhar sistemas distribuídos. As tec-
nologias distribuídas de serviços Web (Java, Python, Ruby, .NET etc) fizeram necessário
construir uma ponte para esses diferentes ambientes de desenvolvimento. Serviços RESTful
se tornaram a escolha mais comum para traçar essa ponte.
Há duas possibilidades a serem exploradas com os serviços REST: a) Publicar dados de
uma aplicação como serviços REST; e b) Acessar dados de serviços REST de terceiros[30].
Os dois métodos foram utilizados para elaboração do PlanEx.
Algumas vantagens podem ser evidenciadas em páginas REST:
• Recursos são facilmente entendidos pelos diretórios de URIs;
• Comunicação por meio de XML, HTML, texto puro, JSON (JavaScript Object Nota-
tion);
• Praticidade para acesso e debug direto do navegador
• Não necessita manter conexões explicitamente
2.2.6 Spring Framework
Spring é um framework de aplicações open source criado por Rod Johnson que se destina ao
desenvolvimento de aplicações corporativas para plataformas Java e facilita a implementa-
ção da plataforma J2EE. Muitas vezes, aplicações J2EE apresentam-se de forma complexa,
com engenharias desnecessárias e custosas. A maior parte dessas aplicações fazem uso de
EJB (Enterprise Java Beans), parte essencial de uma plataforma J2EE, porém desnecessaria-
mente complexa. O framework Spring não pode ser concebido como alternativa para o EJB,
mas visa prover uma solução end-to-end, integrando demais frameworks em um só que seja
coerente à estrutura em geral, dispensando o uso de EJB. [31].
O framework vem sendo atualizado em diversas frentes:
• Spring 1.0: a primeira versão mudou a forma de desenvolvimento de aplicaçõescorpo-
rativas para Java. A injeção de dependências e transações declarativas dispensaram o
53
uso de EJBs custosos.
• Spring 2.0: XML passou a ser usado para configurações, facilitando o entendimento
das mesmas e reduzindo seu tamanho.
• Spring 2.5: as anotações @Component e @Autowired foram inseridas no framework,
criando um modelo muito mais elegante de injeção de dependências.
• Spring 3.0: uma variedade de prefixos @Enable foi adicionadas e melhorada na versão
Spring 3.1. As configurações não necessitavam mais de XML.
• Spring 4.0: o suporte a configurações condicionadas consolidou-se e decisões são to-
madas para determinar quais configurações serão usadas ou ignoradas. Não é mais
necessário escrever códigos para tomar tais decisões.
• Spring Boot: configurações automatizadas que permitem que o Spring identifique o tipo
de aplicação que está sendo utilizado e automaticamente configure todos os componen-
tes necessários do mesmo. Spring Boot mantém a seção de dependências reduzida e não
é necessário que o desenvolvedor tenha em mente todas as bibliotecas e versões que de-
verão ser utilizadas. [32] O Spring Boot foi utilizado neste projeto e será comentado
mais a frente. [27]
A partir de sua versão 2.2, o framework Spring começou a mirar diferentes plataformas
para expansão, podendo rodar no Google App Engine e integrando Flex e Flash, GWT, OSGi,
entre outros.
Dentro do framework Spring MVC, alguns conceitos são importantes:
Spring IoC container
O Spring IoC container é o coração da Spring Framework e é utilizado para criar objetos,
conectá-los, configurá-los e administrá-los desde seu início até sua deleção. O Spring contai-
ner administra aplicações por meio de beans. [33] O IoC (Inversion of Control) é o elemento
necessário para a dispensa de EJB e faz com que o framework configure o ciclo de vida do
objeto[34]. A injeção de pendências (Dependency Injection) é um tipo de IoC que representa
o processo de prover instâncias necessárias para um objeto funcionar, mantendo um baixo
acoplamento entre classes do mesmo projeto. [35]
54
Beans
Os componentes do Spring são chamados de Beans (diferente de JavaBeans, de Sun). Os Be-
ans declarados no Spring IoC container não são necessariamente JavaBeans, mas sim qual-
quer POJOs (Plain Old Java Objects - objetos Java que não possuem requerimentos específi-
cos). Um Bean é um objeto que é inicializado, assimilado e administrado por um Spring IoC
Container. [30] O Bean é formado pelos dados que são fornecidos ao container. Um exemplo
são as classes definidas com anotações @Bean e @Service. Os JavaBeans habilitam a com-
posição de beans e, desta forma, programadores podem customizar importações de beans.
Os componentes Beans se comunicam com outros Beans por um modelo de publicação de
eventos e os JavaBeans utilizam um modelo de introspecção para extrair as propriedades de
beans, estabelecendo um guia rígido para nomeação de propriedades e métodos de Beans e
utilizando APIs[36].
Plataforma Spring IO
A Plataforma Spring IO é uma plataforma coesa utilizada para aplicações modernas. Esta
plataforma é utilizada no back-end do PlanEx e é 100% open source, lean e modular, além
de prover DSRs (Domain-Specific Runtime Environments). Spring IO depende apenas de
Java SE e suporta Groovy, Grails e Java EE, além de funcionar com administradores de
dependências, como Gradle e Maven. A plataforma é composta pela IO Foundation e suas
Execution Layers (DSRs), podendo ter suas partes e funções melhor visualizadas na figura
abaixo:
55
Figura 2.1: Spring IO
[37]
A plataforma Spring IO inclui dois DSRs: Spring Boot e Grails.
2.2.7 Servidores em nuvem
A programação em nuvem é uma tecnologia disruptiva que permite o acesso a uma rede com-
partilhada de recursos. Computação em nuvem permite a separação dos dados e do desktop
e se refere à entrega de aplicações como serviços. [38] O acesso à nuvem é geralmente reali-
zado via um RESTful API. [39] Hoje os desenvolvedores podem escolher entre os seguintes
serviços em nuvem: o IaaS (Infrastructure-as-a-service), o PaaS (Platform-as-a-service) e
SaaS (Software-as-a-service).
O IaaS é um serviço em nuvem que permite aos usuários (e desenvolvedores) acessar
remotamente recursos na nuvem, como redes, arquivos e processamentos. Os recursos são
geralmente cobrados no estilo pay-per-use e podem ser escaláveis. Um dos benefícios do
pay-per-use (também chamado de pay-as-you-go) é o não desperdício de recursos, ou seja,
56
os usuários só pagam pelo que realmente utilizaram.
O PaaS oferece uma plataforma completa de computação, como design, testes, hospe-
dagem e desenvolvimento de aplicações para usuários no sistema local, ou seja, os usuários
podem construir e distribuir aplicações. [40] O PaaS consiste de muitos servidores e geral-
mente é utilizado para oferecer serviços de alto nível. Geralmente os serviços são cobrados
por uso, ou seja, o cliente paga pelo que foi utilizado ao fim (pay-per-use).
O SaaS oferece softwares e aplicações pela internet. O usuários se inscrevem no software
e podem acessá-lo via web ou APIs. [41] O SaaS possui as seguintes características: custo-
mização limitada (o usuário possui pouco controle para alterar a interface da aplicação e o
provedor do serviço de nuvem é o responsável pela customização que chega ao usuário final),
on demand self service (os usuários finais utilizam o serviço com esforço mínimo de admi-
nistração e interação com o provedor) e acessibilidade a qualquer aparelho conectado à rede,
como computadores e celulares. As vantagens do SaaS são a automatização das aplicações,
escalabilidade e seu custo benefício. [42] O SaaS é construído sobre o PaaS e geralmente
utilizado para substituir aplicações instaladas no sistema local do usuário. [43]
Dois modelos de arquiteturas de nuvem podem ser evidenciados relativo ao uso de esca-
lamento: o primeiro se refere à adição de instâncias e recursos dependentes da demanda (as
nuvens podem ser utilizadas para este serviço através do SaaS e PaaS). O segundo provê da-
dos e aplicações por escalamento de capacidade, ou seja, pay-as-you-go. [38] O preço pode
ser baseado na capacidade de armazenamento, ferramentas ou pay-per-use.
Há também a diferente classificação de modelos de nuvens: o modelo de nuvem pública
se refere à infraestrutura utilizada por um provedor terceiro que oferece serviços a diferentes
categorias de clientes pela internet (este modelo geralmente utiliza o pay-per-use); o modelo
de nuvem privado é uma infraestrutura disponível para organizações ou clientes específicos
e é administrada por elas ou terceiros; e o modelo de nuvem híbrida se refere a dois ou mais
tipos de nuvens combinados que permite a passagem de dados e aplicações entre eles. [40]
DigitalOcean
O DigitalOcean é um SaaS. Isso significa que a aplicação que utiliza SaaS está em um com-
putador permanentemente ligado, porém configurações, interação, manutenção e desenvolvi-
mento de aplicações necessiam de um outro software para serem habilitadas. Os servidores
do DigitalOcean são chamados de droplets e podem ser utilizados por meio do painel de
controle do DigitalOcean ou via API.
57
Para criar um droplet, é necessário ter uma conta no DigitalOcean. Uma distribuição
Linux é então selecionada para o droplet e deve-se optar por um tamanho (memória) para o
droplet, sendo que um tamanho maior implica em preço maior. O valor mínimo cobrado é
de U$5,00 por mês. Caso o usuário opte por utilizar backups, será cobrada um acréscimo de
20% no custo final. [44]
Amazon Web Services
AWS (Amazon Web Services) é o serviço mais desenvolvido entre todos os servidores de
nuvens, [39] oferece uma quantidade enorme de produtos - e um desses é a AWS Elastic
Compute Cloud(EC2). EC2 é um produto IaaS e permite o aumento ou redução de capa-
cidade em minutos, além de oferecer a contratação simultânia de milhares de instâncias de
servidor. [45] O EC2 conta com as seguintes ferramentas: modelos pré-configurados para ins-
tâncias (ambientes virtuais de computação), chamados de Amazon Machine Images (AMIs),
que armazenam os bits necessários para o servidor; keypairs (AWS armazena a chave pública
e o usuário armazena a chave privada em um local seguro); volumes de armazenamento para
arquivos temporários (deletados); Amazon Elastic Block Store - EBS, volumes de armazena-
mento persistente para dados; múltiplos locais físicos para armazenamento de dados (regiões
e zonas de disponibilidade); endereço IPv4 estático para computação em nuvem dinâmica
(Elastic IP addresses); redes virtuais que podem ser criadas e designadas aos recursos no
EC2. [46]
Os maiores benefícios das plataformas Amazon são: o nível de controle e customização,
análise de dados, insights úteis e habilidade de acesso às aplicações do usuário. A desvanta-
gem da AWS concentra-se principalmente na complicação gerada pelo número de serviços.
[39]
Elastic Beanstalk é outro produto PaaS oferecido pela AWS, cujos comandos devem ser
postados na Command Line Interface (similar ao Heroku) ou pelo Management Console do
mesmo. O Elastic Beanstalk utiliza EC2 para hospedagem, facilitando a migração Elastic
Beanstalk - AWS EC2.
Os preços dos produtos na AWS variam conforme as ferramentas e recursos requiridos.
A AWS oferece preço sob demanda que é arredondado na hora mais próxima. [47]
58
Windows Azure
O Windows Azure, criado em 2009, é um IaaS e é também uma nuvem híbrida. O Azure
conta com as seguintes vantagens e ferramentas:
• Organizações podem sincronizar dados em suas matrizes com uma única autentificação
para simplificar o acesso;
• Relatórios de segurança podem ser obtidos a qualquer momento, contribuindo para o
gerenciamento de risco;
• Autenticação pode ser realizada de diversas formas, fornecendo um mecanismo adicio-
nal de identificação em adição à senha;
• Clientes podem implementar camadas de autorização para controlar o acesso de usuá-
rios.
• Aplicações e dados podem ser armazenados localmente por meio do Office 365, Micro-
soft Azure e Windows Server.
• Por utilizar serviço de nuvem híbrida, Azure pode instalar aplicações ou mover dados
do servidor local para a nuvem rapidamente. [43]
Azure SDK é um conjunto adicional que pode ser instalado e pode ser utilizado para
implantar aplicativos e APIs escaláveis. Ferramentas de linhas de comando também estão
disponíveis, como Azure PowerShell, Interface de Linha de Comando do Azure (CLI) e
ferramentas do PowerShell para Visual Studio. [48]
O Microsoft Azure é a plataforma mais econômica quando comparada à GCP (Google
Cloud Platform) e AWS, porém sua especialização reside na operação de máquinas virtuais.
[39]
Google Cloud Platform
A GCP (Google Cloud Platform) é um IaaS. A GCP é construída em um cluster de 86 ser-
vidores. Sua unidade básica é o Node e utiliza um gerenciador de banco de dados de larga
escala chamada Big Table. googlecloud2
Só há um método de pagamento: mensal e por demanda. O mínimo são 10 minutos e
a utilização é arredondada para o minuto cheio mais próximo. O Google Sustained Usage
concede descontos ao maior o uso. [47]
59
A Google BigQuery oferece um API em JavaScript, logo não é necessário salvar dados no
lado do servidor e transferir os mesmos para a nuvem via PHP ou Java. A divisão dos dados é
feita em tabela, o que é bom para o processamento de dados (e um diferencial para automação
de Big Data). Os dados podem ser transferidos como arquivo CSV quando requerido, porém
a taxa de upload é uma desvantagem. [39]
Heroku
O Heroku é um PaaS, o que significa que uma conta Heroku rende um servidor e uma plata-
forma para ser utilizada juntamente ao servidor. A maior vantagem do Heroku é ser extrema-
mente simples e todo o decorrer dos processos acontece através do Git. É de fácil utilização,
desenvolvimento e escalamento e possui mais de 140 add-ons. Essas características são muito
importantes para o PlanEx e este foi o servidor escolhido para rodar as aplicações.
60
61
Capítulo 3
Material e Métodos
O primeiro passo na elaboração do PlanEx foi a construção e consolidação do Back-End.
O IntelliJ IDEA foi o primeiro software escolhido para o desenvolvimento, logo depois da
definição de Java como linguagem básica do projeto. O IntelliJ diferenciou-se de seus con-
correntes principalmente pela função inteligente de auto preenchimento de código e foi de
manuseio fácil e intuitivo. Seguindo a linha de melhores ferramentas, optou-se pelo Spring
Boot para framework do PlanEx, arquitetura que oferece métodos rápidos para o desenvolvi-
mento de aplicações. O framework funciona como uma biblioteca que pode ser utilizada por
qualquer tipo de linguagem ou projeto, além de analisar e configurar automaticamente o pro-
jeto. Conforme a ideia do PlanEx evoluiu, tornou-se necessária a utilização de um servidor
e um gerenciador de banco de dados, tornando o Back-End do projeto mais robusto e justi-
ficando a adoção da arquitetura cliente-servidor. O Heroku foi a plataforma escolhida pelo
principal motivo de ser muito simples frente aos seus peers. O Heroku possui um gerenciador
de banco de dados embutido, o Heroku Postgres, e é recomendado principalmente a startups
e pequenas empresas que não utilizam muita capacidade (frente a grandes corporações), pois
embora o mesmo seja o melhor em suas atividades core, o escalamento é muito custoso. Um
web crawler foi utilizado para mapeamento de páginas de operadoras de câmbio e obteção
de dados. Foi apresentado também os procedimentos adotados no design do banco de dados.
O diagrama de classes foi então apresentado com os pacotes e suas classes minudenciadas.
Os métodos e ferramentas utilizadas para montar o front-end são apresentados ao fim, reini-
ciando o ciclo do aplicativo que se inicia e termina frente ao cliente. A interface do PlanEx
foi desenvolvida em HTML, CSS e Javascript, linguagens frequentemente usadas na web.
62
3.1 Material
Em meio a tantas versões e programas disponíveis, buscou-se acompanhar as recomendações
públicas de software para auxílio na escolha de ferramentas para elaboração do PlanEx.
Foram utilizados ambos os conceitos de Front-End e Back-End com suas respectivas con-
figurações para elaboração do PlanEx.
3.1.1 Front-End
O Front-End de um website é a parte que interage com o usuário. Em geral, desenvolvedores
de front-end devem se especializar em três linguagens de programação: HTML, CSS e Javas-
cript, e serem também familiarizados com alguns frameworks, como Bootstrap, Foundation,
Backbone, AngularJS e EmberJS. O programador dessas linguagens também deve trabalhar
próximo ao designer ou analistas de User Experience para prover os melhores programas. O
Front-End inclui o conteúdo da página, o tema, os menus e os widgets. [49]
3.1.2 Back-End
O Back-End de um website consiste de um servidor, uma aplicação e uma base de dados e
serve para construir e manter a tecnologia necessária para a existência do Front-End. Pro-
gramadores de Back-End utilizam linguagens com suporte ao servidor, como PHP, Ruby,
Python, Java, .Net, etc. [50] O Planex possui seu servidor feito em Java, linguagem orientada
a objetos de grande popularidade no mercado e que atende a todas as demandas do projeto.
[51]
3.1.3 IntelliJ IDEA
O IDE escolhido para este projeto é o IntelliJ, que não necessita de plug-ins extraordinários
para suporte ao Spring, ao contrário do Eclipse. NetBeans e IntelliJ IDEA já são preparados
para utilizar Maven em suas formas originais. O IntelliJ conta com as seguintesferramentas:
• Compleção inteligente de código - a compleção de código é resultado de uma série de
técnicas utilizadas para analisar e propor pedaços de código para o desenvolvedor. A
compleção de códigos do IntelliJ detecta e diferencia diferentes linguagens, como Java,
Groovy, SQL, JPQL, JavaScript etc. Além de sugerir variáveis, classes e métodos, pode
sugerir parâmetros, propriedades, nomes de arquivos, recursos, Spring Frameworks, ba-
63
ses de dados, etc, até quando a linguagem utilizada é outra que não o Java. A compleção
de código sugere sentenças baseadas em contexto e nas necessidades do usuário.
• Análise de código On-the-fly - Enquanto o usuário escreve o código, o IntelliJ analisa
este no backgroud e identifica erros e melhorias. Essas análises são configuráveis e são
consideradas importantes na escolha do IntelliJ como IDE. Com inspeções, o IntelliJ
encontra uma grande quantidade de erros já existentes, possíveis bugs ou melhorias
(como uma variável que nunca é utilizada, sugestão de sentenças simplificadas, etc).
• Refatoração avançada - o IntelliJ possui uma grande gama de opções de refatoração.
Caso não haja uma opção sugerida satisfatória, é possível escolher uma opção do menu,
como migração de tipo (como retorno de um método, variável local e parâmetros), ex-
tração de classe (opção de extrair uma classe de outra, sendo possível escolher quais
métodos e variáveis devem ser transferidos), refatoração de XML (renomear tags e
atributos, converter tags para atributos etc), arrastar e soltar itens (IntelliJ irá automati-
camente alterar as importações e usos), alterar assinaturas, introduzir constantes, etc.
• Navegação e Busca - uma janela de diálogo mostra os arquivos abertos e janelas IDE
podem ser usadas para abrir o elemento desejado sem a ajuda do mouse. [52]
3.1.4 Spring Boot
Spring Boot é um framework criado pela Pivotal e configurada para o desenvolvimento de
aplicações Spring. Spring Boot oferece um método mais rápido para construir aplicações -
ele analisa as classes e beans do projeto, estabelece um raciocínio sobre elementos faltantes
e os adiciona, fazendo com que o desenvolvedor foque mais em ferramentas de alto nível e
menos em infraestrutura.
Em seu formato cru, Spring Boot pode ser considerada uma biblioteca que pode ser uti-
lizada por qualquer sistema de linguagem/projeto. A distribuição do framework, incluindo o
CLI integrado pode ser instalado manualmente por meio do repositório de Spring.
O Spring Boot não gera código, mas analisa e configura o projeto automaticamente. [35]
Ele é a base de todo o projeto PlanEx atuando como infraestrutura do Back-End.
3.1.5 Heroku
Heroku é uma plataforma poliglota (linguagens de programação) baseada em nuvem que per-
mite a desenvolvedores e empresas construir, desenvolver, monitorar e escalar aplicações.
64
Esta plataforma remove a necessidade de servidores, administração de sistemas e manuten-
ção. A segurança de acesso do Heroku é configurável e permite que um time de desenvol-
vimento scrum possa atualizar o projeto. A lista de linguagens de programação que pode
ser utilizada no Heroku contém, entre outras, Node, Ruby, Java (qualquer aplicação Java que
possa rodar sobre o OpenJDK6), Scala e PHP. O Heroku é uma arquitetura construída em
máquinas virtuais na Amazon EC2 (Amazon Elastic Compute Cloud). Administração e esca-
lamento são feitos via API, que pode ser acessada por meio de linha de comando ou interface
REST [53] e sua administração de aplicações é feita com Git, uma versão popular de sistema
de controle. [54] Para que aplicações sejam implementadas no Heroku, basta apenas solicitar
"push".
O Heroku lida com cerca de 13 bilhões de pedidos por dia, auxilia mais de 6 milhões de
aplicações e possui mais de 150 serviços que podem ser adicionados aos projetos. [55]
Stacks são os ambientes utilizados para rodar as aplicações desenvolvidas e os dynos
são as unidades de processamento do Heroku. Os stacks são sistemas operacionais básicos
e software para servir as aplicações, ficando no topo de uma máquina que roda Linux no
centro de dados da Amazon. Eles permitem que as aplicações sejam rodadas na nuvem sem
preocupações com a infraestrutura. O Celadon Cedar é o único stack que permite a criação
de aplicações. Os stacks e o código auxiliar rodam em um dyno. O Heroku utiliza Maven
para instalar as aplicações nos dynos e cada um destes roda uma variedade de diferentes tipos
de processos, que podem ou não incluir, entre outros:
• Aplicações Web;
• Processos que servem solicitações API;
• Programas one-off;
Cada dyno possui 512MB de memória e oferece uma série de ferramentas e vantagens:
[53]
• Elasticidade escalável: cópias diferentes de cada projeto podem rodar quantas instân-
cias forem necessárias a qualquer tempo e podem ser escaladas para cima ou para baixo
em um ou mais dynos. Se um processo toma muito tempo em um único dyno, outro
dyno pode rodá-lo em paralelo.
• O dyno manifold (que pode ser pensado como um computador horizontalmente escalá-
vel e distribuído na nuvem) oferece balanceamento automático de capacidade. O tráfico
65
HTTP do host é conduzido ao dyno web correto, dentro do dyno manifold. O heroku-
app.com HTTP stack oferece um caminho direto para os webdynos. A plataforma He-
roku então recebe pedidos HTML procedentes do ponto de entrada herokuapp.com ou
do domínio próprio do desenvolvedor e redireciona-os para cada dyno. O dyno, quando
disponível, seleciona um pedido da fila e o mesmo é processado dentro da aplicação.
[56]
• Processos que não são responsivos são reiniciados automaticamente. Monitoração con-
tínua faz com que isso seja realizado sem a interferência do usuário.
• Quando muitos dynos estão rodando em paralelo, os processos são automaticamente
distribuídos em hardwares diferentes (centros de dados da Amazon), protegendo-os de
alguma falha em um servidor particular.
• Cada processo roda completamente separado dos demais. As aplicações não utilizam a
mesma memória ou sistema de arquivo. O processo de isolamento é realizado por meio
do LXC (Linux Containers) e chroot.
O administrador de dynos (Dyno Manager) é responsável por manter os dynos rodando.
Caso um dyno apresente um problema, este é automaticamente substituído por outro e as
informações, repassadas.
O Heroku conta com um gerenciador de base de dados built-in entre seus serviços ofereci-
dos, chamado Heroku Postgres, o método de armazenamento de dados mais comum entre as
aplicações Heroku. [53] A Heroku Postgres é um gerenciador de banco de dados na nuvem.
A base armazena os dados espalhando-os em diversos Amazon EBS (Amazon Elastic Block
Store), assegurando que a falha de um não levará a base inteira à falha. Backups automatiza-
dos também são providenciados pelo Heroku e a base é checada uma vez a cada 30 segundos
para garantir funcionalidade correta.
A grande desvantagem do Heroku é seu alto custo para escalar a capacidade e os limites
à customização pelo desenvolvedor. É uma ótima plataforma para o início de um negócio
(startups, freelancers, pequenos negócios), mas ao longo do caminho pode se tornar custosa.
Como o PlanEx está em sua primeira etapa de história e consolidação, o uso do Heroku é
adequado.
66
3.1.6 Crawler
Um web crawler (também conhecido como robot, spider ou rastreador web em português) é
um programa que faz download de páginas. Os web crawlers reunem informações (corpo)
da página, cadastram seus links (em índice) e permite a usuários que realizem consultas
sobre esses índices. Rastreadores web são os principais componentes de sites provedores
de pesquisa. O motivo da utilização desses rastreadores reside no fato de que a web não
está armazenada em um repositório central de informações, e sim espalhada em milhões