O que é um Diagrama de Tempo?
Um Diagrama de Tempo é um diagrama comportamental especializado diagrama UML projetado para visualizar a duração exata dos estados e as condições precisas sob as quais esses estados mudam ao longo de uma linha do tempo linear. Como parte essencial da especificação da Linguagem de Modelagem Unificada (UML), este tipo específico tipo de diagrama UML foca intensamente em restrições de tempo rígidas, ciclos de relógio e sinais de onda. Ele rastreia formas de onda ou linhas de degrau para ilustrar exatamente por quanto tempo um objeto permanece em uma condição específica antes que um gatilho externo altere seu estado.
Mapas de tempo são amplamente utilizados por engenheiros de sistemas embarcados, desenvolvedores de protocolos de rede e arquitetos de hardware para modelar condições de corrida, rastrear mudanças no ciclo de vida de threads ou mapear transições de registradores de hardware. Com VPasCode, você não precisa calcular manualmente larguras em pixels ou mapear coordenadas de linha do tempo. Nosso motor de renderização trata toda a grade temporal automaticamente com base em seus scripts de texto simples.
Guia de Sintaxe Básica: Elementos e Construções
Para criar um diagrama de tempo UML preciso e compatível com padrões no PlantUML, você precisa dominar os tipos de participantes, definições de estado, intervalos de tempo e restrições de sincronização.
1. Declarando Participantes (Robusto vs. Conciso)
Você pode modelar linhas do tempo usando dois estilos visuais distintos, dependendo da quantidade de detalhes que o seu sistema exige. Você deve declará-los usando palavras-chave explícitas:
- Linhas do Tempo Robustas: Exibe estados como linhas distintas e empilhadas. Ideal para processos de software de alto nível.
robusto "Thread da Aplicação" como Thread - Linhas do Tempo Concisas: Exibe estados ao longo de uma única linha plana, usando blocos em trama cruzada para indicar mudanças. Perfeito para mapas de sinais de hardware compactos.
conciso "Registrador da CPU" como Reg
2. Definindo Transições de Estado e Passos de Tempo
Diferentemente de outros diagramas, você muda de estado declarando um ponto de tempo usando o @ símbolo, referenciando seu participante e usando o is palavra-chave. Nomes de estado que contêm espaços ou caracteres especiais devem ser envolvidos por aspas:
@0
Thread está Ocioso
@10
Thread está "Processando Dados"
3. Gerando Sinais de Relógio
Para simular relógios de hardware binários, use a clockpalavra-chave. Você deve especificar um período de ciclo, um ciclo de trabalho opcional e um nome interno:
clock "Relógio do Sistema" como CLK com período 2
4. Adicionando Restrições de Precisão e Planos de Tempo
Para documentar prazos rígidos de execução (como garantir que uma transição do sistema ocorra dentro de uma janela especificada), use a <->sintaxe para conectar duas coordenadas de tempo com uma etiqueta descritiva:
@10 <-> @40 : {Menos de 30ms}
Melhores Práticas para Layouts de Tempo Limpos
- Mantenha as Unidades de Tempo Uniformes:O PlantUML trata os inteiros da linha do tempo como etapas sequenciais genéricas. Escolha uma unidade de tempo uniforme para o seu projeto (por exemplo, ticks, microssegundos ou segundos) e mantenha-a consistentemente.
- Use Etiquetas para Transições Intrincadas:Você pode anexar mensagens de texto diretamente às mudanças de estado adicionando dois pontos imediatamente após a atribuição do estado (por exemplo,
@10nReg está Lendo : "Disparar Interrupção"). - Ordene Declarações Estrategicamente:O PlantUML empilha as linhas de vida verticalmente na ordem exata em que são declaradas no seu script. Coloque sempre os relógios mestres no topo para facilitar o alinhamento.
Exemplos Reais de Diagramas de Tempo do PlantUML
Exemplo 1: Estado da Cache e dos Registradores do Microcontrolador (Conciso e Formas de Onda de Relógio)
Este modelo executável demonstra uma linha do tempo clássica de engenharia de hardware embarcado, executando um relógio de sistema padrão junto com um registrador de armazenamento de dados conciso que rastreia os estados do hardware.
@startuml
clock "Relógio do Sistema (CLK)" como clk com período 2
conciso "Registrador da Banda de Dados" como Reg
@0
Reg está Vazio
@2
Reg está Lendo : "Buscar"
@6
Reg está Escrevendo
@10
Reg está Trancado
@14
Reg está Vazio
@enduml 
Análise da Sintaxe: O clockdiretiva cria automaticamente uma onda quadrada rítmica de alto/baixo. O Reg linha manipula múltias atribuições de estado sequencialmente sobre a grade de tempo absoluta. Strings de texto acrescentadas com dois pontos (como : "Buscar") são exibidos como chamadas limpas diretamente sobre a linha de limite de transição.
Exemplo 2: Atualização Assíncrona de Token para Consumidor Web (Restrições Robustas de Multi-Tarefa)
Este avançado e totalmente funcional modelo arquitetônico de software aproveita o formato de layout robusto para rastrear o fluxo de trabalho de uma aplicação web multi-tarefa, mapeando prazos de tempo precisos entre um cliente web e um trabalhador de autorização.
@startuml
robusto "Cliente do Navegador Web" como Web
robusto "Trabalhador de Token de Autenticação" como Auth
@0
Web está Inativo
Auth está Dormindo
@5
Web está AguardandoToken
Auth está Validando
@15
Auth está Gerando
@15 <-> @25 : {Janela de Geração}
@25
Auth está Dormindo
Web está RenderizandoPágina
@40
Web está Inativo
@enduml 
Análise de Sintaxe: Ao usar a robusto declaração, os estados são listados de forma limpa no eixo Y para cada linha individual de vida. A restrição de avaliação de tempo (@15 <-> @25 : {Janela de Geração}) desenha uma seta padrão de dimensão dupla ao longo do topo da grade de tempo, indicando um limite operacional rígido.