0% acharam este documento útil (0 voto)
38 visualizações55 páginas

TCC Paulino Fonseca

O documento apresenta um trabalho de conclusão de curso de Engenharia Informática, desenvolvido por Paulino Caiaia Cassinda, que propõe a criação de um aplicativo móvel para a comparação de preços de produtos alimentícios e bens essenciais no município do Cuito, Angola. O objetivo é fornecer uma ferramenta que permita aos consumidores otimizar suas compras, reduzindo a assimetria de informação e os custos de busca no mercado local. O aplicativo será desenvolvido utilizando o framework Flutter e a plataforma Supabase como backend, visando facilitar o acesso a informações atualizadas sobre preços em diferentes lojas.

Enviado por

Paulino Fonseca
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
38 visualizações55 páginas

TCC Paulino Fonseca

O documento apresenta um trabalho de conclusão de curso de Engenharia Informática, desenvolvido por Paulino Caiaia Cassinda, que propõe a criação de um aplicativo móvel para a comparação de preços de produtos alimentícios e bens essenciais no município do Cuito, Angola. O objetivo é fornecer uma ferramenta que permita aos consumidores otimizar suas compras, reduzindo a assimetria de informação e os custos de busca no mercado local. O aplicativo será desenvolvido utilizando o framework Flutter e a plataforma Supabase como backend, visando facilitar o acesso a informações atualizadas sobre preços em diferentes lojas.

Enviado por

Paulino Fonseca
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd

MINISTERIO DO ENSINO SUPERIOR CIÊNCIA TECNOLOGIA E INOVAÇÃO

INSTITUTO SUPERIOR POLITÉCNICO DO BIÉ

DEPARTAMENTO DE ENGENHARIAS

CURSO DE ENGENHARIA INFORMÁTICA

REGISTO N.º ___

Desenvolvimento de um Aplicativo Móvel com Base de Dados em Nuvem Para


a Comparação de Preços em Lojas do Município do Cuito.

Trabalho de Conclusão do Curso de Engenharia Informática


Apresentado por Paulino Caiaia Cassinda em 2025
Orientado pelo professor Eng. Edgar Tchissingui

CUITO/BIÉ – 2024/2025
MINISTERIO DO ENSINO SUPERIOR CIÊNCIA TECNOLOGIA E INOVAÇÃO

INSTITUTO SUPERIOR POLITÉCNICO DO BIÉ

DEPARTAMENTO DE ENGENHARIAS

CURSO DE ENGENHARIA INFORMÁTICA

Desenvolvimento de um Aplicativo Móvel com Base de Dados em Nuvem Para


a Comparação de Preços de Produtos Alimentícios e Bens Essenciais em Lojas
do Município do Cuito.

Trabalho subordinado ao tema “Desenvolvimento


de um Aplicativo Móvel com Base de Dados em
Nuvem Para a Comparação de Preços de
Produtos Alimentícios e Bens Essenciais em
Lojas do Município do Cuito.”, A ser apresentado
ao Instituto Superior Politécnico do Bié, como
parte dos requisitos para aquisição do grau de
Engenheiro em Informática

Trabalho de Conclusão do Curso de Engenharia Informática


Apresentado por Paulino Caiaia Cassinda em 2025
Orientado pelo professor Eng. Edgar Tchissingui
CUITO/BIÉ – 2024/2025

FICHA CATALOGRÁFICA
Autora: Paulino Caiaia Cassinda da Fonseca
Título: Aplicativo Móvel com Base de Dados em Nuvem Para a
Comparação de Preços em Lojas do Município do Cuito.
Descrição: Monografia apresentada para obtenção de grau de
licenciatura em Engenharia Informática.
Tutor: Eng. Edgar Tchissingui
FICHA DE APROVAÇÃO

MINISTÉRIO DO ENSINO SUPERIOR CIÊNCIA,TECNOLOGIA E INOVAÇÃO


INSTITUTO SUPERIOR POLITÉCNICO DO BIÉ
DEPARTAMENTO DE ENGENHARIA
CURSO DE ENGENHARIA INFORMÁTICA

Autora: Paulino Caiaia Cassinda da Fonseca


Título: Aplicativo Móvel com Base de Dados em Nuvem Para a Comparação de Preços
em Lojas do Município do Cuíto.
Objetivo:

Data de aprovação:____/_________/____

Corpo de júri
Presidente:
1 Vogal:
2 Vogal:
Secretário:
Pensamento

O triunfo é o desenvolvimento do poder com o qual se obtém tudo o que se deseja


na vida, sem interferir nos direitos dos outros.
Napoleon Hill, A lei do Triunfo
Dedicatória

Este trabalho é dedicado aos meus pais Fonseca Chindambala e Vitorina


Chindambala, pela paciência que tiveram ao longo da minha formação no ensino
médio. O combustível desde o 1º ano foi a intensão de formar-me sem interrupções
para que eu pudesse redimir-me na área académica.
Agradecimentos

Expresso meus agradecimentos primeiramente a Deus, pai do me Senhor Jesus


Cristo que é a manifestação da Sabedoria multiforme de Deus.

Ao meu pai Fonseca Chindambala a quem eu atribuo cerca de 45% da minha


personalidade, pós começou sua vida de baixo e acumulou para si elevada Gloria em
conhecimento, família, etc. Para sempre serás um grande modelo para os seus
descendentes.

A minha mãe Vitorina Chindambala que incansavelmente nos ensina como andar
neste mundo e de como se proceder diante a sociedade. Sou grato por ser seu filho e
apreender com a senhora.

Agradeço a minha esposa Palmira Tomás, pós minha vida mudou completamente ao
me tornar UM com ela; agradeço por sempre acreditar em meus sonhos, e me ajudar
a alcançar níveis cada vez mais altos. Sempre peço em minhas orações para que o
Senhor continue revelando verdades cada vez mais mas elevadas a fim de que todos
sejam agraciados e influenciados pela sua vida.

Estendo os meus agradecimentos a minha família, professores, colegas, amigos e a


todos que direita ou indiretamente influenciaram e moldaram a minha
personalidade; este trabalho é a compilação de conhecimentos multiformes que
aprendi ao longo de quase 16 anos na área de tecnologias da informação.

Agradeço ao ISPB por criar em mim a base da ciência e cultivar o autodidatismo a


fim de ajudar a mitigar os desafios da nossa sociedade com soluções tecnológicas
contextualizadas localmente, construídas com as mesmas ferramentas que os
grandes softwares internacionais são construídos.
LISTA DE TABELAS

Tabela de histórias de usuario 1............................................................................51


LISTA DE FIGURAS
LISTA DE SIMBOLOS E SIGLAS
RESUMO
ABSTRACT
ÍNDICE

Introdução.........................................................................................................................XVI

CAPÍTULO I: FUNDAMENTAÇÃO TEÓRICA...............................................................21

1.1. Introdução do Capítulo..........................................................................................................21

1.2. Tecnologias Móveis...............................................................................................................21

1.2.1. Conceito e Evolução...........................................................................................................21

1.2.2. Aplicativos Móveis: Definição e Trajetória Histórica....................................................22

1.2.3. Tendências e Inovações na Computação Móvel.............................................................22

1.2.4. Arquitetura de Aplicações Móveis: Modelos de Desenvolvimento................................23

1.2.5. Padrões de Design e Usabilidade para Dispositivos Móveis..........................................24

1.3. Computação em Nuvem........................................................................................................24

1.3.1. Definição e Conceitos Básicos........................................................................................24

1.3.2. Modelos de Serviço (IaaS, PaaS, SaaS) e a Escolha do Supabase..................................25

1.3.3. Vantagens e Desafios da Computação em Nuvem.........................................................26

1.4. Bancos de Dados na Nuvem..................................................................................................27

1.4.1. Conceito e Importância...................................................................................................27

1.4.2. Tipos de Bancos de Dados (Relacionais e NoSQL) e a Escolha do PostgreSQL via


Supabase....................................................................................................................................27

1.4.3. Integração com Aplicações Móveis (Flutter e Supabase)...............................................28

1.4.4. Aspetos de Segurança e Performance em Bancos de Dados na Nuvem (com Supabase)


...................................................................................................................................................29

1.5. Sistemas de Comparação de Preços.......................................................................................29

1.5.1. Contextualização do Problema e Relevância para o Cuito.............................................29

1.5.2. Fundamentos dos Sistemas de Comparação: Coleta, Armazenamento e Processamento


...................................................................................................................................................30

1.5.3. Experiências e Estudos Relacionados sobre o Impacto dos Comparadores...................31


1.6. Aplicações Móveis para o Consumidor e Lojista no Contexto do Cuito..............................31

1.6.1. Impacto nas Decisões de Compra e Gestão Financeira do Consumidor.........................31

1.6.2. Benefícios e Implicações para os Lojistas Locais...........................................................32

1.6.3. Estudo do Contexto Local – Município do Cuito: Desafios e Oportunidades................33

1.7 Metodologia de Desenvolvimento de Software Adotada.......................................................35

1.7.1 O Paradigma Ágil e Seus Fundamentos...........................................................................35

1.7.2 Visão Geral de Metodologias Ágeis Comuns..................................................................35

1.7.3 Extreme Programming (XP): Foco na Qualidade e Flexibilidade Técnica.....................36

1.7.4 Justificativa para Adoção da Metodologia XP Adaptada................................................37

1.8 FERRAMENTAS E TECNOLOGIAS PARA O DESENVOLVIMENTO DA APLICAÇÃO


MÓVEL........................................................................................................................................39

1.8.1 Framework de Desenvolvimento Móvel: Flutter e Linguagem Dart...............................39

1.8.2 Plataforma de Backend: Supabase (Backend as a Service).............................................39

1.8.3 Sistema Gerenciador de Banco de Dados: PostgreSQL (via Supabase)..........................40

1.8.4 Ambiente de Desenvolvimento e Ferramentas de Apoio.................................................41

CAPÍTULO II: DESENVOLVIMENTO DA SOLUÇÃO PROPOSTA.............................42

2.1 Requisitos dos sistema............................................................................................................42

2.1.1 Requisitos funcionais (RF)...............................................................................................42

2.1.2 Requisitos não funcionais................................................................................................43

2.2 Historias de usuário................................................................................................................44

Referências...........................................................................................................................46
Introdução

A gestão eficiente das finanças pessoais representa um desafio universal, mas assume contornos
particularmente críticos quando se trata da aquisição de bens essenciais, especialmente em
contextos socioeconômicos onde os orçamentos familiares são frequentemente pressionados. No
município do Cuito, localizado na província do Bié, em Angola, esta realidade é vivida
diariamente por inúmeros consumidores. Eles navegam num mercado varejista local caracterizado
por uma notória e, por vezes, desconcertante variação nos preços dos produtos que compõem a
cesta básica – desde alimentos fundamentais a itens de higiene e primeira necessidade. Esta
flutuação, muitas vezes desprovida de uma lógica facilmente discernível pelo consumidor comum,
é agravada por uma carência significativa de informações centralizadas, atualizadas e confiáveis
sobre onde os produtos estão disponíveis e a que preços são comercializados nos diversos
estabelecimentos da cidade, desde supermercados formais a mercados informais e pequenas lojas
de bairro.

Esta condição cria um cenário de acentuada "assimetria de informação", um conceito econômico


onde uma das partes numa transação (neste caso, os vendedores) possui mais ou melhor
informação do que a outra (os consumidores), limitando a capacidade destes últimos de tomarem
decisões ótimas. A consequência direta é a dificuldade em planejar as compras de forma eficaz e a
potencial erosão do poder de compra, mesmo para aqueles que se esforçam por ser consumidores
diligentes. A ausência de ferramentas tecnológicas acessíveis que permitam uma comparação
rápida e eficiente entre as ofertas disponíveis exacerba esta dificuldade, transformando a busca
pela economia numa tarefa que consome tempo, recursos (como custos de transporte para visitar
múltiplas lojas) e que, frequentemente, não resulta na identificação da melhor opção disponível no
mercado local [inserir aqui, se possível, referência a estudo ou relatório local/nacional que aborde
as dificuldades do consumidor angolano ou bieno].

