O modelo C4, desenvolvido por Simon Brown, é uma abordagem poderosa e hierárquica para visualizar arquitetura de software. Utiliza quatro níveis de abstração para fornecer o nível adequado de detalhe para diferentes públicos, desde stakeholders empresariais até desenvolvedores. Isso o torna ideal para criar documentação clara, sustentável e voltada para o público-alvo.


Este guia abrangente baseia-se no bem conhecido estudo de caso de Sistema de Banco Online da Big Bank plc — um exemplo fictício, mas realista, de construção de uma plataforma de banco online para clientes pessoais visualizarem contas e efetuarem pagamentos. O estudo de caso demonstra como aplicar o modelo C4 de forma progressiva, utilizando PlantUML para “arquitetura como código”. Também incorpora ferramentas modernas como Visual Paradigm’s Studio C4 PlantUML com IA (lançado no final de 2025) para acelerar a criação e manutenção.
Visão geral do modelo C4
O modelo inclui quatro níveis:

-
Nível 1: Contexto do Sistema — A visão geral: o sistema, os usuários e as dependências externas.
-
Nível 2: Contêineres — Unidades principais implantáveis (aplicações, serviços, bancos de dados) e escolhas tecnológicas de alto nível.
-
Nível 3: Componentes — Blocos lógicos internos dentro de um contêiner.
-
Nível 4: Código — Detalhes de baixo nível opcionais (por exemplo, classes); frequentemente ignorados em favor de referências ao código-fonte.
Visões complementares adicionais incluem diagramas dinâmicos (fluxos em tempo de execução) e diagramas de implantação.
Aplicação do modelo C4: Estudo de caso do Sistema de Banco Online da Big Bank plc
Nível 1: Diagrama de Contexto do Sistema
Propósito: Fornecer uma visão geral de alto nível para stakeholders empresariais e públicos não técnicos, mostrando como o Sistema de Banco Online se encaixa no ambiente mais amplo sem jargões técnicos.
Elementos principais:
-
Pessoa: Cliente de Banco Pessoal — Um cliente com uma ou mais contas bancárias pessoais.
-
Sistema de Software: Sistema de Banco Online — Permite aos clientes visualizar informações da conta e efetuar pagamentos.
-
Sistemas Externos:
-
Sistema de Banco Central (mainframe existente) — Gerencia dados dos clientes, contas e transações.
-
Sistema de E-mail (por exemplo, AWS SES) — Envia confirmações e notificações.
-
Relacionamentos:
-
Cliente usa o Sistema de Banco Online.
-
Sistema de Banco Online usa o Sistema de Banco Central para dados e transações.
-
Sistema de Banco Online envia e-mail por meio de o Sistema de E-mail.
Este nível mantém as coisas simples e explícitas sobre escopo e integrações.
Exemplo de PlantUML (adaptado do estudo de caso):
@startuml
!include https://static.visual-paradigm.com/plantuml-stdlib/C4-PlantUML/master/C4_Context.puml
LAYOUT_TOP_DOWN()
LAYOUT_WITH_LEGEND()
título Diagrama de Contexto do Sistema (Nível 1) para o Sistema de Banco Online
Pessoa(cliente, "Cliente de Banco Pessoal", "Um cliente com uma ou mais contas bancárias pessoais.")
Sistema(sistema_banco_online, "Sistema de Banco Online", "Permite aos clientes visualizar contas e efetuar pagamentos.")
Sistema(sistema_banco_central, "Sistema de Banco Central", "Mainframe existente que gerencia dados dos clientes, contas e transações.")
Sistema_Ext(sistema_email, "Sistema de E-mail", "Serviço Simples de E-mail da Amazon Web Services (AWS SES) para envio de confirmações.")
Rel(cliente, sistema_banco_online, "Usa")
Rel(sistema_banco_online, sistema_banco_central, "Usa")
Rel(sistema_banco_online, sistema_email, "Envia e-mail por meio de")
@enduml
Nível 2: Diagrama de Container
Propósito: Ampliar para mostrar os principais blocos construtivos (containers) e escolhas tecnológicas, voltado para arquitetos, desenvolvedores e equipes DevOps.
Elementos Principais (dentro da fronteira do Sistema de Banco Online):
-
Aplicativo de Página Única (SPA) — JavaScript + Angular, interface completa no navegador web.
-
Aplicativo Móvel — iOS/Android com React Native (ou similar), funcionalidade limitada.
-
Aplicação da API — Java + Spring Boot, API JSON/HTTPS que atende ambos os front-ends.
-
Banco de Dados — PostgreSQL, armazena dados de sessão, preferências e resumos em cache (os dados principais permanecem na mainframe).
Externo — Sistema de Banco Central e Sistema de E-mail.
Relacionamentos:
-
O cliente usa a SPA e o aplicativo móvel por meio de HTTPS.
-
A SPA e o aplicativo móvel chamam a Aplicação da API (JSON/HTTPS).
-
A Aplicação da API lê/escrve no Banco de Dados (JDBC/SQL).
-
A Aplicação da API interage com o Sistema de Banco Central (JSON/HTTPS) e o Sistema de E-mail (HTTPS).
Este diagrama atua como a “única fonte de verdade” para decisões tecnológicas.
Exemplo do PlantUML (usa sprites para ícones):
@startuml
!include https://static.visual-paradigm.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml
!include https://raw.githubusercontent.com/tupadr3/plantuml-icon-font-sprites/master/devicons/angular.puml
!include https://raw.githubusercontent.com/tupadr3/plantuml-icon-font-sprites/master/devicons/java.puml
!include https://raw.githubusercontent.com/tupadr3/plantuml-icon-font-sprites/master/devicons/postgresql.puml
LAYOUT_TOP_DOWN()
LAYOUT_WITH_LEGEND()
title Diagrama de Contêiner C4 para o Sistema de Banco Online
Person(customer, "Cliente de Banco Pessoal", "Um cliente com uma ou mais contas bancárias pessoais.")
System_Boundary(internet_banking_system, "Sistema de Banco Online") {
Container(spa, "Aplicação de Página Única", "JavaScript + Angular", "Interface completa de banco online", $sprite="angular")
Container(mobile_app, "Aplicativo Móvel", "iOS/Android (React Native)", "Funcionalidade limitada", $sprite="react")
Container(api_app, "Aplicação da API", "Java + Spring Boot", "API JSON/HTTPS", $sprite="java")
ContainerDb(database, "Banco de Dados", "PostgreSQL", "Dados de sessão, preferências, resumos em cache", $sprite="postgresql")
}
System(core_banking_system, "Sistema de Banco Central", "Mainframe existente...")
System_Ext(email_system, "Sistema de E-mail", "AWS SES...")
Rel(customer, spa, "Usa", "HTTPS")
Rel(customer, mobile_app, "Usa", "HTTPS")
Rel(spa, api_app, "Chama", "JSON/HTTPS")
Rel(mobile_app, api_app, "Chama", "JSON/HTTPS")
Rel(api_app, database, "Lê e escreve em", "JDBC/SQL")
Rel(api_app, core_banking_system, "Consulta / Atualiza", "JSON/HTTPS")
Rel(api_app, email_system, "Envia e-mail por meio de", "HTTPS")
@enduml
Nível 3: Diagrama de Componentes
Propósito: Detalha a estrutura interna de um contêiner-chave (aqui, a Aplicação da API) para equipes de desenvolvimento.
Componentes Principais (dentro da Aplicação da API):
-
Controlador de Contas (Spring MVC) — Fornece resumos e saldos.
-
Controlador de Autenticação (Spring MVC) — Login, sessões, tokens.
-
Controlador de Redefinição de Senha (Spring MVC) — Redefinição de senha por e-mail.
-
Componente de Segurança (Spring Bean) — Autenticação, JWT, hash.
-
Componente de Gestão de Contas (Spring Bean) — Orquestra chamadas ao Sistema de Banco Central.
-
Componente de Notificação por E-mail (Spring Bean) — Envia e-mails.
Interações — Os controladores usam a Segurança; a Gestão de Contas usa o Banco Central; o E-mail usa o Banco de Dados; os front-ends chamam os controladores.
Exemplo do PlantUML:
@startuml
!include https://static.visual-paradigm.com/plantuml-stdlib/C4-PlantUML/master/C4_Component.puml
LAYOUT_WITH_LEGEND()
title Diagrama de Componentes para o Sistema de Banco na Internet - Aplicação da API
Container(spa, "Aplicação de Página Única", "javascript e angular", "...")
Container(ma, "Aplicativo Móvel", "...", "...")
ContainerDb(db, "Banco de Dados", "...", "...")
System_Ext(mbs, "Sistema de Banco Mainframe", "...")
Container_Boundary(api, "Aplicação da API") {
Component(accounts, "Controlador de Contas", "Spring MVC", "...")
Component(auth, "Controlador de Autenticação", "Spring MVC", "...")
Component(reset, "Controlador de Redefinição de Senha", "Spring MVC", "...")
Component(security, "Componente de Segurança", "Spring Bean", "...")
Component(accountmgmt, "Componente de Gestão de Contas", "Spring Bean", "...")
Component(email, "Componente de Notificação por E-mail", "Spring Bean", "...")
Rel(accounts, security, "Usa")
Rel(auth, security, "Usa")
Rel(reset, security, "Usa")
Rel(accountmgmt, mbs, "Usa", "XML/HTTPS")
Rel(email, db, "Lê", "JDBC")
}
Rel(spa, accounts, "Usa", "JSON/HTTPS")
Rel(spa, auth, "Usa", "JSON/HTTPS")
Rel(spa, reset, "Usa", "JSON/HTTPS")
Rel(ma, accounts, "Usa", "JSON/HTTPS")
Rel(ma, auth, "Usa", "JSON/HTTPS")
Rel(ma, reset, "Usa", "JSON/HTTPS")
@enduml
Nível 4: Diagrama de Código (Opcional)
Propósito: Mostrar detalhes ao nível de classe para áreas específicas (por exemplo, Autenticação).
Freqüentemente omitido — aponte para o código-fonte em vez disso.
Exemplo — Diagrama de classe UML para Autenticação:
-
AuthenticationController usa JwtTokenProvider e UserRepository.
Exemplo do PlantUML:

