Notación oficial de Arch3
Estado
Este documento define la línea base oficial de la notación Arch3.
La salida actual en PlantUML genérico se trata explícitamente como un placeholder descartable. No cuenta como el lenguaje visual final de Arch3.
Propósito
Arch3 es una notación para modelado arquitectónico AI-first. Está diseñada para ser:
- legible por humanos
- escribible por humanos y agentes
- parseable sin ambigüedad
- evolutiva entre múltiples renderizadores
Arch3 está inspirada en el C4 Model, pero se especifica como una notación propia. No depende de un renderer único.
Principios centrales
- diseño guiado por especificación e independiente de implementación
- modelo abstracto independiente del renderizador
- expansión progresiva desde visión general hasta detalle
- identificadores estables y semántica determinística
- metadatos como contexto arquitectónico de primera clase
No objetivos
- compatibilidad total con sintaxis de C4, UML o Structurizr
- reutilizar directamente semántica visual de terceros
- tratar rectángulos genéricos de PlantUML como sistema visual final
Capas
Capa 1: Contexto
Muestra actores, sistemas y límites de negocio.
Reglas:
- no debe exponer detalles tecnológicos de bajo nivel
- debe enfocarse en flujo de valor y límites del sistema
Capa 2: Contenedores
Muestra unidades de runtime o despliegue dentro de un sistema.
Reglas:
- los contenedores deben declarar tecnología
- las relaciones deben describir intención y protocolo cuando aplique
- los metadatos son obligatorios para un uso orientado a gobernanza
Capa 3: Componentes
Muestra las partes lógicas internas de un contenedor.
Reglas:
- los componentes pertenecen a exactamente un contenedor
- las dependencias de librerías pueden mostrarse aquí
- solo se debe expandir cuando el detalle adicional sea útil
Entidades centrales
Actor
- humano externo o sistema externo
- identidad obligatoria
System
- capacidad de negocio o plataforma de alto nivel
- puede contener contenedores
Container
- unidad desplegable o de runtime
- puede contener componentes
- debe soportar metadatos
Component
- módulo interno dentro de un contenedor
- puede declarar dependencias de librerías
Boundary
- agrupación lógica o alcance visual
- opcional en v0.1, con evolución prevista en versiones posteriores
Reglas de identidad
- cada elemento debe tener un
idestable - los ids deben ser únicos dentro del diagrama
- los ids son referencias semánticas, no labels de presentación
- los labels pueden cambiar sin cambiar los ids
Reglas de relaciones
- las relaciones son direccionales por defecto
- cada relación debe incluir una descripción legible por humanos
- los targets deben referenciar ids existentes
- la decoración específica del renderizador no debe cambiar el significado
Reglas de metadatos
Los metadatos forman parte del contrato de la notación.
Como mínimo, los contenedores deben soportar campos como:
ownerrepotierruntime
Reglas:
- las claves deben ser strings determinísticos
- los valores deben ser primitivos serializables
- los renderizadores pueden ocultarlos visualmente, pero no perderlos semánticamente
Reglas de expansión
Arch3 soporta drill-down explícito.
- los sistemas pueden expandirse a contenedores
- los contenedores pueden expandirse a componentes
- la expansión debe preservar continuidad de identidad entre capas
- la expansión es semántica, no solo zoom o layout
Modos de autoría
Modo canónico en v0.1
JSON es el formato canónico de autoría para v0.1.
Modo planeado para versiones futuras
Una DSL textual dedicada podrá introducirse cuando el modelo abstracto y los contratos de validación estén estabilizados.
Separación de responsabilidades
La notación oficial se divide en tres contratos:
- Especificación abstracta
- Modelo canónico
- Contratos de renderizado
Ningún renderizador puede redefinir el significado abstracto de la notación.
Extensión PlantUML
La futura extensión en PlantUML debe introducir un lenguaje visual propio de Arch3, no rectángulos genéricos.
Debe incluir:
- estereotipos, sprites, skins o macros propios de Arch3
- tratamiento visual distinto para actors, systems, containers y components
- affordances claras de expansión
- tratamiento visual específico para dependencias de librerías en capa 3
- callouts de metadatos alineados con la semántica de Arch3
Plan de releases
v0.1
- línea base abstracta de la notación
- modelo JSON canónico
- reglas obligatorias de identidad y relaciones
- renderer placeholder explícitamente deprecado como no final
v0.2
- semántica de boundaries
- convenciones de metadatos más fuertes
- links de expansión entre capas
- primer borrador del contrato visual para PlantUML
v1.0
- especificación estable
- suite de validación estable
- primera extensión oficial de PlantUML con lenguaje visual propio de Arch3
- roadmap de DSL confirmado
Criterios de aceptación
La especificación está lista para implementación cuando:
- sintaxis y semántica están separadas y explícitas
- cada regla central tiene ejemplos válidos e inválidos
- ids, relaciones, metadatos y expansión están totalmente definidos
- el contrato del renderer depende explícitamente del modelo abstracto
- el placeholder genérico de PlantUML queda documentado como no conforme con la visión final de Arch3