Pular para o conteúdo

Etiquetas e metadados

O cfourdev conhece C4 e nada mais. Time, domínio, produto, criticidade, jornada, código de rastreabilidade — nada disso tem campo próprio, e é deliberado: seriam campos de um domínio específico dentro de um formato que precisa servir a todos.

O que existe são dois eixos livres, e a diferença entre eles é uma só.

etiqueta (tags)uma marca sem valor. Uma caixa pode ter várias
metadado (meta)um par chave e valor. Uma chave tem um valor só por caixa

Daí decorre tudo o mais:

  • agrupar exige valor único, então só metadado agrupa;
  • filtrar funciona com os dois;
  • colorir o desenho por uma dimensão exige valor único, então só metadado colore.
- id: api
name: API de Reservas
shape: api
parent: reservas
tags: [nucleo, pci]
meta:
dominio: reservas
time: squad-espacos
criticidade: alta

Os valores de meta podem ser texto, número ou booleano. Uma estrutura mais complexa é convertida em texto.

tagsmeta
elementosimsim
relaçãosimsim
diagramasimsim
fluxosimsim
projetosimsim
notanãosim

Toda etiqueta e toda chave de metadado viram filtro automaticamente. Não há nada a configurar: escrever time: squad-espacos numa caixa faz aparecer um filtro “time” no leitor, com os valores encontrados e a contagem de cada um.

Um metadado cujo valor é uma URL vira um link na caixa, e não um filtro. Nenhum campo novo, nenhuma configuração:

meta:
runbook: https://exemplo.interno/runbooks/api-de-reservas

O leitor mostra isso como um link chamado runbook. Ele não vira filtro porque um filtro cujos valores são todos únicos não filtra nada — só enterra os filtros reais.

A configuração da modelagem pode dar um rótulo melhor a uma chave, e liberar uma chave para colorir o desenho. Isso é opcional; veja Aparência da modelagem.

Prefixe etiquetas quando houver mais de um eixo. camada/experiencia, camada/dominio, conformidade/pci. O motor nunca interpreta o conteúdo de uma etiqueta, mas quem lê a lista agradece.

Use metadado quando você quiser agrupar ou colorir por aquilo. Se a pergunta é “mostre-me isto separado por domínio”, é metadado.

Use etiqueta quando uma caixa pode ter várias marcas ao mesmo tempo. Uma API pode ser ao mesmo tempo nucleo e pci.

Mantenha o vocabulário curto. Uma chave de metadado usada em três caixas de oitenta é ruído no filtro.

model/reservas/containers.yaml
elements:
- id: painel
name: Painel de Reservas
shape: browser
parent: reservas
technology: React
description: Onde a pessoa procura uma sala livre e confirma a reserva.
tags: [experiencia]
meta:
dominio: reservas
time: squad-espacos
- id: api
name: API de Reservas
shape: api
parent: reservas
technology: Node.js
description: Onde moram as regras — conflito de horario, limite e confirmacao.
tags: [nucleo]
meta:
dominio: reservas
time: squad-espacos
criticidade: alta
runbook: https://exemplo.interno/runbooks/api-de-reservas
- id: banco
name: Base de Reservas
shape: database
parent: reservas
technology: PostgreSQL
description: Salas, reservas e participantes.
tags: [dados]
meta:
dominio: reservas
time: squad-espacos
- id: fila-de-sincronizacao
name: Fila de Sincronizacao
shape: queue
parent: reservas
technology: Amazon SQS
description: Uma mensagem por reserva confirmada.
tags: [dados]
meta:
dominio: integracao
time: squad-espacos
- id: sincronizador
name: Sincronizador de Agenda
shape: container
parent: reservas
technology: Node.js
description: Le a fila e cria o evento correspondente na agenda corporativa.
tags: [integracao]
meta:
dominio: integracao
time: squad-integracoes
relations:
- from: colaborador
to: painel
kind: sync
label: Procura e reserva
- from: painel
to: api
kind: sync
label: Chama
meta:
protocolo: REST
- from: fila-de-sincronizacao
to: sincronizador
kind: async
label: Entrega a reserva
- from: sincronizador
to: agenda-corporativa
kind: sync
label: Cria o evento
meta:
protocolo: REST
Terminal window
cfour find squad-espacos
cfour element list --tag nucleo

E, no leitor, o painel de filtros lista toda etiqueta e toda chave de metadado encontradas, com a contagem de cada valor.

Notas — riscos, decisões e recados presos ao modelo.