SlideShare uma empresa Scribd logo
1 de 38
Baixar para ler offline
DOMAIN-DRIVEN
DESIGN
ATACANDO AS COMPLEXIDADES NO
CORAÇÃO DO SOFTWARE
ARQUITETO DE SOFTWARE
BACHAREL EM ANÁLISE DE SISTEMAS
MESTRANDO NO CURSO DE ENG. DE SOFTWARE PELA UFRN
Há 15 anos se dedicando a construção de sistemas corporativos.
@yanjustino
facebook/yanjustino
youtube/academia .net para zumbis
youtube/aspnet cast
2 0 A n o s d e 	 A T I V I D A D E
e m p r e s a 	 d e 	 t e c n o l o g i a
f o c a d a 	 e m 	 p e s s o a s
d i v e r s o s s e r v i ç o s 	
r e a l i z a d o s
4 2 0 i v i a n o s e m 	 a ç ã o !
Secretaria de estado da tributação do RN
SET
Cidadão
Auditores
Gestão
Contribuinte
A Secretaria de Estado da Tributação do Rio Grande do Norte
- SET/RN - é uma administração tributária cuja finalidade é a
arrecadação de tributos estaduais e a fiscalização das
operações que os geram.
Para que a SET/RN possa atender as necessidades
relacionadas às atividades fins, em cumprimento as suas
obrigações, se faz necessário manter funcionando cerca
de 70 (setenta) sistemas e subsistemas que abrangem
a área tributária envolvendo os impostos de sua
competência, assim como as ofertas de serviços aos
contribuintes e cidadãos através da internet.
Design de Software é a parte da engenharia de
software que se encarrega de transformar os
resultados da Análise de Requisitos em um
documento ou conjunto de documentos
capazes de serem interpretados diretamente pelo
programador.
design?
processo iterativo de análise das necessidades de
interação e processamento de informações das pessoas,
proposta de um sistema computacional que
atenda tais necessidades e avaliação dos efeitos
do uso do sistema na vida das pessoas
design?
design?
COMPLEXIDADE?
DOMAIN-DRIVEN DESIGN
O VALOR AGREGADO PELO DDD
Domain-Driven Design é uma abordagem
particular sobre design
e desenvolvimento de software!
DDD é sobre “mastigar” conhecimento de um
dado domínio de negócio e produção de um
modelo de software que o espelhe.
DOMAIN-DRIVEN DESIGN
Os dois grandes erros
Adotar Domain-Driven Design só
porque isso lhe
soa legal
Ou simplesmente ignorá-lo por acreditar que seu
sistema é um pouco mais complexo que
um simples CRUD
DOMAIN-DRIVEN DESIGN
em duas partes distintas
Domain-Driven Design
Visão analítica
ESPAÇO DE PROBLEMA
Domain-Driven Design
Visão estratégica
ESPAÇO DE SOLUÇÃO
DOMAIN-DRIVEN DESIGN
visão analítica
DOMAIN-DRIVEN DESIGN
visão analítica
DOMAIN-DRIVEN DESIGN
ubiquitous language
ATACANDO A COMPLEXIDADE?
DDD é sobre a
Redução de complexidade
No software
Eric Evans
Arquitetura é sobre
intenção
Robert C. Martin
DOMAIN-DRIVEN DESIGN
visão estratégica
DOMAIN-DRIVEN DESIGN
visão estratégica
ATACANDO A COMPLEXIDADE?
ATACANDO A COMPLEXIDADE?
DOMAIN-DRIVEN DESIGN
bounded context
DOMAIN-DRIVEN DESIGN
bounded context: UMA VISÃO CLÁSSICA
DOMAIN-DRIVEN DESIGN
bounded context: UMA VISÃO MODERNA
DOMAIN-DRIVEN DESIGN
bounded context: UMA VISÃO MODERNA
DOMAIN-DRIVEN DESIGN
dividindo bounded context
DOMAIN-DRIVEN DESIGN
bounded context: EXPLORANDO ARQUITETURAS
DOMAIN-DRIVEN DESIGN
bounded context : extrAINdo api
DOMAIN-DRIVEN DESIGN
bounded context: EVOLUINDO LEGADO
DOMAIN-DRIVEN DESIGN
bounded context: COMUNICAÇÃO
DOMAIN-DRIVEN DESIGN
bounded context: COMUNICAÇÃO
REFERÊNCIAS : livros
Implementing
Domain-Driven Design
Vaughn	Vernon
ISBN-13: 860-1404568893
ISBN-10: 0321834577
Domain-Driven Design: Tackling
Complexity in the Heart of
Software
Eric	Evans
ISBN-13: 978-0321125217
ISBN-10: 0321125215
Patterns, Principles, and Practices
of Domain-Driven Design
Scott	Millett
ISBN-13: 978-1118714706
ISBN-10: 1118714709
Microsoft .NET - Architecting
Applications for the Enterprise
Dino	Esposito
ISBN-13: 978-0735685352
ISBN-10: 0735685355
https://goo.gl/N16BhM

