SlideShare uma empresa Scribd logo
Software complexo? Entenda o seu domínio e desenhe um modeloAbordagem sobre o Desenho Dirigido ao Domínio (Domain-Driven  Design ou DDD)
Quem sou eu?Thiago HolderSoftware DeveloperEstudante de Sistemas da Informação
ObjetivoEntender a importância de se pensar em um domínio, a linguagem que você usa para falar sobre ele.
“O desafio da complexidade”
O que é DDD?“ É uma maneira de pensar e um conjunto de prioridades, voltado para a aceleração de projetos de softwares com domínios complicados ”  Eric Evans.
O que o DDD apresenta?Boas práticasPadrõesExperiência
Qual o foco do DDD?Regras de negócio complexosIsolamento entre domíniosReutilizaçãoDomínioBaixo acoplamentoIndependente de tecnologia
Padrões do DDDContextoResumo do problemaPor esta RazãoDiscussão da soluçãoDiscussão do problemaConseqüências, Implementações e exemploResumo do problemaContexto resultante
Partes do DDD
O que é Domínio?Esfera de conhecimento, influência ou atividade.A área em que o usuário utiliza o software.
Modelo?NãoNão
Excesso de informação atrapalha
Modelo
Os ingredientes  de uma modelagem eficaz
Ligando o modelo e a implementaçãoConsultaPaciente**Protótipo rudimentar
Cultivando uma linguagem baseada no modeloConsulta AAgenda()PacienteConsulta BAgenda()Agenda()Consulta CFrases consistentes com a estrutura do modelo e ser entendido sem ambigüidade e sem tradução
Desenvolvendo um modelo rico em conhecimentoConsultaAgendamentoSecretáriaPacienteAtendidoMédicoVerificaDisponibilidadeAgendaCaptar vários tipos de conhecimento
Destilando o modeloAgenda MédicaSecretáriaVerificaPacienteAtendidoAgenda a consultaMédicoConsultaRealizaNovo modelo que distingue o conceito essencial
Colhendo idéia
Linguagem Ubíqua“ Quer dizer que estar em todos os lugares, ou seja onipresente”.
ModelDriven Design (MDD)ModeloDomínioGuiaDesignRefatoraçãoEvoluiSoftware perdido, dependente de tecnologia.Desenvolvedores perdidos.
Distância no o contexto do domínioAnalista de NegócioAnalista de SistemasArquitetoDesenvolvedor
Tijolos de construção
Arquitetura em camadasCamadas dever ter sentido“Verifique suas responsabilidades”As camadas tem que ter separação.
Arquitetura proposta no DDD
Blocos que compõe o modelo
EntidadeEntidade: têm significado no domínioEntidade: possuem identidades
Objeto de valornão tem identidade para o negócioSão imutaveisDescrevem coisas, tipos...Ciclo de vida rápidoExemplo: cores, especialidade, tipo de dados.
Uma introdução ao Domain Driven Design
AgregadosEntidadeEntidadeObjeto de valorObjeto de valor
Exemplo<<Raiz>>Motor<<Raiz>>CarroRodaClientePosiçãoPosição
Algumas regras
FábricasQuando a criação de um objeto, ou AGREGADO inteiro, se torna complicada ou revela uma grande parte da estrutura interna, as FÁBRICAS fornecem o encapsulamento
Interação básica com uma fábricaA FÁBRICA faz o objeto que satisfaz o cliente e as regras internasO cliente especifica o que querClienteFábricaProdutonovos(parâmetros)criarproduto
ServiçosNão tem estado próprioFica isolado do modeloDefinido como o que ele pode fazer por um “cliente”“Verbo em vez de substantivo”Fala a linguagem ubíqua
Módulos ou PacotesOs módulos existentes na camada de domínio devem surgir como uma parte significativa do modelo.Modelos = HistóriasMódulos = CapítulosMódulos = CapítulosMódulos = CapítulosMódulos = CapítulosMódulos = CapítulosMódulos = Capítulos
Código ClienteEntidadeRepositórioRepositóriosBuscaAgregadoEntidadeEntidadeCriaEntidadeRemoverAgregadoEntidadeAgregado
Linguagem UbíquaDesign Dirigido por ModelosExpressar o modeloNomes entram emIsolar o modeloArquitetura em camadasMódulosServiçosEntidadesObjeto de ValorIntegridadeEncapsulaEncapsularRepositóriosFábricasAcessarAgregados
ObrigadoE-mail:thiagoholder@gmail.comBlog:http//thiagoholder.wordpress.comMsn: thiagoholderSkype: thiagoholder

