Visão Geral do Modelo C4
O modelo C4 é uma técnica de notação gráfica enxuta para modelar a arquitetura de sistemas de software. Criado por Simon Brown, ele oferece uma forma de comunicar a arquitetura de software em diferentes níveis de abstração.
Por que C4?
Diagramas de arquitetura tradicionais frequentemente sofrem de:
- Notação inconsistente: Diferentes equipes usam diferentes símbolos
- Nível de detalhe inadequado: Ou muito abstrato ou muito detalhado
- Documentação desatualizada: Diagramas não refletem a realidade
O modelo C4 resolve essas questões oferecendo:
- Níveis de abstração padronizados: Quatro níveis claros, do alto ao baixo nível
- Notação simples: Fácil de entender para públicos técnicos e não técnicos
- Navegação hierárquica: Aproxime para mais detalhes, afaste para contexto
Os Quatro Níveis
Nível 1: Contexto do Sistema
O diagrama de Contexto do Sistema mostra seu sistema como uma caixa no centro, cercado por seus usuários e os outros sistemas com os quais ele interage.
Objetivo: Mostrar o panorama geral — como seu sistema se encaixa no mundo
Público: Todos (técnicos e não técnicos)
Contém:
- Seu sistema de software (central)
- Usuários/personas que usam o sistema
- Sistemas externos dos quais seu sistema depende
Nível 2: Container
O diagrama de Container amplia seu sistema para mostrar os blocos de construção técnicos de alto nível.
Objetivo: Mostrar as principais escolhas tecnológicas e como as responsabilidades são distribuídas
Público: Pessoas técnicas dentro e fora da equipe de desenvolvimento
Contém:
- Containers (aplicações, armazenamentos de dados, etc.)
- Relacionamentos entre containers
- Conexões com sistemas externos
Nível 3: Componente
O diagrama de Componente amplia um container para mostrar seus componentes internos.
Objetivo: Mostrar como um container é composto por componentes e suas responsabilidades
Público: Arquitetos de software e desenvolvedores
Contém:
- Componentes dentro de um container
- Relacionamentos entre componentes
- Escolhas de tecnologia/implementação
Nível 4: Código
O diagrama de Código (opcional) mostra como um componente é implementado.
Objetivo: Mostrar detalhes no nível de código para componentes complexos ou críticos
Público: Desenvolvedores
Contém:
- Classes, interfaces, funções
- Relacionamentos de herança e implementação
- Padrões de design
C4 no Archyl
O Archyl implementa o modelo C4 com estas funcionalidades:
Navegação
- Duplo clique em qualquer elemento para ampliar para o próximo nível
- Use breadcrumbs para navegar de volta
- Atalhos de teclado para navegação rápida (← → ↑ ↓)
Tipos de Elementos
Cada nível tem seus próprios tipos de elementos:
| Nível | Tipos de Elementos |
|---|---|
| Contexto do Sistema | Sistema, Sistema Externo, Pessoa |
| Container | Container, Container Externo |
| Componente | Componente |
| Código | Classe, Interface, Função |
Relacionamentos
Relacionamentos podem ser criados entre elementos em qualquer nível:
- Arraste de um elemento para outro
- Adicione rótulos descrevendo a interação
- Especifique a tecnologia utilizada
Estilização
Personalize a aparência dos seus diagramas:
- Cores para diferentes tipos de elementos
- Ícones personalizados
- Agrupamento com overlays
Boas Práticas
Comece pelo Topo
Sempre comece com o diagrama de Contexto do Sistema. Ele força você a pensar sobre:
- Quem usa seu sistema?
- De quais sistemas externos você depende?
- Qual é o escopo do seu sistema?
Mantenha a Simplicidade
Cada diagrama deve caber em uma única página/tela. Se não couber:
- Divida em múltiplos diagramas
- Reduza o nível de detalhe
- Use o próximo nível abaixo para mais detalhes
Use Nomenclatura Consistente
- Use nomes claros e descritivos
- Siga as convenções de nomenclatura da sua equipe
- Evite abreviações que não sejam universalmente compreendidas
Documente os Relacionamentos
Relacionamentos são tão importantes quanto os elementos:
- Sempre adicione rótulos descrevendo a interação
- Inclua a tecnologia/protocolo quando relevante
- Mostre a direção da comunicação
Próximos Passos
- Contexto do Sistema - Aprofundamento no Nível 1
- Diagramas de Container - Aprofundamento no Nível 2
- Diagramas de Componente - Aprofundamento no Nível 3
- Relacionamentos - Aprenda a conectar elementos