Este documento resume los conceptos clave del Domain-Driven Design (DDD), una metodología de desarrollo de software centrada en el dominio. Explica que DDD se enfoca en hacer que el modelo del dominio sea la parte central de la aplicación. También describe conceptos como el Lenguaje Ubícuo, la Ignorancia a la Persistencia, los Servicios del Dominio y los Repositorios. Finalmente, incluye una propuesta de arquitectura básica para implementar DDD con entidades, valores, agregados y factorías.
2. DDD>Índice*) Índex¿Y qué es esto con tantas D’s?Conceptos de DDDUbiquitous LanguagePersistanceIgnoranceEl corazón del softwareUna arquitectura base
3. DDD>Índice*) Índex¿Y qué es esto con tantas D’s?Conceptos de DDDUbiquitous LanguagePersistanceIgnoranceEl corazón del softwareUna arquitectura base
4. DDD>¿ Y que es esto con tantas D’s?1. ¿Y que es esto con tantasD’s?Es una propuesta para desarrollar software desarrollada por Eric Evans en el libro Domain-DrivenDesign. TacklingComplexity in theHeart of Software
12. POCO’s que hacían demasiado poco.DDD>Índice*) Índex¿Y qué es esto con tantas D’s?Conceptos de DDDUbiquitous LanguagePersistanceIgnoranceEl corazón del softwareUna arquitectura base
19. Nos indica las entidades y las acciones que pueden formar parte del modelo.DDD>Conceptos de DDDUbiquitous LanguageComo usuario quiero crear albumes de fotos.
24. Como usuario quiere decir quien ha hecho la fotoDDD>Índice*) Índex¿Y qué es esto con tantas D’s?Conceptos de DDDUbiquitous LanguagePersistanceIgnoranceEl corazón del softwareUna arquitectura base
27. Por extensión, como los muestre o los explote tampoco.Sistema de Gestión de Álbumes Fotográficos.SilverlightEFWPFNHibernateASP.netADO.netWinFormsSharepointGestión de autoresGestión de álbumesGestión de fotografias
28. DDD>Índice*) Índex¿Y qué es esto con tantas D’s?Conceptos de DDDUbiquitous LanguagePersistanceIgnoranceEl corazón del softwareUna arquitectura base
36. Si está bien utilizado permite tener testeada la lógica de la aplicación.
37. Al ser independiente este test se puede realizar en segundos.DDD>Índice*) Índex¿Y qué es esto con tantas D’s?Conceptos de DDDUbiquitous LanguagePersistanceIgnoranceEl corazón del softwareUna arquitectura base
38. DDD>Una arquitectura baseModelo teórico.Según lo expuesto por Eric EvansDDD>Una arquitectura baseModelo (algo) mas práctico.Según la última guía de Arquitectura de MS.DDD>Una arquitectura base
41. Pero no POCO purasAlbum+ Id:int+ Codigo:string+ Descripcion:string- Fotografias:IEnumerable<Fotografia>+ AddFotografia(Fotografiafotografia)La puedo representar con un Id.DDD>Una arquitectura base
43. Los podría representar como parte de una entidad pero forman una unidad por si mismaFotografiaFotografiaDatosAuditoria+ Id:int+ Autor:Autor+ Descripción:string+ Lugar:Coordenadas+ FechaCreacion:DateTime+ UsuarioCreacion:String+ FechaUltimaModificacion:DateTime+ UsuarioUltimaModificacion:String+ Id:int+ Autor:Autor+ Descripción:string+ Lugar:Coordenadas+ Auditoria: DatosAuditoria+ FechaCreacion:DateTime+ UsuarioCreacion:String+ FechaUltimaModificacion:DateTime+ UsuarioUltimaModificacion:String
45. El mismo concepto en un modelo puede ser un objeto-valor y en otro una entidadSistema LogísticoSistema ContableC/ Aribau, 44.SantCugat del VallésC/ Aribau, 44.SantCugat del VallésCliente 1423Cliente 1423Dir. Fact.Dir. Ent.Un cambio en la dirección condiciona mi sistema de calculo de rutas.
46. A parte en mi sistema gestiono todas las direcciones de la provincia de Barcelona
61. En la practica solo definimos en una primera fase su Interfaz, su Contrato. Las operaciones que vamos a realizar contra él.
62. Esto nos permite utilizar fakes en la construcción de nuestro modelo ya que conocemos las operaciones.IAlbumRepository+ AddAlbum(Albumalbum)+ DeleteAlbum(Albumalbum)+ UpdateAlbum(Albumalbum)+ GetAlbum(intidAlbum)
64. Cuando añado un objeto a un DAO este se prepara para almacenarse, pero el DAO no se queda una instancia del mismo.
65. En un repositorio la instancia del objeto se mantiene hasta que los cambios se persisten.DDD>Una arquitectura base
66. DDD>Servicios del dominioLos servicios del dominio contienen acciones dentro del modelo que no se pueden representar en una entidad.
67. No todo va a ser añadir o modificar fotos. También quiero unir y separar álbumes.
68. Según los usuarios unir álbumes consiste en la creación de un único álbum que contenga las fotografías de todos los demás. Y todos los demás álbumes desaparecen.
69. La lógica es clara para el usuario y merece un método propio.
70. No requiero servicios del dominio para las operaciones CRUD simples. Estas están implementadas en los repositorios.DDD>Servicios del dominioServicio de Dominio != Servicio de Aplicación
78. No son DDD, pero son esenciales para el funcionamiento.
79. Si DDD se implementa en un servidor .NET serían los servicios WCF.DDD>BibliografiaDomain-Driven Design: Tackling Complexity in the Heart of Software, Eric Evans