Be Software Architecture Wise
Be Wise Apps

Read in English · Lire en français · Auf Deutsch lesen

Sección 4.7 de 4.8 · Intermedio · 22 min de lectura

Diagramas como código y cómo mantener la documentación al día

Videolección

5 min · narrado en inglés, con subtítulos
Solo escuchar (audio)
Leer la transcripción

La mayor parte de la documentación de arquitectura no fracasa porque esté mal escrita. Fracasa porque se queda obsoleta. En esta lección aprenderás cómo escribir los diagramas como texto, junto con unos pocos hábitos sencillos, mantiene la documentación fiel a la realidad durante toda la vida de un sistema.

Imagina un libro de recetas familiar en el que cada cambio lo apunta a lápiz quien cocina, sin dejar constancia de quién cambió qué. Al cabo de unos años, nadie se fía de él. Ahora imagina que las recetas están mecanografiadas, y que cada cambio se propone, lo revisa un segundo cocinero y se fecha. Y que el libro impreso se reimprime automáticamente después de cada cambio aprobado. Los diagramas como código aplican esa disciplina a los diagramas de arquitectura.

Diagramas como código significa escribir un diagrama como un archivo de texto breve y dejar que una herramienta lo organice y lo dibuje. En lugar de arrastrar cajas sobre un lienzo, escribes algo como ordering, flecha, base de datos, y la herramienta produce la imagen. ¿Para qué tomarse la molestia? Un archivo de texto tiene historial: quién lo cambió, cuándo y por qué. Y cuando un desarrollador añade una nueva dependencia, el cambio del diagrama aparece en el mismo pull request que el código, así que los revisores pueden cuestionar la nueva flecha cuando es más barato cambiarla.

Cuatro lenguajes dominan el panorama, y la sección escribe la misma plataforma de reparto de comida en cada uno. PlantUML, lanzado por primera vez en 2009, cubre los diagramas habituales del Lenguaje Unificado de Modelado, y sus diagramas de secuencia son especialmente buenos. Mermaid, de 2014, se renderiza directamente en los archivos Markdown de GitHub y GitLab, así que un diagrama en un archivo README no necesita ningún paso de compilación. Su control de la disposición en los diagramas grandes es limitado. El lenguaje de Structurizr, creado por Simon Brown junto con C4, es de otra naturaleza. No describe un diagrama. Describe un modelo y después define vistas de él. Y D2, cuyo código se abrió en 2022, busca un resultado limpio y moderno y una sintaxis legible. El compromiso con todos ellos: la disposición automática es cómoda, pero a veces fea.

Veamos por qué importa un modelo. A la izquierda hay un único archivo de workspace. Cada persona, sistema y contenedor se define una sola vez, con su nombre y su tecnología. A partir de ese único modelo, la herramienta genera las vistas: contexto del sistema, contenedores y despliegue para cada entorno. Cada vista puede exportarse como imágenes, como otros lenguajes de diagramas o como un sitio de documentación con los registros de decisiones. Así que renombra el servicio de pedidos una vez en el modelo, y todas las vistas cambian con él. En una herramienta de dibujo, dos cajas con la misma etiqueta no tienen ninguna conexión, y tienes que corregir cada diagrama a mano.

Una vez que la documentación es texto en el repositorio, puede seguir exactamente el mismo flujo de trabajo que el código. La editas en una rama y se revisa en un pull request junto con el cambio de código. Después, la integración continua renderiza todos los diagramas y comprueba los enlaces. Un enlace roto, un diagrama no válido o una fecha de revisión vencida hacen fallar la compilación y devuelven el cambio. Una vez fusionado en main, el sitio se vuelve a generar automáticamente. Nadie tiene que acordarse de exportar una imagen y subirla a una wiki. Así, los lectores siempre ven la documentación que coincide con el código de main. Y cuando abren incidencias, estas dan pie al siguiente cambio.

