Archyno
UMLFundamentos

¿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.
La taxonomía de diagramas de UML 2.5.1. Diagrama se divide en diagrama de estructura y diagrama de comportamiento. El diagrama de estructura tiene siete clases: clases, componentes, estructura compuesta, despliegue, objetos, paquetes y perfil. El diagrama de comportamiento tiene actividad, estados, casos de uso y diagrama de interacción; el diagrama de interacción tiene a su vez comunicación, visión general de interacciones, secuencia y tiempos. Catorce clases de diagrama en total.
La taxonomía de diagramas de UML 2.5.1. Catorce clases concretas de diagrama y las dos categorías abstractas que las organizan. El triángulo hueco es la flecha de generalización propia de UML: un diagrama de secuencia es en efecto una clase de diagrama de interacción.

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

  • Clases

    Los tipos, sus atributos y operaciones, y cómo se relacionan. El que dibuja todo el mundo.

  • Componentes

    Las partes reemplazables y las interfaces que ofrecen y requieren.

  • Despliegue

    Qué artefacto se ejecuta en qué nodo, y qué son esos nodos.

  • Objetos

    Una instantánea concreta de instancias, para comprobar un modelo de clases.

  • Paquetes

    Cómo se agrupa el modelo, y qué grupo puede depender de cuál.

  • Estructura compuesta

    El interior de un clasificador: sus partes, puertos y cableado interno.

  • Perfiles

    Cómo extender el propio UML con estereotipos, cuando el vocabulario estándar se queda corto.

Comportamiento - qué hace el sistema

  • Casos de uso

    Quién usa el sistema y para qué. Alcance, no diseño.

  • Actividades

    Flujo, decisiones y cosas que ocurren en paralelo. Un proceso, con precisión.

  • Máquina de estados

    Los estados en los que puede estar un objeto y los eventos que lo mueven entre ellos.

  • Secuencia

    Mensajes entre participantes, en orden, a lo largo del tiempo. El diagrama de comportamiento más usado.

  • Comunicación

    La misma interacción que un diagrama de secuencia, dispuesta para mostrar quién habla con quién.

  • Tiempos

    El estado frente a un eje temporal, cuando lo que importa es el plazo.

  • Global de interacciones

    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.

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

  1. 01UML es una notación de significado fijo, mantenida por el OMG; la versión actual es la 2.5.1.
  2. 02Catorce clases de diagrama, repartidas en siete de estructura y siete de comportamiento; cuatro de las de comportamiento son diagramas de interacción.
  3. 03Los diagramas son vistas sobre un único modelo, no dibujos independientes.
  4. 04Elige el diagrama a partir de la pregunta que necesitas responder, no de una lista de comprobación.
  5. 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

Lecturas relacionadas

Todos los artículos