Mais conteúdo relacionado

Destaque

Introdução ao Aspnet Core
Introdução ao Aspnet CoreIntrodução ao Aspnet Core
Introdução ao Aspnet CoreYan Justino
 
Vssummit 2016 - DDD em cenários corporativos
Vssummit 2016 - DDD em cenários corporativosVssummit 2016 - DDD em cenários corporativos
Vssummit 2016 - DDD em cenários corporativosYan Justino
 
Padrões Arquiteturais de Sistemas
Padrões Arquiteturais de SistemasPadrões Arquiteturais de Sistemas
Padrões Arquiteturais de SistemasVagner Santana
 
Pense fora da caixa: Aplique Agilidade com Domain Driven Design. Você ainda u...
Pense fora da caixa: Aplique Agilidade com Domain Driven Design. Você ainda u...Pense fora da caixa: Aplique Agilidade com Domain Driven Design. Você ainda u...
Pense fora da caixa: Aplique Agilidade com Domain Driven Design. Você ainda u...Yan Justino
 
Dezembro 2015 - Primeiros Passos em Automação de Testes
Dezembro 2015 - Primeiros Passos em Automação de Testes Dezembro 2015 - Primeiros Passos em Automação de Testes
Dezembro 2015 - Primeiros Passos em Automação de Testes Grupo de Testes Carioca
 
Domain driven design na Prática
Domain driven design na PráticaDomain driven design na Prática
Domain driven design na PráticaDouglas Aguiar
 
Domain-Driven-Design
Domain-Driven-DesignDomain-Driven-Design
Domain-Driven-DesignWende Mendes
 
Padroes de projetos gof
Padroes de projetos gofPadroes de projetos gof
Padroes de projetos gofYan Justino
 
DDD - Domain Driven Design
DDD - Domain Driven DesignDDD - Domain Driven Design
DDD - Domain Driven DesignDaniel Cukier
 
Autenticação e Controle de Acesso
Autenticação e Controle de AcessoAutenticação e Controle de Acesso
Autenticação e Controle de AcessoDenis L Presciliano
 
Autenticação e autorização
Autenticação e autorizaçãoAutenticação e autorização
Autenticação e autorizaçãoDouglas Aguiar
 
Padrões-05 - Padrões Arquiteturais - MVC
Padrões-05 - Padrões Arquiteturais - MVCPadrões-05 - Padrões Arquiteturais - MVC
Padrões-05 - Padrões Arquiteturais - MVCEduardo Nicola F. Zagari
 
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íPriscila Mayumi
 
Arquitetura de Software Visão Geral
Arquitetura de Software Visão GeralArquitetura de Software Visão Geral
Arquitetura de Software Visão Geralsergiocrespo
 
