SlideShare a Scribd company logo
1 of 57
Arquitetura e modelagem de Software orientada a domínio
Domain Driven Design
Lorival Smolski Chapuis
MCPD ASP.NET
http://blog.lorival.com / lorival@chapuis.com.br
Centro de Inovação Microsoft
SOCIESC 2010
Sociedade Educacional de Santa Catarina
“... 1 hora não dá pra nada. Você vai mostrar a
mecânica do DDD, e o pessoal vai sair achando que
DDD é entidades+repositórios... Já percebi que por
mais esforço que façamos, técnicos tendem a
simplificar o que viram, e sobra só isso na cabeça
deles ...”
Giovani Bassi
Arquiteto de Software, MVP
Considerações iniciais
2
• O que é Domain Driven Design
• Surgimento, objetivos e vantagens
• Essência do Domain Driven Design
• Modelando um domínio real
• Regras para modelagem
• Arquitetura em camadas
• Caixa de ferramentas Microsoft
• Apresentação de uma aplicação
• Considerações finais
Agenda
3
É uma abordagem de design de software
disciplinada que reúne um conjunto de
conceitos, técnicas e princípios para
construção de softwares baseados em um
modelo de domínio.
Domain Driven Design
4
É uma abordagem de design de software
Disciplinada que reúne um conjunto de
conceitos, técnicas e princípios para
construção de softwares baseados em um
modelo de domínio.
Domain Driven Design
5
É uma abordagem de design de software
Disciplinada que reúne um conjunto de
conceitos, técnicas e princípios para
construção de softwares baseados em um
modelo de domínio.
Domain Driven Design
6
É todo e qualquer conhecimento (esfera
de conhecimento) utilizado em uma
determinada área.
Um domínio possuí regras de negócio.
É uma abordagem de design de software
Disciplinada que reúne um conjunto de
conceitos, técnicas e princípios para
construção de softwares baseados em um
modelo de domínio.
Domain Driven Design
7
É uma abordagem de design de software
Disciplinada que reúne um conjunto de
conceitos, técnicas e princípios para
construção de softwares baseados em um
modelo de domínio.
Domain Driven Design
8
Pode ser expresso de várias formas:
apresentação de slides, UML, rascunhos
em papel, organograma, etc...
É uma abordagem de design de software
Disciplinada que reúne um conjunto de
conceitos, técnicas e princípios para
construção de softwares baseados em um
modelo de domínio.
Domain Driven Design
9
É uma abordagem de design de software
Disciplinada que reúne um conjunto de
conceitos, técnicas e princípios para
construção de softwares baseados em um
modelo de domínio.
Domain Driven Design
10
Object Oriented
programming
Ubiquitous
Language
Domain
patterns
Layered
architecture
Design patterns
...
...
Surgimento
11
Há 20 anos criam-se padrões
e técnicas para arquitetura e
modelagem de software
Orientada a Objetos.
Há 6 anos Eric Evans
compilou várias destas
técnicas e unindo com suas
experiências criou o DDD
Há 20 anos criam-se padrões
e técnicas para arquitetura e
modelagem de software
Orientada a Objetos.
Há 6 anos Eric Evans
compilou várias destas
técnicas e unindo com suas
experiências criou o DDD
Surgimento
12
Design de
domínio
Pouco foi escrito
sobre isso
Não se tinha
claro como
deveria ser feito
Há 20 anos criam-se padrões
e técnicas para arquitetura e
modelagem de software
Orientada a Objetos.
Há 6 anos Eric Evans
compilou várias destas
técnicas e unindo com suas
experiências criou o DDD
Surgimento
13
Padrões de
arquitetura
Mais de 10 anos
como arquiteto
de software
Boas práticas
Padrões de
desenvolvimento
Grandes e
pequenos
projetos
1. Aproximar desenvolvimento
de software do domínio do
problema.
2. Aumentar a vida de um
software.
3. Ter códigos mais claros e
fáceis de entender.
4. Utilizar o principal recurso da
orientação a objetos: a
aproximação do mundo real
através de abstrações.
Objetivos
14
Vantagens
15
1. Fácil comunicação entre
desenvolvedores, analistas e
clientes.
2. Construir software testáveis.
3. Fácil manutenção e
crescimento do software.
4. Agregar ou trocar
colaboradores na equipe de
desenvolvimento não é mais
um problema.
5. Entenda o cliente, o modelo e
o código.
• Para a maioria dos projetos de software o foco
principal deve ser no domínio
• O modelo deve ser baseado em um domínio
• Você conhece software, o BusinessExpert conhece
o domínio, ouve-o.
• A Ubiquitous Language deve predominar desde o
BusinessExpert até a equipe de desenvolvimento
Essência do Domain Driven Design
16
Modelos são baseados em abstrações
17
Modelos são baseados em abstrações
18
Modelos são baseados em abstrações
19
Modelos são baseados em abstrações
20
Modelos são baseados em abstrações
21
Modelos são baseados em abstrações
22
Modelos são baseados em abstrações
23
Modelos são baseados em abstrações
24
• Objetivo principal: Extrair empresas de sites
Vamos modelar...
25
Empresa: Emp A
Rua A, 001. cep:AA
Cidade: Cidade A, AA
Empresa: Emp B
Rua B, 002. cep: BB
Cidade: Cidade B, BB
Empresa: EmpC
Rua C, 003 . cep: CC
Cidade: Cidade C, CC
Empresa Rua Nº CEP Cidade Estado
Emp A A 001 AA Cidade A AA
Emp B B 002 BB Cidade B BB
Emp C C 003 CC Cidade C CC
Atividades atuais
26
Regras de modelagem
27
• São identificadas através de uma identidade
• Um objeto pode ter uma identidade em um domínio
e não ter em outro
versus
• Se uma entidade mudar a regra de negócio é
afetada
Entidades
28
• São identificadas através de suas propriedades
(atributos)
• Um objeto de valor não pode ser alterado, ele é
sempre removido e adicionado um novo
• Não são o foco do negócio
Objetos de valor
29
Atividades atuais
30
Entidades
31
Atividades atuais
32
Entidades
33
Atividades atuais
34
Entidades
35
Atividades atuais
36
Objetos de valor
37
Objetos de valor
38
• Reúnem entidades e objetos de valor de modo a
fazer sentido para o negócio.
• Definem fronteiras claras
• Toda agregação tem uma raiz
Agregações
39
Agregações
40
Agregações
41
Agregações e suas raizes
42
Agregações e suas raízes
43
• Fingem que tem todos os
dados em memória.
• Para o consumidor do
repositório não faz diferença
onde está o objeto.
• São responsáveis por guardar
ou destruir objetos.
Repositórios
44
Repositórios
45
Modelo incompleto
46
• Resolvem problemas de negócio mas não são
entidades nem objetos de valor, pois possuem
apenas comportamentos e não estados de negócio.
Serviços
47
Serviços
48
• Cria objetos complexos ou que possuam dificuldade
de construir.
• Será responsabilidade de um objeto se construir?
Fábricas
49
Fábricas
50
Modelo completo
51
Arquitetura
52
• Mínimo:
– Microsoft Visual Studio 2010 (IDE)
– Microsoft.Net Framework
• Comum:
– Microsoft Entity Framework 4.0 (ORM)
– Microsoft Unity Framework (Inje. Dependência)
– Microsoft Sql-Server 2008
• Recomendado:
– Microsoft Test (Testes automatizados)
– Code Coverage
– Microsoft MVC Framework (web)
Caixa de ferramentas
53
Aplicação
54
Considerações finais
55
Considerações finais
56
Domain Driven Design
Dúvidas?
Centro de Inovação Microsoft
SOCIESC 2010
Sociedade Educacional de Santa Catarina
Lorival Smolski Chapuis
MCPD ASP.NET
http://blog.lorival.com / lorival@chapuis.com.br