Las herramientas no mantienen la documentación fiel a la realidad. Los hábitos sí. Primero, cada documento tiene un responsable con nombre, normalmente el equipo dueño del código. Los documentos que son de todos no los mantiene nadie. Segundo, revisa la documentación con los cambios de código. Una plantilla de pull request que pregunta si ha cambiado una interfaz, una dependencia o una decisión detecta la mayor parte de la deriva en el momento en que se produce. Tercero, dale a cada página una fecha de última revisión. Una página que dice última revisión 2023 es honesta. Una página que describe en silencio el sistema de 2023 es una trampa. Cuarto, enlaza en ambas direcciones: las páginas apuntan al código, y los comentarios del código apuntan a los registros de decisiones. Y quinto, elimina el material obsoleto, porque una documentación errónea es peor que ninguna. La excepción son los registros de decisiones. Son historia, así que se reemplazan, nunca se eliminan.

Por último, algunos errores frecuentes. Elegir una herramienta antes de decidir qué documentar: la herramienta importa mucho menos que la responsabilidad y la revisión. Hacer commit de imágenes renderizadas sin sus fuentes, de modo que unas y otras se separan. Y tomar los diagramas como código como excusa para saltarse títulos, leyendas y etiquetas. Las reglas de notación de C4 se siguen aplicando a los diagramas generados.

La sección completa muestra la plataforma escrita en los cuatro lenguajes, un pipeline de ejemplo y una lista de comprobación para una documentación que se mantiene al día. A continuación, en la Sección cuatro punto ocho, pasamos de los documentos a las personas. Nos vemos allí.

Lo que necesitas saber

Qué significa diagramas como código

Diagramas como código significa escribir un diagrama como un archivo de texto breve en un lenguaje pequeño y dejar que una herramienta lo organice y lo dibuje. En lugar de arrastrar cajas sobre un lienzo, escribes ordering -> db: SQL y la herramienta produce la imagen. El archivo de texto vive en el repositorio de código y se trata como código: se versiona, se revisa, lo comprueban las compilaciones automáticas y lo publica el pipeline.

Es una parte de la documentación como código (docs as code), la práctica, promovida por la comunidad Write the Docs, de producir documentación con las mismas herramientas y el mismo flujo de trabajo que el software: gestores de incidencias, control de versiones (normalmente Git), lenguajes de marcado de texto plano como Markdown o AsciiDoc, revisión de código y pruebas automáticas. Las secciones anteriores produjeron el material: vistas y diagramas C4, UML donde importa la precisión, ADR y una estructura arc42. Esta sección trata de mantener ese material exacto durante toda la vida del sistema, que es donde fracasa la mayor parte de la documentación de arquitectura. Las razones de ese fracaso se expusieron en por qué y cuánto documentar: wikis desactualizadas, grandes documentos sin responsable y diagramas que ya no coinciden con el sistema.

Por qué poner los diagramas en texto

Control de versiones. Un diagrama en texto tiene historial. Puedes ver quién lo cambió, cuándo y por qué, y comparar dos versiones cualesquiera línea a línea; una imagen binaria o un archivo en el formato de una herramienta de dibujo solo muestra que algo cambió. También puedes crear ramas: el diagrama de un cambio propuesto vive en la misma rama que el código que lo implementa.

Revisión en pull requests. Cuando un desarrollador añade una nueva dependencia entre servicios, el cambio en el diagrama aparece en el mismo pull request que el código, como una diferencia de texto legible. Los revisores pueden preguntar si esa nueva flecha es deseada, lo que supone una revisión de arquitectura en el momento en que resulta más barata.

Coherencia. La herramienta aplica las mismas formas, fuentes y reglas de disposición a todos los diagramas, de modo que los diagramas dibujados por veinte personas siguen pareciendo un solo conjunto. Con un lenguaje de modelado (más adelante), el mismo elemento aparece con el mismo nombre y la misma descripción en todas las vistas.

