C4 frente a UML
La comparación se plantea como un o esto o lo otro, y no lo es: C4 dice qué diagramas dibujar, UML dice cómo, y la respuesta útil suele ser ambos.
6 min de lecturaC4 model3 de 3
La respuesta corta
- C4 es una convención sobre qué dibujar en cuatro niveles de zoom. UML es una notación con semántica definida. Responden a preguntas distintas.
- Un diagrama de contenedores C4 dibujado en notación de componentes UML es a la vez un diagrama C4 correcto y uno UML legal.
- Elige UML cuando el diagrama tenga que ser preciso o intercambiarse entre herramientas; elige cajas C4 simples cuando entre el público haya gente que no lee notación.
- El fallo de verdad no es ninguno de los dos: es un diagrama cuyas cajas significan cosas distintas porque nadie dijo de qué nivel o de qué notación se trataba.
01No son cosas del mismo tipo#
La comparación suele plantearse como una elección, y por eso rara vez da una respuesta útil. Uno de los dos es una convención sobre qué diagramas debería tener un sistema; el otro es un lenguaje con semántica definida para elementos y relaciones. Compararlos se parece más a comparar un índice con una tipografía que a comparar dos notaciones.
| Elemento | Notación | Qué significa |
|---|---|---|
| C4 | Cuatro niveles, ninguna forma prescrita | Dice qué dibujar en cada nivel de zoom y para quién. No define semántica de elementos, así que no hay nada que se pueda equivocar formalmente. |
| UML 2.5.1 | Catorce tipos de diagrama, formas definidas | Dice cómo dibujar una estructura o un comportamiento, con un metamodelo que hace legales unos diagramas e inválidos otros. No dice nada sobre qué diagramas necesita tu sistema. |
Esa diferencia es también la razón de que los dos se compongan en vez de competir. C4 deja la notación abierta; UML es una notación. Llenar un hueco con el otro es el uso previsto de ambos.
02Dibujar un nivel C4 en UML#
La correspondencia es lo bastante directa como para que la mayoría de los equipos la hagan sin darse cuenta. Un diagrama de contexto son actores y sistemas externos alrededor de una frontera de sujeto, que es exactamente el marco de un diagrama de casos de uso. Un diagrama de contenedores son componentes UML con interfaces entre ellos. Un diagrama de componentes es la misma notación un nivel más abajo.
La recompensa de usar una notación de verdad no es estética. Un modelo UML se exporta a XMI y puede comprobarse su legalidad; un conjunto de rectángulos no puede ninguna de las dos cosas. Si el diagrama va a pasar a otro equipo, a otra herramienta o a un auditor, eso importa. Si acaba en una página de wiki para gente que nunca abrirá una herramienta de modelado, no.
03Qué deja fuera cada uno#
C4 va enteramente de estructura estática. No hay diagrama C4 para una secuencia de mensajes, una máquina de estados o un proceso de negocio, así que un sistema documentado solo en C4 tiene cuatro imágenes de lo que existe y ninguna de lo que ocurre. Ese es el hueco que llenan los diagramas de comportamiento de UML, y es un hueco real: la mayoría de los incidentes van de comportamiento.
El hueco de UML es el contrario. Te da catorce tipos de diagrama y ninguna guía sobre cuáles necesita tu sistema, que es como los equipos acaban con un diagrama de clases de todo y ninguna imagen del sistema en conjunto. Elegir un diagrama es una habilidad real precisamente porque la especificación no ayuda con ello. Los cuatro niveles de C4 son una respuesta ya hecha para la mitad estructural.
En una línea cada uno
- 01C4 decide qué diagramas existen; UML decide qué significan las formas que hay en ellos.
- 02Un diagrama de contenedores en notación de componentes UML es correcto en ambos a la vez.
- 03Usa UML donde importe la precisión o el intercambio entre herramientas, y cajas simples donde el público no lea notación.
- 04C4 no tiene diagramas de comportamiento y UML no opina sobre el alcance, y por eso la mayoría de los equipos acaba usando los dos.
04Preguntas frecuentes#
¿Es C4 mejor que UML?
La pregunta no se resuelve, porque no son el mismo tipo de cosa. C4 prescribe cuatro diagramas y qué va en cada uno; UML prescribe formas y su significado. Puedes seguir C4 y dibujarlo en UML, seguir C4 con cajas simples, o usar UML sin ninguna estructura C4.
¿Se puede dibujar un diagrama C4 en UML?
Sí, y a menudo es la mejor opción. Un diagrama de contenedores se corresponde limpiamente con componentes UML con interfaces; uno de contexto, con actores y una frontera de sujeto. El resultado es UML legal y C4 correcto a la vez, y se exporta a XMI, cosa que las cajas simples nunca harán.
¿Sustituye C4 a los tipos de diagrama UML?
No. C4 cubre la estructura estática en cuatro niveles de zoom y no dice nada del comportamiento. Los diagramas de secuencia, de estados y de actividad no tienen equivalente en C4, así que un sistema documentado solo en C4 no describe cómo ocurre nada a lo largo del tiempo.
¿Por dónde debería empezar un equipo nuevo?
Por los niveles 1 y 2 de C4, dibujados en lo que el equipo ya sepa leer. El valor del primer mes está en acordar de qué se compone el sistema, y una discusión de notación en ese punto cuesta más de lo que aporta. La precisión de UML se añade donde un diagrama demuestre necesitarla.
En esta serie
- 01¿Qué es C4?
- 02Diagrama de contenedores
- 03C4 vs UML
Lecturas relacionadas
Fundamentos
Diagramas de estructura
Fundamentos
Fundamentos
Práctica del modelado