Padrões-02 - Padrões Arquiteturais - Camadas
Padrões-02 - Padrões Arquiteturais - CamadasPadrões-02 - Padrões Arquiteturais - Camadas
Padrões-02 - Padrões Arquiteturais - CamadasEduardo Nicola F. Zagari
 

Destaque (20)

Introdução ao Aspnet Core
Introdução ao Aspnet CoreIntrodução ao Aspnet Core
Introdução ao Aspnet Core
 
Vssummit 2016 - DDD em cenários corporativos
Vssummit 2016 - DDD em cenários corporativosVssummit 2016 - DDD em cenários corporativos
Vssummit 2016 - DDD em cenários corporativos
 
Padrões Arquiteturais de Sistemas
Padrões Arquiteturais de SistemasPadrões Arquiteturais de Sistemas
Padrões Arquiteturais de Sistemas
 
Mocks vs. Stubs
Mocks vs. StubsMocks vs. Stubs
Mocks vs. Stubs
 
Pense fora da caixa: Aplique Agilidade com Domain Driven Design. Você ainda u...
Pense fora da caixa: Aplique Agilidade com Domain Driven Design. Você ainda u...Pense fora da caixa: Aplique Agilidade com Domain Driven Design. Você ainda u...
Pense fora da caixa: Aplique Agilidade com Domain Driven Design. Você ainda u...
 
TDD e BDD
TDD e BDDTDD e BDD
TDD e BDD
 
Dezembro 2015 - Primeiros Passos em Automação de Testes
Dezembro 2015 - Primeiros Passos em Automação de Testes Dezembro 2015 - Primeiros Passos em Automação de Testes
Dezembro 2015 - Primeiros Passos em Automação de Testes
 
Domain driven design na Prática
Domain driven design na PráticaDomain driven design na Prática
Domain driven design na Prática
 
Angular
AngularAngular
Angular
 
Iniciando com DDD
Iniciando com DDDIniciando com DDD
Iniciando com DDD
 
Domain-Driven-Design
Domain-Driven-DesignDomain-Driven-Design
Domain-Driven-Design
 
Padroes de projetos gof
Padroes de projetos gofPadroes de projetos gof
Padroes de projetos gof
 
DDD - Domain Driven Design
DDD - Domain Driven DesignDDD - Domain Driven Design
DDD - Domain Driven Design
 
Autenticação e Controle de Acesso
Autenticação e Controle de AcessoAutenticação e Controle de Acesso
Autenticação e Controle de Acesso
 
Autenticação e autorização
Autenticação e autorizaçãoAutenticação e autorização
Autenticação e autorização
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Padrões-05 - Padrões Arquiteturais - MVC
Padrões-05 - Padrões Arquiteturais - MVCPadrões-05 - Padrões Arquiteturais - MVC
Padrões-05 - Padrões Arquiteturais - MVC
 
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í
 
Arquitetura de Software Visão Geral
Arquitetura de Software Visão GeralArquitetura de Software Visão Geral
Arquitetura de Software Visão Geral
 
Padrões-02 - Padrões Arquiteturais - Camadas
Padrões-02 - Padrões Arquiteturais - CamadasPadrões-02 - Padrões Arquiteturais - Camadas
Padrões-02 - Padrões Arquiteturais - Camadas
 

Semelhante a Atacando as complexidades no coração do software

Projetos de software alem da tecnologia
Projetos de software alem da tecnologiaProjetos de software alem da tecnologia
Projetos de software alem da tecnologiaRoberto Brandini
 
Introdução ao 12 Factors APP
Introdução ao 12 Factors APPIntrodução ao 12 Factors APP
Introdução ao 12 Factors APPDouglas Alonso
 
Currículo William Gonçalves
Currículo William GonçalvesCurrículo William Gonçalves
Currículo William GonçalvesWilliam Messias
 
Gerenciamento de Projetos com o Redmine
Gerenciamento de Projetos com o RedmineGerenciamento de Projetos com o Redmine
Gerenciamento de Projetos com o RedminePatrick Kaminski
 