More Related Content

What's hot

Introdução ao Domain-Driven Design
Introdução ao Domain-Driven DesignIntrodução ao Domain-Driven Design
Introdução ao Domain-Driven Design
André Borgonovo
 
Uma introdução ao Domain Driven Design
Uma introdução ao Domain Driven DesignUma introdução ao Domain Driven Design
Uma introdução ao Domain Driven Design
Lambda3
 
Engenharia de Software Baseada em Componentes
Engenharia de Software Baseada em ComponentesEngenharia de Software Baseada em Componentes
Engenharia de Software Baseada em Componentes
elliando dias
 

What's hot (13)

Bolovo - problema antigo de arquitetura de software - não use por aí
Bolovo - problema antigo de arquitetura de software - não use por aíBolovo - problema antigo de arquitetura de software - não use por aí
Bolovo - problema antigo de arquitetura de software - não use por aí
 
Introdução ao Domain-Driven Design
Introdução ao Domain-Driven DesignIntrodução ao Domain-Driven Design
Introdução ao Domain-Driven Design
 
Uma introdução ao Domain Driven Design
Uma introdução ao Domain Driven DesignUma introdução ao Domain Driven Design
Uma introdução ao Domain Driven Design
 
Domain Driven Design – DDD além da teoria!, por Paulo Victor Gomes
Domain Driven Design – DDD além da teoria!, por Paulo Victor GomesDomain Driven Design – DDD além da teoria!, por Paulo Victor Gomes
Domain Driven Design – DDD além da teoria!, por Paulo Victor Gomes
 