Generación. El texto puede producirse con programas. Los diagramas pueden generarse a partir del propio código (grafos de dependencias), de la infraestructura como código (diagramas de despliegue), de las especificaciones de API o de un modelo central, y luego comprobarse automáticamente con el sistema.

Los compromisos son reales. La disposición automática es cómoda, pero a veces fea, y pelearse con un motor de disposición para colocar una caja puede llevar más tiempo que dibujarla; la mayoría de las herramientas ofrecen indicaciones como la dirección o la agrupación, no posiciones exactas. Los lenguajes de texto tienen una curva de aprendizaje para quienes no programan, como los responsables de producto. Y un buen boceto en una pizarra durante una discusión de diseño sigue siendo la forma más rápida de pensar; los diagramas como código son para los diagramas que piensas conservar.

Cuatro lenguajes, un ejemplo

Cuatro lenguajes dominan el panorama. Cada ejemplo de abajo describe una parte de la misma plataforma de reparto de comida.

PlantUML, creado por Arnaud Roques y lanzado por primera vez en 2009, es el más antiguo de los cuatro. Cubre todos los diagramas UML habituales (de secuencia, de componentes, de despliegue, de estados, de actividades, de clases) y muchos otros, y usa Graphviz para organizar la mayoría de los tipos de diagrama. La biblioteca C4-PlantUML añade las formas de C4. Sus diagramas de secuencia son especialmente buenos, lo que lo convierte en una opción natural para los escenarios de ejecución de Lo esencial de UML.

@startuml
title Place an order (happy path)
actor Customer
participant "Customer app" as App
participant "Ordering service" as Ord
participant "Payment provider" as Pay
queue "Order events topic" as MB

Customer -> App : Tap "Pay"
App -> Ord : POST /orders (HTTPS)
Ord -> Pay : Authorise payment
Pay --> Ord : Authorised
Ord ->> MB : OrderPlaced (async)
Ord --> App : 201 Created
@enduml
PlantUML: un diagrama de secuencia de hacer un pedido; ->> dibuja un mensaje asíncrono y --> una respuesta

Mermaid, creado por Knut Sveidqvist en 2014, está escrito en JavaScript y se renderiza en el navegador. Su mayor ventaja es su alcance: GitHub renderiza los bloques de Mermaid de los archivos Markdown desde febrero de 2022, y GitLab y muchas herramientas de wiki y de toma de notas hacen lo mismo, así que un diagrama en un README no necesita ningún paso de compilación. Admite diagramas de flujo, de secuencia, de clases, de estados y de entidad-relación, entre otros, y tiene soporte experimental para C4. Su control de la disposición es limitado en los diagramas grandes.

flowchart LR
    app["Customer app<br/>Kotlin, Swift"]
    gw["API gateway"]
    ord["Ordering service<br/>Java"]
    db[("Order database<br/>PostgreSQL")]
    topic[["Order events<br/>Kafka topic"]]
    disp["Dispatch service<br/>Go"]
    notif["Notification service<br/>Node.js"]

    app -->|HTTPS/JSON| gw
    gw -->|HTTPS/JSON| ord
    ord -->|SQL| db
    ord -->|publishes OrderPlaced| topic
    disp -->|consumes| topic
    notif -->|consumes| topic
Mermaid: un diagrama de flujo a nivel de contenedores; [( )] dibuja el cilindro de una base de datos y las etiquetas van sobre las flechas; el topic se dibuja como un contenedor, como recomienda la Sección 4.3

Structurizr DSL, creado por Simon Brown junto con el modelo C4, es de otra naturaleza. No describe un diagrama; describe un modelo (personas, sistemas de software, contenedores, componentes y las relaciones entre ellos) y después define vistas de ese modelo. Cada elemento se define una sola vez, con su nombre, su descripción y su tecnología, y aparece en todas las vistas que lo incluyen. Las relaciones entre contenedores se deducen automáticamente en el nivel del sistema, así que la vista de contexto no necesita flechas aparte. El DSL también puede adjuntar documentación en Markdown y una carpeta de ADR al workspace, y sus herramientas pueden exportar las vistas a PlantUML, Mermaid, D2 y otros formatos.