Implantando Continuous Delivery com TFS
Implantando Continuous Delivery com TFSImplantando Continuous Delivery com TFS
Implantando Continuous Delivery com TFSAndré Dias
 
[GDG Quality Fest 2017] BDD - Como quebrar as barreiras de negócio dentro do ...
[GDG Quality Fest 2017] BDD - Como quebrar as barreiras de negócio dentro do ...[GDG Quality Fest 2017] BDD - Como quebrar as barreiras de negócio dentro do ...
[GDG Quality Fest 2017] BDD - Como quebrar as barreiras de negócio dentro do ...Andrelise Rafael Gonçalves
 
Apresentação do Software GARAGEM MED
Apresentação do Software GARAGEM MEDApresentação do Software GARAGEM MED
Apresentação do Software GARAGEM MEDMendez Ginga
 
BDD - Integrando regras de negócio e programação
BDD - Integrando regras de negócio e programaçãoBDD - Integrando regras de negócio e programação
BDD - Integrando regras de negócio e programaçãoGleica Reinert
 
Sistemas ERP - Implantação e tendências de mercado
Sistemas ERP - Implantação e tendências de mercadoSistemas ERP - Implantação e tendências de mercado
Sistemas ERP - Implantação e tendências de mercadorobisson_oliveira
 
Trabalho individual 5 semestre Analise de Sistemas
Trabalho individual 5 semestre Analise de SistemasTrabalho individual 5 semestre Analise de Sistemas
Trabalho individual 5 semestre Analise de SistemasWANDERSON JONER
 

Semelhante a Atacando as complexidades no coração do software (20)

Projetos de software alem da tecnologia
Projetos de software alem da tecnologiaProjetos de software alem da tecnologia
Projetos de software alem da tecnologia
 
Métodos Ágeis - Aula 01
Métodos Ágeis - Aula 01Métodos Ágeis - Aula 01
Métodos Ágeis - Aula 01
 
Introdução ao 12 Factors APP
Introdução ao 12 Factors APPIntrodução ao 12 Factors APP
Introdução ao 12 Factors APP
 
Currículo William Gonçalves
Currículo William GonçalvesCurrículo William Gonçalves
Currículo William Gonçalves
 
Apresentacao
ApresentacaoApresentacao
Apresentacao
 
Gerenciamento de Projetos com o Redmine
Gerenciamento de Projetos com o RedmineGerenciamento de Projetos com o Redmine
Gerenciamento de Projetos com o Redmine
 
Implantando Continuous Delivery com TFS
Implantando Continuous Delivery com TFSImplantando Continuous Delivery com TFS
Implantando Continuous Delivery com TFS
 
[GDG Quality Fest 2017] BDD - Como quebrar as barreiras de negócio dentro do ...
[GDG Quality Fest 2017] BDD - Como quebrar as barreiras de negócio dentro do ...[GDG Quality Fest 2017] BDD - Como quebrar as barreiras de negócio dentro do ...
[GDG Quality Fest 2017] BDD - Como quebrar as barreiras de negócio dentro do ...
 
Apresentação do Software GARAGEM MED
Apresentação do Software GARAGEM MEDApresentação do Software GARAGEM MED
Apresentação do Software GARAGEM MED
 
Apresentação Executiva S2it
Apresentação Executiva S2itApresentação Executiva S2it
Apresentação Executiva S2it
 
Status Report do TCC: SIN-NA7
Status Report do TCC: SIN-NA7Status Report do TCC: SIN-NA7
Status Report do TCC: SIN-NA7
 
BDD - Integrando regras de negócio e programação
BDD - Integrando regras de negócio e programaçãoBDD - Integrando regras de negócio e programação
BDD - Integrando regras de negócio e programação
 
Analise de Requisitos Software
Analise de Requisitos SoftwareAnalise de Requisitos Software
Analise de Requisitos Software
 