@startuml
classDiagram
class "AuthenticationController" {
+login(credentials)
+refreshToken()
}
class "JwtTokenProvider" {
+generateToken(user)
+validateToken(token)
}
class "UserRepository" {
+findByUsername()
}
AuthenticationController ..> JwtTokenProvider : "usa"
AuthenticationController ..> UserRepository : "usa"
@enduml
Visões Complementares
-
Diagrama Dinâmico (por exemplo, sequência de “Visualizar Resumo da Conta”): Cliente → SPA → API → Banco de Dados/Banco Central → Resposta.
-
Diagrama de Implantação: Mapeia contêineres para a infraestrutura (por exemplo, AWS EC2 para API, RDS para Banco de Dados, mainframe local).
Aproveitando as Ferramentas com IA do Visual Paradigm
Ferramentas do Visual Paradigm Estúdio C4 PlantUML com IA (lançamento no final de 2025) revoluciona esse processo:
-
Insira linguagem natural (por exemplo, “Crie um modelo C4 para um sistema de banco na internet com SPA, aplicativo móvel, API Spring Boot, PostgreSQL e integração com mainframe”).
-
A IA gera código PlantUML e diagramas para todos os níveis.
-
Use o chatbot de IA para iterar (por exemplo, “Adicione MFA ao componente de autenticação” ou “Gere a visão de implantação no AWS”).
-
Mantenha a consistência entre os níveis e apoie a “documentação viva”.
-
Exporte, versione e integre com repositórios.
Esta ferramenta fornece saídas estruturadas e compatíveis com C4 com muito mais confiabilidade do que IAs genéricas.
Melhores Práticas
-
Comece com oficinas — Use quadros brancos para o Nível 1 para alinhar os interessados.
-
Trate a arquitetura como código — Armazene arquivos PlantUML no seu repositório para atualizações automáticas com alterações no código.
-
Automatize com IA — Use o Visual Paradigm para gerar e aprimorar diagramas rapidamente.
-
Foco no público-alvo — Omita detalhes técnicos do Nível 1; adicione-os progressivamente.
-
Mantenha leve — Detalhe apenas contêineres complexos no Nível 3; pule o Nível 4, a menos que essencial.
-
Evolua a documentação — Torne os diagramas “vivos” para evitar artefatos desatualizados.
O estudo de caso da Big Bank plc continua sendo um exemplo canônico da eficácia do modelo C4 em cenários do mundo real, promovendo clareza, colaboração e comunicação escalonável de arquitetura. Para saber mais, explore o site oficial do C4 ou as ferramentas de IA do Visual Paradigm.
- Guia Definitivo para a Visualização do Modelo C4 Usando as Ferramentas de IA do Visual Paradigm: Este guia explica como aproveitar ferramentas com IA para automatizar e aprimorar a visualização do modelo C4, acelerando o design de arquitetura de software.
- Aproveitando o Estúdio C4 com IA do Visual Paradigm para Documentação de Arquitetura Simplificada: Este artigo detalha o uso de um estúdio aprimorado com IA para criar documentação de arquitetura de software limpa, escalonável e sustentável.
- O Guia Definitivo para o Estúdio C4-PlantUML: Revolucionando o Design de Arquitetura de Software: Este recurso explora a combinação da automação impulsionada por IA, a clareza do modelo C4 e a flexibilidade do PlantUML em uma única ferramenta poderosa.
- Um Guia Compreensivo para o Estúdio C4 PlantUML com IA do Visual Paradigm: Este guia descreve uma ferramenta desenvolvida especialmente, lançada no final de 2025, que transforma prompts em linguagem natural em diagramas C4 em camadas.
- Estúdio C4-PlantUML | Gerador de Diagramas C4 com IA: Esta visão geral destaca uma ferramenta impulsionada por IA projetada para gerar diagramas de arquitetura de software C4 a partir de descrições de texto simples.
- Gerando e Modificando Diagramas de Componentes C4 com o Chatbot de IA do Visual Paradigm: Este tutorial demonstra o uso de um chatbot com IA para criar e aprimorar iterativamente a arquitetura de nível de componente para sistemas complexos.
- Gerador de Diagramas C4 com IA: Níveis Principais e Visões de Apoio: Esta página explica como o gerador com IA suporta os quatro níveis principais do modelo C4 — Contexto, Contêiner, Componente e Implantação — para fornecer documentação abrangente.
- Gerador de Diagramas com IA: Lançamento com Suporte Completo ao Modelo C4: Esta atualização detalha a integração de recursos com IA para a criação automatizada de diagramas hierárquicos do modelo C4.
- Gerador de Modelo C4 com IA: Automatizando todo o Ciclo de Modelagem: Este recurso destaca como um chatbot de IA especializado usa prompts conversacionais para garantir consistência na documentação de arquitetura para equipes DevOps.
- Revisão Compreensiva: Chatbots de IA Genéricos vs. Ferramentas C4 do Visual Paradigm: Esta comparação explica por que ferramentas especializadas como o C4 PlantUML Studio fornecem resultados mais estruturados e de qualidade profissional do que modelos de linguagem de propósito geral.
This post is also available in Deutsch, English, Español, فارسی, Français, English, Bahasa Indonesia, 日本語, Polski, Ру́сский, Việt Nam, 简体中文 and 繁體中文.