Atacando as complexidades no coração do software
Atacando as complexidades no coração do softwareAtacando as complexidades no coração do software
Atacando as complexidades no coração do software
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI
05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI
05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI
 
Reflexões sobre arquitetura de software
Reflexões sobre arquitetura de softwareReflexões sobre arquitetura de software
Reflexões sobre arquitetura de software
 
O (papel do) Arquiteto de Software
O (papel do) Arquiteto de SoftwareO (papel do) Arquiteto de Software
O (papel do) Arquiteto de Software
 
Engenharia de Software Baseada em Componentes
Engenharia de Software Baseada em ComponentesEngenharia de Software Baseada em Componentes
Engenharia de Software Baseada em Componentes
 
Desenvolvimento baseado em componentes
Desenvolvimento baseado em componentesDesenvolvimento baseado em componentes
Desenvolvimento baseado em componentes
 
Feira de Emprego 2015 - Universidade de Coimbra
Feira de Emprego 2015 - Universidade de Coimbra Feira de Emprego 2015 - Universidade de Coimbra
Feira de Emprego 2015 - Universidade de Coimbra
 
Apresentação Dellent Consulting
Apresentação Dellent ConsultingApresentação Dellent Consulting
Apresentação Dellent Consulting
 

Viewers also liked

Design Pattern MVC – Arquitetura de Software Coesa e Flexível
Design Pattern MVC – Arquitetura de Software Coesa e FlexívelDesign Pattern MVC – Arquitetura de Software Coesa e Flexível
Design Pattern MVC – Arquitetura de Software Coesa e Flexível
Ryan Padilha
 

Viewers also liked (13)

Domain-Driven-Design
Domain-Driven-DesignDomain-Driven-Design
Domain-Driven-Design
 
Design de software com ASP.NET MVC
Design de software com ASP.NET MVCDesign de software com ASP.NET MVC
Design de software com ASP.NET MVC
 
Criandeiros - Grupo de estudos: MVC
Criandeiros - Grupo de estudos: MVCCriandeiros - Grupo de estudos: MVC
Criandeiros - Grupo de estudos: MVC
 
Domain-Driven Design - Uma Abordagem Introdutória
Domain-Driven Design - Uma Abordagem IntrodutóriaDomain-Driven Design - Uma Abordagem Introdutória
Domain-Driven Design - Uma Abordagem Introdutória
 
Bounded Context e CQRS na evolução de aplicações .NET legadas
Bounded Context e CQRS na evolução de aplicações .NET legadasBounded Context e CQRS na evolução de aplicações .NET legadas
Bounded Context e CQRS na evolução de aplicações .NET legadas
 
DDD – Domain Driven Design
DDD – Domain Driven DesignDDD – Domain Driven Design
DDD – Domain Driven Design
 
Arquitetura de Sofware
Arquitetura de SofwareArquitetura de Sofware
Arquitetura de Sofware
 
