Home | Escopo e Cronograma | Processo | Design/Mockups | Configuração | Arquitetura | Código | BD | Qualidade | Utilização | Contratos |
---|
Descrição
Esta seção aborda a arquitetura adotada e o esquema de deploy.
Diagrama de Deploy
Backend
Framework
Linguagem
Gerenciador de Dependências
Testes
Arquitetura
Hexagonal (Ports and Adapters)
A arquitetura hexagonal, também conhecida como "Ports and Adapters" ou "Clean Architecture", é um padrão de projeto arquitetônico que visa promover a modularidade, a separação de preocupações e a independência de frameworks externos em um sistema de software. Assim como o MVC, a arquitetura hexagonal oferece uma estrutura organizada para desenvolver aplicativos de forma eficiente e manutenível.
Componentes da Arquitetura Hexagonal
Domínio
Na arquitetura hexagonal, o domínio é o cerne do sistema. Ele engloba as regras de negócios, entidades e objetos de valor que definem a lógica central do aplicativo. O domínio é independente de qualquer estrutura externa e não conhece detalhes de implementação fora de suas fronteiras.
Aplicação
A camada de aplicação é responsável por orquestrar os casos de uso do sistema. Ela atua como intermediária entre as portas de entrada/saída e o domínio. A camada de aplicação cuida da coordenação dos fluxos de trabalho, das transações e de outras operações que não fazem parte do núcleo da lógica de negócios.
Adaptadores (Adapters)
Os adaptadores são a ponte entre o domínio e as tecnologias externas. Eles permitem que o domínio interaja com o mundo exterior sem conhecer os detalhes técnicos específicos
Benefícios da Arquitetura Hexagonal
Separação de Preocupações:
A arquitetura hexagonal promove a separação clara entre o núcleo da lógica de negócios e as partes externas, facilitando a manutenção e evolução do sistema.
Testabilidade:
A separação de camadas facilita a realização de testes unitários e de integração, tornando o sistema mais robusto e confiável.
Independência Tecnológica:
Mudanças em tecnologias externas têm menos impacto no núcleo do sistema, permitindo a adoção de novas ferramentas sem grandes reestruturações.
Flexibilidade:
A estrutura da arquitetura hexagonal permite que você adapte o sistema às mudanças de requisitos de forma mais ágil.
Frontend
Framework
Linguagem
Gerenciador de Dependências
Arquitetura
(Estrutura de Pastas)
├── App.tsx
├── assets
├── src
│ ├── api
│ │ └── hooks
│ ├── components
│ ├── constants
│ │ └── apiURL.ts
│ ├── redux
│ ├── routes
│ ├── screens
│ └── utils
├── babel.config.js
├── package.json
└── README.md
Componentes da Estrutura
api
Contém módulos relacionados à comunicação com APIs externas. Dentro dela, há uma subpasta chamada hooks, que pode conter React Hooks personalizados relacionados a chamadas de API.
components
Aqui você coloca os componentes React reutilizáveis que podem ser usados em várias partes do seu aplicativo.
- Exemplo: Pode incluir botões, barras de navegação, modais e outros componentes que podem ser utilizados em diferentes partes do aplicativo.
constants
Contém constantes usadas em várias partes do aplicativo. No caso específico, há um arquivo chamado apiURL.ts, que este é o local onde a URL da API é definida como uma constante.
redux
Usado para gerenciar o estado global do aplicativo, é aqui onde é organizada os reducers, actions, etc.
routes
Contém configurações e lógica relacionada a navegação no aplicativo, usando a biblioteca de navegação do React Navigation (@react-navigation/native).
screens
Armazena componentes React que representam diferentes telas do aplicativo. Cada tela tem sua própria pasta dentro de screens, contendo o componente principal da tela, bem como quaisquer componentes relacionados a essa tela.
Reutilização de Componentes
A reutilização de componentes é uma prática essencial para construir aplicativos mais eficientes, escaláveis e fáceis de manter. Isso contribui para a consistência, a eficiência do desenvolvimento e a colaboração eficaz em equipes de desenvolvimento de software.
Definição
Reutilização de código em que componentes específicos são projetados para serem utilizados em diferentes partes de um aplicativo ou em diferentes projetos.
Benefícios
Eficiência no Desenvolvimento:
Reduz a duplicação de código, economizando tempo e esforço na criação de componentes similares para diferentes partes do aplicativo.
Manutenção Simplificada:
Alterações em um componente refletem automaticamente em todas as instâncias em que ele é usado, facilitando a manutenção e reduzindo o risco de bugs.
Consistência Visual e de Comportamento:
Componentes reutilizáveis garantem consistência no design e no comportamento do aplicativo, proporcionando uma experiência mais uniforme aos usuários.
Escalabilidade:
Facilita a escalabilidade do projeto, pois novas funcionalidades podem ser implementadas usando componentes existentes, evitando a necessidade de criar constantemente novos elementos.
Colaboração Eficiente:
Melhora a colaboração entre membros da equipe, pois o código é mais modular e compreensível, permitindo que diferentes desenvolvedores trabalhem em diferentes partes do aplicativo sem interferências significativas.
Exemplos de Reutilização
Componentes UI:
Botões, barras de navegação, caixas de diálogo.
Lógica de Negócios:
Funções utilitárias, validações, manipulação de datas.
Integrações:
Módulos para interação com APIs, serviços externos.