Cómo sincronizar arquitectura y código fuente
Clase 42 de 43 • Curso Profesional de Arquitectura de Software
Contenido del curso
Atributos de calidad
- 2

Qué son los atributos de calidad en software
01:49 min - 3

Cómo medir idoneidad funcional en software
02:52 min - 4

Qué es eficiencia de ejecución en software
04:14 min - 5

Cómo medir interoperabilidad y coexistencia
03:49 min - 6

Qué es la usabilidad y sus 6 dimensiones
08:14 min - 7

Cómo medir confiabilidad en software
05:38 min - 8

Los 5 pilares de seguridad en software
04:01 min - 9

Cómo garantizar mantenibilidad con tests
06:27 min - 10

Adaptabilidad vs capacidad de instalación vs reemplazo
02:48 min - 11

Tensiones entre atributos de calidad de software
04:04 min - 12

Atributos de calidad según fase de empresa
07:00 min
Patrones de arquitectura
- 13

Qué es un patrón de arquitectura
02:50 min - 14

Modelo vista controlador: cómo separar responsabilidades
05:37 min - 15

Arquitectura en capas: controller, servicio y repositorio
03:14 min - 16

Event sourcing vs bases relacionales
06:17 min - 17

Qué es la arquitectura microkernel
01:52 min - 18

Arquitectura Comparte Nada con Map Reduce
02:29 min - 19

Patrón de microservicios: cuándo y cómo
03:57 min - 20

Qué es CQRS y cómo separa lectura de escritura
03:24 min - 21

Arquitectura hexagonal: puertos y adaptadores
04:10 min - 22

Qué son los contextos delimitados en DDD
05:34 min - 23

Cómo combinar patrones de arquitectura
09:22 min - 24

Evolución de patrones desde monolito a microservicios
07:58 min
Diseño de una arquitectura
- 25

Cómo traducir requerimientos en decisiones arquitectónicas
02:18 min - 26

Conectores en arquitectura: tipos y cuándo usarlos
06:18 min - 27

Llamadas asíncronas vs síncronas vs cliente-servidor
03:05 min - 28

Conector enrutador vs difusión: Twitter
01:55 min - 29

Conectores cola, repositorio y pub/sub
03:52 min - 30

Framework de diseño orientado a atributos
01:55 min - 31

Cómo detectar fallas y reparar sistemas
05:59 min - 32

Cómo recuperar y prevenir fallas en sistemas
04:09 min - 33

Tácticas para confinar modificaciones
06:15 min - 34

Cómo prevenir efectos dominó en software
12:17 min - 35

Tácticas para controlar eficiencia de ejecución
09:14 min - 36

Cómo detectar, resistir y recuperarse de ataques
09:02 min - 37

Cómo probar que el software funciona correctamente
05:14 min - 38

Cómo controlar la usabilidad con tácticas
08:20 min - 39

Cómo validar arquitectura con ATAM y métricas
06:34 min - 40

Evolución de arquitectura: startup a gran escala
10:30 min
Modelado y documentación de arquitectura
Para documentar arquitectura de software que guía la implementación, lo clave es aceptar que el código es la fuente de la verdad. La documentación debe reflejar el estado real del sistema y reducir la divergencia entre el modelo (componentes, conectores, módulos) y el código fuente (paquetes, funciones, clases). Aquí se presentan estrategias concretas para mantener esa sincronización sin costos innecesarios.
¿Por qué el código manda en la arquitectura de software?
La arquitectura se modela con abstracciones que no existen tal cual en el código. Esta diferencia abre la puerta a desalineaciones entre lo que se diseña y lo que se programa. Por eso, en lugar de forzar que el documento sea la verdad, conviene sincronizar periódicamente el modelo con el código.
- El modelo usa componentes, conectores y módulos.
- El código expone paquetes, funciones y clases.
- Con el tiempo, ambos pueden diverger y generar malentendidos.
- La solución práctica es definir cómo y cuándo sincronizar.
¿Qué estrategias mantienen alineados modelo y código fuente?
No hay una única forma. Se combinan opciones según el tamaño del equipo, el ritmo de cambios y el momento del proyecto. El objetivo: mantener visibilidad del estado de la arquitectura sin sobrecargar al equipo.
¿Cuándo conviene documentar menos?
- Ignorar la divergencia en equipos chicos o cuando todos conocen las diferencias entre modelo e implementación. Útil si el riesgo es bajo.
- Modelado ad hoc: el equipo sabe la brecha entre el modelado y el código, pero aún no está documentado formalmente.
- Modelos de alto nivel: cambian menos, por lo que mantenerlos es más barato y estable.
¿Cómo sincronizar por tiempos del proyecto?
- Sincronizar en puntos del ciclo de vida definidos por el equipo.
- En agile: cada sprint o cada dos sprints.
- Usar milestones y aprovechar el despliegue de una funcionalidad para actualizar el modelo.
- Beneficio: versionar el modelo y saber cómo estaba la arquitectura en cada momento del proyecto.
¿Qué pasa en crisis y por qué evitar la sincronización constante?
- Sincronizar en una crisis: cuando el código choca con algo que arquitectónicamente no suena bien, detenerse y bajar el modelo actual al documento.
- Sincronización constante: es la más obvia pero la menos eficiente. Es muy cara y poco efectiva porque exigiría revisar todo el tiempo el impacto de cada cambio.
¿Qué habilidades y conceptos se fortalecen con estas prácticas?
Estas decisiones entrenan la capacidad de priorizar y mantener alineado el diseño con la implementación sin perder agilidad. También fomentan la comunicación clara sobre el estado de la arquitectura del proyecto.
- Fuente de la verdad: reconocer que manda el código.
- Sincronización del modelo: elegir momentos y criterios para actualizar.
- Modelado de alto nivel: enfoque en artefactos más estables.
- Versionar la arquitectura: registrar su estado en distintos momentos.
- Trabajo en equipo chico: coordinación basada en conocimiento compartido.
- Términos clave: componentes, conectores, módulos; paquetes, funciones, clases.
- Ciclo de vida y despliegue: puntos naturales para actualizar el modelo.
- Evaluación de costo: evitar sincronización constante por su alto costo y baja eficacia.
¿Tú cómo sincronizas la documentación de arquitectura con el código en tu equipo? Comparte prácticas y dudas para enriquecer la conversación.