Domain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BHDomain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BH
 
Arquitetura MVC
Arquitetura MVCArquitetura MVC
Arquitetura MVC
 
Apresentação mvc
Apresentação mvcApresentação mvc
Apresentação mvc
 
Design Pattern MVC – Arquitetura de Software Coesa e Flexível
Design Pattern MVC – Arquitetura de Software Coesa e FlexívelDesign Pattern MVC – Arquitetura de Software Coesa e Flexível
Design Pattern MVC – Arquitetura de Software Coesa e Flexível
 
Domain Driven Design (DDD)
Domain Driven Design (DDD)Domain Driven Design (DDD)
Domain Driven Design (DDD)
 
Padrões Arquiteturais de Sistemas
Padrões Arquiteturais de SistemasPadrões Arquiteturais de Sistemas
Padrões Arquiteturais de Sistemas
 

Similar to Domain driven design - Visão Geral

Aula 06 projetos multimídia
Aula 06   projetos multimídiaAula 06   projetos multimídia
Aula 06 projetos multimídia
Fábio Costa
 
Aula 06 projetos multimídia
Aula 06   projetos multimídiaAula 06   projetos multimídia
Aula 06 projetos multimídia
Fábio Costa
 
Crystalfinal 100906101303-phpapp02
Crystalfinal 100906101303-phpapp02Crystalfinal 100906101303-phpapp02
Crystalfinal 100906101303-phpapp02
Aldemir Almeida
 
Aula 1 - Interaction Design From Ethnography, Mental Models to IA
Aula 1 - Interaction Design From Ethnography, Mental Models to IAAula 1 - Interaction Design From Ethnography, Mental Models to IA
Aula 1 - Interaction Design From Ethnography, Mental Models to IA
Amyris Fernandez
 

Similar to Domain driven design - Visão Geral (20)

DDD
DDDDDD
DDD
 
Domain Driven Design: como modelar uma aplicação em Node.js com DDD
Domain Driven Design: como modelar uma aplicação em Node.js com DDDDomain Driven Design: como modelar uma aplicação em Node.js com DDD
Domain Driven Design: como modelar uma aplicação em Node.js com DDD
 
Indo além do técnico para desenvolver sistemas que evoluem na velocidade do...
Indo além do técnico para desenvolver sistemas que evoluem na velocidade do...Indo além do técnico para desenvolver sistemas que evoluem na velocidade do...
Indo além do técnico para desenvolver sistemas que evoluem na velocidade do...
 
Utilizando BDD com Specflow e Selenium para testes Web MSP Tech Day Curitiba
Utilizando BDD com Specflow e Selenium para testes Web MSP Tech Day CuritibaUtilizando BDD com Specflow e Selenium para testes Web MSP Tech Day Curitiba
Utilizando BDD com Specflow e Selenium para testes Web MSP Tech Day Curitiba
 
O Archimate® como ferramenta de apoio para uso do TOGAF®
O Archimate® como ferramenta de apoio para uso do TOGAF® O Archimate® como ferramenta de apoio para uso do TOGAF®
O Archimate® como ferramenta de apoio para uso do TOGAF®
 
Arquitetura de referência Drupal 7 e 8. Da Natura e Taller para a comunidade ...
Arquitetura de referência Drupal 7 e 8. Da Natura e Taller para a comunidade ...Arquitetura de referência Drupal 7 e 8. Da Natura e Taller para a comunidade ...
Arquitetura de referência Drupal 7 e 8. Da Natura e Taller para a comunidade ...
 
TDC2018SP | Trilha UX Design - Design Operations (DesOps) - mapear o trabalho...
TDC2018SP | Trilha UX Design - Design Operations (DesOps) - mapear o trabalho...TDC2018SP | Trilha UX Design - Design Operations (DesOps) - mapear o trabalho...
TDC2018SP | Trilha UX Design - Design Operations (DesOps) - mapear o trabalho...
 
Engenharia De Software e O Software Livre
Engenharia De Software e O Software LivreEngenharia De Software e O Software Livre
Engenharia De Software e O Software Livre
 