Sistemas ERP - Implantação e tendências de mercado
Sistemas ERP - Implantação e tendências de mercadoSistemas ERP - Implantação e tendências de mercado
Sistemas ERP - Implantação e tendências de mercado
 
Trabalho individual 5 semestre Analise de Sistemas
Trabalho individual 5 semestre Analise de SistemasTrabalho individual 5 semestre Analise de Sistemas
Trabalho individual 5 semestre Analise de Sistemas
 
DDD
DDDDDD
DDD
 
Reinaldo_Ragazzini (P)
Reinaldo_Ragazzini (P)Reinaldo_Ragazzini (P)
Reinaldo_Ragazzini (P)
 
FabricioDoi
FabricioDoiFabricioDoi
FabricioDoi
 
Carlos Eduardo Capparelli
Carlos Eduardo CapparelliCarlos Eduardo Capparelli
Carlos Eduardo Capparelli
 
Zipernet Sistemas Online
Zipernet Sistemas OnlineZipernet Sistemas Online
Zipernet Sistemas Online
 

Mais de Yan Justino

TDC Future - comunidade XP - Abraçando a variedade de padrões de arquitetura...
TDC Future - comunidade XP -  Abraçando a variedade de padrões de arquitetura...TDC Future - comunidade XP -  Abraçando a variedade de padrões de arquitetura...
TDC Future - comunidade XP - Abraçando a variedade de padrões de arquitetura...Yan Justino
 
Criando multi-agent systems com .net Hosted Services
Criando multi-agent systems com .net Hosted ServicesCriando multi-agent systems com .net Hosted Services
Criando multi-agent systems com .net Hosted ServicesYan Justino
 
LIVE: BDD, GWTDO e Specification Matching no .NET
LIVE: BDD, GWTDO e Specification Matching no .NETLIVE: BDD, GWTDO e Specification Matching no .NET
LIVE: BDD, GWTDO e Specification Matching no .NETYan Justino
 
Evitando o declínio arquitetural de suas aplicações na velocidade de desenvol...
Evitando o declínio arquitetural de suas aplicações na velocidade de desenvol...Evitando o declínio arquitetural de suas aplicações na velocidade de desenvol...
Evitando o declínio arquitetural de suas aplicações na velocidade de desenvol...Yan Justino
 
Modernizando sistemas e-Gov legados: um relato sobre adoção de microservices ...
Modernizando sistemas e-Gov legados: um relato sobre adoção de microservices ...Modernizando sistemas e-Gov legados: um relato sobre adoção de microservices ...
Modernizando sistemas e-Gov legados: um relato sobre adoção de microservices ...Yan Justino
 
Palestra TDC POA 2018 - Reengenharia de aplicações asp.net legadas para arqui...
Palestra TDC POA 2018 - Reengenharia de aplicações asp.net legadas para arqui...Palestra TDC POA 2018 - Reengenharia de aplicações asp.net legadas para arqui...
Palestra TDC POA 2018 - Reengenharia de aplicações asp.net legadas para arqui...Yan Justino
 
Modernizando plataformas eGovernment: migração do sistema Uvt
Modernizando plataformas eGovernment: migração do sistema UvtModernizando plataformas eGovernment: migração do sistema Uvt
Modernizando plataformas eGovernment: migração do sistema UvtYan Justino
 
Modernizando plataformas e-Government : Lições e Método
Modernizando plataformas e-Government : Lições e MétodoModernizando plataformas e-Government : Lições e Método
Modernizando plataformas e-Government : Lições e MétodoYan Justino
 
DocumentDb: escalando sua aplicação
DocumentDb: escalando sua aplicaçãoDocumentDb: escalando sua aplicação
DocumentDb: escalando sua aplicaçãoYan Justino
 
Angular - Ruby Morning
Angular - Ruby MorningAngular - Ruby Morning
Angular - Ruby MorningYan Justino
 
