17
Visualize a arquitetura do seu sistema com C4 Model
website: https://c4model.com/
author: Simon Brown
Inspirado em UML e 4+1 Model, foi criado e melhorado ao longo do tempo para ajudar a visualizar a arquitetura de sistemas e aproximar o modelo do sistema com o código.
- Foco nas estruturas estáticas (componentes)
- Abstrações e não notações (mapas)
- Engenharia e não arte, não use visio use plantuml
![](https://res.cloudinary.com/practicaldev/image/fetch/s--nQWUVj7n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ea463zck8mg7arckxjyh.png)
- Desculpas
- "Nem todos sabem UML no time"
- "Vou parecer velho"
- "Ferramentars ruins"
- "Muito detalhado"
- "É uma bela forma de perder tempo"
- "Agile não precisa documentar"
- "O valor ta na conversa", daí a conversa é só sobre ficar até mais tarde...
- "O valor tá no código", daí vc olha o código e...
Com a chegada das metodologias ágeis as pessoas tem buscado simplificar e usar formas mais simples de modelagem.
- Use um quadro branco!
- O problema é que faltou tempo e/ou ferramenta adequada!
- Problemas dos diagramas atuais
- Tamanhos, cores diferentes
- Falta de legenda e descrição
- Não padronização
- Abreviações
- Falta de títulos
![](https://res.cloudinary.com/practicaldev/image/fetch/s--N6fo4OyF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vi5hbf2uw6tqmaf6my9y.png)
- Troca de pessoas, rotatividade = informação pro ralo
- Visualização!
- Peça para um arquiteto desenhar a sua casa, o que terá? Sim, a planta baixa da sua casa.
- Você, uma pessoa que não é formada em arquitetura conseguirá entender todo contexto, principais idéias da planta. Consegue se localizar e localizar portas, janelas etc.
![](https://res.cloudinary.com/practicaldev/image/fetch/s--ikpcYFl8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vpxzfj7jdma1igeks6hq.png)
"Boa comunicação = times melhores"
![](https://res.cloudinary.com/practicaldev/image/fetch/s--snq4r3FV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mvjsdodw0wmb7p5ixqy0.png)
- Temos que ter em mente que o público de nossos diagramas pode ser amplo, desde um presidente e um diretor da companhia até seu colega que acabou de entrar na firma.
![](https://res.cloudinary.com/practicaldev/image/fetch/s--n5TGIxwy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dkogzpcvem2bpe70vjra.png)
Olhe o mapa da sua cidade ou imagine ele.
O que vai notar?
- Igrejas
- Hospitais
- Ferrovias
- Estradas
- Estações de metrô
- Museus
Olhe o mapa de outra cidade e perceba como as mesmas abstrações estarão presentes, apenas com notações diferentes (fontes, linhas cores, formatos)
![](https://res.cloudinary.com/practicaldev/image/fetch/s--YqU5bMe3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a4ev6yesik1xcleik5m9.png)
![](https://res.cloudinary.com/practicaldev/image/fetch/s--CQtuneiq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9pduu9hug5luqas60fr0.png)
Contamos uma história linear de C1 até C4 , ou seja a história continua ao dar o zoom.
O C4 Model é uma estrutura estática, uma vez definido pode-se por exemplo criar outras documentações mais específicas caso necessário, como: diagramas de sequência, ER, BP, etc.
![](https://res.cloudinary.com/practicaldev/image/fetch/s--sIXq7Rsz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/daimx9ueg0ddsa3wvaoj.png)
C1 - Contexto | Overview | Continente
C2 - Containers | Overview | Estado
C3 - Componentes | Zoom | Cidade
C4 - Código | Detalhes | Foto da rua
![](https://res.cloudinary.com/practicaldev/image/fetch/s--2z5heFYw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kndlfm80ldn2c0v4i89f.png)
!!! C4 não é recomendado devido ao detalhamento, pode ser usado por exemplo com uma ferramenta que gere essa doc
- Use títulos!
- Coloque descrições do que o sistema faz!
![](https://res.cloudinary.com/practicaldev/image/fetch/s--aLvwXX6p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d0chois3jlrm622ps7sh.png)
- Se seu diagrama tem mais de ~20 elementos já pode ser melhor dividir nas camadas do C4 para melhor entendimento
![](https://res.cloudinary.com/practicaldev/image/fetch/s--w1Tq6pOZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l2qy61qcxddu10hxxao3.png)
17