O fenômeno da "dispersão de preços" – a coexistência de preços diferentes para o mesmo produto


em vendedores próximos – é uma característica bem documentada em mercados varejistas e está
intrinsecamente ligado aos "custos de busca" que os consumidores enfrentam (Baye et al., 2006).
Quando o esforço necessário para coletar e comparar informações de preços é elevado, os
consumidores podem ser levados a limitar sua busca, potencialmente pagando mais do que o
necessário ou abdicando da compra de certos itens (Lynch & Ariely, 2000). No Cuito, onde os
mecanismos digitais de consulta de preços são incipientes ou inexistentes para a maioria dos
estabelecimentos, estes custos de busca são presumivelmente altos, reforçando a necessidade de
uma intervenção que possa reduzi-los drasticamente.

É neste contexto desafiador que a presente investigação se insere, propondo uma solução
tecnológica como resposta direta. A literatura sobre comportamento do consumidor e sistemas de
informação demonstra que, quando disponíveis, ferramentas digitais que facilitam a comparação
de preços são prontamente adotadas por consumidores que buscam otimizar suas compras
(Bhargava et al., 2020). A capacidade de agregar dados de mercado, processá-los e apresentá-los
de forma clara e acessível através de plataformas digitais representa um potencial significativo
para transformar a experiência de compra e promover a eficiência econômica no nível do
consumidor individual e do mercado como um todo.

A viabilidade de implementar tal solução no contexto angolano é sustentada pela notável evolução
do cenário digital no país. Relatórios recentes apontam para um crescimento consistente na
penetração da Internet e, de forma ainda mais marcante, na adoção de smartphones pela população
(DATAREPORTAL, 2024). Este avanço tecnológico, que permeia gradualmente diversos estratos
sociais e regiões geográficas, incluindo centros urbanos como o Cuito, cria um ambiente cada vez
mais favorável para o desenvolvimento e a disseminação de aplicações móveis. Um aplicativo
móvel, pela sua natureza portátil, acessível e cada vez mais integrada ao cotidiano, apresenta-se
como um canal particularmente eficaz para entregar informações relevantes diretamente nas mãos
dos consumidores no momento e local em que delas necessitam.

Face ao exposto, o objetivo geral deste Trabalho de Conclusão de Curso é conceber,


desenvolver e validar uma aplicação móvel funcional, especificamente direcionada aos
consumidores do município do Cuito. Esta aplicação, suportada por uma infraestrutura robusta de
banco de dados em nuvem para garantir a atualização e disponibilidade dos dados, funcionará
como uma plataforma dedicada à comparação de preços de produtos alimentícios e bens
essenciais. O sistema permitirá aos usuários não apenas visualizar e comparar os preços praticados
por diferentes lojas locais, mas também filtrar e ordenar essas informações com base em critérios
adicionais como a proximidade geográfica do estabelecimento (utilizando serviços de
geolocalização), a disponibilidade reportada do produto em estoque e, numa fase futura ou através
de contribuições da comunidade, avaliações sobre a qualidade ou o serviço das lojas. O
desenvolvimento será realizado utilizando o framework Flutter, visando uma experiência de
usuário consistente em múltiplas plataformas móveis, e a plataforma Supabase como backend e
banco de dados, escolhida pela sua eficiência e facilidade de integração.

Ao fornecer esta ferramenta, o projeto visa atacar diretamente a raiz do problema da assimetria de
informação e dos elevados custos de busca no mercado varejista do Cuito. Espera-se que a
aplicação capacite os consumidores, oferecendo-lhes maior autonomia e poder de decisão,
facilitando a identificação das opções mais econômicas e contribuindo, assim, para uma gestão
mais eficiente do orçamento familiar. Além do benefício individual, almeja-se que a maior
transparência de preços possa, indiretamente, fomentar uma concorrência mais salutar entre os
comerciantes locais. Em suma, este trabalho propõe não apenas o desenvolvimento de um
software, mas a criação de uma ferramenta com potencial de impacto social e econômico positivo
e mensurável na comunidade do Cuito.
Problema de Investigação

Como optimizar o processo de comparação de preços de produtos alimentícios e bens essenciais


nas lojas do município do Cuito?

Objeto de Estudo

O processo de desenvolvimento de um aplicativo móvel para a comparação de preços de produtos


alimentícios e bens essenciais em lojas do município do Cuito.

Campo de Ação

A informatização e a digitalização do processo de comparação de preços, por meio de um


aplicativo móvel, que atenda tanto os consumidores quanto os lojistas do município do Cuito

Objetivo Geral

Desenvolver um aplicativo móvel integrado a um banco de dados em nuvem que permita aos
consumidores do município do Cuito comparar preços de produtos alimentícios e bens essenciais
entre diferentes lojas, auxiliando-os a identificar e localizar as melhores ofertas e promovendo uma
gestão financeira mais eficiente.

Objetivos Específicos

 Realizar um estudo dos antecedentes históricos e conceituais sobre ferramentas de


comparação de preços.

 Analisar o estado atual do processo de compra e comparação de preços no município do


Cuito.

 Identificar as ferramentas e tecnologias a serem utilizadas para o desenvolvimento do


aplicativo móvel com base de dados em nuvem.

 Implementar os módulos de comparação de preços para o usuário e de gestão de loja.

 Validar o aplicativo com um grupo de usuários reais, coletando feedback sobre usabilidade
e utilidade.
Ideia a Defender

Com o desenvolvimento de um aplicativo móvel para comparação de preços, será possível


solucionar as dificuldades enfrentadas pelos consumidores do município do Cuito em identificar as
melhores ofertas, promovendo economia e um consumo mais consciente.

Justificativa

Este trabalho foi estruturado para oferecer uma análise abrangente e organizada sobre o
desenvolvimento e os efeitos do aplicativo de comparação de preços. No próximo capítulo, será
realizada uma revisão da literatura, explorando os fundamentos teóricos e as tecnologias
relacionadas ao projeto. Em seguida, a seção de metodologia detalhará as etapas de planejamento,
design e implementação do aplicativo. Posteriormente, o capítulo de resultados apresentará os
testes realizados e a análise dos dados obtidos, avaliando a eficácia da solução proposta. Por fim, a
conclusão reunirá os principais achados, destacando as contribuições do estudo e sugerindo
caminhos para pesquisas futuras. Essa estrutura visa guiar o leitor por uma narrativa clara e lógica,
evidenciando tanto os aspetos técnicos quanto os impactos práticos do trabalho.

Métodos e Técnicas de Investigação

Os métodos utilizados nesta investigação classificam-se em teóricos e empíricos, descritos a


seguir:

Métodos Teóricos

 Histórico-lógico: Utilizado para estudar a evolução das ferramentas de comparação de


preços e sua aplicação em contextos similares, permitindo uma análise cronológica do
tema.

 Análise-síntese: Empregado para analisar as dificuldades enfrentadas pelos consumidores


na comparação de preços e sintetizar as funcionalidades necessárias ao aplicativo.

 Indutivo-dedutivo: Usado para estabelecer relações entre as referências bibliográficas e


abordar a pesquisa do geral ao particular.

 Modelação: Aplicado para planejar e organizar o desenvolvimento do aplicativo,


identificando soluções para as necessidades dos usuários.
Métodos Empíricos

 Observação: Utilizada para compreender o comportamento de compra dos consumidores


no município do Cuito e identificar seus desafios.

 Questionário: Destinado a consumidores e lojistas do Cuito, com o objetivo de coletar


opiniões sobre a utilidade e as expectativas em relação ao aplicativo.

 Análise documental: Usada para revisar a bibliografia existente sobre aplicativos de


comparação de preços, incluindo artigos científicos, relatórios e estudos de caso.

 Tipo de pesquisa: A pesquisa é classificada como aplicada, pois visa aplicar


conhecimentos teóricos na criação de uma solução prática para um problema específico.
CAPÍTULO I: FUNDAMENTAÇÃO TEÓRICA

1.1. Introdução do Capítulo

A otimização das despesas, particularmente em bens essenciais, é uma preocupação central para os
consumidores no município do Cuito e em Angola como um todo. A acentuada variação de preços
e a dificuldade em localizar as melhores ofertas representam barreiras significativas para a
economia familiar. Este capítulo estabelece a fundamentação teórica necessária para o
desenvolvimento de uma solução tecnológica que visa mitigar essas dificuldades. Exploraremos os
conceitos e a evolução das tecnologias móveis, que formam a base da interface com o usuário; a
computação em nuvem, que oferece a infraestrutura escalável necessária; e os bancos de dados na
nuvem, essenciais param o armazenamento e gerenciamento dinâmico das informações de preços.
Adicionalmente, analisaremos os princípios dos sistemas de comparação de preços e o impacto
potencial de tais aplicações no comportamento de consumidores e lojistas, contextualizando essa
análise na realidade específica do município do Cuito e considerando as plataformas tecnológicas
propostas para este projeto: o framework Flutter para o desenvolvimento móvel e a plataforma
Supabase como backend e banco de dados.

1.2. Tecnologias Móveis

1.2.1. Conceito e Evolução

Tecnologia móvel refere-se ao ecossistema de hardware, software e redes de comunicação que


libertam a computação e a interação digital das amarras de um local físico fixo. Conforme definido
por Pereira (2021), ela "engloba dispositivos portáteis de comunicação bidirecional, dispositivos de
computação móvel e a infraestrutura de rede sem fio que os interliga" (p. 35), permitindo que os
usuários carreguem consigo o acesso à informação e aos serviços. A essência dessa tecnologia
reside na portabilidade e na conectividade, características que revolucionaram a forma como
vivemos, trabalhamos e consumimos. A onipresença de smartphones transformou o acesso à
informação de um evento pontual para uma capacidade constante e ubíqua.

A trajetória evolutiva das tecnologias móveis é marcada por avanços significativos nas redes de
comunicação sem fio. As primeiras gerações (1G e 2G) focavam na voz e em mensagens de texto
simples, enquanto a introdução de dados móveis (2.5G e 3G) abriu as portas para a internet móvel
e os primeiros aplicativos mais complexos. A chegada do 4G/LTE representou um salto
22
qualitativo, oferecendo velocidades que viabilizaram o streaming de vídeo de alta definição, jogos
online e o uso intensivo de aplicativos ricos em dados, tornando os smartphones verdadeiros
computadores de bolso (Santos & Lima, 2020). Essa evolução foi crucial para tornar viáveis
aplicações como a proposta neste trabalho, que dependem de acesso rápido a dados atualizados.

Atualmente, a implementação da tecnologia 5G promete inaugurar uma nova era, com velocidades
ainda maiores, latência drasticamente reduzida e a capacidade de conectar um número massivo de
dispositivos simultaneamente. Embora a disponibilidade e a qualidade do 5G ainda possam ser um
fator limitante em algumas regiões, como potencialmente no Cuito, o legado das gerações
anteriores (3G e 4G), cuja penetração é mais ampla conforme dados do DATAREPORTAL (2024)
sobre Angola, já fornece a base de conectividade necessária para a funcionalidade de um aplicativo
de comparação de preços. A contínua expansão da infraestrutura móvel reforça a relevância e o
alcance potencial de soluções baseadas em aplicativos móveis para resolver problemas locais.

1.2.2. Aplicativos Móveis: Definição e Trajetória Histórica

Aplicativos móveis, ou "apps", são programas de software desenhados especificamente para serem
executados em sistemas operacionais móveis como Android e iOS. Eles são criados para cumprir
uma vasta gama de funções, desde entretenimento e redes sociais até ferramentas de produtividade,
serviços bancários e, crucialmente para este estudo, comparação de preços e auxílio às compras
(Johnson, 2022). A capacidade de instalar e utilizar software dedicado diretamente no dispositivo
móvel oferece uma experiência mais integrada e otimizada em comparação com o acesso a
serviços via navegador web móvel.

