<?xml version="1.0" encoding="UTF-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es"><title>Chemaclass - ddd</title><subtitle>Tech Lead compartiendo ideas prácticas sobre artesanía del software, TDD, liderazgo, Bitcoin e IA. Artículos, resúmenes de libros y charlas.</subtitle><link rel="self" type="application/atom+xml" href="https://chemaclass.com/es/tags/ddd/atom.xml"/><link rel="alternate" type="text/html" href="https://chemaclass.com"/><generator uri="https://www.getzola.org/">Zola</generator><updated>2020-09-10T00:00:00+00:00</updated><id>https://chemaclass.com/es/tags/ddd/atom.xml</id><entry xml:lang="es"><title>Domain-Driven Design Distilled</title><subtitle>DDD explicado de forma clara y práctica</subtitle><category term="ddd" scheme="https://chemaclass.com/tags/ddd/" label="Ddd"/><category term="architecture" scheme="https://chemaclass.com/tags/architecture/" label="Architecture"/><category term="software-design" scheme="https://chemaclass.com/tags/software-design/" label="Software Design"/><published>2020-09-10T00:00:00+00:00</published><updated>2020-09-10T00:00:00+00:00</updated><author><name>
Vaughn Vernon</name></author><link rel="alternate" type="text/html" href="https://chemaclass.com/es/readings/domain-driven-design-distilled/"/><id>https://chemaclass.com/es/readings/domain-driven-design-distilled/</id><summary type="html">Una introducción accesible a DDD para desarrolladores, consultores y cualquiera que quiera entender el diseño guiado por dominio</summary><content type="html">&lt;p>Este libro hace que DDD cobre vida. Da igual si eres desarrollador, consultor o cliente: te ayuda a entenderlo y sacarle provecho.&lt;/p>
&lt;span id="continue-reading">&lt;/span>
&lt;hr />
&lt;p>Desarrolladores de todo el mundo lo están adoptando porque da resultados reales. Es una guía accesible que responde:&lt;/p>
&lt;ul>
&lt;li>¿Qué es DDD?&lt;/li>
&lt;li>¿Qué problemas resuelve?&lt;/li>
&lt;li>¿Cómo funciona?&lt;/li>
&lt;li>¿Cómo sacarle valor rápido?&lt;/li>
&lt;/ul>
&lt;p>Aprenderás a separar modelos de dominio con &lt;strong>Contextos Acotados&lt;/strong> (Bounded Contexts), a desarrollar un &lt;strong>Lenguaje Ubicuo&lt;/strong> dentro de cada contexto, y a lograr que &lt;strong>expertos de dominio&lt;/strong> y &lt;strong>desarrolladores&lt;/strong> colaboren para crear ese lenguaje.&lt;/p>
&lt;p>También cubre cómo usar Subdominios para manejar sistemas legacy e integrar varios Contextos Acotados definiendo relaciones entre equipos.&lt;/p>
&lt;blockquote>
&lt;p>Domain-Driven Design Distilled da vida a &lt;strong>DDD&lt;/strong>.&lt;/p>
&lt;/blockquote></content></entry><entry xml:lang="es"><title>Arquitectura Limpia</title><subtitle>Guía del artesano para la estructura y diseño de software</subtitle><category term="architecture" scheme="https://chemaclass.com/tags/architecture/" label="Architecture"/><category term="software-design" scheme="https://chemaclass.com/tags/software-design/" label="Software Design"/><category term="clean-code" scheme="https://chemaclass.com/tags/clean-code/" label="Clean Code"/><category term="ddd" scheme="https://chemaclass.com/tags/ddd/" label="Ddd"/><published>2018-06-04T00:00:00+00:00</published><updated>2018-06-04T00:00:00+00:00</updated><author><name>
Robert C. Martin</name></author><link rel="alternate" type="text/html" href="https://chemaclass.com/es/readings/clean-architecture/"/><id>https://chemaclass.com/es/readings/clean-architecture/</id><summary type="html">Cómo estructurar y diseñar software de forma profesional. Principios SOLID, componentes y capas explicados con claridad.</summary><content type="html">&lt;span id="continue-reading">&lt;/span>&lt;h3 id="principios-de-diseno-de-codigo-solid">Principios de diseño de código (SOLID)
&lt;a class="heading-anchor" href="#principios-de-diseno-de-codigo-solid" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Responsabilidad Única&lt;/strong>: una clase debe tener una sola razón para cambiar. O en su versión nueva: un módulo responde ante un solo actor.&lt;/li>
&lt;li>&lt;strong>Abierto-cerrado&lt;/strong>: abierta para extensión, cerrada para modificación.&lt;/li>
&lt;li>&lt;strong>Sustitución de Liskov&lt;/strong>: puedes reemplazar objetos por instancias de sus subtipos sin romper el programa.&lt;/li>
&lt;li>&lt;strong>Segregación de Interfaces&lt;/strong>: mejor muchas interfaces específicas que una general.&lt;/li>
&lt;li>&lt;strong>Inversión de Dependencias&lt;/strong>: depende de abstracciones, no de implementaciones concretas.&lt;/li>
&lt;/ul>
&lt;h3 id="principios-de-componentes">Principios de componentes
&lt;a class="heading-anchor" href="#principios-de-componentes" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;h4 id="cohesion-de-componentes">Cohesión de componentes
&lt;a class="heading-anchor" href="#cohesion-de-componentes" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h4>
&lt;ul>
&lt;li>&lt;strong>Equivalencia Reutilización/Liberación&lt;/strong>: las clases reutilizadas juntas deben liberarse juntas. Mismo número de versión y changelog adecuado.&lt;/li>
&lt;li>&lt;strong>Cierre Común&lt;/strong>: las clases que cambian juntas van juntas. Es el principio de responsabilidad única a nivel de componente.&lt;/li>
&lt;li>&lt;strong>Reutilización Común&lt;/strong>: no obligues a los usuarios a depender de lo que no necesitan. Segregación de interfaces a nivel de componente.&lt;/li>
&lt;/ul>
&lt;h4 id="acoplamiento-de-componentes">Acoplamiento de componentes
&lt;a class="heading-anchor" href="#acoplamiento-de-componentes" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h4>
&lt;ul>
&lt;li>&lt;strong>Dependencias Acíclicas&lt;/strong>: sin ciclos en el grafo de dependencias. Los ciclos fuerzan a liberar componentes juntos. Usa inversión de dependencias para romperlos.&lt;/li>
&lt;li>&lt;strong>Dependencia Estable&lt;/strong>: los componentes menos estables dependen de los más estables. Depende en dirección de la estabilidad.&lt;/li>
&lt;li>&lt;strong>Abstracciones Estables&lt;/strong>: los componentes estables deben ser abstractos. Ejemplo: una política de alto nivel que se extiende siguiendo abierto-cerrado.&lt;/li>
&lt;/ul>
&lt;h3 id="principios-de-arquitectura">Principios de arquitectura
&lt;a class="heading-anchor" href="#principios-de-arquitectura" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h3>
&lt;h4 id="estableciendo-limites">Estableciendo límites
&lt;a class="heading-anchor" href="#estableciendo-limites" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h4>
&lt;p>Los límites separan elementos de software: lo que importa de lo que no, lo de alto nivel de lo de bajo nivel. Si el código de alto nivel depende del de bajo nivel, los cambios se propagan hacia arriba. Ponemos un límite usando polimorfismo para invertir el flujo. Esto es el Principio de Inversión de Dependencias de SOLID.&lt;/p>
&lt;h4 id="separando-capas">Separando capas
&lt;a class="heading-anchor" href="#separando-capas" title="Copy link" aria-label="Link to this section">#&lt;/a>
&lt;/h4>
&lt;p>Cuatro capas principales (aunque puede variar):&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Entidades&lt;/strong>: objetos con lógica de negocio crítica. Ejemplo: un banco que no da préstamos a clientes sin cierta puntuación crediticia. Se comparten entre aplicaciones de la empresa.&lt;/li>
&lt;li>&lt;strong>Casos de uso&lt;/strong>: reglas de negocio específicas de la aplicación. Ejemplo: la secuencia de pantallas para hacer una transferencia.&lt;/li>
&lt;li>&lt;strong>Adaptadores de interfaz&lt;/strong>: gateways, presenters, controllers. Aquí va la arquitectura MVC de la GUI y la transformación de datos entre base de datos y casos de uso.&lt;/li>
&lt;li>&lt;strong>Frameworks y drivers&lt;/strong>: frameworks web, base de datos, la vista de MVC.&lt;/li>
&lt;/ul></content></entry></feed>