domingo, 14 de abril de 2013

Diseño dirigido por el dominio DDD



INTRODUCCIÓN


Domain Driven Design (DDD) es un enfoque para el desarrollo de software con necesidades complejas mediante una profunda conexión entre la implementación y los conceptos del modelo y núcleo del negocio. Las premisas del diseño guiado por el dominio son las siguientes:

·         Poner el foco primario del proyecto en el núcleo y la lógica del dominio.

·         Basar los diseños complejos en un modelo.

·         Iniciar una creativa colaboración entre técnicos y expertos del dominio para interactuar lo más cercano posible a los conceptos fundamentales del problema.




DISEÑO DIRIGIDO POR DOMINIOS


El diseño guiado por el dominio provee una estructura de prácticas y terminologías para tomar decisiones de diseño que enfoquen y aceleren el manejo de dominios complejos en los proyectos de software.a

Definiciones Básicas.


·         Dominio: Un campo de conocimiento, influencia o actividad. El área a la que el usuario aplica un programa es el dominio del software.

·         Modelo: un sistema de abstracciones que describe aspectos de un dominio y se puede utilizar para resolver problemas relacionados con ese dominio.

·         Lenguaje Ubicuo: un lenguaje estructurado en torno al modelo de dominio y utilizado por todos los miembros del equipo para conectar todas las actividades del equipo con el software.

·         Contexto: El entorno en el que una palabra o una declaración aparece y el cual determina su significado.

 

Contexto acotado (Bounded Context).


·         Define explícitamente el contexto dentro del cual se aplica un modelo.

·         Establece explícitamente los límites en términos de organización del equipo, el uso de partes específicas de la aplicación, y las manifestaciones físicas, tales como bases de código y los esquemas de bases de datos. Mantiene el modelo estrictamente coherente dentro de estos límites, sin distracción ni confusión por asuntos ajenos.

La integración continúa (Continuous Integration).


·         Establece un proceso de fusión de todo el código y otros artefactos de la aplicación con frecuencia.

·         Se utiliza lenguaje ubicuo para elaborar una visión compartida del modelo y ver como los conceptos evolucionan en la cabeza de diferentes personas.

Mapa de contexto (Context Map).


·         Se identifica cada modelo en juego en el proyecto y se define su contexto acotado.

·         Se incluyen los modelos implícitos de los subsistemas no orientados a objetos.

·         Se identifica el nombre de cada contexto acotado, y se definen parte de estos a través del lenguaje ubicuo.

·         Se describen los puntos de contacto entre los modelos, destacando la clara traducción para cualquier comunicación o intercambio.





Bloques de construcción de DDD.


Una serie de conceptos de alto nivel y prácticas se combinan en el lenguaje ubicuo, el cual debe formar el modelo de dominio. Este lenguaje es definido por los expertos de dominio para describir los requisitos del sistema, y funciona bien tanto para los usuarios de negocios o patrocinadores como para los desarrolladores de software.

Algunos conceptos definidos por DDD son:

·         Entidad: Es un objeto que tiene un identificador único en el contexto que se trata.

·        Value Object: Es un objeto que tiene atributos, pero no tiene identificador en el contexto y sirven para describir cosas.

·         Servicio: aparece cuando tenemos una funcionalidad que no pertenece a ningún objeto del dominio, en tal caso creamos un nuevo objeto que no es del dominio y que tendrá la responsabilidad de realizar esta funcionalidad.

·         Agregado: Es una composición de objetos que tiene una entidad raiz. No hay acceso al contenido del Agregado, y todas las operaciones que se quieran hacer sobre el contenido siempre  se harán a través de la entidad raíz.

·         Factoría: Crea objetos complejos (en muchos casos agregados) y objetos válidos (no devolverá nulos).

·         Repositorio: mantiene constantes las entidades y agregados.


CONCLUSIÓN

      DDD no es ni una tecnología, ni una metodología, es una forma de pensar que ayuda a entender el ámbito para el cual estamos desarrollando software y a formalizar todo el conocimiento que los expertos de dominio tienen en dicho ámbito, en un modelo.







REFERENCIAS:

·         http://en.wikipedia.org/wiki/Domain-driven_design

No hay comentarios:

Publicar un comentario