Archyno
UMLDiagramas de comportamiento

Ejemplos de diagramas de actividad

Tres diagramas de actividad de procesos que ya conoce - una tubería de integración continua, un triaje de tickets y un fragmento que termina dos tokens de forma distinta - cada uno con el razonamiento de cada nodo.

8 min de lecturaUML 2.5.114 de 35

La respuesta corta

  • Una tubería de integración continua es el ejemplo más claro: construir, tres comprobaciones en paralelo tras una bifurcación, una unión que espera a las tres y una rama según el resultado.
  • Las aristas que salen de una bifurcación nunca llevan guarda, porque se toman todas. Las guardas van en las aristas que salen de una decisión.
  • Un final de flujo termina un token; un final de actividad lo termina todo. El disco con anillo en una rama secundaria mata en silencio el flujo principal.
  • Da a la última arista de una decisión la guarda [else]. Sin ella un token puede llegar donde no se cumple ninguna guarda, y la actividad se detiene.
Un diagrama de actividad UML de una tubería de integración continua. Desde el nodo inicial, construir el artefacto. Una barra de bifurcación se divide en tres acciones paralelas: ejecutar pruebas unitarias, ejecutar linters y escanear dependencias. Una barra de unión espera a las tres, y luego una decisión ramifica según el resultado: todo en verde va a desplegar en preproducción y al nodo final de actividad, algún fallo va a la derecha a notificar al autor y a su propio nodo final.
Una tubería de integración continua: una bifurcación, tres acciones concurrentes, una unión que las espera todas, y una decisión sobre el resultado.

01Ejemplo 1: trabajo paralelo detrás de una bifurcación#

Una tubería de construcción es el primer ejemplo más claro porque la concurrencia es real y no nocional. Las pruebas unitarias, el linting y el escaneo de dependencias corren de verdad a la vez, nada aguas abajo puede empezar hasta que las tres hayan terminado, y todo el mundo lo ha visto pasar.

El trabajo lo hacen las dos barras sólidas. La de arriba es una bifurcación: llega un token y salen tres, así que corren las tres ramas. La de abajo es una unión: espera hasta que haya llegado un token por cada arista entrante antes de dejar continuar a uno. Cambia cualquiera de las dos por un rombo y el diagrama pasa a afirmar algo falso: un rombo se dispara con el primer token y nunca espera.

Fíjate en los dos nodos finales separados. Una construcción fallida y una desplegada son finales distintos, y dibujarlos como dos discos con anillo es legal y más claro que encaminar ambos de vuelta a uno solo. UML no pone límite a cuántos nodos finales de actividad tiene una actividad.

02Ejemplo 2: una ramificación a tres bandas con guardas exhaustivas#

La mayoría de los procesos de negocio no son concurrentes. Son una decisión con varios desenlaces que después se vuelven a juntar, que es la forma de abajo.

Un diagrama de actividad UML del triaje de tickets de soporte. Desde el nodo inicial, recibir el ticket, y luego una decisión ramifica en tres según la gravedad: gravedad uno va a la izquierda a avisar a la guardia, gravedad dos va abajo a poner en la cola del equipo, y todo lo demás va a la derecha a responder automáticamente y cerrar. Los tres caminos llegan a un rombo de fusión, luego registrar la resolución, y luego el nodo final de actividad.

Tres cosas de este diagrama son deliberadas. Las guardas son exhaustivas: [sev 1], [sev 2 or 3] y [else] cubren entre todas cualquier ticket, así que ningún token puede llegar al rombo y no tener adónde ir. Un token sin arista de salida habilitada es un proceso detenido, y es un defecto que merece cazarse sobre el papel.

El rombo de abajo es una fusión, no una unión, y la diferencia importa: solo uno de los tres caminos lleva token alguna vez, así que esperar a los tres se bloquearía de inmediato. La regla es fácil de sostener: un rombo cierra lo que un rombo abrió, y una barra cierra lo que una barra abrió.

Por último, cada acción es una frase verbal en imperativo: «Avisar a la guardia», no «Aviso a la guardia». Los sustantivos se cuelan cuando alguien describe un sistema en vez de un proceso, y un diagrama de sustantivos es un diagrama de clases que ha tomado la forma equivocada.

03Ejemplo 3: las dos formas en que un flujo puede acabar#

El par de nodos de fin es el detalle que la mayoría de los primeros diagramas se equivoca, y el error es invisible: el diagrama sigue pareciendo correcto.