workspace "Food delivery" {
    model {
        customer = person "Customer" "Orders food from local restaurants."
        payments = softwareSystem "Payment provider" "Takes card payments." "External"
        platform = softwareSystem "Food-delivery platform" {
            app = container "Customer app" "Ordering and tracking." "Kotlin, Swift"
            gateway = container "API gateway" "Authenticates and routes requests." "Managed API gateway"
            ordering = container "Ordering service" "Accepts and tracks orders." "Java"
            db = container "Order database" "Orders and their states." "PostgreSQL" "Database"
            orderEvents = container "Order events" "Order lifecycle events." "Kafka topic" "Topic"
            dispatch = container "Dispatch service" "Assigns couriers." "Go"
        }
        customer -> app "Places and tracks orders using"
        app -> gateway "Makes API calls to" "JSON/HTTPS"
        gateway -> ordering "Routes requests to" "JSON/HTTPS"
        ordering -> db "Reads from and writes to" "SQL/TCP"
        ordering -> payments "Takes card payments using" "JSON/HTTPS"
        ordering -> orderEvents "Publishes order events to" "Kafka"
        dispatch -> orderEvents "Consumes order events from" "Kafka"
    }
    views {
        systemContext platform "Context" {
            include *
            autoLayout lr
        }
        container platform "Containers" {
            include *
            autoLayout lr
        }
        styles {
            element "Database" {
                shape cylinder
            }
            element "Topic" {
                shape pipe
            }
        }
    }
}
Structurizr DSL: un modelo y dos vistas de la plataforma de reparto de comida; la vista de contexto se genera a partir de las mismas definiciones

D2 (Declarative Diagramming), cuyo código abrió Terrastruct en 2022, es el más reciente. Busca un resultado limpio y moderno y una sintaxis legible, admite contenedores anidados (escritos con llaves y referenciados con nombres separados por puntos) y ofrece varios motores de disposición a elegir: dagre y ELK vienen incluidos y son gratuitos, y TALA, diseñado para diagramas de arquitectura de software, es un motor comercial aparte.

direction: right

customer: Customer {shape: person}
payments: Payment provider

platform: Food-delivery platform {
  app: Customer app
  ordering: Ordering service
  db: Order database {shape: cylinder}
  events: Order events topic {shape: queue}
  dispatch: Dispatch service

  app -> ordering: Places order (HTTPS)
  ordering -> db: SQL
  ordering -> events: Publishes OrderPlaced
  dispatch -> events: Consumes OrderPlaced
}

customer -> platform.app: Places orders using
platform.ordering -> payments: Authorise (HTTPS)
D2: contenedores anidados, formas y conexiones con etiquetas

Comparación de los cuatro

PlantUMLMermaidStructurizr DSLD2
DescribeUn diagrama por archivoUn diagrama por bloqueUn modelo más vistas de élUn diagrama por archivo
Destaca enUML, en especial los diagramas de secuenciaDiagramas dentro de Markdown sin paso de compilaciónDiagramas C4 coherentes en varios nivelesDiagramas de arquitectura generales y atractivos
RenderizadoHerramienta o servidor Java; Graphviz para la mayoría de las disposicionesEn el navegador; nativo en GitHub y GitLabHerramientas de Structurizr; exporta a otros formatosHerramienta de línea de comandos; motor de disposición a elegir
Cuidado conAspecto predeterminado anticuado; disposición controlable solo mediante indicacionesControl limitado de la disposición en diagramas grandesSolo conceptos de C4; necesita sus propias herramientasEl mejor motor de disposición es comercial

Un modelo, muchas vistas