A história dos aplicativos móveis é relativamente recente, mas de crescimento exponencial. Antes
da era dos smartphones modernos, existiam aplicações baseadas em tecnologias como Java ME
(J2ME) e WAP, com funcionalidades e interfaces bastante limitadas. O ponto de inflexão foi o
lançamento do Iphone pela Apple em 2007 e da sua App Store em 2008, seguido de perto pelo
Android e pelo Google Play (anteriormente Android Market). Este modelo de lojas centralizadas
simplificou drasticamente a distribuição, descoberta e monetização de aplicativos, criando um
ecossistema vibrante que incentivou milhões de desenvolvedores a criar soluções para as mais
diversas necessidades (Platform Studies Institute, 2021).

Desde então, os aplicativos móveis evoluíram de simples programas isolados para plataformas
complexas que se integram profundamente com os recursos do hardware (câmera, GPS, sensores

23
de movimento), serviços de nuvem e outros aplicativos. Eles utilizam notificações push para
engajamento em tempo real, incorporam sistemas de pagamento seguros e, cada vez mais,
integram inteligência artificial para oferecer experiências personalizadas. No contexto deste TCC,
a evolução dos apps permite conceber uma ferramenta de comparação de preços que não apenas
lista produtos, mas utiliza a localização do usuário (via GPS) para filtrar lojas próximas, permite a
leitura de códigos de barras (via câmera) e potencialmente envia notificações sobre ofertas
relevantes.

1.2.3. Tendências e Inovações na Computação Móvel

O campo da computação móvel continua a ser um dos mais dinâmicos da tecnologia, com
tendências emergentes que moldam o futuro das aplicações. A conectividade 5G, como já
mencionado, é um pilar fundamental, habilitando experiências mais ricas e em tempo real
(Qualcomm Technologies, 2023). Outra tendência significativa é a crescente capacidade de
processamento de Inteligência Artificial (IA) e Machine Learning (ML) diretamente no dispositivo
(on-device AI). Isso permite funcionalidades como reconhecimento de imagem mais rápido (útil
para identificar produtos), assistentes de voz mais responsivos e personalização de conteúdo sem
necessariamente depender de envio constante de dados para a nuvem, o que pode ser vantajoso em
cenários de conectividade limitada (Chen et al., 2022).

Além da IA e do 5G, outras inovações incluem a maturação da Realidade Aumentada (AR) e


Virtual (VR) móveis, que abrem possibilidades para visualização de produtos em 3D ou
experiências de compra imersivas, embora sua aplicação no contexto imediato do Cuito possa ser
mais distante. A Internet das Coisas (IoT) também se expande, com smartphones atuando como
hubs de controle para dispositivos conectados. Do ponto de vista do desenvolvimento, os
Progressive Web Apps (PWAs) continuam a evoluir, oferecendo uma alternativa interessante que
combina a acessibilidade da web com algumas funcionalidades de apps nativos (Gartner, 2023).

Para o aplicativo proposto, estar ciente dessas tendências é importante para o planejamento futuro.
Embora a versão inicial possa focar nas funcionalidades essenciais de comparação, futuras
iterações poderiam incorporar elementos de IA para prever variações de preço, AR para
visualização de produtos ou integrações com listas de compras inteligentes. A escolha de uma
plataforma de desenvolvimento moderna como o Flutter também facilita a incorporação futura de

24
novas funcionalidades e a adaptação a novas tendências de design e interação que surgem com
novos formatos de dispositivos (como dobráveis).

1.2.4. Arquitetura de Aplicações Móveis: Modelos de Desenvolvimento

A decisão sobre como construir uma aplicação móvel impacta diretamente o custo de
desenvolvimento, o tempo de lançamento no mercado, a performance e a experiência do usuário
final. Existem três modelos principais de desenvolvimento. O desenvolvimento Nativo implica
criar códigos separados e específicos para cada plataforma (iOS e Android), utilizando as
linguagens e SDKs (Software Development Kits) oficiais – Swift/Objective-C para iOS e
Kotlin/Java para Android (Apple, n.d.; Google Developers, n.d.). Esta abordagem tende a oferecer
a melhor performance possível e acesso irrestrito a todos os recursos do dispositivo, resultando
numa experiência de usuário perfeitamente alinhada com as convenções de cada sistema
operacional (Fernandes, 2020). Contudo, exige equipes especializadas para cada plataforma ou o
dobro do esforço de desenvolvimento e manutenção.

O desenvolvimento Híbrido surge como uma alternativa que busca unificar o processo. Neste
modelo, uma única base de código, geralmente escrita em linguagens como JavaScript, Dart ou C#,
é utilizada para gerar aplicativos para ambas as plataformas. Frameworks como React Native,
Xamarin e Flutter encapsulam o código em um contêiner nativo ou compilam-no para código
nativo, permitindo o acesso a funcionalidades do dispositivo através de pontes (bridges) ou
diretamente. A principal vantagem é a redução de custo e tempo, pois grande parte do código é
reutilizada (Mobile Dev Insights, 2021). Flutter, a plataforma escolhida para este TCC, destaca-se
neste domínio por usar a linguagem Dart e compilar diretamente para código de máquina ARM
nativo, o que frequentemente resulta em performance próxima à nativa e permite a criação de
interfaces de usuário altamente personalizadas e consistentes entre plataformas.

O terceiro modelo são os Web Apps e Progressive Web Apps (PWAs), que são essencialmente
websites otimizados para dispositivos móveis, acessados através do navegador. PWAs adicionam
capacidades como funcionamento offline básico, notificações push e a possibilidade de serem
"instalados" na tela inicial (W3C, 2022). Sua vantagem é a ampla compatibilidade e a não
dependência de lojas de aplicativos para distribuição. No entanto, o acesso aos recursos do
dispositivo é geralmente mais limitado em comparação com apps nativos ou híbridos robustos
como os feitos com Flutter, o que pode ser uma desvantagem para funcionalidades como uso
intensivo de GPS ou câmera. A escolha pelo Flutter neste projeto visa equilibrar os benefícios da

25
reutilização de código com a necessidade de uma aplicação performática e com boa integração aos
recursos do dispositivo, essencial para funções como geolocalização de lojas e leitura de códigos
de barras.

1.2.5. Padrões de Design e Usabilidade para Dispositivos Móveis

Independentemente do modelo de desenvolvimento escolhido, o sucesso de uma aplicação móvel


depende criticamente da sua interface (UI) e experiência do usuário (UX). Dispositivos móveis
apresentam desafios únicos devido ao tamanho reduzido das telas, à variedade de contextos de uso
(em movimento, com uma mão) e à dependência de interações táteis. Por isso, aderir a padrões de
design e usabilidade consagrados é fundamental. Diretrizes como as Human Interface Guidelines
(HIG) da Apple (n.d.) e o Material Design do Google (n.d.) fornecem um conjunto robusto de
princípios e componentes para criar interfaces consistentes, intuitivas e esteticamente agradáveis
dentro de seus respetivos ecossistemas.

Princípios chave de usabilidade móvel incluem a priorização do conteúdo, garantindo que as


informações e ações mais importantes sejam facilmente acessíveis; a navegação clara e simples,
utilizando padrões reconhecíveis como barras de abas inferiores ou menus laterais (navigation
drawers); o design responsivo ou adaptativo, que ajusta o layout a diferentes tamanhos e
orientações de tela; e a otimização da performance, assegurando tempos de carregamento rápidos
e feedback visual imediato às ações do usuário (Nielsen Norman Group, 2023). A minimização da
necessidade de digitação, utilizando seletores, autocompletar ou reconhecimento de voz/imagem,
também melhora significativamente a experiência.

No contexto do aplicativo de comparação de preços para o Cuito, a usabilidade é primordial. A


interface deve permitir que usuários, potencialmente com diferentes níveis de literacia digital,
consigam facilmente pesquisar produtos, comparar preços entre lojas, visualizar a localização no
mapa e, se aplicável (no módulo lojista), inserir informações de forma intuitiva. O Flutter, com
sua rica biblioteca de widgets personalizáveis e a capacidade de criar interfaces expressivas que
funcionam de forma consistente em Android e iOS, oferece ferramentas poderosas para
implementar uma UI/UX de alta qualidade, seguindo ou adaptando as diretrizes de design de
ambas as plataformas para atender às necessidades específicas do usuário local. A acessibilidade,
considerando tamanhos de fonte ajustáveis e bom contraste, também deve ser uma preocupação no
design.

26
1.3. Computação em Nuvem

1.3.1. Definição e Conceitos Básicos

A Computação em Nuvem (Cloud Computing) transformou a maneira como a infraestrutura de


Tecnologia da Informação (TI) é provisionada e consumida. Em vez de depender de servidores
físicos locais, a nuvem oferece acesso sob demanda a um vasto conjunto de recursos
computacionais através da internet. A definição canônica do NIST (National Institute of Standards
and Technology) descreve-a como "um modelo para permitir acesso ubíquo, conveniente e sob
demanda via rede a um conjunto compartilhado de recursos computacionais configuráveis [...] que
podem ser rapidamente provisionados e liberados com mínimo esforço de gerenciamento ou
interação com o provedor de serviços" (Mell & Grance, 2011, p. 2). Isso significa que poder de
processamento, armazenamento e serviços especializados podem ser alugados conforme a
necessidade.

Este modelo é sustentado por cinco características essenciais que o distinguem da hospedagem
tradicional. O auto-serviço sob demanda permite que os usuários provisionem recursos sem
intervenção humana. O amplo acesso à rede garante que os serviços sejam acessíveis a partir de
diversos dispositivos (incluindo móveis) e locais. O agrupamento de recursos (resource pooling)
significa que os provedores atendem a múltiplos clientes (multi-tenancy) usando a mesma
infraestrutura física, alocando recursos dinamicamente. A rápida elasticidade permite escalar os
recursos para cima ou para baixo rapidamente, conforme a demanda flutua. Por fim, o serviço
mensurado garante que o uso dos recursos seja monitorado e cobrado de forma transparente,
geralmente em um modelo de pagamento pelo uso (pay-as-you-go) (Mell & Grance, 2011).

Para o desenvolvimento de aplicações móveis modernas, a nuvem tornou-se praticamente


indispensável. Ela fornece o backend escalável e disponível globalmente que essas aplicações
necessitam para armazenar dados, executar lógica de negócios e sincronizar informações entre
usuários e dispositivos. A capacidade de escalar recursos elasticamente é particularmente vital para
aplicações voltadas ao consumidor, como a proposta neste TCC, que podem experimentar picos de
uso imprevisíveis. A nuvem abstrai grande parte da complexidade do gerenciamento de
infraestrutura, permitindo que os desenvolvedores se concentrem na criação da aplicação em si
(Armbrust et al., 2010).

27
1.3.2. Modelos de Serviço (IaaS, PaaS, SaaS) e a Escolha do Supabase

Os serviços de computação em nuvem são geralmente categorizados em três modelos principais,


que representam diferentes níveis de abstração e controle. A Infraestrutura como Serviço (IaaS)
oferece os componentes básicos de infraestrutura: máquinas virtuais, armazenamento e redes. O
cliente gerência o sistema operacional, middleware e aplicações, enquanto o provedor cuida do
hardware subjacente (AWS, n.d.). Exemplos incluem Amazon EC2 e Google Compute Engine.
Este modelo oferece máxima flexibilidade, mas também exige maior esforço de gerenciamento.

A Plataforma como Serviço (PaaS) fornece um nível de abstração mais alto, oferecendo uma
plataforma completa para desenvolvimento, implantação e gerenciamento de aplicações. O
provedor gerência a infraestrutura, sistemas operacionais, bancos de dados e outros middlewares,
permitindo que o desenvolvedor foque apenas no código da aplicação (Microsoft Azure, n.d.).
Exemplos incluem Heroku e Google App Engine. O PaaS acelera o desenvolvimento, sendo ideal
para hospedar APIs e backends de aplicações web e móveis.

O Software como Serviço (SaaS) entrega aplicações completas e prontas para uso pela internet,
geralmente através de um navegador ou aplicativo cliente. O cliente final utiliza o software, mas
não gerência nenhuma parte da infraestrutura ou da plataforma subjacente (Salesforce, n.d.).
Exemplos comuns são serviços de e-mail (Gmail), CRM (Salesforce) e armazenamento de
arquivos (Dropbox). Muitas aplicações móveis consomem funcionalidades de serviços SaaS
através de APIs.

