Mind map
Arquitetura limpa
Map content
Arquitetura limpa
Definições
- Design = arquitetura
- Objetivo
- Minimizar recursos humanos na manutenção
Valores
- Comportamento
- Urgente
- Não importante
- Estrutura
- Não urgente
- Importante
- Comportamento
Paradigmas
- Programação estruturada
- Programação orientada a objetos
- Programação funcional
- Falam sobre o que não fazer, não sobre o que fazer
Princípios de design
- Objetivos
- Tolerância a mudanças
- Fácil de entender
- Base para reutilização
- SOLID
- SRP
- OCP
- LSP
- ISP
- DIP
- Objetivos
Componentes
- Unidades de implantação
- Coesão
- REP
- A granularidade do reuso é a granularidade do release
- CRP
- Não force clientes a dependerem de coisas que eles não precisam
- CCP
- Reúna componentes que mudam pela mesma razão
- REP
- Acoplamento
- Problema das dependências externas
- Builds semanais
- Gestão de releases
- Grafo de ciclo de dependências
- DAG - Grafo aciclico de dependências
- Quebrando o ciclo
- Aplicar DIP
- Novo componente comum
- Design top download - não funciona
- Princípio das dependências estáveis
- Estabilidade
- Quantidade de trabalho envolvido na mudança
- Números de dependências externas
- I = Fanout /(Fanin+Fanout)
- Nem todos os componentes devem ser estáveis
- Componentes instáveis no topo
- Estabilidade
- Princípio de abstrações estáveis
- Quanto mais abstrato, mais estável deve ser
- Zona da dor
- Zona da inutilidade
- Sequência principal
- Problema das dependências externas
Arquitetura
- Máximo de opções abertas pelo maior tempo possível
- Ciclo de vida
- Desenvolvimento
- Implantação
- Operação
- Manutenção
- Regras de negócio não devem depender de serviços externos
Independência
- Como equilibrar todas as preocupações?
- Desacoplar o que muda por razões diferentes
- Separar por casos de uso
- Microserviços
- Duplicação de código
- Real
- Acidental
- Modos de desacoplamento
- Código fonte (monolito)
- Implantação (processo)
- (Micro) serviços
- Como equilibrar todas as preocupações?
Limites
- Arquitetura plugin
- Separe o que importante do que não importa
- "GUI e DB não são importantes"
- Estratégias
- Código fonte
- Processos
- Threads
- Rede
- Sistemas são declarações de políticas
- Mais longe de E/S, maior o nivel
- Arquitetura plugin
Regras de negócio
- Regras cruciais que geram dinheiro
- Devem ficar isoladas
- Entidades
- Opera os dados de Negócios
- Casos de uso
- Maneira como um sistema é usado
- Regras cruciais que geram dinheiro
Ponderações
- Primeiro o desenho da casa, depois os tijolos
- Framework são ferramentas
- Casos de uso devem ser testáveis de forma independente do resto
- Observar a evolução da arquitetura e a necessidade de limites
Modelos
- Preocupações
- Separação das camadas
- Regra da dependência
- Objeto humble
- Facilmente testáveis
- Dificilmente testáveis
- Limites parciais
- Código separado em um mesmo componente
- Padrão strategy
- Padrão facade
- Preocupações
Componente main
- Mais sujo
- Nível mais baixo
- Plugin para a aplicação
Arquitetura de serviços
- Falácia do desacoplamento
- Falácia da independência de implantação e desenvolvimento
- Dependa de componentes abstratos em implementações concretas
Testes
- Testes são rígidos e concretos
- Desacoplar testes em componente separado
- Testes acoplados tornam a API rígida e difícil de mudar
Embarcados
- Mesmo cuidados para evitar acoplamento entre firmware e hardware
- Teste de APP-TIDÃO
- Faça funcionar
- Refatorar
- Otimizar
Bancos de dados
- Estruturas de dados são importantes
- Tecnologia de armazenamento não
- BD deve ser isolado, porque é um detalhe
Web
- Web foi uma de muitas mudanças
- Mudanças de GUI são parte do processo
- "Gênios do marketing"
- GUI deve ser desacoplada das regras de negócio
Framework
- Não case com o framework
Information
- Description
- Mind Map on Arquitetura limpa, created by Guilherme Gonçalves on 30/01/2022.
- Created by
- Guilherme Gonçalves
- Views
- 3
- Rating