Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DannaCapelln
Mat:111025
ID:1045782
ControldeLectura
DomainDrivenDesign
El Diseo Guiado por el Dominio (DDD) es una forma de abordar proyectos basando el
diseo en modelos, cuando la complejidad reside en el dominio del mismo. Entindase
dominio como
el rea temtica a la que el usuario aplica un programa y un modelo un
sistema de abstracciones que describe aspectos de un dominio seleccionado y se puede
utilizar para resolver problemas relacionados con ese dominio. En otras palabras, DDD
insiste en queparahacerbuensoftwareesnecesariosaber biendequsetrataelnegocio
para el que ser desarrollado. El no hacerlo podra hacer que la solucin de software no
cumpla con los requerimientos especificados y no tan especificados. El software tiene que
modelareldominio.
El modelo eslaesenciadelsoftware,peronecesitamoscrearunaformadecomunicarlo.Hay
diferentes formas dehacerlo.Unaesdeformagrfica:diagramas, casosdeuso,dibujos,etc.
Otra es escribiendo nuestra visin del dominio y otra es crear nuestro propio lenguaje para
comunicarcuestionesespecficassobreeldominio.
LaimplementacindeDDDproveemuchosbeneficiostecnicosperopuedetenerunalto
costo,esporestoquedebeserutilizadosoloadominioscomplejosquenopuedanser
manejadosdeotraformamsconveniente.
ObjetivosPrincipales
DDDseplanteacomoobjetivos:
Encontrar un modelo rico y destilarlo con ayuda del conocimiento del equipo. Un
modelo es nuestra representacin interna dominio. Se requiere crearunaabstraccin
deldominioconayudadelosexpertosenelmismo.
Tener unmismolenguajetantoenelnegociocomoenelcdigo.Unproyectoenfrenta
serios problemas cuando el equipo no comparte un mismo lenguaje. Losexpertosen
el dominio tiene su jerga y los del equipo tcnico tambin. Uno de los principios
centrales de DDD es usar un lenguaje basado en el modelo, ya que el modelo es el
lugar donde el software y el dominio se conocen. A este lenguaje se le denomina
Lenguaje Ubicuoyconectatodaslaspartesdeldiseo ycrealaspremisasparaque
el equipo funcione adecuadamente.Cabemencionarquelacreacindeeste lenguaje
ElementosFundamentales
Existenartefactosparaexpresar,crearyrepararmodelosdedominio:
Entidad:
Un objeto que no est definido por sus atributos, sino ms bienpor un hilo
de continuidad y su identidad. Unobjetodebeserdiferenciadodeotroinclusocuando
tienen los mismos atributos ya que una identidad equivocada se desencadenar en
corrupcin de la data. Una forma de evitar esto es crear una nica identidad para
cadaobjeto
Hay una regla de oro respecto a los valores de objeto: si un valor de objeto es
compartido,debeserinmutable.
Mdulos:
Son usados como un mtodo para organizar conceptos y tareas
relacionadas con el objetivo de reducir la complejidad. Es ms fciltener una visin
panormica de un modelo de gran tamao mirando los mdulos que contiene y la
relacinentrelosmismos.
Factory: se utiliza paraencapsularlainformacinrequeridaalahoradecrearobjetos
de dominio.Son muy tiles para crear Aggregates y permiten que las
implementacionesdealmacenamientoalternativospuedenintercambiarsefcilmente.
Repository:
su propsito es encapsular toda la lgica necesitada para obtener
referencias de objetos. Esto para evitar que los objetos del dominio tengan que lidiar
con la infraestructura para obtener referencias a otros objetos del dominio, de este
modo,laobtienenenelrepositorioyelmodeloconservasuclaridadyenfoque.
ConceptosdeArquitecturadeSoftware
AlgunosbuildingblocksdelDiseoGuiadoporModelosquehemostratadoenclaseson:
Arquitecturaencapas,ServiciosyMdulos.
Fuentes:
DomainDrivenDesignQuickly,ASummaryofEricEvansDomainDrivenDesign.
DDDCommunity
http://dddcommunity.org/learningddd/what_is_ddd/
CasodeEstudio,SchoolStartupSystemHitstheMark,dddcommunity.org
http://dddcommunity.org/wpcontent/uploads/files/pdf_articles/Tony_Canty_Labatt_Fo
od_2012.pdf
Domaindrivendesign,Wikipedia
DDDParte2:LosComponentesFundamentalesdeunModeloGuiadoporel
Dominio#1,Blogspot
http://elblogdelfrasco.blogspot.com/2009/03/dddparte2loscomponentes.html
http://en.wikipedia.org/wiki/Domaindriven_design
DomainDrivenDesign,Blogspot
http://tratandodeentenderlo.blogspot.com/2013/08/domaindrivendesign.html