Saltar al contenido
Nm NoumorDevs

Fundamentos · 04

Patrones de Diseño: el lenguaje común del software

Los patrones son soluciones nombradas a problemas recurrentes. Dominarlos es dominar el idioma en el que se comunica el diseño — y el idioma con el que instrumentamos a los agentes para que no tengan que reinventar nada.

Catálogo

Patrones clásicos y modernos

Strategy

comportamiento
Problema
Múltiples algoritmos intercambiables para una misma intención.
Solución
Encapsular cada algoritmo en una clase con un contrato común y elegir en runtime.
Con SDD
Muy útil cuando la spec define variantes (por cliente, país, tier) sin cambiar el use case.

Factory / Builder

creacional
Problema
La creación de objetos complejos contamina el código de negocio.
Solución
Aislar la construcción tras una interfaz que devuelve instancias listas.
Con SDD
Permite que el agente invoque `build()` con parámetros validados por la spec.

Repository

estructural
Problema
El dominio no debe hablar SQL ni URLs.
Solución
Una interfaz en el dominio y adaptadores que persisten en un motor concreto.
Con SDD
Clave en hexagonal: la spec describe el contrato y la IA elige la implementación.

CQRS

distribuido
Problema
Lecturas y escrituras tienen requisitos distintos de modelo y rendimiento.
Solución
Separar comandos (escritura) de queries (lectura) con modelos propios.
Con SDD
Las specs describen cada comando como un contrato atómico con invariantes.

Saga

distribuido
Problema
Transacciones que abarcan varios servicios no pueden ser ACID.
Solución
Secuencia de pasos con compensaciones explícitas ante fallo.
Con SDD
La spec lista pasos, compensaciones y estados; ideal para generarla con IA.

Event Sourcing

distribuido
Problema
El estado actual pierde información sobre cómo llegamos a él.
Solución
Persistir la secuencia de eventos y derivar el estado al materializar.
Con SDD
Permite a la IA auditar decisiones y reproducir escenarios.

Transactional Outbox

distribuido
Problema
Publicar eventos y escribir en BD debe ser atómico.
Solución
Escribir el evento en una tabla outbox dentro de la misma transacción y publicarlo luego.
Con SDD
Debe aparecer en la spec técnica de cualquier servicio que emite eventos.

Retry + Circuit Breaker

distribuido
Problema
Llamadas remotas fallan y hay que proteger al sistema.
Solución
Reintentos con backoff y corte cuando el fallo es sostenido.
Con SDD
La spec indica política por integración (tiempos, códigos, compensaciones).

Tool Adapter (IA)

ia
Problema
Exponer funcionalidades internas a un LLM de forma segura.
Solución
Definir un contrato tipado de herramienta con validación de entrada y salida.
Con SDD
Patrón base de cualquier agente; la spec define qué puede y qué no puede hacer.

Retrieval-Augmented Generation

ia
Problema
El modelo no conoce tu dominio o no está actualizado.
Solución
Recuperar fragmentos relevantes antes de invocar al modelo, con citación y scoring.
Con SDD
La spec define qué fuentes, cómo se filtran y qué se cita en la respuesta.

LLM-as-Judge

ia
Problema
Evaluar salidas subjetivas automáticamente.
Solución
Un modelo evaluador compara output contra criterios explícitos de la spec.
Con SDD
La spec provee la rúbrica exacta — sin spec, el juicio es inconsistente.

Supervisor / Orchestrator

ia
Problema
Varios agentes necesitan coordinarse con objetivos y límites.
Solución
Un agente supervisor reparte trabajo, valida y cierra el ciclo contra la spec.
Con SDD
Exige specs con criterios de éxito medibles, no vibes.

Antipatrones

Lo que debes detectar y eliminar

Prompt monolito

Síntoma: Un prompt de 4.000 líneas que mezcla rol, contexto, reglas y datos.

Corrección: Descomponer en rol, spec, contexto dinámico y ejemplos versionados.

Agentes sin objetivo

Síntoma: Un agente "general" que no tiene criterio de éxito medible.

Corrección: Definir la spec con entrada, salida y rúbrica antes de escribir código.

RAG ciego

Síntoma: Se recupera todo, no se filtra, el modelo alucina con contexto irrelevante.

Corrección: Reranker, filtros de dominio y citación explícita.

Pruebas acopladas al LLM

Síntoma: Tests que dependen literalmente del texto devuelto.

Corrección: Evaluar por propiedades, contratos o LLM-as-judge con rúbrica.

Spec = documento PDF

Síntoma: La spec vive en Word, no en el repo; el código y la spec divergen.

Corrección: Specs versionadas junto al código, ejecutables o verificables.

Patrones + IA

Cómo los patrones mejoran la supervisión de agentes

Cuando un agente entrega código, la primera pregunta útil no es "¿funciona?". Es: ¿qué patrón implementa y por qué?. Si el agente no puede nombrar la solución que está aplicando, probablemente no está aplicando ninguna — está adivinando.

Por eso en SDD insistimos en redactar la spec en términos de patrones conocidos: "usa un Repository", "aplica Outbox", "expón esto como Tool". No es pedantería: es reducir la entropía de la generación y facilitar la revisión.

Los patrones de IA (Tool Adapter, RAG, LLM-as-Judge, Supervisor) son tan importantes hoy como lo fueron los GoF en los 90. Forman el vocabulario con el que se diseñan sistemas con agentes.