Saltar a contenido

1. DDD Estratégico

El modelado estratégico define cómo se divide el problema y cómo se relacionan las partes.

Dominios y Subdominios

Los dominios agrupan la lógica de negocio. Es fundamental distinguir qué es el núcleo (Core) del negocio y qué es soporte.

Domain Retail {
  domainVisionStatement = "Una experiencia de compra fluida y moderna"

  Subdomain Core type CORE_DOMAIN {
    domainVisionStatement = "Gestión de pedidos y checkout"
  }

  Subdomain Catalog type GENERIC_SUBDOMAIN {
    domainVisionStatement = "Catálogo de productos (comprado o genérico)"
  }

  Subdomain Notifications type SUPPORTING_DOMAIN {}
}
  • Tipos: CORE_DOMAIN, SUPPORTING_DOMAIN, GENERIC_SUBDOMAIN.
  • domainVisionStatement: Describe el propósito del dominio o subdominio.

Bounded Contexts

Los Bounded Contexts son los límites donde aplica un modelo específico. Usualmente se vinculan a un Subdominio.

BoundedContext Checkout implements Core {
  type = SYSTEM
  responsibilities = "Procesar órdenes de compra"
  implementationTechnology = "Python / FastAPI"
  knowledgeLevel = CONCRETE

  // Opción avanzada: Modularizar dentro del contexto
  Module Pricing {
    basePackage = "com.retail.pricing"
    // Aquí pueden ir agregados y servicios específicos
  }
}
  • implements: Vincula el contexto a un Subdominio (lo que "realiza").
  • Atributos clave: type (SYSTEM, FEATURE, TEAM, etc.), responsibilities, implementationTechnology.

Context Maps y Relaciones

Define cómo interactúan los Bounded Contexts.

ContextMap RetailLandscape {
  type = SYSTEM_LANDSCAPE
  state = TO_BE

  contains Checkout, Catalog, Shipping

  // Relación con patrón específico (Anti-Corruption Layer)
  Checkout [ACL]-> Shipping {
    implementationTechnology = "REST/JSON"
    downstreamRights = VETO_RIGHT
  }

  // Relación simple (Shared Kernel)
  Checkout [SK]<-> Catalog
}

Tipos de Relaciones Soportadas:

  • [U]->[D]: Upstream-Downstream genérico.
  • [P]<->[P]: Partnership (Asociación).
  • [SK]<->[SK]: Shared Kernel (Núcleo Compartido).
  • [C]<-[S]: Customer-Supplier (Cliente-Proveedor).
  • [ACL]<-: Anti-Corruption Layer (Capa Anticorrupción en el lado downstream).
  • [OHS]->: Open Host Service (Servicio Anfitrión Abierto en el upstream).
  • [PL]->: Published Language (Lenguaje Publicado).
  • [CF]<-: Conformist (Conformista).