Un modelo, muchas vistas: un workspace de Structurizr DSL define elementos y relaciones una vez; de él se generan las vistas de contexto, contenedores y despliegue, exportadas como imágenes, otros lenguajes de diagramas o un sitio de documentaciónworkspace.dsl (un modelo)person Customersystem Platformcontainer OrderingJavacontainer Order DBPostgreSQLcontainer Order eventstopic Kafka+ relaciones, etiquetas, estilosVista de contextopersonas y sistemasVista contened.en la plataformaVista desplieguepor entornogeneraSVG, PNGimágenesPlantUML,Mermaid, D2Sitio docscon ADRRenombra Ordering una vez en el modelo y todas las vistas y exportaciones cambian.
Un lenguaje de modelado define cada elemento una sola vez; las vistas y las exportaciones se generan, así que no pueden contradecirse entre sí.

Herramientas de dibujo y herramientas de modelado

La diferencia entre Structurizr y los otros tres es un caso de la distinción entre herramientas de dibujo y de modelado presentada en la Sección 4.3. Una herramienta de dibujo (diagrams.net, Excalidraw, Visio, una pizarra en línea, y también PlantUML, Mermaid y D2) conoce formas, líneas y texto. Una caja con la etiqueta Servicio de pedidos en un diagrama no tiene ninguna conexión con la caja que lleva la misma etiqueta en otro. Si renombras el servicio, tienes que buscar y corregir a mano cada diagrama; si lo escribes mal una vez, tienes, hasta donde sabe la herramienta, dos servicios.

Una herramienta de modelado (Structurizr, Archi para modelos ArchiMate, Sparx Enterprise Architect para UML y SysML, Capella) mantiene un modelo: un repositorio de elementos y relaciones con propiedades. Los diagramas son vistas del modelo. Si renombras un elemento, cambian todas las vistas. El modelo puede consultarse (¿qué contenedores dependen del intermediario de mensajes?), comprobarse (ningún componente de la app del cliente puede llamar a la base de datos) y compararse con el sistema en ejecución. El precio es más estructura por adelantado y, con las herramientas comerciales pesadas, licencias, formación y una tendencia a modelar mucho más de lo que nadie lee.

Una regla práctica: usa herramientas de dibujo, de texto o gráficas, para bocetos, explicaciones puntuales y diagramas que se sostienen por sí solos, como un único diagrama de secuencia en un ADR. Usa un modelo cuando los mismos elementos aparezcan en muchos diagramas, cuando contribuyan varios equipos o cuando quieras comprobar la documentación con el código. Muchos equipos combinan ambos: un modelo de Structurizr para la estructura C4 y PlantUML o Mermaid para unos pocos diagramas de secuencia y de estados.

Generar la documentación en el pipeline

Una vez que la documentación es texto en el repositorio, el pipeline de integración continua del Capítulo 0 puede compilarla y comprobarla como si fuera código. Un pipeline típico renderiza todos los diagramas (y hace fallar la compilación ante un error de sintaxis), comprueba los enlaces, genera un sitio de documentación estático con un generador como MkDocs, Antora o Docusaurus, y lo publica cuando los cambios llegan a la rama principal. Así, los lectores siempre ven la documentación que coincide con el código de main, y nadie tiene que acordarse de exportar una imagen y subirla a una wiki.

Se pueden añadir más comprobaciones a medida que el equipo madura: un corrector ortográfico y un linter de estilo de redacción (Vale es popular), una comprobación de que cada ADR tiene un estado válido, un aviso cuando la fecha de última revisión de una página es más antigua que su intervalo de revisión, y comprobaciones de arquitectura que comparan las dependencias documentadas con las reales del código, que son una forma de función de aptitud (fitness function). Algunos equipos generan partes de la documentación a partir del propio sistema: grafos de dependencias a partir de la compilación, la referencia de la API a partir de las especificaciones OpenAPI, diagramas de despliegue a partir de la infraestructura como código.

name: architecture-docs
on:
  pull_request:
    paths: ["docs/**"]
  push:
    branches: [main]

