entendendo domain-driven design
TRANSCRIPT
![Page 2: Entendendo Domain-Driven Design](https://reader034.vdocuments.mx/reader034/viewer/2022052620/55731f59d8b42aae7b8b4bd0/html5/thumbnails/2.jpg)
Quem?
● Desenvolvedor● Atualmente trabalha na IVIA● Sócio fundador da Triadworks● Entusiasta Java, JSF e DDD● Coordenador do grupo JSF
![Page 3: Entendendo Domain-Driven Design](https://reader034.vdocuments.mx/reader034/viewer/2022052620/55731f59d8b42aae7b8b4bd0/html5/thumbnails/3.jpg)
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
![Page 4: Entendendo Domain-Driven Design](https://reader034.vdocuments.mx/reader034/viewer/2022052620/55731f59d8b42aae7b8b4bd0/html5/thumbnails/4.jpg)
O que éDomain-Driven Design?
![Page 5: Entendendo Domain-Driven Design](https://reader034.vdocuments.mx/reader034/viewer/2022052620/55731f59d8b42aae7b8b4bd0/html5/thumbnails/5.jpg)
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.
![Page 6: Entendendo Domain-Driven Design](https://reader034.vdocuments.mx/reader034/viewer/2022052620/55731f59d8b42aae7b8b4bd0/html5/thumbnails/6.jpg)
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.
![Page 7: Entendendo Domain-Driven Design](https://reader034.vdocuments.mx/reader034/viewer/2022052620/55731f59d8b42aae7b8b4bd0/html5/thumbnails/7.jpg)
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.
![Page 8: Entendendo Domain-Driven Design](https://reader034.vdocuments.mx/reader034/viewer/2022052620/55731f59d8b42aae7b8b4bd0/html5/thumbnails/8.jpg)
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.
O modelo pode ser O modelo pode ser expresso de várias formas, expresso de várias formas, como uma apresentação como uma apresentação
em PowerPoint, diagramas em PowerPoint, diagramas em UML, rascunho de em UML, rascunho de
papel, peças de Lego, ou papel, peças de Lego, ou mesmo o código da mesmo o código da
aplicação..aplicação..
![Page 9: Entendendo Domain-Driven Design](https://reader034.vdocuments.mx/reader034/viewer/2022052620/55731f59d8b42aae7b8b4bd0/html5/thumbnails/9.jpg)
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.
![Page 10: Entendendo Domain-Driven Design](https://reader034.vdocuments.mx/reader034/viewer/2022052620/55731f59d8b42aae7b8b4bd0/html5/thumbnails/10.jpg)
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.
Ubiquitous Ubiquitous LanguageLanguage
Layered Layered architecturearchitecture
Domain Domain patternspatterns
Domain-Specific Domain-Specific Language (DSL)Language (DSL)
Supple Supple DesignDesign
Strategic Strategic DesignDesign
OOOO
......
...... ......
![Page 11: Entendendo Domain-Driven Design](https://reader034.vdocuments.mx/reader034/viewer/2022052620/55731f59d8b42aae7b8b4bd0/html5/thumbnails/11.jpg)
Ubiquitous Language
![Page 12: Entendendo Domain-Driven Design](https://reader034.vdocuments.mx/reader034/viewer/2022052620/55731f59d8b42aae7b8b4bd0/html5/thumbnails/12.jpg)
Layered architecture
![Page 13: Entendendo Domain-Driven Design](https://reader034.vdocuments.mx/reader034/viewer/2022052620/55731f59d8b42aae7b8b4bd0/html5/thumbnails/13.jpg)
Layered architecture
![Page 14: Entendendo Domain-Driven Design](https://reader034.vdocuments.mx/reader034/viewer/2022052620/55731f59d8b42aae7b8b4bd0/html5/thumbnails/14.jpg)
Domain patterns
![Page 15: Entendendo Domain-Driven Design](https://reader034.vdocuments.mx/reader034/viewer/2022052620/55731f59d8b42aae7b8b4bd0/html5/thumbnails/15.jpg)
Entity
![Page 16: Entendendo Domain-Driven Design](https://reader034.vdocuments.mx/reader034/viewer/2022052620/55731f59d8b42aae7b8b4bd0/html5/thumbnails/16.jpg)
Value Object
![Page 17: Entendendo Domain-Driven Design](https://reader034.vdocuments.mx/reader034/viewer/2022052620/55731f59d8b42aae7b8b4bd0/html5/thumbnails/17.jpg)
Repository
![Page 18: Entendendo Domain-Driven Design](https://reader034.vdocuments.mx/reader034/viewer/2022052620/55731f59d8b42aae7b8b4bd0/html5/thumbnails/18.jpg)
Service
![Page 19: Entendendo Domain-Driven Design](https://reader034.vdocuments.mx/reader034/viewer/2022052620/55731f59d8b42aae7b8b4bd0/html5/thumbnails/19.jpg)
Modelando Objetos
![Page 20: Entendendo Domain-Driven Design](https://reader034.vdocuments.mx/reader034/viewer/2022052620/55731f59d8b42aae7b8b4bd0/html5/thumbnails/20.jpg)
Para implementar um Domain Model...
...fuja da arquitetura BOLOVO
![Page 21: Entendendo Domain-Driven Design](https://reader034.vdocuments.mx/reader034/viewer/2022052620/55731f59d8b42aae7b8b4bd0/html5/thumbnails/21.jpg)
BOBusiness Object
LOLayer Object
VOValue Object
![Page 22: Entendendo Domain-Driven Design](https://reader034.vdocuments.mx/reader034/viewer/2022052620/55731f59d8b42aae7b8b4bd0/html5/thumbnails/22.jpg)
Arquitetura Orientada a BOLOVO
ContaAction
ContaForm
ContaVO
ContaBO
DBContaDAO
![Page 23: Entendendo Domain-Driven Design](https://reader034.vdocuments.mx/reader034/viewer/2022052620/55731f59d8b42aae7b8b4bd0/html5/thumbnails/23.jpg)
Arquitetura Orientada a BOLOVO
ContaAction
ContaForm
ContaVO
ContaBO
DBContaDAO
![Page 24: Entendendo Domain-Driven Design](https://reader034.vdocuments.mx/reader034/viewer/2022052620/55731f59d8b42aae7b8b4bd0/html5/thumbnails/24.jpg)
ContaVO ContaBO
![Page 25: Entendendo Domain-Driven Design](https://reader034.vdocuments.mx/reader034/viewer/2022052620/55731f59d8b42aae7b8b4bd0/html5/thumbnails/25.jpg)
![Page 26: Entendendo Domain-Driven Design](https://reader034.vdocuments.mx/reader034/viewer/2022052620/55731f59d8b42aae7b8b4bd0/html5/thumbnails/26.jpg)
![Page 27: Entendendo Domain-Driven Design](https://reader034.vdocuments.mx/reader034/viewer/2022052620/55731f59d8b42aae7b8b4bd0/html5/thumbnails/27.jpg)
Quais as vantagens ao adotar DDD?
![Page 28: Entendendo Domain-Driven Design](https://reader034.vdocuments.mx/reader034/viewer/2022052620/55731f59d8b42aae7b8b4bd0/html5/thumbnails/28.jpg)
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
![Page 29: Entendendo Domain-Driven Design](https://reader034.vdocuments.mx/reader034/viewer/2022052620/55731f59d8b42aae7b8b4bd0/html5/thumbnails/29.jpg)
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
![Page 30: Entendendo Domain-Driven Design](https://reader034.vdocuments.mx/reader034/viewer/2022052620/55731f59d8b42aae7b8b4bd0/html5/thumbnails/30.jpg)
Referências● Livro Domain-Driven Design, 2004 (Eric Evans)
● Domain-Driven Design: http://domaindrivendesign.org/
● GUJ: http://www.guj.com.br/
● Caelum: http://www.caelum.com.br
● Shoes' blog: http://blog.fragmental.com.br
● Fowler's patterns: http://martinfowler.com/eaaCatalog/
● Domain-Driven Design Quickly: http://www.infoq.com/minibooks/domain-driven-design-quickly
● MundoJava Nº 17 e Nº 28: http://www.mundojava.com.br/