Escolar Documentos
Profissional Documentos
Cultura Documentos
CARLLET
CARLLET
Este trabalho apresenta o desenvolvimento do aplicativo Carllet, que tem como principal
objetivo promover o controle financeiro para motoristas de aplicativos de corrida. A
plataforma oferece recursos como registro automático de corridas e gastos, cálculo de lucro
líquido e análise de despesas, possibilitando uma gestão simplificada das finanças Além
disso, os usuários podem definir metas de ganhos e receber alertas de gastos excessivos
com manutenções, tornando a ferramenta ainda mais eficaz. A equipe responsável pelo
projeto identificou um grande potencial de mercado para a solução, devido à sua utilidade,
facilidade de uso e alta demanda por parte dos motoristas.
Em suma, o Carllet é uma solução viável e eficiente para lidar com questões financeiras
no contexto de transporte urbano. Seu desenvolvimento foi baseado em uma pesquisa
de mercado e na identificação das necessidades dos usuários, garantindo uma plataforma
simples, funcional e adaptada às demandas do público-alvo.
In summary, Carllet is a viable and efficient solution for handling financial issues in
the context of urban transportation. Its development was based on market research and
identification of user needs, ensuring a simple, functional, and tailored platform for the
target audience.
1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.1 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.2 Solução Proposta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.3 Justificativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.4 Análise da Concorrência . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.4.1 Drive you . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.4.2 For driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.4.3 Rebu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.4.4 Comparativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.5 Estrutura do Trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2 REVISÃO DA LITERATURA . . . . . . . . . . . . . . . . . . . . . . 22
2.1 Serviços na Era Digital . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.1.1 Aplicativos para Motoristas Parceiros . . . . . . . . . . . . . . . . . . . . . 23
2.1.2 Inseguranças sobre Ganhos Líquidos . . . . . . . . . . . . . . . . . . . . . 23
4 DESENVOLVIMENTO DO PROJETO . . . . . . . . . . . . . . . . 33
4.1 Arquitetura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.2 Análise de Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.2.1 Histórias de Usuário . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.2.1.1 Descrição das Histórias de Usuário . . . . . . . . . . . . . . . . . . . . . . . 35
4.2.2 Regras de Negócio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.2.3 Requisitos Funcionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.2.4 Requisitos Não Funcionais . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.3 Modelagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.3.1 Modelagem do Banco de Dados . . . . . . . . . . . . . . . . . . . . . . . 45
4.3.1.1 MER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.3.1.2 DER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.3.1.3 Dicionário de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.4 Critérios de Segurança, Privacidade e Legislação . . . . . . . . . . . 51
4.4.1 Segurança dos Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.4.2 Legislação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.5 Tecnologias Utilizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.5.1 Front-end . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.5.2 Back-end . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.5.3 Estrutrura de Pastas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.5.4 Banco de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.5.5 APIs externas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.5.6 Versionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.5.7 Deploy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.6 Manutenibilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.6.1 Testes Automatizados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.6.2 Análise Estática . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.6.3 Integração Contínua . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.6.4 Sistema de Logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.6.5 Coding Convention . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.6.6 Design Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.7 Modelo de Negócio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.8 Viabilidade Financeira . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.8.1 Custos do Projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.8.1.1 Custos da Análise e Desenvolvimento . . . . . . . . . . . . . . . . . . . . . . 60
4.8.1.2 Custos da Estrutura da Empresa . . . . . . . . . . . . . . . . . . . . . . . . 61
4.8.1.3 Custos da Manutenção do Serviço . . . . . . . . . . . . . . . . . . . . . . . 62
4.8.2 Projeção de Receitas e Faturamento . . . . . . . . . . . . . . . . . . . . . 63
4.9 Fases de entrega . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.10 Prova de Conceito . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.11 Produto Mínimo Viável . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.12 Entrega Final . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.13 Histórico de Atividades . . . . . . . . . . . . . . . . . . . . . . . . . . 68
4.14 Escolhas e Descartes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
4.15 Problemas Ocorridos no Gerenciamento e do Projeto . . . . . . . . . 71
5 CONCLUSÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
GLOSSÁRIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
APÊNDICES 78
1 Introdução
1.1 Objetivos
A aplicação irá contribuir para que motoristas avaliem de forma prática e descom-
plicada seus ganhos e gastos na prestação de serviço para aplicativos parceiros.
Pode-se listar os seguintes Objetivos Específicos:
Capítulo 1. Introdução 15
• Falicitar a gestão dos lucros reais relacionados aos serviços prestados via aplicativos
de mobilidade;
1.3 Justificativa
Segundo dados do IPEA (2022), no quarto trimestre de 2021 havia aproximadamente
945 mil pessoas exercendo a função de motorista de aplicativo e taxista. A partir do
primeiro semestre de 2020, quando iniciaram as restrições de locomoção no Brasil referente
a pandemia da covid-19, houve uma queda no número de pessoas exercendo a mesma
função. O número de motoristas voltou a subir no terceiro trimestre de 2020, o que pode
ser visualizado na Figura 1:
figuras/evolucao-quantitativo-transporte.png
Entre 2020 e 2021, período da pandemia da covid-19, foi estimado que existiam
mais de 14 milhões de brasileiros desempregados (IBGE, 2023). A pesquisa do Serasa
(2023), publicada em janeiro de 2023 e focada no Brasil, informa que 23% dos entrevistados
passaram a utilizar o carro como ferramenta de trabalho, comparando o período pré e
pós pandêmico. O estudo da consultoria ACCENTURE (2023), a pedido do aplicativo
Uber, realizou entrevistas com 4.941 motoristas e entregadores de seis países (Austrália,
Brasil, Canadá, Estados Unidos, França e Reino Unido) e relatou que 62% dos motoristas
se cadastraram no aplicativo durante a pandemia pois não conseguiram encontrar outro
trabalho e 73% dos motoristas e entregadores concordaram que a plataforma funcionou
como uma rede de proteção.
O estudo realizado pelo Ipea ainda registra um comparativo em relação à renda
Capítulo 1. Introdução 17
destes trabalhadores ao longo dos anos pré e pós covid. Pode-se visualizar, na Figura 2,
que houve uma queda no rendimento dos motoristas de aplicativo e taxistas. Se, por um
lado, o rendimento observado no último trimestre de 2021 - em torno de R$ 1,9 mil - é
superior ao valor recebido em meados de 2020 - em torno de R$ 1,5 mil - ainda assim é
bastante inferior aos R$ 2,7 mil recebidos, em média, no início de 2016.
Figura 2 – Evolução do Rendimento Efetivo Médio Mensal, em Termos Reais (em R$)
figuras/evolucao-rendimento-mensal.png
Como cada empresa possui suas exigências e termos, além de descontos e taxas
aplicadas a cada serviço realizado, o rendimento efetivo é impactado não somente por
estas variáveis, mas também pelo preço de abastecimento e manutenção do carro.
No levantamento realizado pela AutoInforme (2022), o combustível tem uma parcela
elevada na contribuição de gastos com o uso do automóvel, chegando a 29,27% em novembro
de 2022. Para motoristas de aplicativos, o gasto tende a ser maior pelo tempo rodado com
o carro. Em julho de 2021, foi estimado que a gasolina representa entre 40% e 50% do
gasto diário de um motorista de aplicativo, e a taxa paga aos aplicativos, em torno de 25%
(G1, 2021).
A variação nos preços de combustíveis traz um impacto direto no lucro do motorista.
Em junho de 2022, o preço médio da gasolina comum chegou a R$ 7,25 (ANP, 2023) e
segundo a AutoInforme (2022), neste período a participação do gasto em combustível
chegou a 38% de um total de R$ 2.070,75, como pode ser visto no Quadro 1.
Capítulo 1. Introdução 18
figuras/bi_anp_gasolina.png
Em junho de 2022, o preço médio da gasolina comum chegou a R$ 7,25 como pode
ser observado na Figura 3. Em paralelo, considerando o mesmo período, o rendimento
médio mensal de motoristas de aplicativos e taxistas chegou ao valor mais baixo desde
a medição, valor menor que R$ 1.500,00 mensais, no segundo semestre de 2020, como
visualizado na Figura 2.
Ao mesmo tempo que a retomada do crescimento de serviços de motoristas por
aplicativos, evidenciada na Figura 1 confirma o amplo mercado em crescimento que temos
como alvo deste projeto, o declínio do rendimento mensal deste setor comparado antes
do período pandêmico, demonstrado pela Figura 2, deixa claro a crescente necessidade
Capítulo 1. Introdução 19
1.4.3 Rebu
O Rebu é um aplicativo mobile desenvolvido para motoristas profissionais, cuja
proposta é proporcionar maior segurança e auxílio no cotidiano do motorista, bem como
promover o controle de suas finanças. Conta com duas versões, uma gratuita e outra
Premium, sendo que a Premium oferece maior amplitude de funcionalidades comparativa-
mente à versão gratuita (REBU, 2023). Algumas das funcionalidades da versão gratuita
são:
• Função ’Alerta de Risco’, que notifica o motorista caso ele se aproxime de uma área
de risco;
• Mapas com diversos indicadores, tais como: postos com Gás Natural Veicular (GNV),
sanitários gratuitos, melhor região próxima para receber corridas, locais onde houve
furto de carros nas últimas 24 horas;
1.4.4 Comparativo
Foram levantadas as principais funcionalidades das aplicações consideradas na
análise comparativa e elaborado o Quadro 3, para melhor visualização dos requisitos que
cada aplicação implementa e no quê se destaca:
Capítulo 1. Introdução 21
2 Revisão da Literatura
Esta seção foi dividida em duas partes. Na primeira, é apresentada uma discussão
sobre as mudanças na prestação de serviços na era digital. Na segunda são apresentadas
as principais plataformas de transporte individual.
Esta mudança nos Termos e Condições, pode ser entendida como mais uma forma
de inibir que os motoristas compartilhem seus ganhos com terceiros, e que de alguma
forma sejam questionadas as taxas e valores repassados pela plataforma.
25
• Débora Peixoto dos Santos: atua há mais de 1 ano na área de dados. Sua primeira
experiência relacionada à análise de dados foi no Museu de Arte Moderna de São
Paulo, no qual foi responsável por desenvolver um relatório diagnóstico sobre a
documentação da instituição por meio de estudo de amostragem. Posteriormente,
foi estagiária de Bussines Intelligence na Prodam, Empresa de Tecnologia da In-
formação e Comunicação do Município de São Paulo, onde atuava principalmente
com visualização e análise de dados, tanto para projetos externos quanto internos.
Atualmente faz parte do time data science na Farmtech, empresa de crédito digital
rural, na qual apoia a estratégia de negócio da empresa com tecnologia e estatística,
sendo responsável por auxiliar no processo de análise e visualização de dados para
insights. As principais ferramentas que possui conhecimento pertinentes à área em
que atua são SQL, Power BI, DBeaver, SQL Server e Python (Pandas e Numpy).
3.4 Métricas
Com o objetivo de demonstrar a evolução do projeto Carllet, a equipe realizou
extrações de métricas abordando alguns aspectos que permitem medições. As métricas
foram definidas em:
Métricas Gerais
A Tabela 1 contém as métricas gerais para cada mês de desenvolvimento do projeto.
Elas englobam todos os arquivos presentes no repositório da equipe. É notável o aumento
nas quantidades de versões e de requisitos dado o progresso do projeto.
figuras/metricasGerais.png
Métricas de Desenvolvimento
A Tabela 2 contém as métricas refentes ao desenvolvimento do front-end e backend,
para cada mês de desenvolvimento. Analisando a tabela é possível notar um maior
crescimento entre os meses de abril e maio, pois foi o momento em que o código, junto a
documentação, foram os focos de desenvolvimento.
Por fim, a representação gráfica dos dados apresentados acima acerca do desenvolvimento
do projeto.
Capítulo 3. Metodologias de Gestão de Projeto e de Desenvolvimento 32
figuras/metricasDev.png
4 Desenvolvimento do Projeto
4.1 Arquitetura
A arquitetura do sistema foi elaborada baseada na infraestrutura Azure disponibili-
zada pela Microsoft , como pode ser observado na Figura 6:
Figura 6 – Arquitetura
figuras/arquitetura-carllet.png
O sistema foi pensado como uma arquitetura client-server, em que o back-end é uma
Application Programing Interface (API), contemplando a regra de negócio da aplicação.
O Cliente é o aplicativo mobile, desenvolvido em React Native que pode ser acessado
tanto em dispositivos Android quanto IOS e que consome a API fornecida pelo back-end.
Para os arquivos estáticos da aplicação, como imagens, arquivos de usuários entre
outros, utilizou-se o Azure CDN (Content Delivery Network), Ao utilizá-lo, não há fluxo
desnecessário no banco de dados com conteúdos estáticos que não possuem uma alteração
tão dinâmica quanto os dados que giram em torno da regra de negócio principal.
Capítulo 4. Desenvolvimento do Projeto 34
O cliente fica disponível nas lojas de cada plataforma (App Store e Play Store),
assim qualquer usuário que desejar utilizar a aplicação, tem fácil acesso e um local de
download que verifica a integridade e veracidade da aplicação.
A Azure fornece instâncias de máquinas virtuais por meio de sua App Service,
permitindo que a aplicação utilize os recursos necessários para sua carga de trabalho e
escalonamento automático. A plataforma utiliza o fluxo do Docker para a configuração
e build da aplicação, permitindo que um contêiner seja executado por meio do Azure
Container Instances.
Com a necessidade de exibir notificações aos usuários, recorre-se a um worker
service que execute a cada 3 minutos. Baseado no Cron Expression, o worker service
verifica os dados do banco de dados, com a atualização de informações do usuário, e chama
o notification push.
Requisito
Código Nome História de Usuário Funcional
Relacionado
US01 Criar Conta RF01
US02 Acessar a aplicação RF01, RF02
US03 Autenticar o usuário RF02
US04 Visualizar localização no mapa via GPS RF03
US05 Registrar início de locomoção do carro RF04
US06 Registrar abastecimento do carro RF06
US07 Registrar ganhos no app parceiro RF07
US08 Registrar manutenções com o carro RF08
US09 Visualizar total de km rodados por dia/período RF04, RF05
US10 Visualizar abastecimento do carro por dia/período RF06, RF09
US11 Visualizar ganhos no app parceiro por dia/período RF07, RF09
Visualizar gastos com manutenção do carro por
US12 RF08, RF09
dia/período
Visualizar uma estimativa de gasto com gasolina por dia RF04, RF05,
US13
e km rodados RF06, RF09
RF06, RF07,
US14 Visualizar Dashboard
RF08, RF10
US15 Notificação manutenção RF08, RF11
US16 Página Web (SPA) N/A
US11 Gerenciar dados para meta RF11
US18 Comparação de Valores RF12
Fonte: Elaborado pelos autores
• O motorista deve ter acesso de forma fácil a uma opção(em formato de botão)
para registrar o início e término da viagem.
• O motorista deve informar o tipo de viagem que está sendo realizada: se é
particular ou à trabalho.
• A aplicação deve notificar que o início e o término da contagem de quilômetros
rodados no tipo de viagem escolhida.
Capítulo 4. Desenvolvimento do Projeto 38
• O motorista deve ter acesso a tela para incluir os ganhos líquidos e brutos que
obteve na prestação de serviços via aplicativos de corrida.
• O motorista deve ter opção para incluir o valor líquido e bruto que obteve na
prestação de serviços via aplicativos de corrida no dia.
• O formulário deve validar e informar se a data é permitida e se o valor líquido
menor que o valor bruto.
• O motorista deve receber algum tipo de mensagem informando se a inclusão de
ganhos líquidos e brutos no dia informado, obteve sucesso ou erro.
• O motorista deve ter acesso a tela para incluir seus gastos com manutenções
com o carro.
Capítulo 4. Desenvolvimento do Projeto 39
• O motorista deve ter opção para selecionar o tipo de manutenção, data realizada
e valor gasto.
• A aplicação deve validar a data preenchida no formulário.
• O motorista deve receber algum tipo de mensagem informando que inclusão de
gasto com manutenção obteve sucesso ou erro.
• A aplicação deve considerar as informações de manutenção no cálculo de despesas
do automóvel.
• As manutenções registradas devem ser exibidas no dashboard do aplicativo.
• O sistema deve notificar o motorista quando for necessário realizar uma nova
manutenção, com base no período previsto entre as manutenções e na data da
última manutenção realizada.
13. US13 - Visualizar uma estimativa de gasto com gasolina por dia e km
rodados
Descrição: Como motorista, eu quero visualizar os gastos que tive com gasolina
pelo período que eu escolher, para ter uma noção das minhas despesas totais.
Requisitos relacionados: RF04, RF05, RF06, RF09
Critérios de aceitação:
• A aplicação deve exibir uma estimativa de gastos com gasolina pelo período
selecionado em formato gráfico.
• A aplicacão deve disponibilizar diariamente, para consulta, os gastos com
gasolina.
• A aplicação deve diferenciar o gasto com gasolina considerando os quilômetros
rodados pela categoria de viagem a trabalho ou de uso pessoal.
Capítulo 4. Desenvolvimento do Projeto 41
• O usuário deve ter a opção de criar uma nova meta diária, inserindo o valor
desejado.
• usuário deve ter a opção de editar os dados que geram a meta.
• O usuário deve ter a opção de excluir uma meta diária já criada.
• A aplicação deve permitir que o usuário visualize a meta diária atual e o valor
já ganho no dia;
• A aplicação deve alertar o usuário caso o valor ganho no dia esteja abaixo da
meta diária definida;
• Os dados de meta diária devem ser salvos e mantidos na aplicação mesmo após
o encerramento da sessão.
4.3 Modelagem
4.3.1 Modelagem do Banco de Dados
A partir das histórias de usuários, requisitos funcionais e não funcionais, foi elabo-
rada a modelagem do banco de dados, concretizada através do Modelo Entidade Relacio-
namento (MER) e do Diagrama Entidade Relacionamento (DER).
4.3.1.1 MER
figuras/mercarllet.png
4.3.1.2 DER
figuras/dercarllet.png
vazamentos. Diante desta situação, e devido à natureza de nossa aplicação, que utiliza
dados financeiros e de localização, reforçamos nosso compromisso com o desenvolvimento
pavimentado por princípios de segurança.
4.4.2 Legislação
A Lei Geral de Proteção dos Dados (LGPD), regula desde 2020 as regras para
armazenamento, processamento e deleção de dados. Estipula punições em casos de violações
de suas regras. A lei é aplicável para qualquer processo que ocorra em território nacional,
independente da nacionalidade do usuário ou país de sede da empresa. Também disponibiliza
parâmetros para quais dados de usuários devem ser tratados com maior sigilosidade,
como gênero e sexualidade, define como o titular dos dados deve ter controle de suas
informações. Determina como diferentes os papéis assumidos pelas instituições no processo
de manipulação de dados e quais serão suas responsabilidades.
No desenvolvimento do projeto foi levado em consideração as exigências de tal lei
desde o princípio, no desenho da aplicação especificamos a necessidade de dados do usuário
apenas o suficiente para garantir fidedignidade, não solicitando dados pessoais sensíveis ou
de menores de idade. O usuário titular deve aprovar a utilização de tais informações antes
de acessar o aplicativo e tem acesso a elas, sendo-lhe permitido modificar ou deletar caso
haja necessidade.
A aplicação desenvolvida se enquadra em todos os princípios exigidos no artigo 6
da lei, onde dissertam sobre os princípios a serem seguidos no tratamento de dados. Os
protocolos definidos em 4.5.1 servirão para garantir que os dados só trafeguem pela rede
quando criptografados.
Capítulo 4. Desenvolvimento do Projeto 55
4.5.1 Front-end
Para o Front-end, as tecnologias utilizadas são o React.js e o React-Native.
O React.js, biblioteca JavaScript de criação de interfaces de usuário, de propriedade
do grupo Meta Platforms, é utilizado para construção da Landing Page do aplicativo.
Atualmente, as lojas precisam de algumas informações como políticas de privacidade do
aplicativo para que ele possa ser confirmado e verificado nas lojas de distribuição como
“App Store” e “Play Store”.
A tecnologia foi escolhida pois permite desenvolver uma Single Page Application
(SPA), resultando em economia dos recursos do backend e a possibilidade de escalabilidade
da aplicação, caso necessário.
O React-Native é um framework open source de propriedade da Meta Platforms.
(NATIVE, 2023). Com uma forma de escrever muito semelhante ao React, o React Native
possibilita desenvolver aplicações mobile, utilizando o mesmo contexto de tecnologia de
base do React, o Javascript.
Além disso, o uso do React Native foi favorável mediante a possibilidade de
desenvolver uma aplicação mobile que pode ser utilizada nas plataformas Android e IOS.
4.5.2 Back-end
O Back-end é fundamentalmente desenvolvido utilizando-se C# (C Sharp), uma
linguagem de programação moderna, orientada a objeto e fortemente tipada. O C#
permite que os desenvolvedores criem muitos tipos de aplicativos seguros e robustos que
são executados no .NET, plataforma de código aberto criada pela Microsoft. (MICROSOFT,
2023)
A comunidade de desenvolvedores do .NET é ativa, disponibilizam conteúdos
documentados e uma grande quantidade de recursos disponíveis que contribuíram para
auxiliar no desenvolvimento da aplicação.
Baseado na linguagem C# o .NET é uma plataforma de desenvolvimento muito
poderosa e versátil que permite desenvolver aplicações backend escaláveis, que se necessário,
Capítulo 4. Desenvolvimento do Projeto 56
4.5.6 Versionamento
Para realizar o versionamento do código da aplicação, utilizamos o Git, ferramenta
open-source e muito popular na comunidade utilizada por grande parte dos desenvolvedores
para versionar projetos em um âmbito geral. Para hospedar o código versionado através do
Git, utilizamos o repositório online Github, onde conseguimos alocar o código versionado em
uma “organização” que contém todos os membros do grupo, facilitando o compartilhamento
e acesso.
4.5.7 Deploy
Após uma criteriosa análise de várias opções de nuvem, optou-se por implantar a
plataforma Azure da Microsoft. A escolha da Azure foi motivada pela sua escalabilidade,
segurança e confiabilidade, bem como pela facilidade de integração com outras ferramentas
e serviços de desenvolvimento, como o Visual Studio e o ambiente .NET. Além disso, a
Azure oferece uma ampla gama de recursos e soluções personalizáveis que atendem às
necessidades específicas do do aplicativo Carllet, como armazenamento de dados, serviços
de banco de dados gerenciados e gerenciamento de recursos em nuvem.
Capítulo 4. Desenvolvimento do Projeto 57
4.6 Manutenibilidade
4.6.1 Testes Automatizados
React Native - Detox
Optou-se por utilizar a biblioteca de testes Detox, cuja estrutura de escrita é
baseada no Jest. A ferramenta Detox se mostrou eficaz na realização de testes end-to-end,
capazes de simular fluxos reais de usuário desde o início até o final do processo. Com essa
abordagem, foi possível identificar falhas no fluxo de usuários e resultados inesperados
em tela. O objetivo final é garantir a funcionalidade e usabilidade do aplicativo, sem a
presença de bugs de fluxo que pudessem comprometer a experiência do usuário.
React Native Testing Library
Além da biblioteca Detox, que é usada para realizar os testes end-to-end e simular
fluxos reais de usuário, escolheu-se utilizar a biblioteca "React Native Testing Library"para
realizar testes unitários em componentes. Dada esta escolha, é possivel verificar o resultado
esperado dos componentes e sua qualidade.
React - Jest
Para realizar os testes no fluxo da página web de apresentação do aplicativo,
utilizamos a biblioteca de testes Jest, desenvolvida e mantida pela Meta. Jest é uma
biblioteca de teste sólida e consolidada no ecossistema do React. Com ela, conseguimos
testar os componentes que estarão presentes na aplicação Web e estarão visíveis para os
usuários que desejam conhecer o aplicativo, através da sua página de apresentação e/ou
ler as nossas políticas de privacidade.
.NET - XUnit
Para realizar os testes unitários no nosso back-end, utilizamos o XUnit, uma
biblioteca open source e muito consolidada no ecossistema do .NET, com recomendações e
tutoriais de uso na própria documentação desenvolvida pela Microsoft. Com ele, somos
capazes de testar nossas classes e validar o funcionamento de todo código desenvolvido
na aplicação, garantindo a qualidade e diminuindo os riscos de falha na nossa regra de
negócio principal. Além disso, a grande quantidade de conteúdo do XUnit presente na
comunidade pode auxiliar na elaboração de testes mais complexos e garantir ainda mais a
qualidade do projeto.
Implementa a estratégia Clean as You Code, que permite a definição de regras em diferentes
níveis. Pode ser usado através de uma instalação tradicional ou pode ativar um contêiner
do Docker usando uma das imagens disponibilizadas em seu website. Com o uso desta
ferramenta conseguimos eliminar Code Smells, impedir que alguma vulnerabilidade ou bug
sejam introduzidos, além de revisar todos os pontos de acesso de segurança.
O SonarLint, plataforma gratuita e de código aberto, será utilizado combinado com
o SonarQube para formar uma solução de código limpo poderosa e integrada com a detecção
de pontos de acesso de segurança. O SonarLint é utilizado direto na Integrated Development
Environment (IDE) Visual Studio Code, contribuindo para detectar problemas de qualidade
durante a codificação.
figuras/estimativa_horas_rf.png
a divisão por 176 horas (44 horas semanais multiplicado por 4 semanas). Também foi
aplicado um fator de 1.68 sobre o valores da hora para considerar os custos trabalhistas e
sociais. Tal valor foi estabelecido conforme a lei trabalhista segundo Torres (2022).
figuras/af_recursos_projeto.png
figuras/af_custos_analise_dev.png
figuras/af_custos_analise_dev.png
Para o cálculo dos Custos da Estrutura da Empresa que pode ser observado na
Figura 13, consideramos os gastos com infraestrutura Cloud e utilizamos da ferramenta
da Azure para estimar o valor médio gasto com servidores. Foi precificado o preço mé-
dio de R$280,00 por mês gasto em infraestrutura. Não foram considerados valores com
equipamentos, pois os funcionários já possuem.
Capítulo 4. Desenvolvimento do Projeto 62
figuras/af_custos_estrutura_empresa.png
figuras/custo_manutencao_servico_mensal.png
Para realizar o cálculo do Custos Totais do Projeto que pode ser observado na
Figura 15, com uma projeção de até 9 Meses, foram considerados os valores referentes ao
Desenvolvimento e Manutenção do Serviço. O desenvolvimento será realizado em 4 meses,
com três fases de entrega Minimum Viable Product (MVP), Proof of Concept (POC) e
o Produto Final. Após este período, somente o valor das Manutenções de Serviços são
consideradas.
figuras/custo_projecao_9_meses.png
figuras/calculo_publicidade.png
figuras/receita_projecao.png
figuras/cenario_otimista.png
figuras/cenario_realista.png
figuras/cenario_pessimista.png
RF05 - Rodômetro X X
RF10 - Dashboard X
• Gerenciador de corrida
(G1, 2021) e que os carros também são uma das maiores fontes de poluição urbana atual
(UBER, 2022), essa primeira versão foi considerada razoável pelo grupo como um todo,
pois o motorista de aplicativo, que não pode dispensar o uso do carro porque o utiliza como
ferramenta de trabalho, conseguiria gerar melhor os gastos e ganhos, além de colaborar
com o meio ambiente e reduzir sua pegada de carbono. Inclusive, esta mesma versão foi a
apresentada como proposta da aplicação.
Porém, a justificativa para o aplicativo não estava sólida, o grupo encontrou
dificuldades para comprovar que a aplicação seria atrativa para o suposto público alvo.
Como não foi feita uma pesquisa de campo prévia para mensurar a aderência de motoristas
de aplicativo à sustentabilidade e que este assunto era de interesse dos motoristas, o grupo
estava correndo risco de fazer um aplicativo para um espantalho, para um público idealizado,
que na realidade não existe. Além disso, a relação entre os fatores sustentabilidade,
gamefication e comunidade não estavam claramente definida. Estava determinado que
estes três elementos se retroalimentariam e um justificaria o outro, contudo, como o fator
de sustentabilidade possuía uma fundamentação frágil, esta mesma incerteza repercutiu
nos outros dois, que dependiam entre si.
Desta forma, por orientação dos professores, a proposta foi modificada, sendo
retirados assim, os elementos de sustentabilidade, comunidade e gamificação, e Carllet
passou a se focar integralmente para ajudar na gestão financeira dos motoristas de
aplicativo.
Outro ponto de mudança foi em relação à arquitetura do aplicativo. No início, a
plataforma Google Cloud foi escolhida para a estrutura da aplicação, e esta escolha se
deu por conta das experiências prévias bem sucedidas por parte de alguns dos membros
da equipe, além da facilidade proporcionada para mensurar gastos e riscos referentes ao
projeto. Assim sendo, esta foi a primeira escolha do ambiente cloud para a arquitetura
de Carllet. A primeira versão da arquitetura está ilustrada na Figura 21, na qual mostra
o aplicativo sendo dependente do Firebase, sendo que, na prática, ele seria utilizado
apenas para o serviço de notificações, logo, o diagrama não exprimia genuinamente como
a aplicação funcionaria. Este aspecto foi corrigido na outra versão do diagrama, na Figura
22, que posteriormente também foi alterado.
No desenvolvimento da POC, esta arquitetura foi posta em prática e, junto à
implementação, foram observados problemas para realizar a implantação dos containers,
impossibilitando então que a estrutura previamente estabelecida fosse concluída. Ao tentar
encontrar uma solução para o empecilho, foi constatado que a documentação para .NET 7
na Google Cloud era muito escassa e, consequentemente, por falta de literatura, o problema
para subir os containers persistiu e parte da prova de conceito apresentava problemas. Esta
versão com erros foi apresentada, juntamente com comentários dos integrantes do grupo
sobre as dificuldades encontradas no processo de implementação. Também por orientação
Capítulo 4. Desenvolvimento do Projeto 70
dos professores e por consenso entre a equipe, a arquitetura foi modificada de Google
Cloud para Azure, que possui uma melhor documentação para a stack escolhida, além da
melhor compatibilidade com o ambiente, dado que a Microsoft detém os direitos da Azure
e é uma das maiores patrocinadoras do .NET (MICROSOFT, 2023).
Após esta modificação, a arquitetura foi implementada novamente, desta vez na
plataforma Azure, de forma mais facilitada, sem as problemáticas presentes no ambiente
Google. Ademais, também foi inserida uma camada a mais na aplicação: o Expo, que
realiza a intermediação entre as notificações direcionadas para dispositivos androids e
dispositivos IOS. Sequencialmente, após estas mudanças que tangem a arquitetura da
aplicação, a POC foi reapresentada, desta vez, com êxito.
figuras/arquitetura1.0.jpeg
figuras/arquitetura1.1.jpeg
5 Conclusão
Referências
Glossário
figuras/qrcoderepgit.png
figuras/qrcodecanal.png
figuras/qrcoderepsvn.png
figuras/qrcodeblog.png
Esta seção contém as atas das reuniões realizadas durante o período de desenvolvi-
mento.
• Pesquisa de concorrentes
O que foi discutido: Cada integrante do grupo propôs ideias de tema e aplicações
resultando em 11 propostas para serem avaliadas e escolhidas.
1. Aplicativo de gestão para motoristas de apps (Uber, 99, etc) O app possui duas
features principais, a primeira é a gestão financeira para o motorista como controle de
abastecimento de gasolina, lucros, custos, análise descritiva de performance
E a segunda é a gestão do automóvel, como manutenção e custos Diferencial:
Previsão de lucro e gamification Possível plataformas: web pwa e app nativo em React
Native 2. Aplicativo de investimentos: plataforma que unifica investimentos Features:
Informativos de fundos de investimentos, venda de investimentos por empresas terceiras,
auxílio para o mercado financeiro. Necessidade de utilização de apis públicas para o
desenvolvimento da aplicação. 3. Site de contratação de equipes ágeis A plataforma web
permite que o cliente cadastre o projeto e os requisitos necessários e a equipe ágil se
candidata ao projeto.
APÊNDICE B. ATAS DE REUNIÃO 82
O que foi discutido: A reunião iniciou-se com a discussão sobre uma possível
mudança de escopo do projeto, onde o foco era estritamente os motoristas de aplicativo. E
a sugestão de mudança seria para atender motoristas em geral.
O problema era a viabilidade do uso de GPS.
Após a discussão ficou definido que será mantida a proposta já validada pelos
professores.
A reunião também serviu para o grupo organizar como será a primeira apresentação
e o que é esperado para as próximas.
Foi definido que a próxima reunião será realizada após a aula de terça feira dia
07/03 sendo a primeira apresentação.
Encerramento:
Não havendo mais nada a ser tratado, a reunião foi encerrada às 11:02. Com
duração de 1 hora.
A ata foi redigida por Gabriela Dias Dutra. Todos os presentes estão de acordo.
aceleração do carro e velocidade automaticamente porque ele até afirmou "Quanto menos
o aplicativo depender do usuário melhor, o cara não vai ter que ficar apertando o botão
de ligar e desligar toda hora"Sugeriram também que seria mais fácil ter uma notificação
perguntando se o usuário está em corrida ou não, ou se não está em corrida hoje. O
Rodômetro precisa guardar duas variáveis no local storage Pesquisar sobre: Como funciona
um acelerômetro Api do Waze e app da Porto seguro Necessidade de marcar o início e fim
de uma corrida Como isso será feito? Pela captura da tela do app do Uber(por exemplo)
O cálculo do lucro pode ser feito com a fórmula: Faturamento - combustível -
manutenção = lucro O custo de manutenção deve levar em conta todos os fatores incluindo
alinhamento e balanceamento do carro, troca de vela e etc
Despesas de longo prazo e despesas de curto prazo O aplicativo necessita ter essas
informações Em resumo, o que é para ser entregue na poc é a prova de que é possível
calcular os quilômetros rodados de um destino. Como por exemplo um carro sai do ponto
A e precisa chegar no ponto C passando por B, o aplicativo deve considerar todo esse
percurso. E tendo esses dados é possível calcular as despesas. O grupo está se organizando
por meio do Whatsapp e cada um está contribuindo para a definição de requisitos e
atualização da documentação do projeto. Também estamos discutindo sobre arquitetura
do sistema
C.1 Semana 1
Publicado por: Gabriela Dias Dutra em 19/02/2023
Bom dia!
Somos o grupo 5 da disciplina Projeto Integrado I (PI1A5), noturno, do curso de
Análise e Desenvolvimento de Sistemas do IFSP - Instituto Federal de Educação, Ciência
e Tecnologia de São Paulo. Este blog foi criado para acompanhar, através de postagens
semanais, o andamento do nosso projeto final do curso.
Nosso grupo é formado por: Daniel Fonseca, Débora Peixoto, Estefanie Coleone,
Gabriela Dias, João Pedro Vanderlei e Pedro Henrique Beserra. Sendo que todos nós
éramos do período matutino e acabamos de ser transferidos para o noturno, e também
por já termos colaborado em outros trabalhos de outras disciplinas, fazia sentido que
formássemos um grupo para desenvolver nosso trabalho final.
Por enquanto, ainda não temos um tema de projeto, o qual será definido em breve,
em reunião. O tema será então apresentado aos professores para que seja aprovado. Até lá!
C.2 Semana 2
Publicado por: Gabriela Dias Dutra em 05/03/2023
Após reunião realizada remotamente via Google Meet, o tema do nosso projeto
foi enfim definido. Depois de brainstorm de ideias, que resultou em 11 propostas, uma
votação elegeu o tema: o grupo 5, agora apelidado Carllet, desenvolverá uma aplicação
mobile que dará suporte a motoristas de aplicativo, provendo-lhes com ferramentas para
sua organização financeira, ao mesmo tempo em que foca em escolhas mais econômicas
e sustentáveis. O nome Carllet vêm da junção das palavras em inglês "car"(carro) e
"wallet"(carteira).
C.3 Semana 3
Publicado por: Gabriela Dias Dutra em 12/03/2023
Em aula do dia 28/02, os professores validaram nosso tema, mas solicitaram que
definíssemos melhor qual seria o diferencial do nosso aplicativo em comparação aos demais
aplicativos similares disponíveis. Nos dias seguintes, foi elaborado um pitch de apresentação
APÊNDICE C. Postagens no Blog 88
C.4 Semana 4
Publicado por: Gabriela Dias Dutra em 17/03/2023
Chegamos a quarta semana de desenvolvimento. Após a apresentação do da
07/03/2023 o grupo se reuniu informalmente pelo Whatsapp para discutir quais ru-
mos o projeto deveria tomar, levando em conta os comentários e sugestões dos professores
durante a apresentação.
Tivemos dificuldades em relação ao diferencial do aplicativo, uma vez, que ainda
restavam dúvidas sobre como implantaríamos a questão de sustentabilidade no app.
No dia 14/03/2022 realizamos uma reunião pelo Google Meet para aprimorar o
vídeo do Gource e novamente debater sobre o tema do aplicativo.
Ficou decidido nesta mesma noite que seguiríamos com o diferencial de interface do
aplicativo, simplicidade(acessibilidade) e verificar se a questão de recompensa ainda faria
sentido. Também ficou decidido que os integrantes: Estefanie, Daniel, Débora e Gabriela
ficariam responsáveis pelo documento de requisitos, histórias de usuário e a documentação
do projeto, enquanto João e Pedro dariam início ao desenvolvimento.
C.5 Semana 5
Publicado por: Gabriela Dias Dutra em 21/03/2023
Esse post tem o objetivo de publicar o que foi discutido na quinta semana de
desenvolvimento entre o grupo e os professores. Pontos falados: Necessidade da criação de
um Rodômetro. O Rodômetro ficará ligado o tempo todo(em segundo plano) computando
os dados do carro em movimento( porque não tem como saber se ele está em corrida ou
em passeio)Mas é necessário um botão de Play( que podemos colocar qualquer nome) para
iniciar o Rodômetro da CorridaFoi nesse momento que o Braz sugeriu o app da Porto
Seguro que computa os dados da aceleração do carro e velocidade automaticamente porque
ele até afirmou "Quanto menos o aplicativo depender do usuário melhor, o cara não vai
ter que ficar apertando o botão de ligar e desligar toda hora"Sugeriram também que seria
mais fácil ter uma notificação perguntando se o usuário está em corrida ou não, ou se
não está em corrida hoje. O Rodômetro precisa guardar duas variáveis no local storage
Pesquisar sobre: Como funciona um acelerômetro Api do Waze e app da Porto seguro
Necessidade de marcar o início e fim de uma corrida Como isso será feito? Pela captura da
APÊNDICE C. Postagens no Blog 89
C.9 Semana 9
Publicado por: Gabriela Dias Dutra em 21/04/2023
A semana nove necessitou que o grupo tivesse maior engajamento para corrigir os
erros após receber o relatório dos professores sobre a documentação entregue
Estas foram as seguintes modificações que precisavam ser corrigidas além do
desenvolvimento da Prova de Conceito.
Adicionar consistência e fluidez entre os dados, verificar dados divergentes da
justificativa Recorte dos dados apresentados (localização geográfica) Texto e Gráfico
IPEA - referencias ultizadas em outras partes do texto estao divergentes sobre aumento
de uber pos pandemia Topico de Gastos deve estar na Justificativa Termo hard skills -
conhecimento e habilidade Falta falar das cerimonias Scrum Arrumar diagrama arquitetura
Texto arquitura mal escrito História de Usuário - concisa e direta Nao lembro mas falaram
MER - ganho e despesa relacionado ao veículo (despesas do veículo) ganho e despesa na
entidade associativa // marca e modelo do carro separado (normalização) Tipo de dado da
senha Mudar os tipos de dados do der Texto com adjetivos sem fonte ex: excelente Codding
Convention Design Pattern Tabela de Viabilidade - detalhes das horas/dias de projeto
(quadro e texto) Ajuste de estimativa Detalhes do que compõem a receita (o que é por
propaganda, o que é por assinatura etc) Protótipo do Dash de Gerenciamento Financeiro
Consistência e fluidez dos textos Tempo verbal Referencias Acentuação Referencia no texto
dos quadros/tabelas/imagens Incluir siglas na lista de siglas Colocar italito palavras em
APÊNDICE C. Postagens no Blog 91
Ingles
Além disso foram precisas mais horas do que o esperado para a correção de bugs
do sistema para efetivamente entregar a poc.
C.10 Semana 10
Publicado por: Gabriela Dias Dutra em 28/04/2023
Semana de entrega e apresentação da Prova de Conceito da arquitetura da aplicação
Carllet
Essa foi uma semana intensa para a produtividade e desenvolvimento do grupo.
O foco estava em corrigir todos os erros e entregar a Poc corretamente, porém pela
ineficiência da Cloud escolhida(GOOGLE CLOUD) a apresentação não cumpriu com as
expectativas. Mas isso serviu para que o grupo se rearranjasse da solução e buscasse novas
clouds para desenvolver.
C.11 Semana 11
Publicado por: Gabriela Dias Dutra em 05/05/2023
E chegamos a mais uma semana de desenvolvimento, Sprint 11, segundo o crono-
grama proposto pelo grupo.
Na terça feira o grupo reapresentou a POC provando a eficiência da aplicação, o
que não ocorreu na primeira apresentação.
Ficou decidido que a arquitetura passará por mudanças de Cloud.
Além disso depois da conversa com os professores tivemos o aval para implementar
a análise preditiva que será um diferencial do produto, porém só ocorrerá posteriormente.
Agora o foco será entregar o que foi proposto para o MVP na Apresentação do Projeto.
Serão entregues as implementações dos seguintes requisitos funcionais: RF1: Geren-
ciador de Usuário RF2: Login e Autenticação RF3: Localização no Mapa via GPS RF4:
Gerenciador de corrida RF5- Rodometro
C.13 Semana 12
Publicado por: Gabriela Dias Dutra em 12/05/2023
Na décima segunda semana de desenvolvimento o grupo agora composto por 4
integrantes se reorganizou nas divisões de tarefas e decidiu quais itens priorizar para a
entrega do MVP.
A idéia e focar em adicionar mais elementos textuais para complementar a docu-
mentação, corrigir todos os erros e desenvolver o MVP.
Neste momento, nota-se uma maior integração entre a equipe e o foco em entregar
um trabalho de altíssima qualidade.
93
APÊNDICE D. Proposta Incicial 94
figuras/propostaInicial/capa.png
APÊNDICE D. Proposta Incicial 95
figuras/propostaInicial/intro.png
APÊNDICE D. Proposta Incicial 96
figuras/propostaInicial/intro2.png
APÊNDICE D. Proposta Incicial 97
figuras/propostaInicial/objetivos.png
APÊNDICE D. Proposta Incicial 98
figuras/propostaInicial/tenologias.png
APÊNDICE D. Proposta Incicial 99
figuras/propostaInicial/concorrentes.png
APÊNDICE D. Proposta Incicial 100
figuras/propostaInicial/concorrentes2.png
APÊNDICE D. Proposta Incicial 101
figuras/propostaInicial/ref.png
APÊNDICE D. Proposta Incicial 102
figuras/propostaInicial/ref2.png