Get Product Owners 2 Succeed with Agile (Portuguese)
Get Product Owners 2 Succeed with Agile (Portuguese)Get Product Owners 2 Succeed with Agile (Portuguese)
Get Product Owners 2 Succeed with Agile (Portuguese)
 
Métodos Ágeis
Métodos ÁgeisMétodos Ágeis
Métodos Ágeis
 
Aula 06 projetos multimídia
Aula 06   projetos multimídiaAula 06   projetos multimídia
Aula 06 projetos multimídia
 
Aula 06 projetos multimídia
Aula 06   projetos multimídiaAula 06   projetos multimídia
Aula 06 projetos multimídia
 
Macro Arquitetura de Software
Macro Arquitetura de SoftwareMacro Arquitetura de Software
Macro Arquitetura de Software
 
Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)
 
A importância de DDD e o Domain Model na construção de APIs!
A importância de DDD e o Domain Model na construção de APIs!A importância de DDD e o Domain Model na construção de APIs!
A importância de DDD e o Domain Model na construção de APIs!
 
DDD e Microsservicos - do negócio à arquitetura
DDD e Microsservicos - do negócio à arquiteturaDDD e Microsservicos - do negócio à arquitetura
DDD e Microsservicos - do negócio à arquitetura
 
Agência Web - ADDTECH
Agência Web - ADDTECHAgência Web - ADDTECH
Agência Web - ADDTECH
 
Práticas de Desenvolvimento de Software
Práticas de Desenvolvimento de SoftwarePráticas de Desenvolvimento de Software
Práticas de Desenvolvimento de Software
 
Crystalfinal 100906101303-phpapp02
Crystalfinal 100906101303-phpapp02Crystalfinal 100906101303-phpapp02
Crystalfinal 100906101303-phpapp02
 
Aula 1 - Interaction Design From Ethnography, Mental Models to IA
Aula 1 - Interaction Design From Ethnography, Mental Models to IAAula 1 - Interaction Design From Ethnography, Mental Models to IA
Aula 1 - Interaction Design From Ethnography, Mental Models to IA
 

More from Lorival Smolski Chapuis

More from Lorival Smolski Chapuis (9)

Uso de uma rede neural artificial para previsão do volume de lodo gerado em e...
Uso de uma rede neural artificial para previsão do volume de lodo gerado em e...Uso de uma rede neural artificial para previsão do volume de lodo gerado em e...
Uso de uma rede neural artificial para previsão do volume de lodo gerado em e...
 
Joinville Dojo 2010
Joinville Dojo   2010Joinville Dojo   2010
Joinville Dojo 2010
 
DotNet Framework e Orientação a Objetos 1 - Introdução
DotNet Framework e Orientação a Objetos 1 - IntroduçãoDotNet Framework e Orientação a Objetos 1 - Introdução
DotNet Framework e Orientação a Objetos 1 - Introdução
 
Aula inaugural da GeraçãoTec - Softville/Joinville
Aula inaugural da GeraçãoTec - Softville/JoinvilleAula inaugural da GeraçãoTec - Softville/Joinville
Aula inaugural da GeraçãoTec - Softville/Joinville
 
Tutorial realidade aumentada - Sociesc 2011
Tutorial realidade aumentada - Sociesc 2011Tutorial realidade aumentada - Sociesc 2011
Tutorial realidade aumentada - Sociesc 2011
 
Realidade Aumentada - Sociesc 2011
Realidade Aumentada - Sociesc 2011Realidade Aumentada - Sociesc 2011
Realidade Aumentada - Sociesc 2011
 
Algoritmos de ordenação
Algoritmos de ordenaçãoAlgoritmos de ordenação
Algoritmos de ordenação
 
Iadis Conference Flood Forecasting
Iadis Conference   Flood ForecastingIadis Conference   Flood Forecasting
Iadis Conference Flood Forecasting
 
Coding Dojo - Aplicando Princípios Ágeis
Coding Dojo - Aplicando Princípios ÁgeisCoding Dojo - Aplicando Princípios Ágeis
Coding Dojo - Aplicando Princípios Ágeis
 

Recently uploaded

PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
HELENO FAVACHO
 

