¿Qué es un diagrama de código C4?
El diagrama de código esNivel 4— el nivel más profundo y detallado en el modelo C4 de Simon Brown.

Muestra:
-
Clases, interfaces, enums, registros, u otros constructos de nivel de código que implementan un componente específicocomponente (del Nivel 3).
-
Relaciones entre esas clases (herencia, composición, dependencia, realización de interfaces, etc.).
-
Elementos claveelementos de diseño tales como patrones aplicados dentro del componente (por ejemplo, repositorios, servicios, DTOs, entidades de dominio, fábricas).
En la práctica, este nivel casi siempre es undiagrama de clases UML (o una variante simplificada) centrado en un componente (o muy pocos).
Aclaración importante:
-
El Nivel 4 esno sobre todo el código base.
-
No esno necesario para mostrar cada clase.
-
Mapea solo la estructura esencial necesario para entender cómo se construye en realidad un componente complejo o crítico.
-
La recomendación oficial de C4: idealmente generada automáticamente a partir del código fuente (mediante herramientas como Doxygen, Javadoc + complementos UML, yWorks, Structurizr, CodeSee, etc.) en lugar de dibujada a mano.
Cuándo crear un diagrama de código
Crea diagramas de nivel 4 con moderación — solo en estas situaciones:
-
El componente es altamente complejo, crítico para la misión, o difícil de entender a partir del código fuente solo (por ejemplo, lógica de dominio compleja, uso intensivo de patrones de diseño, flujos criptográficos, máquinas de estado, código heredado plagado de deuda técnica).
-
Estás trabajando en un industria altamente regulada (finanzas, salud, aeroespacial, defensa) donde los auditores o equipos de cumplimiento exigen un mapeo explícito desde arquitectura → diseño → implementación.
-
Durante refactorización importante, estrangular un componente heredado, o introducir un nuevo patrón arquitectónico (hexagonal, limpio, corte vertical, agregados de DDD) — las vistas antes/después ayudan a comunicar el cambio.
-
Integración de desarrolladores senior o arquitectosquienes necesitan comprender rápidamente la estructura interna no obvia de un fragmento de código de alto riesgo.
-
Ya has invertido en generación automáticaherramientas — por lo tanto, mantener el Nivel 4 cuesta casi nada.
-
El equipo ha acordado que «documentación viviente»a nivel de clase es valioso para este subsistema específico.
No crees diagramas de Nivel 4 cuando:
-
La estructura de componentes es evidente por un buen nombre, tamaño pequeño o código limpio (la mayoría de los microservicios modernos caen aquí).
-
Ya tienes buenas pruebas unitarias/integración, interfaces claras, y comentarios explicativos.
-
La mayoría del equipo puede navegar por el código fácilmente.
-
El costo de mantenimiento supera el beneficio (los diagramas de clases dibujados a mano envejecen muy rápidamente).
Simon Brown y la mayoría de los profesionales enfatizan: La mayoría de los equipos nunca necesitan el Nivel 4. Niveles 1 + 2cubren del 80 al 90 % de las necesidades de comunicación; Nivel 3maneja la mayor parte del resto. El Nivel 4 es la excepción, no la regla.
¿Por qué usar diagramas de código? (Cuando aportan valor)
-
Puente entre arquitectura ↔ implementación— Muestra cómo los componentes de alto nivel se realizan realmente en código.
-
Aclarar el diseño interno complejo— Exponen el uso de patrones (Estrategia, Fábrica, Decorador, Repositorio), violaciones de capas, acoplamiento fuerte o modelado inteligente del dominio.
-
Apoyar auditorías y cumplimiento — Demuestra que las decisiones arquitectónicas se siguen hasta el código.
-
Ayudar a las discusiones de refactorización y migración — Las estructuras de clases antes/después hacen que las propuestas sean tangibles.
-
Reducir el conocimiento tribal — Ayuda a los nuevos contratos senior a entender las partes no triviales más rápido que leyendo todos los archivos de origen.
-
Las versiones generadas automáticamente se convierten en ‘documentos vivos’ — Si hay herramientas disponibles, permanecen precisas con casi ningún esfuerzo.
Cómo crear un diagrama de código excelente (paso a paso + mejores prácticas)
-
Elige UN componente — Generalmente desde un diagrama de nivel 3 donde la complejidad interna justifica el acercamiento.
-
Decide: dibujado a mano o generado?
-
Dibujado a mano → solo para talleres, propuestas o áreas demasiado desordenadas para herramientas automáticas.
-
Generado → preferido (PlantUML aún se puede usar para estilizar/ajustar la salida).
-
-
Enfócate en lo esencial — Muestra:
-
Clases/interfaces clave
-
Relaciones importantes (→ dependencia, — composición, <| realización, ^ herencia)
-
Agregados, entidades, objetos de valor (estilo DDD)
-
Patrones críticos o anti-patrones que deseas resaltar
-
-
Manténlo pequeño — Máximo 8–15 clases. Si es más grande → divídelo en diagramas enfocados (por ejemplo, ‘rebanada de autenticación’, ‘entidades de procesamiento de pedidos’).
-
Mejores prácticas
-
Prefiere generación automática cuando sea posible (menos obsolescencia).
-
Usa sintaxis classDiagram de PlantUML sintaxis — limpia y versionable.
-
Añade notas para decisiones no obvias (por ejemplo, “Utiliza un modelo de dominio anémico – refactorización planeada”).
-
Evita mostrar todo — omite getters/setters triviales, clases de utilidad.
-
Almacena en el repositorio → trata como código (confirma los archivos .puml cerca del componente).
-
Úsalo con moderación — uno por componente complejo, no por microservicio.
-
Combínalo con vistas dinámicas (secuencia/collaboración) si el flujo en tiempo de ejecución es más importante que la estructura estática.
-
Ejemplo de PlantUML – Componente de Autenticación (extensión de estilo Big Bank plc)
Aquí tienes un ejemplo real de nivel 4 que se enfoca en el Componente de Seguridad / Autenticación de los diagramas de aplicación de API anteriores.
@startuml
título Diagrama de código C4 Nivel 4: Autenticación dentro de la Aplicación de API
skinparam monochrome verdadero
skinparam shadowing falso
skinparam class {
BackgroundColor Blanco
BorderColor Negro
ArrowColor Negro
}
clase abstracta AuthenticationProvider {
+ authenticate(credentials): Authentication
}
class JwtAuthenticationProvider {
- tokenProvider: JwtTokenProvider
- userDetailsService: UserDetailsService
+ authenticate(credentials): Authentication
}
class JwtTokenProvider {
- secretKey: String
- validityInMilliseconds: long
+ generateToken(userDetails): String
+ validateToken(token): boolean
+ getUsernameFromToken(token): String
}
interfaz UserDetailsService {
+ loadUserByUsername(username): UserDetails
}
class DatabaseUserDetailsService {
- userRepository: UserRepository
+ loadUserByUsername(username): UserDetails
}
class UserRepository {
+ findByUsername(username): Optional<User>
}
class User {
- username: String
- passwordHash: String
- roles: Set<Role>
}
class JwtAuthenticationToken << (T,orchid) Authentication >> {
- principal: UserDetails
- credentials: Object
- authorities: Collection<GrantedAuthority>
}
' Relaciones
JwtAuthenticationProvider -arriba-> JwtTokenProvider : utiliza
JwtAuthenticationProvider -arriba-> UserDetailsService : utiliza
DatabaseUserDetailsService .arriba.|> UserDetailsService
DatabaseUserDetailsService --> UserRepository : utiliza
UserRepository --> User : devuelve
JwtAuthenticationToken .arriba.|> Authentication
nota a la derecha de JwtAuthenticationProvider
Flujo principal de autenticación para sesiones sin estado basadas en JWT
fin nota
nota abajo de JwtTokenProvider
Firma y verifica JWTs usando HS512
fin nota
@enduml
Este pequeño diagrama:
-
Se enfoca únicamente en los internos de la autenticación
-
Muestra las clases clave, interfaces y dependencias
-
Destaca patrones (proveedor, repositorio)
-
Utiliza notas para contexto
Pégalo en cualquier renderizador de PlantUML — personalízalo para tu dominio (por ejemplo, reemplaza JWT con OAuth2, agrega clases de MFA, etc.).
Recordatorio resumen: El nivel 4 es potente pero raro. Úsalo intencionalmente, prefiere la generación automática, y nunca permitas que se convierta en trabajo tedioso. La mayor parte del valor en C4 proviene de los niveles 1 a 3. ¡Feliz modelado (selectivo)!
Recurso
- Guía definitiva para la visualización del modelo C4 usando herramientas de IA de Visual Paradigm: Esta guía explica cómo aprovechar herramientas impulsadas por IA para automatizar y mejorar la visualización del modelo C4, con el fin de diseñar arquitecturas de software más rápidas.
- Aprovechando el Estudio C4 de IA de Visual Paradigm para una documentación de arquitectura más ágil: Este artículo detalla el uso de un estudio mejorado con IA para crear documentación de arquitectura de software limpia, escalable y mantenible.
- La guía definitiva para C4-PlantUML Studio: Revolucionando el diseño de arquitectura de software: Esta herramienta explora la combinación de la automatización impulsada por IA, la claridad del modelo C4 y la flexibilidad de PlantUML en una sola herramienta potente.
- Una guía completa sobre el Studio C4 PlantUML impulsado por IA de Visual Paradigm: Esta guía describe una herramienta diseñada específicamente, lanzada a finales de 2025, que transforma las instrucciones en lenguaje natural en diagramas C4 con capas.
- Studio C4-PlantUML | Generador de diagramas C4 impulsado por IA: Esta vista general de características destaca una herramienta impulsada por IA diseñada para generar diagramas de arquitectura de software C4 a partir de descripciones de texto simples.
- Generación y modificación de diagramas de componentes C4 con el chatbot de IA de Visual Paradigm: Este tutorial demuestra el uso de un chatbot impulsado por IA para crear y refinar iterativamente la arquitectura a nivel de componentes para sistemas complejos.
- Generador de diagramas C4 impulsado por IA: Niveles principales y vistas de apoyo: Esta página explica cómo el generador de IA apoya los cuatro niveles principales del modelo C4: contexto, contenedor, componente y despliegue, para ofrecer documentación completa.
- Generador de diagramas de IA: Lanzamiento con soporte completo para el modelo C4: Esta actualización detalla la integración de funciones impulsadas por IA para la creación automática de diagramas jerárquicos del modelo C4.
- Generador de IA del modelo C4: Automatizando todo el ciclo de modelado: Este recurso destaca cómo un chatbot de IA especializado utiliza instrucciones conversacionales para garantizar la consistencia en la documentación de arquitectura para equipos DevOps.
- Revisión completa: Chatbots de IA genéricos frente a las herramientas C4 de Visual Paradigm: Esta comparación explica por qué herramientas especializadas como el Studio C4 PlantUML ofrecen resultados más estructurados y de mayor calidad profesional que los modelos de lenguaje generales.





