|
|
| [Home](home) | [Escopo e Cronograma](escopo) | [Processo](processo) | [Design/Mockups](design_mockups) | [Configuração](configuracao) | [**Arquitetura**](arquitetura) | [Código](codigo) | [BD](banco_dados) | [Qualidade](qualidade) | [Utilização](utilizacao) |
|
|
|
| :----------: | :---------------------------: | :------------------: | :--------------: | :--------------------------: | :----------------------------: | :--------------: | :---------------: | :--------------------: | :----------------------: |
|
|
|
|
|
|
# Arquitetura do SistemaTest
|
|
|
# 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
|
|
|
|
|
|
- [Arquitetura do Sistema](#arquitetura-do-sistema)
|
|
|
- [Descrição](#descrição)
|
|
|
- [Sumário](#sumário)
|
|
|
- [Tecnologias](#tecnologias)
|
|
|
- [React](#react)
|
|
|
- [TypeScript](#typescript)
|
|
|
- [Java Spring Boot](#java-spring-boot)
|
|
|
- [PostgreSQL](#postgresql)
|
|
|
- [Firebase](#firebase)
|
|
|
|
|
|
# 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. |
|
|
\ No newline at end of file |