Mais conteúdo relacionado

PPTX
Domain Driven Design (DDD)
PPTX
Domain driven design - Visão Geral
PDF
Treinamento DDD .Net
PDF
Domain Driven Design - Aplicando estrategias e padrões
PPTX
DDD - Domain Driven Design
PDF
Entendendo Domain-Driven Design
PPTX
Domain-Driven Design - Aplicada a um estudo de caso
PDF
DDD - Domain Driven Design
Domain Driven Design (DDD)
Domain driven design - Visão Geral
Treinamento DDD .Net
Domain Driven Design - Aplicando estrategias e padrões
DDD - Domain Driven Design
Entendendo Domain-Driven Design
Domain-Driven Design - Aplicada a um estudo de caso
DDD - Domain Driven Design

Mais procurados (7)

PPTX
Introdução ao Domain-Driven Design
PPTX
Design Thinking - Prototipação
PDF
Atacando as complexidades no coração do software
PPT
Automatic programming
PDF
05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI
PDF
O (papel do) Arquiteto de Software
PDF
CPBR7 - Pensamento Visual e Prototipagem
Introdução ao Domain-Driven Design
Design Thinking - Prototipação
Atacando as complexidades no coração do software
Automatic programming
05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI
O (papel do) Arquiteto de Software
CPBR7 - Pensamento Visual e Prototipagem

Destaque (10)

PDF
Domain-Driven-Design
PPT
Criandeiros - Grupo de estudos: MVC
PPTX
Design de software com ASP.NET MVC
PPT
Domain-Driven Design - Uma Abordagem Introdutória
PDF
DDD – Domain Driven Design
PDF
Arquitetura de Sofware
PPT
Domain Driven Design (DDD) - DevIsland, BH
PDF
Arquitetura MVC
PPTX
Apresentação mvc
PDF
Design Pattern MVC – Arquitetura de Software Coesa e Flexível
Domain-Driven-Design
Criandeiros - Grupo de estudos: MVC
Design de software com ASP.NET MVC
Domain-Driven Design - Uma Abordagem Introdutória
DDD – Domain Driven Design
Arquitetura de Sofware
Domain Driven Design (DDD) - DevIsland, BH
Arquitetura MVC
Apresentação mvc
Design Pattern MVC – Arquitetura de Software Coesa e Flexível

Semelhante a Uma introdução ao Domain Driven Design (20)

PPTX
Domain Driven Design
PDF
PDF
Domain-Driven-Design
PPTX
Domain Driven Design : Pensando Fora da Caixa
PDF
DDD in PHP
PDF
Domain Driven Design – DDD além da teoria!, por Paulo Victor Gomes
PPTX
DDD - Step by Step
PPTX
Programando com prazer com DDD
PDF
DDD - Domain Driven Design
PDF
Domain Driven Design: como modelar uma aplicação em Node.js com DDD
PDF
Domain Driven Design com Python
PDF
Domain Driven Design - Uma introdução
PPTX
Encontrando equilíbrio do DDD enquanto sua aplicação cresce
PPTX
Aula 8 - DDD - Domain Driven Design.pptx
PDF
DDD e Microsservicos - do negócio à arquitetura
PPTX
DDD – Domain Driven Design
PDF
A importância de DDD e o Domain Model na construção de APIs!
PPTX
Introdução a Domain-Driven Design
PDF
Domain Driven Design PHP TDC2014
PDF
DDD e PHP - TDC 2012
Domain Driven Design
Domain-Driven-Design
Domain Driven Design : Pensando Fora da Caixa
DDD in PHP
Domain Driven Design – DDD além da teoria!, por Paulo Victor Gomes
DDD - Step by Step
Programando com prazer com DDD
DDD - Domain Driven Design
Domain Driven Design: como modelar uma aplicação em Node.js com DDD
Domain Driven Design com Python
Domain Driven Design - Uma introdução
Encontrando equilíbrio do DDD enquanto sua aplicação cresce
Aula 8 - DDD - Domain Driven Design.pptx
DDD e Microsservicos - do negócio à arquitetura
DDD – Domain Driven Design
A importância de DDD e o Domain Model na construção de APIs!
Introdução a Domain-Driven Design
Domain Driven Design PHP TDC2014
DDD e PHP - TDC 2012

Uma introdução ao Domain Driven Design