Home | Escopo e Cronograma | Processo | Design/Mockups | Configuração | Arquitetura | Código | BD | Qualidade | Utilização |
---|
Arquitetura do Sistema
Sumário
Deploy
Recipes API
TBD
Diagrama de Deploy
Backend
Definições de Tecnologias
Escolhas:
- Linguagem: Java;
- Frameworks: SpringBoot
- Ferramentas: Lombok, Junit e Cucumber.
Justificativa:
A escolha pelo Java no backend foi feita pelo grande numero de pessoas que já tem um conhecimento intermediário na linguagem desta forma tendo uma curva de aprendizado menor. Também existe muito material sobre linguagem disponível gratuitamente na internet.
Hoje o SpringBoot é bastante popular no desenvolvimento de REST API e existe uma vasta documentação e material para estudo gratuito na internet.
Lombok faz o uso de annotations para minimizar a repetição de código.
Junit ferramente para execução de testes.
Cucumber é uma ferramente para integrar as historia de usuário aos testes utilizando do conceito de Behavior-Driven Development (BDD)
Para o sistema foi utilizado a arquitetura de camadas onde existem as seguintes camadas Módulos do Sistema
Entity são uma representação das tabelas do banco de dados e suas propriedades e conexões.
Repository são interfaces que herdam os metodos de crud(ações basica de SQL) do JPA.
Service classes com toda a logica de negocio e necessária para o funcionamento.
Controller endpoints da aplicação onde o rest api é implementado. E onde todo o fluxo dos dados é controlado
application.properties é o arquivo de configuração do springboot caso alguma variavel de ambiente precise ser alterada.
Diagrama de Fluxo
TBD
Frontend
Definições de Tecnologias
Escolhas:
- Linguagem: JavaScript;
- Frameworks: React e React Native;
- Ferramentas: Prettier, ESLint, Expo e NGIX.
Justificativa:
React e React Native possuem sintaxe similiar, logo a curva de aprendizado não será grande. Deixar em repositórios separados faz com que cada responsabilidade esteja em um lugar específico sem causar impacto em ambos.
Expo é uma ferramenta utilizada no desenvolvimento, garantindo uma maneira simples de acessar API's nativas sem precisar instalar dependências. Muito utilizado no desenvolvimento mobile, apresentando mudanças em tempo real relizadas no código.
Prettier e ESLint são ferramentas voltadas para a padronização de código. A primeira aplica formatação e a segunda identifica padrões e garante o uso de boas práticas.
NGIX é um servidor leve de HTTP que será usado para disponibilizar nosso site estático.
Módulos do Sistema
- Components: Onde estarão localizados os componentes visuais encontrados em diferentes páginas da aplicação. Os componentes em sua maioria são genéricos e podem ser utilizado em mais de uma parte do sistema.
- Screen: Onde estarão localizadas as telas da aplicação. Cada tela é composta de diversos componentes que quando juntos apresentam funcionalidades da aplicação
-
Routes: A camada de rotas da aplicação, utilizando o padrão de arquitetura Coordinator, irá realizar a navegação entre as telas da aplicação, tendo conhecimento do fluxo e como devem se comportar. Possui a
StackNavigator
(navegação em telas empilhadas que seguem um determinado fluxo). - Constants: Classes que podem ser reaproveitadas na aplicação, com funcionalidades de formatação de texto, modelos de entrada, acesso a constantes, etc...
- Assets: Pasta com as imagens que são utilizadas na aplicação uma ou mais vezes.
Diagramas de Componentes
TBD