O documento apresenta uma introdução ao Domain-Driven Design (DDD), definindo-o como uma abordagem de design de software focada na lógica do domínio para criar um modelo de domínio. Detalha alguns conceitos-chave do DDD como linguagem ubíqua, padrões de domínio e arquitetura orientada a camadas. Apresenta também vantagens da adoção do DDD e referências para aprendizado adicional sobre o tópico.
1. Entendendo
Domain-Driven Design
Rafael Ponte
http://www.rponte.com.br
rponte@gmail.com
2. Quem?
● Desenvolvedor
● Atualmente trabalha na IVIA
●
Sócio fundador da Triadworks
●
Entusiasta Java, JSF e DDD
●
Coordenador do grupo JSF
3. Software design is art
“Software design is an art, and like any art it cannot be
taught and learned as a precise science, by means of
theorems and formulas.”
Floyd Marinescu
5. Domain-Driven Design não é uma
tecnologia ou metodologia, mas sim
uma abordagem de design de software
disciplinada que reúne um conjunto de
conceitos, técnicas e princípios com
foco no domínio e na lógica do domínio
para criar um domain model.
6. Domain-Driven Design não é uma
tecnologia ou metodologia, mas sim
uma abordagem de design de software
disciplinada que reúne um conjunto de
conceitos, técnicas e princípios com
foco no domínio e na lógica do domínio
para criar um domain model.
7. Domain-Driven Design não é uma
tecnologia ou metodologia, mas sim
uma abordagem de design de software
disciplinada que reúne um conjunto de
conceitos, técnicas e princípios com
foco no domínio e na lógica do domínio
para criar um domain model.
8. O modelo pode ser
expresso de várias formas,
como uma apresentação
Domain-Driven Design não é uma
em PowerPoint, diagramas
tecnologia ourascunho de
em UML, metodologia, mas sim
papel, peças de Lego, ou
uma abordagem de design de software
mesmo o código da
disciplinada que reúne um conjunto de
aplicação..
conceitos, técnicas e princípios com
foco no domínio e na lógica do domínio
para criar um domain model.
9. Domain-Driven Design não é uma
tecnologia ou metodologia, mas sim
uma abordagem de design de software
disciplinada que reúne um conjunto de
conceitos, técnicas e princípios com
foco no domínio e na lógica do domínio
para criar um domain model.
10. Strategic
... Design ...
Layered
architecture
Domain-Driven Design não é uma
Ubiquitous Domain
patterns
tecnologia ou metodologia, mas sim
Language
uma abordagem de design de software
disciplinada que reúne um conjunto de
conceitos, técnicas e princípios com
...
foco no domínio e na lógica do domínio
para criar um domain model.
Domain-Specific Supple
Language (DSL) Design
OO
28. Podemos destacar...
● Quanto mais próximo você está do negócio
menos sofre com mudanças
● O entendimento do desenvolvedor sobre o
negócio, evitando assim erros e ajudando no
negócio em si, questionando e sugerindo
otimizações
●
Código menos acoplado e mais coeso
29. Concluindo
● Procure utilizar DDD em aplicações com
domínios complexos
● Ubiquitous Language e Domain Model são o
cerne da DDD
●
Não se apegue a rigidez conceitual, e claro,
não lute contra os frameworks
●
Leia, mas leia muito sobre o assunto