¿Qué es UML?
Una introducción utilizable al lenguaje unificado de modelado: qué es, los catorce diagramas que define, cómo encajan entre sí y cuál elegir. Sin más lección de historia de la necesaria.
14 min de lecturaUML 2.5.11 de 35
La respuesta corta
- UML es un lenguaje visual de significado fijo, mantenido por el OMG. La versión actual es UML 2.5.1, publicada en 2017.
- Catorce tipos de diagrama, siete de estructura y siete de comportamiento - y los diagramas son vistas sobre un único modelo, no dibujos independientes.
- No hace falta usarlo todo. Dibujar un solo diagrama de secuencia para zanjar quién llama a quién es un uso completamente legítimo de UML, y probablemente el más valioso.
- Aprende bien primero el diagrama de clases y el de secuencia: entre los dos cubren la mayor parte de lo que alguien te pondrá delante.
01Qué es UML en realidad#
UML es un lenguaje visual para describir sistemas de software. Te da un conjunto fijo de formas, líneas y reglas para que un diagrama que dibujes signifique lo mismo para alguien que no estuvo en la sala donde se trazó.
Esa es toda la propuesta de valor, y conviene decirlo sin rodeos. Una caja con un nombre dentro no es UML. Una caja con tres compartimentos, un triángulo hueco apuntando a otra caja y un 1..* en un extremo de una línea sí es UML, y dice algo preciso: este tipo hereda de aquel, y una instancia del primero está asociada al menos con una del segundo. Cualquiera que conozca la notación lo lee de forma idéntica. Eso es lo que estás comprando.
El lenguaje lo mantiene el Object Management Group. La versión actual es UML 2.5.1, publicada en 2017. Desciende del trabajo que Grady Booch, James Rumbaugh e Ivar Jacobson fusionaron en Rational a mediados de los noventa, cuando el campo tenía unas cincuenta notaciones rivales y ninguna forma de leer el diseño ajeno. El OMG adoptó UML 1.1 en 1997. La versión 2.5 fue sobre todo una limpieza: la especificación se había partido en los volúmenes «infrastructure» y «superstructure», por los que pocos sabían moverse, y 2.5 los plegó de nuevo en un solo documento.
02Estructura y comportamiento: la división que lo organiza todo#
Cada diagrama UML responde a una de dos preguntas. Los diagramas de estructuraresponden a «¿de qué está hecho este sistema?»: las partes, los tipos, las máquinas y cómo están dispuestos. Describen cosas que son ciertas al margen del tiempo.
Los diagramas de comportamientoresponden a «¿qué hace este sistema?»: los flujos, los mensajes, los estados y el orden en que ocurren las cosas. Describen cosas que solo son ciertas en un instante.
Un diagrama de clases te dice que un Payment tiene un importe y un estado. Una máquina de estados te dice que un pago pasa de Authorized a Captured pero nunca al revés. Ninguno puede expresar lo del otro, y la mayoría de las preguntas reales necesitan uno de cada. Si te descubres intentando mostrar una secuencia en un diagrama de clases, esa es la señal de dibujar un segundo diagrama en vez de sobrecargar el primero.
El comportamiento tiene un nivel extra de anidamiento. Cuatro de los siete diagramas de comportamiento (secuencia, comunicación, tiempos y global de interacciones) son todos diagramas de interacción, cuatro representaciones distintas de la misma idea de fondo: participantes que intercambian mensajes. En principio son intercambiables. En la práctica dominan los de secuencia, porque un eje temporal vertical es lo más fácil de leer del mundo.
03Los catorce diagramas, una línea cada uno#
Aquí está el lenguaje entero, al nivel de «¿necesito esto hoy?». Sigue el enlace cuando la respuesta sea sí.
Estructura - de qué se compone el sistema
Los tipos, sus atributos y operaciones, y cómo se relacionan. El que dibuja todo el mundo.
Las partes reemplazables y las interfaces que ofrecen y requieren.
Qué artefacto se ejecuta en qué nodo, y qué son esos nodos.
Una instantánea concreta de instancias, para comprobar un modelo de clases.
Cómo se agrupa el modelo, y qué grupo puede depender de cuál.
El interior de un clasificador: sus partes, puertos y cableado interno.
Cómo extender el propio UML con estereotipos, cuando el vocabulario estándar se queda corto.
Comportamiento - qué hace el sistema
Quién usa el sistema y para qué. Alcance, no diseño.
Flujo, decisiones y cosas que ocurren en paralelo. Un proceso, con precisión.
Los estados en los que puede estar un objeto y los eventos que lo mueven entre ellos.
Mensajes entre participantes, en orden, a lo largo del tiempo. El diagrama de comportamiento más usado.
La misma interacción que un diagrama de secuencia, dispuesta para mostrar quién habla con quién.
El estado frente a un eje temporal, cuando lo que importa es el plazo.
Un diagrama de actividades cuyos nodos son interacciones. El mapa por encima de las secuencias.
En la práctica, una mayoría holgada del UML real son cuatro de ellos: clases, secuencia, casos de uso y actividades. Los otros diez existen porque alguien los necesitó, y tres o cuatro son realmente excelentes cuando la situación lo pide: una máquina de estados para un ciclo de vida, un diagrama de despliegue para una revisión de infraestructura. El resto puedes leerlos cuando te los encuentres y no dibujarlos nunca.
04¿Qué diagrama debería dibujar?#
Parte de la pregunta, no del diagrama. El error es elegir primero un tipo de diagrama y luego decidir qué poner en él: así se acaba con un diagrama de clases de doscientas cajas que nadie ha leído jamás.
- «¿Quién usa esto y para qué?» - diagrama de casos de uso. Alcance y actores, antes de que exista diseño alguno.
- «¿Cuáles son los conceptos y cómo se relacionan?» - diagrama de clases. La vista estructural por defecto.
- «¿Qué pasa cuando alguien pulsa pagar?» - diagrama de secuencia. El orden de los mensajes entre participantes.
- «¿Cuál es el proceso, con sus ramas?» - diagrama de actividades. Flujo con decisiones y paralelismo.
- «¿En qué estados puede estar esto?» - diagrama de máquina de estados. Ciclo de vida y transiciones legales.
- «¿Qué se ejecuta dónde?» - diagrama de despliegue. Nodos, artefactos, entornos.
- «¿Cuáles son los servicios y sus contratos?» - diagrama de componentes. Interfaces ofrecidas y requeridas.
- «¿Cómo está organizado el código?» - diagrama de paquetes. Agrupación y dependencias permitidas.
05Qué no es UML#
No es un proceso. UML no dice nada sobre cuándo modelar, cuánto modelar ni quién lo aprueba. Es una notación. Métodos como RUP se construyeron a su alrededor y se confunden a menudo con él; puedes usar UML en cualquier proceso, incluido ninguno.
No es un lenguaje de programación. Los modelos UML pueden ser lo bastante detallados como para generar código, y algunas herramientas hacen exactamente eso. La mayoría de los equipos no lo hacen, y no deberían. La generación de código de ida y vuelta completa es el motivo aislado más común por el que se hunden los esfuerzos de UML: el modelo se convierte en una segunda copia, peor, del fuente, que nadie actualiza.
No es todo o nada. No hay obligación de usar los catorce diagramas ni de modelar cada clase. Dibujar un solo diagrama de secuencia para zanjar una discusión sobre quién llama a quién es un uso completamente legítimo de UML, y probablemente el más valioso.
No es lo mismo que ArchiMate. Ambos son lenguajes de modelado y se solapan lo bastante como para confundir. UML modela software: clases, componentes, mensajes. ArchiMate modela la empresa que lo rodea: procesos de negocio, capacidades, capas de aplicación y tecnología. Una organización grande normalmente necesita los dos, a distintas alturas.
06Cuánto modelar#
La respuesta honesta es: bastante menos de lo que anima a hacer la herramienta. Un modelo se gana su sitio cuando se lee más a menudo de lo que se edita. Tres cosas lo consiguen de forma fiable.
Modela las partes que cuesta sostener en la cabeza. La máquina de estados del pago, con nueve estados y dos transiciones ilegales, merece un diagrama. El DTO de tres campos no.
Modela a una sola altura por diagrama. El fallo más común en un diagrama de clases real es mezclar conceptos del dominio con fontanería del framework en el mismo lienzo. Dos diagramas, cada uno coherente por dentro, ganan a uno técnicamente completo.
Modela lo que vas a conservar. Un diagrama en una presentación es un dibujo con una caducidad de una reunión, y eso está bien mientras sepas que es eso. Un diagrama en el repositorio, junto al código que describe, es un modelo, y necesita alguien que lo cuide.
Úsalo cuando
- El diseño contiene una decisión sobre la que gente razonable discreparía
- Más de un equipo tiene que ponerse de acuerdo en una interfaz o un ciclo de vida
- Alguien se incorporará a este código más adelante y necesita su forma
- Un regulador, un auditor o una revisión de arquitectura lo pedirá por escrito
Usa otra cosa cuando
- El código es más corto y más claro de lo que sería el diagrama
- Lo dibujas para cumplir una lista de comprobación que nadie lee
- Duplicaría algo que ya se genera desde el fuente
- El diseño todavía cambia a diario: espera a que deje de moverse
07Por dónde empezar#
Si la notación es nueva para ti, lee primero el artículo del diagrama de clases. Carga con la mayor parte del vocabulario de UML (generalización, asociación, multiplicidad, composición) y todos los demás diagramas de estructura reutilizan esas marcas. Después lee el artículo del diagrama de secuencia, que hace el mismo trabajo para el comportamiento.
Esos dos cubren la mayor parte de lo que te pedirán leer alguna vez. Todo lo demás de esta serie está escrito para cogerlo el día que lo necesites, en cualquier orden, y cada artículo solo da por supuestos esos dos.
En una línea cada uno
- 01UML es una notación de significado fijo, mantenida por el OMG; la versión actual es la 2.5.1.
- 02Catorce clases de diagrama, repartidas en siete de estructura y siete de comportamiento; cuatro de las de comportamiento son diagramas de interacción.
- 03Los diagramas son vistas sobre un único modelo, no dibujos independientes.
- 04Elige el diagrama a partir de la pregunta que necesitas responder, no de una lista de comprobación.
- 05Los diagramas de clases y de secuencia cubren la gran mayoría del uso real; aprende esos dos bien primero.
08Preguntas frecuentes#
¿Cuántos diagramas UML hay?
UML 2.5.1 define catorce tipos de diagrama, repartidos en siete de estructura y siete de comportamiento. La estructura abarca clases, objetos, componentes, despliegue, paquetes, estructura compuesta y perfiles; el comportamiento abarca casos de uso, actividad, máquina de estados, secuencia, comunicación, tiempos y visión general de interacción.
¿Se sigue usando UML?
Sí, aunque de forma selectiva. Pocos equipos dibujan los catorce tipos, pero los diagramas de clases, secuencia, actividad y casos de uso siguen siendo habituales en revisiones de diseño, en sectores regulados y en cualquier base de código cuya arquitectura deba sobrevivir a quienes la escribieron.
¿Qué diferencia hay entre diagramas de estructura y de comportamiento?
Un diagrama de estructura muestra de qué está hecho el sistema y no cambia con el tiempo: clases, componentes, nodos. Uno de comportamiento muestra qué ocurre, en qué orden y bajo qué condiciones. Si tu pregunta lleva un cuándo dentro, quieres un diagrama de comportamiento.
¿Qué diagrama UML debería aprender primero?
El de clases. Carga con la mayor parte del vocabulario de UML, y seis de los demás diagramas de estructura reutilizan su notación directamente, así que aprenderlo bien abarata el resto. El de secuencia es el segundo natural.
¿Necesito aprender los catorce diagramas UML?
No. Cuatro cargan con casi todo en la práctica: clases, secuencia, casos de uso y actividad. De los demás basta con saber leerlos cuando te topes con uno, que es una inversión mucho menor que saber dibujarlos desde cero.
En esta serie
- 01¿Qué es UML?
- 02Símbolos UML
- 03Elegir un diagrama
- 04Diagramas de clases
- 05Ejemplos de diagramas de clases
- 06Cómo dibujar un diagrama de clases
- 07Símbolos del diagrama de clases
- 08Diagramas de secuencia
- 09Ejemplos de diagramas de secuencia
- 10Cómo dibujar un diagrama de secuencia
- 11Diagramas de casos de uso
- 12Ejemplos de casos de uso
- 13Diagramas de actividad
- 14Ejemplos de actividad
- 15Diagramas de máquina de estados
- 16Ejemplos de máquina de estados
- 17Diagramas de componentes
- 18Ejemplos de componentes
- 19Dibujar un diagrama de componentes
- 20Símbolos de componentes
- 21Diagramas de despliegue
- 22Ejemplos de despliegue
- 23Diagramas de objetos
- 24Diagramas de paquetes
- 25Diagramas de estructura compuesta
- 26Diagramas de comunicación
- 27Secuencia vs comunicación
- 28Diagramas de tiempos
- 29Diagramas de visión general de interacción
- 30Diagramas de perfil
- 31UML con IA
- 32Ejemplo de e-commerce
- 33Ejemplo bancario
- 34Ejemplo de microservicios
- 35Ejemplo de AWS
Lecturas relacionadas
Diagramas de estructura
Diagramas de comportamiento
Diagramas de comportamiento
Diagramas de comportamiento
Referencia de notación
Fundamentos