Un fragmento de diagrama de actividad UML que contrasta los dos nodos de fin. Una bifurcación se divide en dos ramas: escribir la entrada de auditoría termina en un nodo de fin de flujo dibujado como un círculo cruzado, y confirmar al cliente termina en un nodo de fin de actividad dibujado como un disco con anillo. Una nota explica que el círculo cruzado termina solo su propio token mientras que el disco con anillo termina toda la actividad.

Tras la bifurcación hay dos tokens en vuelo. La rama de auditoría llega a un fin de flujo - el círculo con una cruz - que consume ese token y nada más. La rama del cliente llega a un fin de actividad, el disco con anillo, que termina toda la actividad y abandona cualquier otro token que haya en ella.

Pon el disco con anillo en la rama de auditoría y el diagrama pasa a decir que el pedido se abandona en cuanto se escribe la línea de registro. Nada en él parece mal, y por eso exactamente merece aprender la distinción una vez: usa un fin de flujo para una rama lateral que simplemente termina, y un fin de actividad solo donde quieras decir «ya está».

04Convertirlos en los tuyos#

Estos tres cubren las formas de las que está hecho casi cualquier diagrama de actividad. Lo que cambia entre ellos y el tuyo son las etiquetas; lo que no debería cambiar es la disciplina sobre el alcance.

Úsalo cuando

  • Un proceso por diagrama, con un nombre que pudieras poner en el asunto de un correo.
  • Acciones como frases verbales, para que cada caja sea algo que alguien o algo hace.
  • Calles cuando las entregas entre roles son el asunto: los procesos fallan en los cruces de calle.
  • Una guarda [else] en la última arista de cada decisión, para que el conjunto sea exhaustivo.

Usa otra cosa cuando

  • Más de unas quince acciones. Extrae mejor un subárbol como actividad propia.
  • Una barra donde se rejuntan alternativas, o un rombo donde lo hace trabajo concurrente.
  • Manejo de errores en cada paso. Dibuja el camino feliz, y luego un diagrama para el fallo que importa.
  • Modelar el ciclo de vida de un solo objeto: eso es una máquina de estados, no una actividad.

Si el público son analistas de negocio y no ingenieros, el mismo proceso suele quedar mejor dibujado en BPMN, que tiene una semántica de eventos más rica y es lo que ejecutará un motor de procesos. Las dos notaciones responden a la misma pregunta para salas distintas.

05Qué recordar#

En una línea cada uno

  1. 01Una barra bifurca y une; un rombo ramifica y fusiona. Un rombo nunca espera y una barra siempre.
  2. 02Las guardas van en las aristas que salen de una decisión y nunca en las que salen de una bifurcación.
  3. 03Haz exhaustivo el conjunto de guardas - [else] en la última arista - o el proceso puede detenerse.
  4. 04Un fin de flujo termina un token; un fin de actividad lo termina todo. El equivocado se ve idéntico.
  5. 05Las acciones son frases verbales. Si las cajas son sustantivos, estás dibujando el diagrama equivocado.

06Preguntas frecuentes#

¿Cuál es un buen ejemplo de diagrama de actividad?

Una tubería de integración continua es el más claro: construir el artefacto, lanzar en paralelo tras una bifurcación las pruebas, los linters y el escaneo de dependencias, esperar a los tres en la unión y ramificar según el resultado. Usa todos los nodos que importan en unas diez cajas.

¿Cómo se dibujan pasos paralelos en un diagrama de actividad?

Ponga una barra sólida - la bifurcación - cruzando el flujo y saque una arista hacia cada acción concurrente. Cierre el grupo con una segunda barra, la unión, que espera un token en cada arista entrante. Las aristas que salen de una bifurcación nunca llevan guarda, porque se toman todas.

¿Qué diferencia hay entre un final de flujo y un final de actividad?

El final de flujo, un círculo con una cruz, termina el token que llega a él y deja el resto de la actividad en marcha. El final de actividad, un disco con anillo, termina toda la actividad y descarta los demás tokens. Poner el disco con anillo en una rama secundaria mata en silencio el flujo principal.

¿Las guardas que salen de una decisión deben cubrir todos los casos?

Sí. Si no se cumple ninguna guarda, el token no tiene adónde ir y la actividad se detiene, lo cual es un defecto real y no un detalle de estilo. La costumbre segura es dar a la última arista la guarda [else], con lo que el conjunto queda exhaustivo por construcción.

¿Cuántas acciones debe tener un diagrama de actividad?

Unas quince antes de dejar de ser legible. Por encima de eso, extraiga un subárbol como actividad propia y referéncielo con una única acción de llamada. Un diagrama que hay que ampliar es un diagrama que nadie contrasta con la realidad.

En esta serie

Lecturas relacionadas

Todos los artículos