Neste contexto, Supabase, a plataforma escolhida como backend para este projeto, posiciona-se
predominantemente como um Backend as a Service (BaaS), que pode ser visto como uma
especialização ou uma combinação de PaaS e SaaS voltada para o desenvolvimento rápido de
aplicações. Supabase oferece um banco de dados PostgreSQL gerenciado (similar a um DBaaS, um
tipo de PaaS), mas também adiciona serviços pré-construídos como autenticação de usuários, APIs
REST e GraphQL geradas automaticamente sobre o banco de dados, armazenamento de arquivos e
funcionalidades em tempo real (Supabase, n.d.). Ao prover esses componentes essenciais de
backend como serviços gerenciados e fáceis de integrar através de SDKs (incluindo um para
Flutter), Supabase alinha-se ao objetivo de desenvolver rapidamente um aplicativo funcional,
abstraindo grande parte da complexidade do gerenciamento de backend e permitindo que a equipe
foque na lógica da aplicação móvel e na experiência do usuário.

28
1.3.3. Vantagens e Desafios da Computação em Nuvem

A adoção da computação em nuvem, e especificamente de uma plataforma BaaS como Supabase,


oferece vantagens significativas para o desenvolvimento do aplicativo de comparação de preços. A
escalabilidade é uma das principais: à medida que o número de usuários e a quantidade de dados
de preços no Cuito crescerem, a infraestrutura de nuvem pode ser ajustada para lidar com a carga,
algo difícil e caro de se fazer com servidores locais (Vaquero et al., 2008). A relação custo-
benefício também é atraente, especialmente para projetos novos; o modelo de pagamento
conforme o uso ou os níveis gratuitos oferecidos por plataformas como Supabase reduzem o
investimento inicial (CapEx) e alinham os custos operacionais (OpEx) com o uso real. A
velocidade de desenvolvimento é outra vantagem crucial do BaaS, pois funcionalidades
complexas como autenticação e APIs de banco de dados já vêm prontas.

No entanto, a utilização da nuvem não está isenta de desafios. A segurança é uma preocupação
constante. Embora os provedores de nuvem invistam pesadamente em segurança física e de rede, a
configuração correta dos serviços e a proteção dos dados da aplicação (preços, dados de usuários e
lojistas) são responsabilidades do desenvolvedor. É essencial implementar práticas seguras, como o
uso de senhas fortes, controle de acesso granular (as Row Level Security do Supabase são vitais
aqui) e criptografia (Subashini & Kavitha, 2011). A privacidade dos dados dos usuários e a
conformidade com eventuais regulamentações locais de proteção de dados também devem ser
cuidadosamente consideradas.

Outros desafios incluem o potencial de dependência do fornecedor (vendor lock-in), onde


migrar a aplicação e os dados para outra plataforma pode ser complexo e custoso no futuro (CSA,
2020). A gestão de custos, embora potencialmente vantajosa, requer monitoramento para evitar
surpresas em caso de uso intensivo inesperado. Finalmente, a dependência da conectividade com
a internet é inerente ao modelo de nuvem; tanto o aplicativo móvel quanto os usuários precisam
de acesso à rede para interagir com o backend hospedado no Supabase. Em áreas com
conectividade instável, como pode ocorrer no Cuito, estratégias de funcionamento offline no
aplicativo Flutter tornam-se ainda mais importantes.

29
1.4. Bancos de Dados na Nuvem

1.4.1. Conceito e Importância

Bancos de dados são o coração de quase todas as aplicações modernas, servindo como repositório
central para armazenar, organizar e recuperar informações de forma estruturada e eficiente.
Quando hospedados na nuvem, geralmente sob o modelo de Banco de Dados como Serviço
(DBaaS), eles oferecem as vantagens da nuvem – escalabilidade, disponibilidade, gerenciamento
simplificado – aplicadas ao armazenamento de dados (Oracle, 2022). O provedor de DBaaS cuida
de tarefas operacionais complexas como provisionamento inicial, aplicação de patches de
segurança, backups regulares e, em muitos casos, escalonamento automático, liberando os
desenvolvedores para focarem na modelagem dos dados e na lógica da aplicação.

Para uma aplicação móvel como a de comparação de preços, um banco de dados na nuvem é
absolutamente essencial. Ele armazenará informações críticas e dinâmicas: o catálogo de produtos
(nomes, descrições, códigos de barras), a lista de lojas participantes no Cuito (nomes,
localizações), os preços de cada produto em cada loja (com timestamps para indicar a atualidade),
dados dos usuários registrados (perfis, listas de compras salvas) e, potencialmente, avaliações de
produtos ou lojas. A natureza centralizada do banco de dados na nuvem garante que todos os
usuários do aplicativo Flutter acessem a mesma informação atualizada (Moniruzzaman & Hossain,
2013).

A importância transcende o mero armazenamento. O banco de dados deve ser capaz de responder
rapidamente às consultas do aplicativo móvel (por exemplo, "Quais os preços do arroz de 1kg nas
lojas próximas?"), suportar a inserção de novos dados (seja por administradores, lojistas ou
crowdsourcing) e escalar para acomodar um número crescente de produtos, lojas e usuários. A
escolha de um DBaaS adequado, como o PostgreSQL oferecido pelo Supabase, é portanto uma
decisão arquitetural crítica para o sucesso do projeto.

1.4.2. Tipos de Bancos de Dados (Relacionais e NoSQL) e a Escolha do PostgreSQL via


Supabase

O universo dos bancos de dados na nuvem abrange principalmente duas grandes categorias:
Relacionais (SQL) e Não Relacionais (NoSQL). Bancos de dados Relacionais (SQL), como
MySQL, PostgreSQL, SQL Server e Oracle, baseiam-se em um modelo de dados estruturado em
tabelas, com linhas e colunas, e relações bem definidas entre elas. Eles utilizam a Structured Query
30
Language (SQL) para manipulação e consulta de dados e são conhecidos por garantirem as
propriedades ACID (Atomicidade, Consistência, Isolamento, Durabilidade), o que os torna ideais
para transações e dados que exigem alta integridade e consistência (Elmasri & Navathe, 2017).

Bancos de dados NoSQL (Not Only SQL) surgiram para lidar com desafios de escalabilidade
massiva, flexibilidade de esquema e tipos de dados não estruturados ou semi-estruturados, comuns
na era da web e do Big Data. Existem vários tipos de NoSQL, incluindo bancos de dados de
Documentos (como MongoDB), Chave-Valor (Redis, DynamoDB), Colunares (Cassandra) e de
Grafos (Neo4j). Eles geralmente oferecem escalabilidade horizontal mais fácil e esquemas
flexíveis, mas podem ter modelos de consistência mais relaxados (Eventual Consistency) em
comparação com os SQL tradicionais (Sadalege & Fowler, 2012).

A escolha de Supabase para este TCC implica o uso do PostgreSQL como banco de dados
subjacente. PostgreSQL é um sistema de gerenciamento de banco de dados relacional (SQL)
objeto-relacional, conhecido por sua robustez, extensibilidade e forte conformidade com os
padrões SQL. A escolha de um banco de dados relacional como o PostgreSQL para a aplicação de
comparação de preços pode ser justificada pela natureza inerentemente relacional de muitos dos
dados envolvidos: produtos pertencem a categorias, preços estão associados a produtos e lojas,
usuários têm listas de compras. A estrutura tabular e as garantias de consistência do SQL são
vantajosas para gerenciar essas relações e garantir a integridade dos dados, por exemplo, ao
atualizar preços ou gerenciar contas de usuários e lojistas. Além disso, o PostgreSQL moderno, e
as extensões que Supabase adiciona, oferecem flexibilidade, como o suporte nativo a tipos de
dados JSONB, permitindo armazenar dados semi-estruturados dentro do modelo relacional quando
necessário.

1.4.3. Integração com Aplicações Móveis (Flutter e Supabase)

A comunicação eficaz entre a aplicação móvel (frontend, desenvolvida em Flutter) e o banco de


dados na nuvem (backend, PostgreSQL no Supabase) é crucial para a funcionalidade do sistema.
Existem diferentes padrões para essa integração. O padrão mais tradicional envolve a criação de
uma camada de API (Application Programming Interface), geralmente RESTful ou GraphQL, que
atua como intermediária. O aplicativo Flutter faria requisições HTTP para essa API, que por sua
vez conteria a lógica de negócios e interagiria com o banco de dados (Richards, 2015). Esse padrão
oferece um desacoplamento forte, mas exige o desenvolvimento e manutenção dessa camada de
API.

31
Plataformas BaaS como Supabase simplificam significativamente essa integração. Supabase gera
automaticamente uma API RESTful sobre o esquema do banco de dados PostgreSQL e também
fornece SDKs (Software Development Kits) específicos para diversas plataformas, incluindo
Flutter. Este SDK permite que o aplicativo Flutter interaja diretamente com os serviços do
Supabase (banco de dados, autenticação, armazenamento) de forma segura e conveniente,
utilizando chamadas de função em Dart (a linguagem do Flutter) em vez de requisições HTTP
manuais. Por exemplo, para buscar os preços de um produto, o código Flutter poderia usar uma
função do SDK Supabase que se traduz internamente em uma consulta SQL ao banco de dados
PostgreSQL (Supabase Docs, n.d.).

Esta abordagem via SDK acelera o desenvolvimento, pois elimina a necessidade de construir e
hospedar uma API separada. Supabase também oferece funcionalidades de tempo real, que podem
ser particularmente úteis para um aplicativo de comparação de preços. Utilizando as subscrições
em tempo real do Supabase, o aplicativo Flutter poderia ser notificado automaticamente sempre
que um preço relevante for atualizado no banco de dados, permitindo exibir informações sempre
atualizadas aos usuários sem a necessidade de polling constante. Além disso, a questão da
conectividade intermitente no Cuito pode ser parcialmente abordada implementando estratégias de
cache local no Flutter e utilizando as capacidades do SDK para lidar com a sincronização quando a
conexão for restabelecida, embora o suporte offline robusto possa exigir bibliotecas adicionais ou
lógica customizada (Mobile Architecture Patterns, 2021).

1.4.4. Aspetos de Segurança e Performance em Bancos de Dados na Nuvem (com Supabase)

Garantir a segurança dos dados e a performance das consultas é vital para a confiança e usabilidade
do aplicativo de comparação de preços. Ao utilizar um BaaS como Supabase, parte da
responsabilidade é compartilhada com o provedor, mas aspetos cruciais permanecem sob o
controle do desenvolvedor. Em termos de segurança, Supabase oferece mecanismos importantes
que devem ser corretamente configurados. A autenticação de usuários (identificando quem está
usando o app) é um serviço integrado. Talvez o mais crítico seja o uso de Row Level Security
(RLS) no PostgreSQL. RLS permite definir políticas diretamente no banco de dados que
restringem quais linhas de dados um usuário específico pode acessar ou modificar, com base em
seu ID de usuário ou outras características. Implementar políticas RLS robustas é essencial para
garantir que um usuário só veja seus próprios dados privados (como listas de compras) e que um
lojista só possa atualizar os preços da sua própria loja (CSA, 2020; Supabase Docs, n.d.). A
criptografia de dados em trânsito (SSL/TLS) é geralmente padrão.
32
Do ponto de vista da performance, mesmo com a infraestrutura gerenciada pelo Supabase, boas
práticas de banco de dados são necessárias. A criação de índices apropriados nas colunas do
PostgreSQL que são frequentemente usadas em cláusulas WHERE (por exemplo, product_id,
store_id, timestamp) é fundamental para acelerar as consultas de busca e comparação de preços
(Harrison, 2019). A otimização das consultas escritas no aplicativo Flutter (ou nas políticas RLS)
também impacta a performance; evitar consultas complexas desnecessárias ou que escaneiem
tabelas inteiras é importante. Embora Supabase lide com o escalonamento da instância do banco de
dados até certo ponto, entender os limites do plano escolhido e monitorar a performance é
necessário.