GDG NATAL - Dart Flight School
GDG NATAL - Dart Flight SchoolGDG NATAL - Dart Flight School
GDG NATAL - Dart Flight SchoolYan Justino
 
Si - Segurança da Informação
Si - Segurança da InformaçãoSi - Segurança da Informação
Si - Segurança da InformaçãoYan Justino
 
Fundamentos ORM com entityframework
Fundamentos ORM com entityframeworkFundamentos ORM com entityframework
Fundamentos ORM com entityframeworkYan Justino
 
Community webcast
Community webcastCommunity webcast
Community webcastYan Justino
 

Mais de Yan Justino (16)

TDC Future - comunidade XP - Abraçando a variedade de padrões de arquitetura...
TDC Future - comunidade XP -  Abraçando a variedade de padrões de arquitetura...TDC Future - comunidade XP -  Abraçando a variedade de padrões de arquitetura...
TDC Future - comunidade XP - Abraçando a variedade de padrões de arquitetura...
 
Criando multi-agent systems com .net Hosted Services
Criando multi-agent systems com .net Hosted ServicesCriando multi-agent systems com .net Hosted Services
Criando multi-agent systems com .net Hosted Services
 
LIVE: BDD, GWTDO e Specification Matching no .NET
LIVE: BDD, GWTDO e Specification Matching no .NETLIVE: BDD, GWTDO e Specification Matching no .NET
LIVE: BDD, GWTDO e Specification Matching no .NET
 
Evitando o declínio arquitetural de suas aplicações na velocidade de desenvol...
Evitando o declínio arquitetural de suas aplicações na velocidade de desenvol...Evitando o declínio arquitetural de suas aplicações na velocidade de desenvol...
Evitando o declínio arquitetural de suas aplicações na velocidade de desenvol...
 
Modernizando sistemas e-Gov legados: um relato sobre adoção de microservices ...
Modernizando sistemas e-Gov legados: um relato sobre adoção de microservices ...Modernizando sistemas e-Gov legados: um relato sobre adoção de microservices ...
Modernizando sistemas e-Gov legados: um relato sobre adoção de microservices ...
 
Palestra TDC POA 2018 - Reengenharia de aplicações asp.net legadas para arqui...
Palestra TDC POA 2018 - Reengenharia de aplicações asp.net legadas para arqui...Palestra TDC POA 2018 - Reengenharia de aplicações asp.net legadas para arqui...
Palestra TDC POA 2018 - Reengenharia de aplicações asp.net legadas para arqui...
 
Modernizando plataformas eGovernment: migração do sistema Uvt
Modernizando plataformas eGovernment: migração do sistema UvtModernizando plataformas eGovernment: migração do sistema Uvt
Modernizando plataformas eGovernment: migração do sistema Uvt
 
Modernizando plataformas e-Government : Lições e Método
Modernizando plataformas e-Government : Lições e MétodoModernizando plataformas e-Government : Lições e Método
Modernizando plataformas e-Government : Lições e Método
 
DocumentDb: escalando sua aplicação
DocumentDb: escalando sua aplicaçãoDocumentDb: escalando sua aplicação
DocumentDb: escalando sua aplicação
 
Angular - Ruby Morning
Angular - Ruby MorningAngular - Ruby Morning
Angular - Ruby Morning
 
GDG NATAL - Dart Flight School
GDG NATAL - Dart Flight SchoolGDG NATAL - Dart Flight School
GDG NATAL - Dart Flight School
 
Si - Segurança da Informação
Si - Segurança da InformaçãoSi - Segurança da Informação
Si - Segurança da Informação
 
C# limpo
C# limpoC# limpo
C# limpo
 
Fundamentos ORM com entityframework
Fundamentos ORM com entityframeworkFundamentos ORM com entityframework
Fundamentos ORM com entityframework
 
Apresentação
ApresentaçãoApresentação
Apresentação
 
Community webcast
Community webcastCommunity webcast
Community webcast
 

Atacando as complexidades no coração do software