Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • appoio-wiki appoio-wiki
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • APPOIO
  • appoio-wikiappoio-wiki
  • Wiki
  • arquitetura

Last edited by Bianca Camargo Machado Nov 27, 2020
Page history
This is an old version of this page. You can view the most recent version or browse the history.

arquitetura

Home Sprints Requisitos Arquitetura Configuração Mockups Banco de Dados Instalação Deploy Rotas Gerência Time Padronização Git Workflow Qualidade

Arquitetura

Acesso rápido

  • Diagrama de deploy
  • Backend
    • Rotas
    • Deploy
  • Frontend
  • Processo de desenvolvimento

Diagrama de Deploy

deployment_diagram


Backend

Definições de linguagem e bibliotecas

Pontos-chave:

  • Questionário inicial para o time;
  • Conhecimento geral do time em Javascript;
  • Express mais simples que Spring.

Escolhas:

  • Linguagem: Javascript;
  • Frameworks: Express e Node.

Antes de começar o desenvolvimento do projeto foi feito um questionário para o time para quantificar o conhecimento dos alunos em diversas tecnologias, frameworks e bancos de dados para determinar quais as tecnologias que seriam mais fáceis de acordo com o conhecimento geral da equipe.

Foi definido a linguagem Javascript para o desenvolvimento do backend devido a proximidade dos integrantes do time com ela e sua facilidade de uso, muitos já haviam estudado Java por causa das cadeiras do curso, mas não tinham conhecimento de Spring, um framework que possui uma curva de aprendizado alta se comparado com o Express que é um micro framework que foi incrementado com extensões para cumprir com as funcionalidades necessárias para o projeto.

Módulos do Sistema:

  • Routes: Arquivos possuem o nome do serviço que será disponibilizado, como por exemplo, serviços referentes ao tutorial ficam no arquivo "TutorialRoute". Nele ficam registrados os endpointes da aplicação, ou seja, os caminhos após o endereço do servidor como /user/login e qual o tipo de chamada o endereço irá receber GET, POST, PUT ou DELETE

  • Controllers: Aqui estão os arquivos que irão processar o que foi recebido pelos routes e chamar os métodos adequados dos services retornando uma resposta válida para o routes, normalmente em formato JSON

  • Services: Nesta pasta ficam os arquivos que validam nossas regras de negócio, como a senha válida do usuário ou se ele é administrador, utilizando o repository para fornecer os dados do banco e realizar as validações

  • Repository: Todos os arquivos aqui fazem as chamadas ao banco de dados através dos models passando os parâmetros adequados para as funções desejadas, como as colunas que se deseja dar SELECT, por exemplo.

  • Models: Aqui estão todas as representações das tabelas do nosso banco de dados, mas de uma forma com que possamos trabalhar facilmente no código: classes. Os dados são recuperados do banco e convertidos para as classes criadas

Diagrama do Sistema:

Maneira que as camadas do sistema se comunicam. Um fluxo de dados que começa com a requisição do usuário na camada Route, segue para Controller onde são chamados os métodos de Service, que por sua vez validam os dados e encaminham para Repository que utilizam os Model para fazer ações no banco como SELECT, INSERT, UPDATE e DELETE.

Seguindo um fluxo que percorre a estrutura: Route > Controller > Service > Repository > Model.

estrutura geral


Diagramas de Sequencia

Usuário

diagrama usuario

Rotas

As rotas da API foram documentadas usando a ferramenta Postman. O link para a documentação pública das rotas no Postman e instruções de uso podem ser encontrados na página 📄 Rotas.

Deploy

Instruções sobre como colocar a API no ar podem ser encontradas na página 📄 Deploy.

Frontend

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) e a TabNavigator (navegação por blocos com funcionalidades que diferem umas das outras, possui uma barra com suas opções na parte inferior da aplicação)
  • Utils: 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.

Arquitetura Básica do Frontend

A utilização de React Native permite a o desenvolvimento da aplicação inteira em JavaScript. Essa aplicação, ao invés de ser convertida para os códigos nativos do iOS e Android, é processada pelo dispositivo, assim gerando uma interface totalmente nativa para ambos os Sistemas Operacionais.

arquitetura frontend

Os formato .ipa é utilizado para o sistema operacional iOS e o .apk para o Android. Para mais informações de como gerar a aplicação e realizar o build, é possível verificar a seção Compilação e Instalação.

Diagrama do Sistema

Maneira que as camadas do sistema se comunicam. Um conjunto de componentes (implementados de forma genérica) compõe uma tela, que é chamada pelas rotas para compor o fluxo de telas da aplicação.

diagrama sistema

Diagrama de Componentes

O diagrama de componentes da aplicação apresenta a maneira que as classes do sistema estão organizadas, levando em consideração as interfaces, dependências e componentes criados.

O diagrama abaixo foi desenvolvido pensando em facilitar o entendimento do frontend da aplicação. Durante o desenvolvimento do projeto esse diagrama será modificado para englobar funcionalidades do backend, especificações de banco de dados e outros serviços utilizados.

diagrama sistema

Processo de desenvolvimento

Durante o desenvolvimento do projeto, foram adotados alguns padrões com relação ao código e ao trabalho com o Git. Há duas páginas específicas tratando desses assuntos:

  • 📄 Padronização
  • 📄 Git Workflow

Pendencias

  • Segurança
  • Objects – Backend API
  • Methods – Backend API
  • Arquitetura Não Funcional
  • Análise dos principios SOLID
Clone repository
  • Rotas
  • arquitetura
  • banco_dados
  • configuracao
  • deploy
  • escopo
  • git_workflow
  • gp
  • Home
  • instalacao
  • mockups
  • padronizacao
  • processo
  • qualidade