Outras otimizações de performance podem incluir o caching de dados no lado do cliente (no
aplicativo Flutter) para informações que não mudam frequentemente (como detalhes de produtos
ou lista de lojas) para reduzir o número de chamadas ao banco de dados. O próprio Supabase pode
ter mecanismos de cache internos, mas o caching no cliente oferece benefícios adicionais de
performance percebida pelo usuário e resiliência à conectividade intermitente. A escolha de um
modelo de dados bem projetado no PostgreSQL, que reflita eficientemente as relações entre
produtos, lojas e preços, também é um fator chave para garantir tanto a segurança (via RLS)
quanto a performance das consultas que sustentam a funcionalidade principal do aplicativo de
comparação de preços.

1.5. Sistemas de Comparação de Preços

1.5.1. Contextualização do Problema e Relevância para o Cuito

A busca por eficiência econômica nas compras do dia-a-dia é uma constante universal, mas adquire
contornos particularmente críticos em contextos socioeconômicos como o do município do Cuito.
A flutuação de preços de produtos alimentícios e bens essenciais, combinada com a dispersão
geográfica dos estabelecimentos comerciais e a falta de informação centralizada, impõe um ônus
significativo aos consumidores. Conforme destacado na introdução deste trabalho e corroborado
por estudos sobre comportamento do consumidor, a ausência de ferramentas eficazes para

33
comparar preços transforma a tarefa de economizar em um processo demorado, custoso (em
termos de tempo e transporte) e muitas vezes frustrante (Bhargava et al., 2020). Os consumidores
podem acabar pagando mais caro simplesmente por desconhecerem alternativas mais vantajosas
disponíveis em sua própria localidade.

A existência de variações de preço para o mesmo produto entre diferentes vendedores é um


fenômeno econômico bem documentado, conhecido como dispersão de preços (Baye et al., 2006).
As causas são diversas, incluindo diferenças nos custos operacionais dos lojistas, estratégias de
marketing distintas, poder de negociação com fornecedores e, crucialmente, a assimetria de
informação – os vendedores sabem seus preços e os dos concorrentes próximos, mas os
consumidores têm dificuldade em obter essa visão completa do mercado. Esta assimetria é
particularmente acentuada em mercados menos digitalizados ou com grande presença do setor
informal, cenário relevante para o Cuito.

Neste contexto, um sistema de comparação de preços, acessível através de um aplicativo móvel,


emerge como uma solução de alto impacto potencial. Ao agregar informações de preços de
diversas fontes (supermercados, lojas de bairro, mercados) e apresentá-las de forma clara e
organizada, a ferramenta visa reduzir a assimetria de informação e empoderar os consumidores do
Cuito. A proposta não é apenas oferecer conveniência, mas sim "promover maior transparência e
eficiência de mercado, beneficiando tanto consumidores quanto a dinâmica competitiva" (Andrade,
2019, p. 78), permitindo uma alocação mais eficiente dos recursos financeiros das famílias.

1.5.2. Fundamentos dos Sistemas de Comparação: Coleta, Armazenamento e Processamento

A funcionalidade central de um sistema de comparação de preços depende de um ciclo contínuo de


coleta, armazenamento e processamento de dados. A coleta de dados é frequentemente o maior
desafio operacional. Em mercados maduros, métodos como web scraping (extração automatizada
de dados de sites de e-commerce) e consumo de APIs (Interfaces de Programação de Aplicação)
fornecidas pelos varejistas são comuns (Data Engineering Today, 2020). No contexto do Cuito,
onde a presença online dos pequenos comerciantes pode ser limitada, essas abordagens podem ser
insuficientes. Portanto, o crowdsourcing – onde os próprios usuários do aplicativo Flutter
contribuem enviando preços (por exemplo, tirando foto da etiqueta ou digitando o valor após
escanear o código de barras) – torna-se uma estratégia de coleta de dados vital e potencialmente
mais adaptada à realidade local. Adicionalmente, o módulo para lojistas previsto nos objetivos

34
específicos permite que os próprios comerciantes insiram e atualizem seus preços diretamente na
plataforma.

Os dados coletados (identificação do produto, preço, nome e localização da loja, data/hora da


coleta) precisam ser armazenados de forma eficiente e escalável. Um banco de dados na nuvem,
como o PostgreSQL gerenciado pelo Supabase, é adequado para esta tarefa, permitindo armazenar
dados estruturados (produtos, lojas, usuários) e relacioná-los (preços associados a produtos e
lojas). A capacidade de armazenar dados geoespaciais (localização das lojas) é também
fundamental para funcionalidades baseadas em proximidade.

O processamento dos dados é crucial para garantir a qualidade e a utilidade da informação


apresentada ao usuário. Isso inclui a limpeza (remoção de dados inválidos ou duplicados) e a
normalização (padronização de nomes de produtos, marcas, unidades de medida – ex: "Kg" vs
"1000g"). Talvez a etapa mais complexa do processamento seja o matching de produtos:
identificar corretamente que "Arroz Agulhinha Tipo 1 - 5kg Marca X" vendido na Loja A é o
mesmo produto que "Arroz T1 Agulha 5kg X" vendido na Loja B, mesmo com pequenas variações
na descrição. Utilizar códigos de barras (quando disponíveis e corretamente lidos/digitados) é a
forma mais confiável, mas algoritmos de correspondência de texto (string matching) ou até mesmo
análise de imagens podem ser necessários (Information Systems Journal, 2021). Uma vez que os
produtos são corretamente identificados e os preços associados, a comparação em si torna-se uma
tarefa de consulta e ordenação no banco de dados, filtrando por produto, localização e atualidade
do preço.

1.5.3. Experiências e Estudos Relacionados sobre o Impacto dos Comparadores

A literatura acadêmica oferece insights valiosos sobre os efeitos de ferramentas de comparação de


preços (Price Comparison Websites - PCWs, ou aplicativos) nos mercados e no comportamento
dos agentes econômicos. Uma das conclusões mais frequentes é que a maior transparência
proporcionada por essas ferramentas tende a reduzir a dispersão de preços entre os vendedores,
especialmente para produtos padronizados ou commodities, pois a concorrência baseada em preço
se intensifica quando os consumidores podem facilmente identificar a opção mais barata (Baye et
al., 2006). Isso sugere que a introdução do aplicativo no Cuito poderia levar a uma convergência de
preços para bens essenciais entre as lojas participantes.

35
Do ponto de vista do consumidor, os comparadores reduzem significativamente os custos de
busca (tempo e esforço necessários para encontrar informações de preços). Essa redução torna os
consumidores mais informados sobre as alternativas disponíveis e, consequentemente, mais
sensíveis às diferenças de preço, levando a escolhas mais racionais e econômicas (Lynch & Ariely,
2000). Este é o benefício direto esperado para os usuários do aplicativo no Cuito, alinhado com o
objetivo de promover uma gestão financeira mais eficiente.

No entanto, os efeitos não são uniformemente positivos ou simples. Alguns estudos apontam que a
dispersão de preços pode persistir devido a fatores como diferenciação (qualidade percebida,
conveniência da loja, atendimento), confiança na marca do vendedor, ou estratégias de
ofuscação por parte dos lojistas (Ellison & Ellison, 2009). Além disso, o impacto no nível médio
de preços é ambíguo: a maior concorrência pode pressionar os preços para baixo, mas os custos de
participação na plataforma ou o uso estratégico da informação pelos lojistas (para monitorar e
talvez coordenar preços tacitamente) poderiam, em teoria, ter efeitos contrários. Portanto, ao
implementar o aplicativo no Cuito, é importante monitorar não apenas a adoção pelos usuários,
mas também as reações dos lojistas e os efeitos gerais sobre a dinâmica de preços local.

1.6. Aplicações Móveis para o Consumidor e Lojista no Contexto do Cuito

1.6.1. Impacto nas Decisões de Compra e Gestão Financeira do Consumidor

A introdução de um aplicativo móvel de comparação de preços no Cuito tem o potencial de


transformar fundamentalmente a maneira como os consumidores tomam decisões de compra para
produtos essenciais. Ao centralizar informações de preços de diferentes estabelecimentos locais, o
aplicativo quebra barreiras de informação e oferece poder de escolha real. A capacidade de
verificar rapidamente, no smartphone, onde o arroz, o óleo ou o açúcar estão mais baratos antes
mesmo de sair de casa, ou mesmo enquanto se está em uma loja (showrooming), representa uma
mudança significativa em relação à busca manual e fragmentada (Van Heerde et al., 2013). Essa
transparência não só facilita a economia, mas também aumenta a confiança do consumidor em suas
decisões.

O impacto mais direto e mensurável esperado é na gestão financeira das famílias. Para
orçamentos apertados, a economia gerada pela compra sistemática de produtos essenciais a preços
mais baixos pode ser substancial ao longo do tempo. O aplicativo, portanto, transcende a
conveniência, tornando-se uma ferramenta prática de planejamento financeiro, ajudando os

36
usuários a "identificar as opções mais vantajosas para produtos essenciais, otimizar o orçamento
doméstico e aumentar a capacidade de poupança" (Consumer Finance Reports, 2022, p. 15).
Funcionalidades adicionais no aplicativo Flutter, como a criação de listas de compras otimizadas
(que calculam o custo total da cesta em diferentes lojas ou combinações de lojas) ou o envio de
alertas sobre promoções em produtos favoritos, podem amplificar ainda mais esses benefícios
financeiros.

Além do especto puramente econômico, o aplicativo pode influenciar outros fatores da decisão de
compra. Ao incluir informações sobre a localização exata das lojas (integrado com mapas, usando
as capacidades do Flutter e do dispositivo), disponibilidade de produtos (informada pelos lojistas
ou por crowdsourcing) e potencialmente avaliações de outros usuários, a aplicação fornece um
quadro mais completo para a decisão. Isso permite que o consumidor pondere não apenas o preço,
mas também a conveniência (distância vs. economia), a confiabilidade da informação e a
experiência de outros compradores, promovendo um consumo mais consciente e informado no
contexto específico do Cuito.

1.6.2. Benefícios e Implicações para os Lojistas Locais

Embora a perspetiva de maior concorrência de preços possa inicialmente preocupar alguns lojistas
no Cuito, a participação na plataforma de comparação também oferece oportunidades
significativas. Primeiramente, o aplicativo funciona como um canal de visibilidade e marketing
digital, especialmente valioso para pequenos comerciantes que podem não ter recursos para
publicidade online própria ou mesmo uma presença digital estabelecida. Estar listado na
plataforma pode atrair novos clientes, particularmente aqueles mais sensíveis a preço, que talvez
desconhecessem a existência da loja ou suas ofertas (Retail Management Studies, 2020).

Em segundo lugar, a plataforma pode fornecer aos lojistas participantes inteligência de mercado
valiosa. Ao observar (de forma agregada e anonimizada, respeitando a privacidade) quais produtos
são mais pesquisados, quais faixas de preço atraem mais interesse, e potencialmente os preços
praticados por concorrentes diretos (se a plataforma permitir essa visibilidade), os lojistas podem
tomar decisões mais informadas sobre sua própria estratégia de precificarão, gestão de estoque e
promoções. O módulo de gestão para lojistas, previsto como objetivo específico e a ser
implementado no aplicativo Flutter, é crucial aqui, pois permite que eles atualizem seus preços e
disponibilidade de forma fácil e rápida, garantindo a relevância da informação e engajando-os
ativamente na plataforma.

37
Finalmente, a plataforma pode ser uma ferramenta para fidelização e diferenciação, indo além da
simples guerra de preços. Lojistas podem utilizar o aplicativo para comunicar ofertas especiais
exclusivas para os usuários, destacar a qualidade de seus produtos ou serviços, ou promover
programas de fidelidade. Ao participar ativamente e fornecer informações precisas, os lojistas
constroem confiança com os consumidores. A plataforma pode, assim, ajudar a nivelar o campo de
jogo entre grandes e pequenos varejistas no Cuito, permitindo que estes últimos compitam não
apenas no preço, mas também na agilidade, no relacionamento com o cliente e na adaptação às
necessidades locais (Marketing Estratego Journal, 2021). A chave é que a plataforma seja
percebida como benéfica tanto para consumidores quanto para os comerciantes locais.

