|
| [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) |
|
|
<table>
|
|
| :----------: | :---------------------------: | :------------------: | :--------------: | :--------------------------: | :----------------------------: | :--------------: | :---------------: | :--------------------: | :----------------------: |
|
|
<tr>
|
|
|
|
<th>
|
|
|
|
|
|
|
|
[Home](home)
|
|
|
|
</th>
|
|
|
|
<th>
|
|
|
|
|
|
|
|
[Escopo e Cronograma](escopo)
|
|
|
|
</th>
|
|
|
|
<th>
|
|
|
|
|
|
|
|
[Processo](processo)
|
|
|
|
</th>
|
|
|
|
<th>
|
|
|
|
|
|
|
|
[Design/Mockups](design_mockups)
|
|
|
|
</th>
|
|
|
|
<th>
|
|
|
|
|
|
|
|
[Configuração](configuracao)
|
|
|
|
</th>
|
|
|
|
<th>
|
|
|
|
|
|
|
|
[**Arquitetura**](arquitetura)
|
|
|
|
</th>
|
|
|
|
<th>
|
|
|
|
|
|
|
|
[Código](codigo)
|
|
|
|
</th>
|
|
|
|
<th>
|
|
|
|
|
|
|
|
[BD](banco_dados)
|
|
|
|
</th>
|
|
|
|
<th>
|
|
|
|
|
|
|
|
[Qualidade](qualidade)
|
|
|
|
</th>
|
|
|
|
<th>
|
|
|
|
|
|
|
|
[Utilização](utilizacao)
|
|
|
|
</th>
|
|
|
|
</tr>
|
|
|
|
</table>
|
|
|
|
|
|
# Arquitetura do Sistema
|
|
# Arquitetura do Sistema
|
|
|
|
|
... | @@ -10,8 +52,8 @@ Esta seção irá abordar a arquitetura selecionada para o Backend e Frontend ex |
... | @@ -10,8 +52,8 @@ Esta seção irá abordar a arquitetura selecionada para o Backend e Frontend ex |
|
## Sumário
|
|
## Sumário
|
|
|
|
|
|
- [Arquitetura do Sistema](#arquitetura-do-sistema)
|
|
- [Arquitetura do Sistema](#arquitetura-do-sistema)
|
|
- [Descrição](#descrição)
|
|
- [Descrição](#descri%C3%A7%C3%A3o)
|
|
- [Sumário](#sumário)
|
|
- [Sumário](#sum%C3%A1rio)
|
|
- [Tecnologias](#tecnologias)
|
|
- [Tecnologias](#tecnologias)
|
|
- [React](#react)
|
|
- [React](#react)
|
|
- [TypeScript](#typescript)
|
|
- [TypeScript](#typescript)
|
... | @@ -21,14 +63,14 @@ Esta seção irá abordar a arquitetura selecionada para o Backend e Frontend ex |
... | @@ -21,14 +63,14 @@ Esta seção irá abordar a arquitetura selecionada para o Backend e Frontend ex |
|
|
|
|
|
# Tecnologias
|
|
# 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**.
|
|
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:
|
|
Após realizar esse levantamento, optamos por trabalhar com as tecnologias citas abaixo:
|
|
|
|
|
|
|
|
## React
|
|
## 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.
|
|
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:
|
|
A escolha de React foi baseada em três pontos:
|
|
|
|
|
|
* Conhecimento prévio de alguns membros da equipe referente a tecnologia;
|
|
* Conhecimento prévio de alguns membros da equipe referente a tecnologia;
|
|
* Necessidade por parte dos stakeholders para aplicativos nativos para o plataforma web;
|
|
* 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.
|
|
* Pesquisa realizada com o time para descobrir conhecimentos que gostaríamos de adquirir.
|
... | @@ -40,15 +82,18 @@ Com a adição de TypeScript, React se beneficia das vantagens da tipagem estát |
... | @@ -40,15 +82,18 @@ Com a adição de TypeScript, React se beneficia das vantagens da tipagem estát |
|
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.
|
|
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:
|
|
A escolha de TypeScript foi baseada em quatro pontos:
|
|
|
|
|
|
* Tipagem Estática Opcional;
|
|
* Tipagem Estática Opcional;
|
|
* Documentação Automática a partir da tipagem;
|
|
* Documentação Automática a partir da tipagem;
|
|
* Detecção Antecipada de Erros;
|
|
* Detecção Antecipada de Erros;
|
|
* Refatoração Segura
|
|
* Refatoração Segura
|
|
|
|
|
|
## Java Spring Boot
|
|
## 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.
|
|
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:
|
|
A escolha do Java Spring Boot foi baseada em quatro pontos:
|
|
|
|
|
|
* Convenções de Configuração
|
|
* Convenções de Configuração
|
|
* Autoconfiguração do projeto
|
|
* 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)
|
|
* Spring Boot Starter (Conjunto de dependências pré-configuradas que facilita a inclusão de recursos adicionais em um aplicativo Spring Boot)
|
... | @@ -59,6 +104,7 @@ A escolha do Java Spring Boot foi baseada em quatro pontos: |
... | @@ -59,6 +104,7 @@ A escolha do Java Spring Boot foi baseada em quatro pontos: |
|
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.
|
|
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:
|
|
A escolha do PostgreSQL foi baseada em três pontos:
|
|
|
|
|
|
* Padrão SQL e Modelo Relacional
|
|
* Padrão SQL e Modelo Relacional
|
|
* Transações ACID (Atomicidade, Consistência, Isolamento e Durabilidade)
|
|
* 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
|
|
* Extensibilidade com suporte a criação de funções e procedimentos armazenados em várias linguagens de programação
|
... | @@ -68,6 +114,7 @@ A escolha do PostgreSQL foi baseada em três pontos: |
... | @@ -68,6 +114,7 @@ A escolha do PostgreSQL foi baseada em três pontos: |
|
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.
|
|
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:
|
|
A escolha do Firebase foi baseada em quatro pontos:
|
|
|
|
|
|
* Sistema de Autenticação Completo;
|
|
* Sistema de Autenticação Completo;
|
|
* Gerenciamento de Usuários;
|
|
* Gerenciamento de Usuários;
|
|
* Segurança Integrada;
|
|
* Segurança Integrada;
|
... | @@ -75,11 +122,10 @@ A escolha do Firebase foi baseada em quatro pontos: |
... | @@ -75,11 +122,10 @@ A escolha do Firebase foi baseada em quatro pontos: |
|
|
|
|
|
# Padrão Arquitetural Back-End
|
|
# Padrão Arquitetural Back-End
|
|
|
|
|
|
Camada de Apresentação:
|
|
Camada de Apresentação: A camada de apresentação lida com a interação do usuário e a exibição dos dados. No contexto do Spring Boot, é implementado usando controladores MVC (Model-View-Controller). Os controladores recebem solicitações HTTP, processam essas solicitações, interagem com a camada de serviço para realizar operações de negócios e retornam uma resposta adequada para o cliente. Os controladores podem ser anotados com @RestController para expor endpoints RESTful ou @Controller para páginas da web.
|
|
A camada de apresentação lida com a interação do usuário e a exibição dos dados. No contexto do Spring Boot, é implementado usando controladores MVC (Model-View-Controller). Os controladores recebem solicitações HTTP, processam essas solicitações, interagem com a camada de serviço para realizar operações de negócios e retornam uma resposta adequada para o cliente. Os controladores podem ser anotados com @RestController para expor endpoints RESTful ou @Controller para páginas da web.
|
|
|
|
|
|
Camada de Lógica de Negócios: A camada de lógica de negócios contém a lógica de aplicação que implementa as regras de negócios do aplicativo. No Spring Boot, é implementado usando serviços, que são componentes que encapsulam a lógica de negócios e são injetados nos controladores ou outros serviços conforme necessário. Os serviços podem ser anotados com @Service para indicar que são beans de serviço gerenciados pelo Spring.
|
|
|
|
|
|
Camada de Lógica de Negócios:
|
|
Camada de Acesso a Dados: A camada de acesso a dados lida com a persistência e recuperação dos dados do aplicativo em um banco de dados ou outro sistema de armazenamento. No Spring Boot, é implementado usando repositórios, que são interfaces que estendem interfaces fornecidas pelo Spring. Esses repositórios fornecem métodos para realizar operações de CRUD (Create, Read, Update, Delete) no banco de dados de forma fácil e eficiente.
|
|
A camada de lógica de negócios contém a lógica de aplicação que implementa as regras de negócios do aplicativo. No Spring Boot, é implementado usando serviços, que são componentes que encapsulam a lógica de negócios e são injetados nos controladores ou outros serviços conforme necessário. Os serviços podem ser anotados com @Service para indicar que são beans de serviço gerenciados pelo Spring.
|
|
|
|
|
|
|
|
Camada de Acesso a Dados:
|
|
![blockchain](uploads/3657b987670e57cbcee69fd5e921f194/blockchain.drawio.png) |
|
A camada de acesso a dados lida com a persistência e recuperação dos dados do aplicativo em um banco de dados ou outro sistema de armazenamento. No Spring Boot, é implementado usando repositórios, que são interfaces que estendem interfaces fornecidas pelo Spring. Esses repositórios fornecem métodos para realizar operações de CRUD (Create, Read, Update, Delete) no banco de dados de forma fácil e eficiente.![blockchain.drawio](uploads/910ab7f54819e8428fa77b553f8cd7d3/blockchain.drawio.png) |
|
\ No newline at end of file |
|
\ No newline at end of file |
|
|