Guía de sintaxis de diagramas de tiempo de PlantUML

¿Qué es un diagrama de tiempo?

Un Diagrama de tiempo es un diagrama comportamental especializado diagrama UML diseñado para visualizar la duración exacta de los estados y las condiciones precisas bajo las cuales esos estados cambian a lo largo de una línea de tiempo lineal. Como parte esencial de la especificación del Lenguaje Unificado de Modelado (UML), este tipo específico detipo de diagrama UML se enfoca fuertemente en restricciones de tiempo rígidas, ciclos de reloj y señales de onda. Rastrea formas de onda o líneas de paso para ilustrar exactamente cuánto tiempo un objeto permanece en una condición específica antes de que un disparador externo cambie su estado.

Los mapas de tiempo se utilizan ampliamente por ingenieros de sistemas embebidos, desarrolladores de protocolos de red y arquitectos de hardware para modelar condiciones de carrera, rastrear cambios en el ciclo de vida de hilos o mapear transiciones de registros de hardware. ConVPasCode, no tienes que calcular manualmente los anchos de píxeles ni mapear coordenadas de la línea de tiempo. Nuestro motor de renderizado maneja toda la cuadrícula temporal automáticamente basándose en tus scripts de texto plano.

Guía de sintaxis principal: Elementos y construcciones

Para diseñar un diagrama de tiempo UML preciso y conforme a estándares en PlantUML, debes dominar los tipos de participantes, las definiciones de estado, los intervalos de tiempo y las restricciones de sincronización.

1. Declaración de participantes (Robusto frente a Conciso)

Puedes modelar líneas de tiempo utilizando dos estilos visuales distintos, dependiendo de cuánto detalle requiera tu sistema. Debes declararlos utilizando palabras clave explícitas:

  • Líneas de tiempo robustas: Muestra los estados como filas distintas y apiladas. Ideal para procesos de software de alto nivel.
    robusto "Hilo de aplicación" como Hilo
  • Líneas de tiempo concisas: Muestra los estados a lo largo de una sola línea plana, utilizando bloques con trazos cruzados para indicar cambios. Perfecto para mapas de señales de hardware compactos.
    conciso "Registro de CPU" como Reg

2. Definición de transiciones de estado y pasos de tiempo

A diferencia de otros diagramas, cambias los estados declarando un punto de control de tiempo utilizando el@ símbolo, haciendo referencia a tu participante y utilizando eles palabra clave. Los nombres de estado que contienen espacios o caracteres especiales deben ir entre comillas:

@0
Hilo es Inactivo

@10
Hilo es "Procesando datos"

3. Generación de señales de reloj

Para simular relojes de hardware binario, use la clockpalabra clave. Debe especificar un período de ciclo, un ciclo de trabajo opcional y un nombre interno:

clock "Reloj del Sistema" como CLK con período 2

4. Agregar restricciones de precisión y planillas de tiempo

Para documentar plazos de ejecución estrictos (como asegurar que una transición del sistema ocurra dentro de una ventana especificada), use la <->sintaxis para unir dos coordenadas de tiempo con una etiqueta descriptiva:

@10 <-> @40 : {Menos de 30ms}

Mejores prácticas para diseños de temporización limpios

  • Mantenga las unidades de tiempo uniformes:PlantUML trata los enteros de la línea de tiempo como pasos secuenciales genéricos. Elija una unidad de tiempo uniforme para su proyecto (por ejemplo, pulsos, microsegundos o segundos) y manténgala de forma consistente.
  • Use etiquetas para transiciones complejas:Puede agregar mensajes de texto directamente sobre los cambios de estado añadiendo dos puntos inmediatamente después de la asignación de estado (por ejemplo, @10nReg está leyendo : "Activar interrupción").
  • Ordene las declaraciones de forma estratégica:PlantUML apila las líneas de vida verticalmente en el orden exacto en que se declaran en su script. Siempre coloque sus relojes maestros en la parte superior para una alineación más fácil.

Ejemplos reales de diagramas de temporización de PlantUML

Ejemplo 1: Estado de caché y registros de microcontrolador (conciso y formas de onda de reloj)

Este plano ejecutable demuestra una línea de tiempo clásica de ingeniería de hardware embebido, ejecutando un reloj de sistema estándar junto con un registro de almacenamiento de datos conciso que rastrea los estados del hardware.

@startuml
clock "Reloj del Sistema (CLK)" como clk con período 2
conciso "Registro de Bus de Datos" como Reg

@0
Reg está vacío

@2
Reg está leyendo : "Recuperar"

@6
Reg está escribiendo

@10
Reg está bloqueado

@14
Reg está vacío
@enduml

Desglose de sintaxis: El clockdirectiva crea automáticamente una onda cuadrada rítmica de alto/bajo. El Reg la línea maneja múltiples asignaciones de estado de forma secuencial sobre la cuadrícula de tiempo absoluta. Las cadenas de texto que terminan con dos puntos (como : "Recuperar") se representan como llamadas limpias directamente sobre la línea de límite de transición.

Ejemplo 2: Actualización asíncrona de token para consumidor web (Restricciones robustas de múltiples hilos)

Este avanzado plano arquitectónico de software completamente funcional aprovecha el formato de diseño robusto para rastrear el flujo de trabajo de una aplicación web multihilo, mapeando plazos de tiempo precisos entre un cliente web y un trabajador de autorización.

@startuml
robusto "Cliente del navegador web" como Web
robusto "Trabajador de token de autorización" como Auth

@0
Web está inactivo
Auth está dormido

@5
Web está esperando token
Auth está validando

@15
Auth está generando

@15 <-> @25 : {Ventana de generación}

@25
Auth está dormido
Web está representando página

@40
Web está inactivo
@enduml

Desglose de sintaxis: Al utilizar la robusto declaración, los estados se listan limpiamente en el eje Y para cada fila individual de línea de vida. La restricción de evaluación de tiempo (@15 <-> @25 : {Ventana de generación}) dibuja una flecha estándar de doble lado a lo largo de la parte superior de la cuadrícula de tiempo, indicando un límite operativo estricto.

Scroll al inicio