1.6.3. Estudo do Contexto Local – Município do Cuito: Desafios e Oportunidades

A viabilidade e o impacto do aplicativo de comparação de preços estão intrinsecamente ligados às


especificidades do município do Cuito. Uma análise aprofundada do contexto local, conforme
delineado nos objetivos e métodos de investigação (observação, questionários, análise
documental), é fundamental antes e durante o desenvolvimento. É preciso compreender o perfil
dos consumidores: qual a taxa real de posse e uso de smartphones na população alvo? Qual o
nível de conforto e habilidade (literacia digital) com aplicativos móveis? Quais são os principais
locais de compra (supermercados formais, mercados abertos, cantinas)? Qual a qualidade e o custo
da conectividade móvel (dados) na prática diária? (Cf. DATAREPORTAL, 2024; Relatório
Socioeconômico do Bié, 2023 – fontes a confirmar/substituir). Ignorar essas realidades pode levar a
uma solução tecnologicamente funcional, mas pouco adotada ou útil.

Da mesma forma, entender o ecossistema varejista do Cuito é crucial. Qual a proporção entre
comércio formal e informal? Os pequenos comerciantes possuem alguma infraestrutura digital
(computador, smartphone com internet) para usar o módulo lojista? Qual a disposição geral em
adotar novas tecnologias e compartilhar informações de preços, considerando a cultura comercial
local? A coleta de dados de preços do setor informal, que pode ser significativo, representa um
desafio particular que talvez precise de abordagens criativas baseadas em crowdsourcing
incentivado. A colaboração com associações comerciais locais, se existentes, pode ser estratégica
para engajar os lojistas (INE, dados anuais de empresas – fontes a confirmar/substituir).
38
Essas investigações revelarão tanto os desafios quanto as oportunidades. Os desafios podem
incluir conectividade deficiente ou cara, baixa literacia digital em certos segmentos, resistência à
mudança por parte dos lojistas, dificuldade em manter os dados de preços atualizados e precisos
(especialmente com crowdsourcing) e a necessidade de construir confiança na plataforma. As
oportunidades, no entanto, são imensas: o potencial de economia real para as famílias, o estímulo
à concorrência saudável, a promoção da transparência no mercado local, a possibilidade de
inclusão digital de pequenos comerciantes e a criação de uma ferramenta genuinamente útil que
responde a uma necessidade concreta da comunidade do Cuito, alinhando-se com iniciativas mais
amplas de digitalização (Programa Angola Digital, 2021 – fonte a confirmar/substituir). O design
da solução em Flutter e Supabase deve ser flexível o suficiente para se adaptar a essas condições
locais, talvez começando com funcionalidades essenciais e evoluindo com base no feedback e na
adoção.

39
1.7 Metodologia de Desenvolvimento de Software Adotada

A escolha de uma metodologia de desenvolvimento de software adequada é um fator crítico para o


sucesso de qualquer projeto, influenciando desde a organização do trabalho até a qualidade final do
produto. Para o desenvolvimento da aplicação móvel de comparação de preços proposta neste
trabalho, optou-se por seguir os princípios e práticas do paradigma Ágil, especificamente
adaptando a metodologia Extreme Programming (XP). Esta seção detalha o histórico e os
fundamentos das metodologias ágeis, apresenta uma visão geral de abordagens comuns e justifica a
seleção do XP em detrimento de outras opções, considerando as características particulares deste
projeto.

1.7.1 O Paradigma Ágil e Seus Fundamentos

As metodologias ágeis emergiram no final da década de 1990 e início dos anos 2000 como uma
alternativa aos modelos de desenvolvimento tradicionais, como o modelo Cascata (Waterfall).
Estes modelos sequenciais e rigidamente planejados mostravam-se frequentemente inadequados
para projetos onde os requisitos eram voláteis ou pouco compreendidos no início, levando a longos
ciclos de desenvolvimento, dificuldade em incorporar feedback e, por vezes, a entrega de produtos
desalinhados com as necessidades reais dos usuários (Pressman & Maxim, 2016). A insatisfação
com essa rigidez culminou na criação do "Manifesto para o Desenvolvimento Ágil de Software"
em 2001, que estabeleceu um conjunto de valores e princípios norteadores.

O Manifesto Ágil preconiza valorizar "indivíduos e interações mais que processos e ferramentas;
software em funcionamento mais que documentação abrangente; colaboração com o cliente mais
que negociação de contratos; responder a mudanças mais que seguir um plano" (Beck et al., 2001).
Essa filosofia enfatiza a flexibilidade, a comunicação constante, a entrega incremental de valor e a
capacidade de adaptação como elementos centrais para o sucesso no desenvolvimento de software.
No contexto deste projeto – criar uma ferramenta para consumidores no Cuito, um ambiente com
dinâmicas de mercado e necessidades de usuários que podem necessitar de ajustes ao longo do
desenvolvimento – a abordagem ágil é particularmente pertinente, pois permite incorporar
feedback e ajustar o rumo do projeto de forma mais eficiente do que um plano pré-definido e
inflexível.

As metodologias que derivam deste manifesto, como Scrum, Kanban, Lean e XP, partilham desta
filosofia comum, mas diferem nas suas práticas e focos específicos. Elas promovem ciclos de
40
desenvolvimento mais curtos (iterações), colaboração intensa entre os membros da equipe e
stakeholders (como os futuros usuários do aplicativo no Cuito) e uma busca contínua pela melhoria
tanto do produto quanto do processo de desenvolvimento (Highsmith, 2009).

1.7.2 Visão Geral de Metodologias Ágeis Comuns

Dentro do espectro ágil, diversas metodologias ganharam popularidade. O Scrum, talvez a mais
difundida, organiza o trabalho em ciclos fixos chamados Sprints, com papéis bem definidos
(Product Owner, Scrum Master, Equipe de Desenvolvimento) e cerimônias específicas
(Planejamento da Sprint, Reunião Diária, Revisão da Sprint, Retrospetiva da Sprint). Seu foco
principal é a gestão do projeto e a entrega de incrementos de produto potencialmente utilizáveis ao
final de cada Sprint (Schwaber & Sutherland, 2020). Embora eficaz para equipes, sua estrutura
pode ser excessiva para um projeto com um único desenvolvedor.

O Kanban, por sua vez, foca na visualização do fluxo de trabalho e na limitação do trabalho em
progresso (WIP) para identificar gargalos e otimizar a entrega contínua. Utilizando um quadro
visual (Quadro Kanban), as tarefas fluem de uma coluna para outra à medida que progridem. É
uma metodologia altamente flexível e menos prescritiva que o Scrum, focada na eficiência do
fluxo (Anderson, 2010). Sua simplicidade é atraente, mas pode carecer da estrutura de feedback e
planejamento iterativo mais explícita de outras metodologias.

O Lean Software Development, inspirado nos princípios Lean de manufatura, concentra-se na


eliminação de desperdícios (atividades que não agregam valor ao cliente), na otimização do fluxo
de valor e na entrega rápida. Seus princípios incluem eliminar desperdício, ampliar o aprendizado,
decidir o mais tarde possível, entregar o mais rápido possível, empoderar a equipe, construir
integridade e otimizar o todo (Poppendieck & Poppendieck, 2003). É uma filosofia poderosa, mas
menos um framework de processo detalhado.

1.7.3 Extreme Programming (XP): Foco na Qualidade e Flexibilidade Técnica

A Extreme Programming (XP), uma das metodologias pioneiras do movimento ágil, diferencia-se
por seu forte foco nas práticas técnicas de engenharia de software, visando produzir código de alta
qualidade de forma sustentável e adaptável a mudanças. Concebida por Kent Beck, a XP é definida
por um conjunto de valores, princípios e práticas que se reforçam mutuamente (Beck & Andres,

41
2004). É considerada uma metodologia "leve", adequada para equipes de diferentes tamanhos e
níveis de experiência, e particularmente eficaz em projetos onde os requisitos são incertos ou
sujeitos a alterações frequentes (Miranda, 2020), cenário plausível ao desenvolver uma ferramenta
inovadora para o mercado do Cuito.

Os valores fundamentais da XP guiam as decisões e comportamentos da equipe. A Comunicação


é incentivada através de interações frequentes e diretas (minimizando a dependência de
documentação excessiva). A Simplicidade orienta a busca pela solução mais simples que funcione
para a necessidade atual, evitando complexidade desnecessária e facilitando mudanças futuras. O
Feedback, obtido rapidamente através de testes automatizados, entregas frequentes e comunicação
com o cliente/usuário, é essencial para o aprendizado e correção de rumos. A Coragem é
necessária para tomar decisões difíceis, como refatorar código existente, descartar soluções que
não funcionam ou adotar práticas que desafiam o status quo. O Respeito mútuo entre todos os
envolvidos é também considerado um valor fundamental para um ambiente colaborativo e
produtivo (Beck & Andres, 2004).

Estes valores são colocados em prática através de um conjunto de práticas interligadas. Para este
projeto, mesmo com um único desenvolvedor, várias práticas da XP são adaptáveis e altamente
benéficas:

 Testes Automatizados (TDD - Test-Driven Development e Testes de Aceitação): O


desenvolvimento guiado por testes (escrever o teste antes do código) garante que o software
funcione como esperado e fornece uma rede de segurança para futuras alterações. Testes de
aceitação validam se as funcionalidades atendem aos critérios definidos (seja pelo próprio
desenvolvedor no papel de PO, ou por stakeholders). Esta prática é crucial para garantir a
confiabilidade da lógica de comparação de preços e da integração com o Supabase.
 Design Simples (Simple Design): Começar com o design mais simples possível que atenda
aos requisitos imediatos e evoluí-lo conforme necessário. Isso evita a superengenharia e
mantém o código mais fácil de entender e modificar, alinhado à filosofia de "fazer algo
simples hoje e pagar um pouco mais amanhã para fazer modificações necessárias, do que
implementar algo complicado hoje que talvez não venha a ser usado" (Soares, 2021, p.
199).
 Refatoração (Refactoring): Melhorar continuamente a estrutura interna do código sem
alterar seu comportamento externo. Isso combate a degradação do código ao longo do

42
tempo, mantendo-o limpo, legível e fácil de manter, o que é vital para a sustentabilidade do
projeto, mesmo sendo individual.
 Integração Contínua (Continuous Integration - Adaptada): Embora classicamente
envolva a integração frequente do trabalho de múltiplos desenvolvedores, o princípio pode
ser adaptado para um único desenvolvedor através da integração e teste frequentes de novas
funcionalidades no código principal localmente, e potencialmente usando ferramentas de
CI/CD (Continuous Integration/Continuous Deployment) para automatizar builds e testes
na nuvem (por exemplo, com GitHub Actions e a hospedagem do Supabase ou do frontend
Flutter).
 Padrões de Codificação (Coding Standards): Adotar e seguir consistentemente um
padrão de codificação melhora a legibilidade e a manutenção do código, mesmo quando
trabalhado por uma única pessoa.
 Ritmo Sustentável (Sustainable Pace): Trabalhar de forma focada e eficiente, mas
evitando horas extras excessivas, para manter a produtividade e a qualidade a longo prazo.
Essencial para evitar o esgotamento (burnout) em um projeto individual.
 Pequenas Entregas (Small Releases): Entregar versões funcionais do software em ciclos
curtos permite obter feedback rápido dos stakeholders (orientador, potenciais usuários de
teste no Cuito) e validar o progresso.

Práticas como Programação em Par (Pair Programming) e Propriedade Coletiva do Código


(Collective Code Ownership) são inerentemente voltadas para equipes e serão naturalmente
omitidas neste projeto individual. O Jogo do Planejamento (Planning Game) será adaptado para um
processo de planejamento e priorização individual, mas mantendo a ideia de definir e estimar
tarefas para iterações curtas.