Recently uploaded (20)

Educação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxEducação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptx
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
 
LENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretaçãoLENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretação
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
 
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptxPlano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
 
Conflitos entre: ISRAEL E PALESTINA.pdf
Conflitos entre:  ISRAEL E PALESTINA.pdfConflitos entre:  ISRAEL E PALESTINA.pdf
Conflitos entre: ISRAEL E PALESTINA.pdf
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.
 
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfPROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
 
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
 
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
 
migração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenosmigração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenos
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
 
GÊNERO CARTAZ - o que é, para que serve.pptx
GÊNERO CARTAZ - o que é, para que serve.pptxGÊNERO CARTAZ - o que é, para que serve.pptx
GÊNERO CARTAZ - o que é, para que serve.pptx
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º ano
 
Seminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptxSeminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptx
 

Domain driven design - Visão Geral

  • 1. Arquitetura e modelagem de Software orientada a domínio Domain Driven Design Lorival Smolski Chapuis MCPD ASP.NET http://blog.lorival.com / lorival@chapuis.com.br Centro de Inovação Microsoft SOCIESC 2010 Sociedade Educacional de Santa Catarina
  • 2. “... 1 hora não dá pra nada. Você vai mostrar a mecânica do DDD, e o pessoal vai sair achando que DDD é entidades+repositórios... Já percebi que por mais esforço que façamos, técnicos tendem a simplificar o que viram, e sobra só isso na cabeça deles ...” Giovani Bassi Arquiteto de Software, MVP Considerações iniciais 2
  • 3. • O que é Domain Driven Design • Surgimento, objetivos e vantagens • Essência do Domain Driven Design • Modelando um domínio real • Regras para modelagem • Arquitetura em camadas • Caixa de ferramentas Microsoft • Apresentação de uma aplicação • Considerações finais Agenda 3
  • 4. É uma abordagem de design de software disciplinada que reúne um conjunto de conceitos, técnicas e princípios para construção de softwares baseados em um modelo de domínio. Domain Driven Design 4
  • 5. É uma abordagem de design de software Disciplinada que reúne um conjunto de conceitos, técnicas e princípios para construção de softwares baseados em um modelo de domínio. Domain Driven Design 5
  • 6. É uma abordagem de design de software Disciplinada que reúne um conjunto de conceitos, técnicas e princípios para construção de softwares baseados em um modelo de domínio. Domain Driven Design 6 É todo e qualquer conhecimento (esfera de conhecimento) utilizado em uma determinada área. Um domínio possuí regras de negócio.
  • 7. É uma abordagem de design de software Disciplinada que reúne um conjunto de conceitos, técnicas e princípios para construção de softwares baseados em um modelo de domínio. Domain Driven Design 7
  • 8. É uma abordagem de design de software Disciplinada que reúne um conjunto de conceitos, técnicas e princípios para construção de softwares baseados em um modelo de domínio. Domain Driven Design 8 Pode ser expresso de várias formas: apresentação de slides, UML, rascunhos em papel, organograma, etc...
  • 9. É uma abordagem de design de software Disciplinada que reúne um conjunto de conceitos, técnicas e princípios para construção de softwares baseados em um modelo de domínio. Domain Driven Design 9
  • 10. É uma abordagem de design de software Disciplinada que reúne um conjunto de conceitos, técnicas e princípios para construção de softwares baseados em um modelo de domínio. Domain Driven Design 10 Object Oriented programming Ubiquitous Language Domain patterns Layered architecture Design patterns ... ...
  • 11. Surgimento 11 Há 20 anos criam-se padrões e técnicas para arquitetura e modelagem de software Orientada a Objetos. Há 6 anos Eric Evans compilou várias destas técnicas e unindo com suas experiências criou o DDD
  • 12. Há 20 anos criam-se padrões e técnicas para arquitetura e modelagem de software Orientada a Objetos. Há 6 anos Eric Evans compilou várias destas técnicas e unindo com suas experiências criou o DDD Surgimento 12 Design de domínio Pouco foi escrito sobre isso Não se tinha claro como deveria ser feito
  • 13. Há 20 anos criam-se padrões e técnicas para arquitetura e modelagem de software Orientada a Objetos. Há 6 anos Eric Evans compilou várias destas técnicas e unindo com suas experiências criou o DDD Surgimento 13 Padrões de arquitetura Mais de 10 anos como arquiteto de software Boas práticas Padrões de desenvolvimento Grandes e pequenos projetos
  • 14. 1. Aproximar desenvolvimento de software do domínio do problema. 2. Aumentar a vida de um software. 3. Ter códigos mais claros e fáceis de entender. 4. Utilizar o principal recurso da orientação a objetos: a aproximação do mundo real através de abstrações. Objetivos 14
  • 15. Vantagens 15 1. Fácil comunicação entre desenvolvedores, analistas e clientes. 2. Construir software testáveis. 3. Fácil manutenção e crescimento do software. 4. Agregar ou trocar colaboradores na equipe de desenvolvimento não é mais um problema. 5. Entenda o cliente, o modelo e o código.
  • 16. • Para a maioria dos projetos de software o foco principal deve ser no domínio • O modelo deve ser baseado em um domínio • Você conhece software, o BusinessExpert conhece o domínio, ouve-o. • A Ubiquitous Language deve predominar desde o BusinessExpert até a equipe de desenvolvimento Essência do Domain Driven Design 16
  • 17. Modelos são baseados em abstrações 17
  • 18. Modelos são baseados em abstrações 18
  • 19. Modelos são baseados em abstrações 19
  • 20. Modelos são baseados em abstrações 20
  • 21. Modelos são baseados em abstrações 21
  • 22. Modelos são baseados em abstrações 22
  • 23. Modelos são baseados em abstrações 23
  • 24. Modelos são baseados em abstrações 24
  • 25. • Objetivo principal: Extrair empresas de sites Vamos modelar... 25 Empresa: Emp A Rua A, 001. cep:AA Cidade: Cidade A, AA Empresa: Emp B Rua B, 002. cep: BB Cidade: Cidade B, BB Empresa: EmpC Rua C, 003 . cep: CC Cidade: Cidade C, CC Empresa Rua Nº CEP Cidade Estado Emp A A 001 AA Cidade A AA Emp B B 002 BB Cidade B BB Emp C C 003 CC Cidade C CC
  • 28. • São identificadas através de uma identidade • Um objeto pode ter uma identidade em um domínio e não ter em outro versus • Se uma entidade mudar a regra de negócio é afetada Entidades 28
  • 29. • São identificadas através de suas propriedades (atributos) • Um objeto de valor não pode ser alterado, ele é sempre removido e adicionado um novo • Não são o foco do negócio Objetos de valor 29
  • 39. • Reúnem entidades e objetos de valor de modo a fazer sentido para o negócio. • Definem fronteiras claras • Toda agregação tem uma raiz Agregações 39
  • 42. Agregações e suas raizes 42
  • 43. Agregações e suas raízes 43
  • 44. • Fingem que tem todos os dados em memória. • Para o consumidor do repositório não faz diferença onde está o objeto. • São responsáveis por guardar ou destruir objetos. Repositórios 44
  • 47. • Resolvem problemas de negócio mas não são entidades nem objetos de valor, pois possuem apenas comportamentos e não estados de negócio. Serviços 47
  • 49. • Cria objetos complexos ou que possuam dificuldade de construir. • Será responsabilidade de um objeto se construir? Fábricas 49
  • 53. • Mínimo: – Microsoft Visual Studio 2010 (IDE) – Microsoft.Net Framework • Comum: – Microsoft Entity Framework 4.0 (ORM) – Microsoft Unity Framework (Inje. Dependência) – Microsoft Sql-Server 2008 • Recomendado: – Microsoft Test (Testes automatizados) – Code Coverage – Microsoft MVC Framework (web) Caixa de ferramentas 53
  • 57. Domain Driven Design Dúvidas? Centro de Inovação Microsoft SOCIESC 2010 Sociedade Educacional de Santa Catarina Lorival Smolski Chapuis MCPD ASP.NET http://blog.lorival.com / lorival@chapuis.com.br