jobs:
  docs:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      # assumes plantuml, d2, lychee and mkdocs are available on the runner
      - name: Render diagrams (fails on syntax errors)
        run: |
          plantuml -tsvg docs/diagrams/*.puml
          for f in docs/diagrams/*.d2; do d2 "$f" "${f%.d2}.svg"; done
      - name: Check links
        run: lychee --offline docs/
      - name: Build site (warnings such as broken links fail the build)
        run: mkdocs build --strict
      - name: Publish
        if: github.ref == 'refs/heads/main'
        run: ./scripts/publish-docs.sh
Un flujo de trabajo de GitHub Actions que renderiza los diagramas, comprueba los enlaces, genera el sitio de documentación en cada pull request y publica desde main

El flujo de trabajo de la documentación como código

Flujo de documentación como código: se edita en una rama, se revisa en un pull request, la comprueba la CI, se fusiona y se publica sola; los fallos de CI y las incidencias de los lectores vuelven atrásRamaedita .md, .dsl,y los ADRPull requestse revisa conel códigoPruebas CIrenderizar,lint, enlacesFusión en mainaprobada porresponsablesPublicarsitio generadoautomáticamenteenlace roto, diagrama inválido o fecha vencida: falla la compilaciónLectoressiempre ven mainlos lectores abren incidencias que inician otro cambioLa documentación sigue exactamente el mismo flujo que el código
Los cambios en la documentación siguen el mismo camino que los cambios en el código: rama, revisión, comprobaciones automáticas, fusión y publicación automática.

Mantener la documentación al día

Las herramientas no mantienen la documentación fiel a la realidad; los hábitos sí. Cinco hábitos marcan la diferencia.

Responsabilidad. Cada documento tiene un responsable con nombre, normalmente el equipo dueño del código que describe. En GitHub y GitLab, un archivo CODEOWNERS puede convertir a ese equipo en revisor obligatorio de los cambios bajo su carpeta docs/. Los documentos que son de todos no los mantiene nadie.

Revisión con los cambios de código. Una plantilla de pull request que pregunta ¿Cambia esto una interfaz, una dependencia, un despliegue o una decisión? Si es así, ¿qué documento o ADR has actualizado? detecta la mayor parte de la deriva en el momento en que se produce. Algunos equipos van más allá y bloquean la fusión de funcionalidades que carecen de documentación, una práctica que menciona la guía de Write the Docs.

Fechas de última revisión. Un pequeño encabezado en cada página registra su responsable, la fecha en que se comprobó por última vez con la realidad y cada cuánto debe revisarse. Los lectores pueden juzgar hasta qué punto fiarse de ella, y el pipeline puede señalar las páginas con la revisión vencida. Una página que dice última revisión: 2023 es honesta; una página que describe en silencio el sistema de 2023 es una trampa.

Enlazar documentación y código. Las páginas apuntan al código que describen (rutas, módulos), los comentarios del código apuntan a los ADR y los mensajes de commit citan los registros que implementan. Los enlaces en ambas direcciones dejan claro a qué documentos podría afectar un cambio.

Eliminar el material obsoleto. Una documentación errónea es peor que ninguna, porque los lectores actúan según ella. Cuando una página ya no describe el sistema y nadie va a corregirla, elimínala o muévela a un archivo histórico claramente señalado. Los ADR son la excepción: son registros de la historia, así que se reemplazan o se declaran obsoletos, no se eliminan. Esta es la idea de la documentación viva que Cyrille Martraire desarrolló en su libro de 2019 con ese título: una documentación que evoluciona al mismo ritmo que el sistema, idealmente porque gran parte de ella se deriva del propio sistema.

---
title: "Ordering service: building block view (level 2)"
owner: "@ordering-team"
last_reviewed: 2026-09-14
review_every: 6 months
code: src/ordering/
decisions: [ADR-0007, ADR-0012]
---
Front matter al principio de una página Markdown: responsable, fecha e intervalo de revisión, y enlaces al código y a las decisiones que describe

Lista de comprobación: documentación que se mantiene al día

Úsala al preparar la documentación de arquitectura de un repositorio y vuelve a ella cada pocos meses.

  • La documentación vive en el repositorio que describePáginas Markdown o AsciiDoc, fuentes de diagramas y ADR bajo docs/, no en una wiki aparte que nadie actualiza en el mismo cambio.
  • Las fuentes de los diagramas son texto y las renderiza el pipelineNada de imágenes exportadas a mano que se quedan atrás en silencio respecto a sus fuentes; la compilación falla ante un diagrama no válido.
  • Cada elemento se define una sola vez donde los diagramas se solapanUsa un modelo (como Structurizr DSL) cuando los mismos contenedores aparecen en varios diagramas.
  • Cada página tiene un responsable y una fecha de última revisiónLo garantizan CODEOWNERS y una comprobación del pipeline que avisa cuando ha pasado el intervalo de revisión.
  • Los pull requests preguntan por la documentaciónLa plantilla pregunta si ha cambiado una interfaz, una dependencia, un despliegue o una decisión, y qué documento se ha actualizado.
  • Los enlaces se comprueban automáticamenteLos enlaces internos rotos y las referencias a archivos eliminados hacen fallar la compilación.
  • La documentación apunta al código y el código apunta a las decisionesRutas en la documentación, números de ADR en los comentarios del código y en los mensajes de commit.
  • El sitio publicado se genera desde mainLos lectores siempre ven la versión que coincide con el código desplegado, sin ningún paso de publicación manual.
  • Las páginas obsoletas se eliminan o se archivanLas páginas que nadie va a corregir se retiran; los ADR se reemplazan o se declaran obsoletos, nunca se eliminan.
  • Al menos una comprobación compara la documentación con la realidadPor ejemplo, una prueba que falla si aparece en el código una dependencia que el diagrama de contenedores no muestra.

Comprueba lo que has entendido

¿Qué puede ver un revisor en un pull request cuando un diagrama es código que no puede ver cuando es una imagen exportada?

Una diferencia legible, línea a línea, de lo que ha cambiado, como una nueva relación entre dos servicios, en el mismo pull request que el código que la introdujo.

¿Por qué renombrar un servicio da más trabajo con una herramienta de dibujo que con una herramienta de modelado?

En una herramienta de dibujo, cada diagrama guarda su propia copia de la etiqueta, así que hay que encontrar y editar cada diagrama; en una herramienta de modelado, el elemento se define una sola vez y todas las vistas recogen el nuevo nombre.

¿Por qué hay que eliminar la documentación obsoleta en lugar de dejarla donde está, y cuál es la excepción?

Los lectores actúan según lo que leen, así que una documentación errónea provoca decisiones erróneas. Los ADR son la excepción: registran la historia y, en lugar de eliminarse, se marcan como reemplazados u obsoletos.

Nombra dos comprobaciones que un pipeline de documentación puede ejecutar además de renderizar diagramas.

Comprobación de enlaces, linting de redacción u ortografía, una compilación estricta del sitio, un aviso para las fechas de revisión vencidas y la comparación de las dependencias documentadas con las del código.

Siguiente · 4.8ComunicarAdaptar la arquitectura a directivos, responsables de producto, desarrolladores, operaciones, seguridad y auditores: explicar los compromisos, resúmenes de una página, seguir una solicitud, documentos de diseño y RFC, revisiones, diseño de diagramas y construcción de consensos.Continuar →

Fuentes y lecturas recomendadas

¿Tienes una pregunta sobre esta sección? ArchitectBot, el asistente de estudio con IA del curso, responde primero a partir del curso.

Pregunta: “Nuestros diagramas de arquitectura están en una herramienta de dibujo y siempre están desactualizados. ¿Cómo podría pasar a diagramas como código sin que las personas que no desarrollan dejen de poder contribuir?”