1.7.4 Justificativa para Adoção da Metodologia XP Adaptada

A escolha da metodologia Extreme Programming (XP), adaptada para a realidade de um projeto


conduzido por um único desenvolvedor, fundamenta-se na sua forte adequação às características e
objetivos deste TCC. Primeiramente, a natureza exploratória e centrada no usuário do
aplicativo de comparação de preços para o Cuito beneficia-se enormemente da flexibilidade e da
capacidade de resposta a mudanças inerentes ao XP. É provável que o feedback dos primeiros
usuários e a própria dinâmica do mercado local demandem ajustes nos requisitos e
funcionalidades, e a XP, com seus ciclos curtos e foco em feedback, está bem equipada para lidar
com essa incerteza (Sommerville, 2007).
43
Em segundo lugar, o foco da XP na qualidade técnica através de práticas como TDD, refatoração
e design simples é crucial para garantir a robustez e a confiabilidade da aplicação. Um aplicativo
que lida com dados de preços e influencia as decisões financeiras dos usuários precisa ser
confiável. A disciplina imposta por essas práticas ajuda a mitigar os riscos associados ao
desenvolvimento individual, onde a revisão por pares não está presente. A integração com as
tecnologias escolhidas, Flutter e Supabase, que favorecem o desenvolvimento rápido e iterativo,
também se alinha bem com as práticas da XP.

Terceiro, a adaptabilidade da XP para equipes pequenas ou individuais é um fator decisivo.


Embora algumas práticas sejam específicas para equipes, o núcleo da XP – valores e práticas
técnicas – oferece um framework robusto para guiar o trabalho de um único desenvolvedor,
promovendo disciplina, qualidade e um ritmo de trabalho sustentável. A ênfase na simplicidade
ajuda a priorizar o essencial e a entregar valor funcional de forma incremental, o que é ideal para o
escopo de um TCC.

Portanto, em comparação com outras metodologias ágeis, a XP adaptada apresenta o melhor


equilíbrio entre estrutura, flexibilidade e foco na qualidade técnica para as necessidades específicas
deste projeto. Enquanto Scrum poderia impor uma sobrecarga processual e Kanban poderia carecer
de um foco explícito em práticas de engenharia, a XP oferece um conjunto pragmático de
ferramentas e princípios para guiar o desenvolvimento de uma aplicação móvel de alta qualidade,
responsiva às necessidades dos usuários do Cuito e viável dentro das restrições de um projeto de
conclusão de curso individual.

44
1.8 FERRAMENTAS E TECNOLOGIAS PARA O DESENVOLVIMENTO DA
APLICAÇÃO MÓVEL

A construção de uma aplicação de software moderna, como o sistema de comparação de preços


proposto neste trabalho, exige a seleção cuidadosa de um conjunto integrado de ferramentas,
linguagens e plataformas tecnológicas. Diferentemente do desenvolvimento web tradicional, que
frequentemente envolve combinações como PHP/Laravel/MySQL para o backend e
HTML/CSS/JavaScript para o frontend, o desenvolvimento de uma aplicação móvel nativa ou de
alta performance, com um backend gerenciado na nuvem, requer um conjunto de tecnologias
distinto. Esta seção detalha as principais ferramentas e tecnologias escolhidas para a conceção,
desenvolvimento, teste e implantação da aplicação móvel para o município do Cuito.

1.8.1 Framework de Desenvolvimento Móvel: Flutter e Linguagem Dart

Para o desenvolvimento da interface do usuário (frontend) da aplicação móvel, optou-se pelo


Flutter, um kit de desenvolvimento de interface de usuário (UI toolkit) de código aberto criado
pelo Google. O Flutter permite construir aplicações compiladas nativamente para múltiplas
plataformas – incluindo Android e iOS – a partir de uma única base de código (Flutter Docs, n.d.).
Esta capacidade de desenvolvimento multiplataforma é uma vantagem significativa, pois reduz o
tempo e o esforço necessários para alcançar usuários em ambos os ecossistemas móveis
predominantes, o que é particularmente relevante para maximizar o alcance potencial no Cuito.

A escolha do Flutter foi motivada por diversas características vantajosas. Sua arquitetura baseada
em widgets personalizáveis e de alto desempenho permite a criação de interfaces de usuário ricas,
expressivas e consistentes entre plataformas. O recurso de "Hot Reload" acelera drasticamente o
ciclo de desenvolvimento, permitindo que os desenvolvedores vejam os efeitos das alterações no
código quase instantaneamente sem perder o estado da aplicação. Além disso, o Flutter possui uma
comunidade ativa e crescente, vasta documentação e excelente integração com serviços de
backend, incluindo o Supabase, escolhido para este projeto.

O Flutter utiliza a linguagem de programação Dart, também desenvolvida pelo Google. Dart é
uma linguagem moderna, orientada a objetos, otimizada para o desenvolvimento de interfaces de
usuário e compilada tanto para código nativo ARM (para performance em dispositivos móveis)
quanto para JavaScript (para aplicações web). Sua sintaxe clara, forte sistema de tipos (com
inferência) e recursos assíncronos robustos tornam-na adequada para construir aplicações móveis
45
complexas e responsivas (Dart Docs, n.d.). A combinação Flutter/Dart foi considerada ideal para
entregar uma experiência de usuário fluida e nativa na aplicação de comparação de preços.

1.8.2 Plataforma de Backend: Supabase (Backend as a Service)

Para suportar a aplicação móvel, fornecendo funcionalidades essenciais como armazenamento de


dados, autenticação de usuários e comunicação em tempo real, optou-se por utilizar o Supabase. O
Supabase é uma plataforma de código aberto que se posiciona como uma alternativa ao Firebase
(Google), oferecendo um conjunto de ferramentas de backend como serviço (Backend as a Service
- BaaS) construídas sobre tecnologias estabelecidas e de código aberto (Supabase Docs, n.d.).
Utilizar um BaaS acelera significativamente o desenvolvimento, pois abstrai grande parte da
complexidade associada à configuração e gerenciamento de servidores, bancos de dados e APIs de
backend.

A escolha do Supabase justifica-se por vários fatores. Primeiramente, ele fornece os componentes
essenciais necessários para a aplicação de comparação de preços:

 Banco de Dados PostgreSQL Gerenciado: Oferece um banco de dados relacional robusto


e escalável (detalhado a seguir).
 Autenticação: Sistema integrado para gerenciar o cadastro e login de usuários
(consumidores e lojistas) de forma segura.
 APIs Instantâneas: Gera automaticamente APIs RESTful e GraphQL sobre o banco de
dados, facilitando a comunicação entre o frontend Flutter e o backend.
 Realtime Subscriptions: Permite que a aplicação Flutter receba atualizações em tempo
real quando os dados (como preços) mudam no banco de dados, crucial para manter a
informação atualizada para o usuário.
 Storage: Permite armazenar arquivos, como imagens de produtos ou logos de lojas, se
necessário.

Além disso, o Supabase oferece SDKs (Software Development Kits) oficiais para diversas
plataformas, incluindo Flutter, o que simplifica enormemente a integração. Sua base em
tecnologias open-source (principalmente PostgreSQL) evita o aprisionamento tecnológico (vendor
lock-in) excessivo, e seu modelo de preços, incluindo um generoso nível gratuito, torna-o acessível
para projetos acadêmicos e startups.
46
1.8.3 Sistema Gerenciador de Banco de Dados: PostgreSQL (via Supabase)

Conforme mencionado, o coração do backend fornecido pelo Supabase é uma instância gerenciada
do PostgreSQL. PostgreSQL é um poderoso sistema de gerenciamento de banco de dados objeto-
relacional (SGBD-OR) de código aberto, conhecido por sua confiabilidade, robustez,
conformidade com os padrões SQL e vasto conjunto de funcionalidades avançadas (PostgreSQL
Docs, n.d.). A escolha de um banco de dados relacional como o PostgreSQL é adequada para a
aplicação de comparação de preços, dada a natureza estruturada e relacional dos dados envolvidos
(produtos, categorias, lojas, preços, usuários, etc.).

A utilização do PostgreSQL através do Supabase oferece as vantagens inerentes a um SGBD


relacional – como a garantia de integridade dos dados através de restrições (chaves primárias,
estrangeiras) e a capacidade de realizar consultas complexas usando SQL – combinadas com a
facilidade de gerenciamento proporcionada pelo BaaS. O Supabase também facilita a
implementação de regras de segurança em nível de linha (Row Level Security - RLS) diretamente
no PostgreSQL, um mecanismo poderoso para garantir que os usuários (consumidores ou lojistas)
só possam acessar ou modificar os dados aos quais têm permissão, essencial para a segurança e
privacidade da aplicação. Além disso, o suporte do PostgreSQL a tipos de dados avançados, como
JSONB, oferece flexibilidade para armazenar atributos de produtos menos estruturados, se
necessário.

1.8.4 Ambiente de Desenvolvimento e Ferramentas de Apoio

Além das tecnologias centrais (Flutter, Dart, Supabase, PostgreSQL), o desenvolvimento eficiente
do projeto contou com o apoio de diversas ferramentas padrão da indústria:

 Visual Studio Code (VS Code): Como editor de código-fonte principal, o VS Code foi
escolhido por ser gratuito, leve, multiplataforma e possuir um ecossistema de extensões
extremamente rico. Suas extensões oficiais para Dart e Flutter oferecem excelente suporte
ao desenvolvimento, incluindo realce de sintaxe, autocompletar inteligente, depuração
integrada, formatação de código e integração com o Hot Reload do Flutter (Visual Studio
Code Docs, n.d.).
 Git e GitHub: O Git foi utilizado como sistema de controle de versão distribuído,
essencial para rastrear todas as alterações no código-fonte, gerenciar diferentes ramos de
desenvolvimento (branches) e permitir a reversão para versões anteriores, caso necessário.

47
É uma ferramenta fundamental para qualquer projeto de software, mesmo individual,
garantindo a segurança e o histórico do código (Git SCM Docs, n.d.). O GitHub serviu
como plataforma de hospedagem remota para os repositórios Git, funcionando como um
backup seguro do código, facilitando a sincronização entre diferentes máquinas (se
aplicável) e oferecendo ferramentas adicionais para gerenciamento de projetos (GitHub
Docs, n.d.).
 Google Play Store: Como plataforma de distribuição primária para aplicações Android, a
Google Play Store será o canal para disponibilizar a aplicação aos usuários do Cuito após a
fase de desenvolvimento e teste. O processo envolve a compilação de uma versão de
lançamento da aplicação Flutter (em formato APK ou AAB) e o envio através do Google
Play Console, onde se gerência a listagem, descrição, capturas de tela e atualizações da
aplicação (Google Play Console Help, n.d.).
 Figma (Design e Prototipagem): Na fase de conceção visual e funcional da aplicação, a
ferramenta de design baseada na web Figma foi utilizada extensivamente. Por meio do Figma,
foram criados os wireframes para estruturar o fluxo de navegação do usuário, seguidos por mockups
de alta fidelidade que definiram a identidade visual da aplicação (cores, tipografia, ícones,
componentes de UI) e, finalmente, protótipos interativos. Este processo foi fundamental para
visualizar a experiência do usuário final, iterar sobre o design de forma ágil e fornecer um guia
visual preciso e detalhado para a implementação das interfaces no framework Flutter, garantindo
consistência e usabilidade.

48
CAPÍTULO II: DESENVOLVIMENTO DA SOLUÇÃO PROPOSTA
Neste capítulo faz-se a modelagem do sistema proposto, desenvolvendo vários dos artefactos
propostos na metodologia XP, que permitem dar cumprimentos ao problema exposto (História do
usuário e tarefas de Engenharia) também são apresentados os requerimentos funcionais e não
funcionais que contribuem á implementação do sistema.

2.1 Requisitos dos sistema

Os requisitos de um sistema são as descrições do que o sistema deve fazer, os serviços que oferece
e as restrições a seu funcionamento. Esses requisitos refletem as necessidades dos clientes para um
sistema que serve a uma finalidade determinada, como controlar um dispositivo, colocar um
pedido ou encontrar informações. O processo de descobrir, analisar, documentar e verificar esses
serviços e restrições é chamado engenharia de requisitos (SOMMERVILLE, 2011, p. 57).

