Blog Jose Cullar

Scrum Master, Solution Architect & Full Stack Developer

Domain-Driven Design. Episodio IV. Entities & Value Objects

por Jose el 14 septiembre, 2016

Elementos más importantes para el modelado de dominio dentro del apartado táctico en el desarrollo orientado a DDD.

Entities

Definimos entidad como un concepto/objeto de dominio único (dispone de un identificador asociado). Los identificadores son únicos e inmutables, por ese motivo es aconsejable almacenar el identificador en un Value Object.

Comúnmente la tendencia de modelado de entidades refleja la estructura de datos, existiendo herramientas como los ORM generando un modelo de dominio totalmente mapeado a la estructura de datos mediante CRUD. Este método es muy útil para sencillas aplicaciones o sistemas con evolución limitada o nula. En cambio, no aconsejable para aquellas aplicaciones o sistemas que requieran una evolución y aumento progresivo en su complejidad. Siendo más aconsejable un modelado desacoplado a la estructura de datos, siendo más fiel a la lógica de dominio de la organización mediante lenguaje obicuo.
more →

Domain-Driven Design. Episodio III. Arquitectura

por Jose el 4 agosto, 2016

En este post introduciré estilos y patrones de arquitectura más interesantes y recomendables que puedes aplicar con DDD mencionados por Vaughn Vernon en “Implementing Domain-Driven Design”.

No se trata de una lista cerrada, ya que el enfoque táctico de Domain-Driven Design no requiere la utilización específica de ningún tipo de patrón o arquitectura: la verdadera importancia de cada Bounded Context reside en su Core Domain o modelo de dominio, independientemente de como se comunique con el resto de componentes de la aplicación, siempre y cuando se cumplan las buenas prácticas y los principios de calidad apropiados.
more →

Domain-Driven Design. Episodio II. Context Maps

por Jose el 27 julio, 2016

En el post anterior vimos los primeros pasos estratégicos y cómo disgregábamos la complejidad del negocio en Domains, Subdomains y Bounded Contexts.

Cada Bounded Context contiene o dispone de la tecnología, lenguaje de programación y arquitectura mínima necesaria para satisfacer los requerimientos de negocio de su contexto mediante un modelo de dominio. Las relaciones existentes entre Bounded Contexts se denominan Context Maps y las reglas necesarias para mapear/traducir un modelo de dominio de un determinado contexto a otro: Translation Map.

Una vez identificados los Bounded Contexts, deberemos establecer según necesidades de cada caso el tipo de relación entre ellos, marcando la dirección de flujo de información mediante Upstream (exposición de servicios) y Downstream (consumidor de servicios):


more →

Domain-Driven Design. Episodio I. Empezando…

por Jose el 21 julio, 2016

Estoy inmerso en la lectura de “Implementing Domain-Driven Design” de Vaughn Vernon. Llevo algunos pocos capítulos y he decidido, a modo de seguimiento y aprendizaje, empezar a escribir una serie de post para compartir con la comunidad algunas reseñas de lo que creo interesante. Siéntete libre de hacer tus comentarios 🙂

El diseño no es sólo cómo se ve o cómo se siente. El Diseño es cómo funciona. Steve Jobs

more →

Retrospectivas más Kaizen

por Jose el 19 junio, 2016

Las retrospectivas en SCRUM son reuniones que se realizan tras finalizar el sprint (después de la demo o revisión del sprint y antes de la planificación). La duración de la reunión depende de la duración del sprint: normalmente 1 hora, por semana de sprint.

El equipo identifica problemas, posibles medidas para solucionarlos y valoran aquellos hábitos o forma de trabajo que el equipo desea mantener: en la reunión de retrospectiva, se exponen, plantean y reflexionan los tres grupos. Surgiendo medidas o acciones necesarias para mejorar en posteriores sprints.

Se trata de evolucionar la forma de trabajar mediante la mejora continua hacia la excelencia, incrementando la productividad progresivamente. Además, fomenta la cohesión y la confianza del equipo.

En la reunión, el equipo contesta tres preguntas:
¿Qué ha funcionado bien?
¿Qué debemos mejorar?
¿Que acciones tomamos?

more →