Home | Escopo e Cronograma | Processo | Design/Mockups | Configuração | Arquitetura | Código | BD | Qualidade | Utilização |
---|
Arquitetura do Sistema
Descrição
Esta seção irá abordar a arquitetura selecionada para o Backend e Frontend explicando os motivos das escolhas das tecnologias utilizadas junto ao funcionamento da aplicação.
Sumário
Tecnologias
O time realizou um debate para mapear os conhecimentos tecnológicos de todos os integrantes da equipe para facilitar e nortear as decisões sobre as tecnologias a serem usadas no desenvolvimento da aplicação levando em consideração o tempo de entrega, conhecimentos existentes de cada integrante da equipe e conhecimentos que gostaríamos de adquirir durante o desenvolvimento. Após realizar esse levantamento, optamos por trabalhar com as tecnologias citas abaixo:
React
React é uma biblioteca JavaScript de código aberto mantida pelo Facebook, focada no desenvolvimento de interfaces de usuário (UI). Ela promove a construção de interfaces de usuário por meio de componentes reutilizáveis, que encapsulam a lógica e a aparência de partes específicas da UI. Utiliza um conceito de Virtual DOM para melhorar o desempenho, minimizando as manipulações diretas do DOM do navegador. Isso resulta em atualizações mais eficientes e rápidas da interface do usuário.
A escolha de React foi baseada em três pontos:
- Conhecimento prévio de alguns membros da equipe referente a tecnologia;
- Necessidade por parte dos stakeholders para aplicativos nativos para o plataforma web;
- Pesquisa realizada com o time para descobrir conhecimentos que gostaríamos de adquirir.
TypeScript
Com a adição de TypeScript, React se beneficia das vantagens da tipagem estática opcional. TypeScript é um superset tipado de JavaScript que oferece melhorias significativas na detecção de erros durante o desenvolvimento. Ao usar TypeScript com React, é possível melhorar a detecção de erros, definindo tipos para props, estado e outros elementos do React. Isso ajuda a capturar erros de digitação e de lógica mais cedo no processo de desenvolvimento, tornando o código mais robusto e menos propenso a erros.
Além disso, TypeScript permite a geração automática de documentação, facilitando a compreensão do código para os membros da equipe. Ele também torna a refatoração mais segura, já que o compilador pode identificar automaticamente onde os tipos foram alterados e quais partes do código precisam ser ajustadas. A integração do TypeScript com ferramentas de desenvolvimento, como IDEs, editores de código e sistemas de construção, proporciona uma experiência de desenvolvimento mais robusta e eficiente. Ao combinar React com TypeScript, os desenvolvedores podem aproveitar ao máximo as vantagens da tipagem estática enquanto desenvolvem interfaces de usuário modernas e dinâmicas na web.
A escolha de TypeScript foi baseada em quatro pontos:
- Tipagem Estática Opcional;
- Documentação Automática a partir da tipagem;
- Detecção Antecipada de Erros;
- Refatoração Segura
Java Spring Boot
O Spring Framework é um dos frameworks mais populares e abrangentes para o desenvolvimento de aplicativos Java. Ele fornece um conjunto de recursos abrangente para desenvolver aplicativos empresariais robustos e escaláveis. O Spring Boot é uma extensão do Spring Framework que simplifica significativamente o processo de desenvolvimento de aplicativos Java, oferecendo configurações padrão e convenções de projeto para uma rápida configuração e implantação de aplicativos.
A escolha do Java Spring Boot foi baseada em quatro pontos:
- Convenções de Configuração
- Autoconfiguração do projeto
- Spring Boot Starter (Conjunto de dependências pré-configuradas que facilita a inclusão de recursos adicionais em um aplicativo Spring Boot)
- Facilidade de implantação com servidor web embutido.
PostgreSQL
O PostgreSQL é um sistema de gerenciamento de banco de dados relacional (RDBMS) de código aberto amplamente utilizado em uma variedade de aplicativos e cenários. Ele foi desenvolvido inicialmente como um projeto de pesquisa na Universidade da Califórnia, Berkeley, e desde então cresceu para se tornar uma das opções mais populares e confiáveis para armazenamento de dados.
A escolha do PostgreSQL foi baseada em três pontos:
- Padrão SQL e Modelo Relacional
- Transações ACID (Atomicidade, Consistência, Isolamento e Durabilidade)
- Extensibilidade com suporte a criação de funções e procedimentos armazenados em várias linguagens de programação
Firebase
Firebase é uma plataforma desenvolvida pelo Google para a criação de aplicativos móveis e da web de uma forma efetiva, rápida e simples. Ele contém diversas funcionalidades já desenvolvidas, incluindo um serviço de autenticação e oferece uma SDK para Java que inclui suporte para essa autenticação de usuários. Com essa SDK iremos implementar facilmente este recurso.
A escolha do Firebase foi baseada em quatro pontos:
- Sistema de Autenticação Completo;
- Gerenciamento de Usuários;
- Segurança Integrada;
- Fácil Integração.