2.1.1 Requisitos funcionais (RF)

São declarações de serviços que o sistema deve fornecer, de como o sistema deve reagir a entradas
específicas e de como o sistema deve se comportar em determinadas situações (SOMMERVILLE,
2011, p. 59). Os principais requerimentos funcionais para o sistema são apresentados a seguir:

RF01 - Cadastro de Usuário (Consumidor): O sistema deve permitir que novos usuários
(consumidores) se cadastrem na aplicação fornecendo informações básicas (ex: nome,
e-mail/telefone, senha).

RF02 - Autenticação de Usuário: O sistema deve permitir que usuários cadastrados


(consumidores e lojistas) façam login na aplicação usando suas credenciais.

RF03 - Pesquisa de Produtos: O sistema deve permitir que o consumidor pesquise produtos por
nome, categoria ou código de barras (se implementada a leitura).

RF04 - Comparação de Preços de Produtos: O sistema deve exibir uma lista de lojas que
vendem o produto pesquisado, mostrando o preço em cada loja e a data da última atualização do
preço.

49
RF05 - Visualização de Detalhes da Loja: O sistema deve permitir que o consumidor visualize
informações detalhadas de uma loja selecionada (ex: nome, endereço, contato, localização no
mapa).

RF06 - Cadastro/Gestão de Lojas (Módulo Lojista - simplificado): O sistema deve permitir que
um usuário com perfil de lojista (após aprovação/cadastro diferenciado) cadastre sua loja e
gerencie os preços dos produtos que vende em seu estabelecimento.

RF07 - Inserção/Atualização de Preços (Lojista): Lojistas autenticados devem poder inserir


novos produtos (com descrição, categoria) e seus respetivos preços, bem como atualizar os preços
existentes para sua loja.

RF08 - (Crowdsourcing) Submissão de Preços por Consumidores: O sistema pode permitir que
consumidores submetam informações de preços encontradas em lojas (potencialmente com
validação ou moderação).

RF09 - Filtragem de Resultados por Localização: O sistema deve permitir que o consumidor
filtre/ordene as lojas exibidas com base na sua proximidade geográfica (utilizando o GPS do
dispositivo).

RF10 - Criação de Listas de Compras (Consumidor): O sistema deve permitir que o


consumidor crie e gerencie listas de compras pessoais, adicionando produtos de interesse.

2.1.2 Requisitos não funcionais

RNF001 - Desempenho: As consultas de pesquisa e comparação de preços devem ser processadas


e exibidas ao usuário em menos de 3 segundos sob condições normais de rede. O aplicativo deve
ter um tempo de inicialização inferior a 5 segundos.

RNF002 - Usabilidade: A interface do usuário deve ser intuitiva e fácil de usar, mesmo para
usuários com pouca experiência em aplicativos móveis. O design deve seguir as diretrizes de
Material Design (para Android) e Human Interface Guidelines (para iOS) de forma consistente, ou
um design customizado claro.

RNF003 - Segurança: Os dados dos usuários (informações pessoais, senhas) devem ser
armazenados de forma segura (ex: senhas hasheadas). A comunicação entre o aplicativo cliente

50
(Flutter) e o backend (Supabase) deve ser criptografada (HTTPS/TLS). Lojistas só devem poder
modificar os dados de suas próprias lojas (via Row Level Security no Supabase).

RNF004 - Confiabilidade: O sistema deve estar disponível para uso 99% do tempo. Os dados de
preços exibidos devem ser precisos e refletir a última informação disponível no banco de dados.

RNF005 - Portabilidade/Compatibilidade: A aplicação móvel deve ser compatível com as duas


últimas versões principais dos sistemas operacionais Android e iOS.

RNF006 - Manutenibilidade: O código-fonte (Dart/Flutter e configurações do Supabase) deve ser


bem organizado, comentado e seguir padrões de codificação para facilitar futuras manutenções e
evoluções por outros desenvolvedores (ou pelo mesmo desenvolvedor no futuro).

RNF007 - Escalabilidade (Backend): A infraestrutura do Supabase deve ser capaz de lidar com
um aumento gradual no número de usuários, produtos e lojas no município do Cuito sem
degradação significativa do desempenho (dentro dos limites do plano escolhido).

RNF008 - Privacidade: O sistema deve respeitar a privacidade dos dados do usuário, informando
como os dados são coletados e usados (se aplicável, uma política de privacidade simples). Dados
de localização só devem ser usados com permissão do usuário e para a funcionalidade de
proximidade.

RNF009 - Atualização de Dados: A informação de preços deve ser facilmente atualizável pelos
lojistas ou administradores, e o sistema deve indicar claramente a data/hora da última atualização
de um preço para o consumidor.

RNF010 - Eficiência no Uso de Recursos (Dispositivo): O aplicativo móvel não deve consumir
excessivamente a bateria ou os dados móveis do dispositivo do usuário. Deve haver um esforço
para otimizar o tamanho do aplicativo e o uso de rede.

2.2 Historias de usuário

Tabela de histórias de usuário 1

Tipo de
Id Desejo (ação) Objetivo/benefício Prioridade
usuário
Me cadastrar no aplicativo Eu possa salvar minhas
Consumidor(a
1 usando meu e-mail e uma preferências e acessar Alta
)
senha funcionalidades personalizadas

51
Consumidor(a Fazer login no aplicativo Eu possa acessar minha conta e
2 Alta
) com meu e-mail e senha minhas listas de compras
Pesquisar um produto Eu possa ver onde ele está
Consumidor(a
3 específico pelo nome (ex: disponível e comparar seus Alta
)
"arroz tio João 5kg") preços
Ver uma lista de lojas que
vendem o produto que
Consumidor(a Eu possa identificar a opção
4 pesquisei, com o preço em Alta
) mais barata e recente
cada uma e a data da última
atualização
Ver os detalhes de uma loja
Consumidor(a Eu possa decidir se vale a pena ir
5 (nome, endereço, contato) e Média
) até lá
sua localização no mapa
Filtrar as lojas por
Consumidor(a Eu possa encontrar as ofertas
6 proximidade há minha Média
) mais convenientes para mim
localização atual
Criar uma lista de compras
Consumidor(a Eu possa me organizar e não
7 e adicionar produtos que Média
) esquecer de nada
pretendo comprar
Ver o custo total estimado
Consumidor(a da minha lista de compras, Eu possa planejar meu
8 Baixa
) considerando os preços orçamento
mais baixos encontrados
Poder navegar por Eu possa descobrir produtos e
Consumidor(a
9 categorias de produtos (ex: ofertas mesmo sem saber o nome Média
)
"grãos", "higiene") exato
Poder submeter o preço de
um produto que encontrei Eu possa ajudar outros
Consumidor(a
10 em uma loja física não consumidores e manter a Baixa
)
listada ou com preço plataforma atualizada
desatualizado
11 Consumidor(a Ver uma indicação clara da Eu possa ter uma ideia da Alta
) data e hora da última confiabilidade da informação

52
atualização de um preço
Solicitar o cadastro da Meus produtos e preços possam
12 Proprietário(a) Alta
minha loja no aplicativo ser vistos pelos consumidores
Fazer login no aplicativo Eu possa gerenciar as
13 Lojista com minhas credenciais de informações da minha loja e Alta
lojista produtos
Adicionar novos produtos
ao catálogo da minha loja,
Os consumidores possam
14 Lojista informando nome, Alta
encontrá-los
descrição, categoria e preço
inicial
Atualizar rapidamente o A informação exibida aos
15 Lojista preço de um produto consumidores seja sempre a mais Alta
existente na minha loja recente
Indicar se um produto está
em promoção ou com
16 Lojista Eu possa atrair mais clientes Média
desconto especial na minha
loja
Visualizar um painel
simples com as
17 Lojista informações dos produtos Eu possa ter um controle fácil Média
que cadastrei e seus
respetivos preços atuam
Poder marcar um produto Os consumidores não sejam
18 Lojista como "indisponível" direcionados há minha loja por Média
temporariamente um item que acabou

53
Referências
 Anderson, D. J. (2010). Kanban: Successful Evolutionary Change for Your Technology
Business. Blue Hole Press.
 Baye, M. R., Morgan, J., & Scholten, P. (2006). Information, search, and price dispersion.
In T. Hendershott (Ed.), Handbook on Economics and Information Systems (Vol. 1, pp.
323-371). Elsevier.
 Beck, K., Beedle, M., van Bennekum, A., Cockburn, A., Cunningham, W., Fowler, M.,
Grenning, J., Highsmith, J., Hunt, A., Jeffries, R., Kern, J., Marick, B., Martin, R. C.,
Mellor, S., Schwaber, K., Sutherland, J., & Thomas, D. (2001). Manifesto for Agile
Software Development. Agile Alliance. [Link]
 Beck, K., & Andres, C. (2004). Extreme Programming Explained: Embrace Change (2nd
ed.). Addison-Wesley Professional.
 Bhargava, H. K., Kim, B., & Merchants, S. (2020). Emerging trends in economics of
information systems. Management Science, 66(4), 1813-1826.
 Dart Docs. (n.d.). Dart programming language. [Link]
 DATAREPORTAL. (2024). Digital 2024: Angola.
 Flanagan, D. (2020). JavaScript: The Definitive Guide (7th ed.). O'Reilly Media.
 Flutter Docs. (n.d.). Flutter - Build apps for any screen. [Link]
 Git SCM Docs. (n.d.). Git Documentation. [Link]
 GitHub Docs. (n.d.). GitHub Docs. [Link]
 Google Play Console Help. (n.d.). Google Play Console Help.
[Link]
 Lynch Jr, J. G., & Ariely, D. (2000). Wine online: Search costs affect competition on price,
quality, and distribution. Marketing science, 19(1), 83-103.
 Mell, P., & Grance, T. (2011). The NIST Definition of Cloud Computing (NIST Special
Publication 800-145). National Institute of Standards and Technology.
[Link]
 Poppendieck, M., & Poppendieck, T. (2003). Lean Software Development: An Agile
Toolkit. Addison-Wesley Professional.
 PostgreSQL Docs. (n.d.). PostgreSQL Documentation. [Link]
 Pressman, R. S., & Maxim, B. R. (2016). Engenharia de Software: Uma Abordagem
Profissional (8ª ed.). McGraw-Hill.

54
 Schwaber, K., & Sutherland, J. (2020). The Scrum Guide. [Link].
[Link]
 Sommerville, I. (20--). Engenharia de Software. Pearson.
 Stauffer, M. (2019). Laravel: Up & Running (3rd ed.). O'Reilly Media.
 Supabase Docs. (n.d.). Supabase Documentation. [Link]
 Visual Studio Code Docs. (n.d.). Visual Studio Code Documentation.
[Link]
 Armbrust, M., Fox, A., Griffith, R., Joseph, A. D., Katz, R., Konwinski, A., Lee, G.,
Patterson, D., Rabkin, A., Stoica, I., & Zaharia, M. (2010). A view of cloud computing.
Communications of the ACM, 53(4), 50–58. [Link]
 Elmasri, R., & Navathe, S. B. (2015). Fundamentals of database systems (7th ed.). Pearson.
 Highsmith, J. (2009). Agile project management: Creating innovative products (2nd ed.).
Addison-Wesley Professional.
 Moniruzzaman, A. B. M., & Hossain, S. A. (2013). NoSQL database: New era of databases
for big data analytics - Classification, characteristics and comparison. International Journal
of Database Theory and Application, 6(4), 1–14.
 Subashini, S., & Kavitha, V. (2011). A survey on security issues in service delivery models
of cloud computing. Journal of Network and Computer Applications, 34(1), 1–11.
[Link]
 Apple. (n.d.). Human interface guidelines. Apple Developer.
[Link]
 Gartner. (2023). Top strategic technology trends for 2024. Gartner Research.
 Google. (n.d.). Material Design. [Link]. [Link]

55

Você também pode gostar