domain driven design seminario show me the code
DESCRIPTION
Domain Driven Design Seminario Show me The Code em Porto Alegre - RSTRANSCRIPT
![Page 1: Domain Driven Design Seminario Show me The Code](https://reader034.vdocument.in/reader034/viewer/2022051514/5484cd775806b5a4588b469e/html5/thumbnails/1.jpg)
Domain-Driven Design
Projeto Orientado a Domínio com PHP
Paulo Victor L. L. [email protected]/blog
github.com/pvgomesgithub.com/profpvbitbucket.org/profpv
![Page 2: Domain Driven Design Seminario Show me The Code](https://reader034.vdocument.in/reader034/viewer/2022051514/5484cd775806b5a4588b469e/html5/thumbnails/2.jpg)
Licenciamento desta apresentação
BY - NC - SACompartilhe - Mantenha a licença - Não comercial
http://creativecommons.org/licenses/by-nc-sa/3.0/
![Page 3: Domain Driven Design Seminario Show me The Code](https://reader034.vdocument.in/reader034/viewer/2022051514/5484cd775806b5a4588b469e/html5/thumbnails/3.jpg)
Domain-Driven Design?Domain-Driven Design é uma abordagem para o Desenvolvimento de Software que estabelece uma forte ligação entre a implementação e o modelo evolutivo dos conceitos de negócio. Implementação X Negócios
Não é uma tecnologia ou uma metodologia. DDD fornece uma estrutura de práticas e terminologia para a tomada de decisões de design. O foco é acelerar os projetos de software e alinhar com os domínios de negócio.
![Page 4: Domain Driven Design Seminario Show me The Code](https://reader034.vdocument.in/reader034/viewer/2022051514/5484cd775806b5a4588b469e/html5/thumbnails/4.jpg)
Não faz sentidoOnde eu coloco a minha regra de negócio?
Resposta desse cara ao lado no contexto em que ele se encontra: “Na camada de apresentação, no banco de dados nos controles, modelos, na configuração do webserver e não esquece do xml”
![Page 5: Domain Driven Design Seminario Show me The Code](https://reader034.vdocument.in/reader034/viewer/2022051514/5484cd775806b5a4588b469e/html5/thumbnails/5.jpg)
Encapsulamento...Encapsule a regra de negócio! Fazendo isso, garantimos consistência e simplicidade.
![Page 6: Domain Driven Design Seminario Show me The Code](https://reader034.vdocument.in/reader034/viewer/2022051514/5484cd775806b5a4588b469e/html5/thumbnails/6.jpg)
Orientação a Objetos?
![Page 7: Domain Driven Design Seminario Show me The Code](https://reader034.vdocument.in/reader034/viewer/2022051514/5484cd775806b5a4588b469e/html5/thumbnails/7.jpg)
Orientação a ObjetosMeu framework já usa Orientação a Objetos. Esse papo é muito antigo e eu já superei esse problema.
![Page 8: Domain Driven Design Seminario Show me The Code](https://reader034.vdocument.in/reader034/viewer/2022051514/5484cd775806b5a4588b469e/html5/thumbnails/8.jpg)
Orientação a ObjetosOlhem meus métodos:
![Page 9: Domain Driven Design Seminario Show me The Code](https://reader034.vdocument.in/reader034/viewer/2022051514/5484cd775806b5a4588b469e/html5/thumbnails/9.jpg)
Orientação a ObjetosQuando pensamos em POO logo pensamos em Classes, Encapsulamento, Polimorfismo, Herança...
POO é mais que isso, a essência da POO é alinhamento do código com o negócio, reutilização, mínimo de acoplamento, linguagem natural...
![Page 10: Domain Driven Design Seminario Show me The Code](https://reader034.vdocument.in/reader034/viewer/2022051514/5484cd775806b5a4588b469e/html5/thumbnails/10.jpg)
DDD na práticaColocando o modelo de domínio para funcionar.
Para que um software atenda um domínio, é necessário que se estabeleça, em primeiro lugar, uma Linguagem Ubíqua(Linguagem comum, com termos bem definidos, que fazem parte do domínio do negócio e que são usados por todas as pessoas que fazem parte do processo de desenvolvimento de software)
“Temos que emitir a fatura para o cliente antes da data limite”
Uma classe para a entidade Cliente;Uma classe para a entidade Fatura;Algum serviço que tenha um método emitir;Algum atributo com o nome de data limite.
Essa linguagem ubíqua deve ser compreendida por todos e não pode haver ambiguidades.
![Page 11: Domain Driven Design Seminario Show me The Code](https://reader034.vdocument.in/reader034/viewer/2022051514/5484cd775806b5a4588b469e/html5/thumbnails/11.jpg)
Linguagem UbíquaDefinições de Ubíqua
“O termo foi usado pela primeira vez pelo cientista Norte-Americano Mark Weiser em 1988 e publicado em 1991 no seu artigo The Computer for the 21st Century”
“termo usado para descrever a onipresença da informática no cotidiano das pessoas”
“Computação ubíqua tem como objetivo tornar a interação homem computador invisível, ou seja, integrar a informática com as ações e comportamentos naturais das pessoas”
![Page 12: Domain Driven Design Seminario Show me The Code](https://reader034.vdocument.in/reader034/viewer/2022051514/5484cd775806b5a4588b469e/html5/thumbnails/12.jpg)
Projeto Dirigido pelo Modelo (Model Driven Design – MDD). A ideia por trás de MDD é a de que o seu modelo abstrato deve ser uma representação perfeita do seu domínio.
MDD – Model Driven Design
O MDD defende o processo ágil, o trabalho em equipe ou seja, especialistas em negócio, desenvolvedores e arquitetos trabalhando juntos.
Diagramas da UML ajudam o entedimento do domínio.
![Page 13: Domain Driven Design Seminario Show me The Code](https://reader034.vdocument.in/reader034/viewer/2022051514/5484cd775806b5a4588b469e/html5/thumbnails/13.jpg)
Encapsulando o modelo de domínio.
Blocos de ConstruçãoInterface de Usuário – Interação com o usuário;
Aplicação – essa camada não possui lógica de negócio. Ela é apenas uma camada fina, responsável por conectar a Interface de Usuário às camadas inferiores;
Domínio – representa os conceitos, regras e lógicas de negócio. Todo o foco de DDD está nessa camada. Nosso trabalho, daqui para frente, será aperfeiçoar e compreenderprofundamente essa parte;
Infra-estrutura – fornece recursos técnicos que darão suporte às camadas superiores. São normalmente as partes de um sistema responsáveis por persistência de dados, conexões com bancos de dados, etc.
![Page 14: Domain Driven Design Seminario Show me The Code](https://reader034.vdocument.in/reader034/viewer/2022051514/5484cd775806b5a4588b469e/html5/thumbnails/14.jpg)
Entidades
Muitos objetos não são fundamentalmente definidos por seus atributos, mas sim por uma linha de continuidade e identidade
![Page 15: Domain Driven Design Seminario Show me The Code](https://reader034.vdocument.in/reader034/viewer/2022051514/5484cd775806b5a4588b469e/html5/thumbnails/15.jpg)
![Page 16: Domain Driven Design Seminario Show me The Code](https://reader034.vdocument.in/reader034/viewer/2022051514/5484cd775806b5a4588b469e/html5/thumbnails/16.jpg)
Objetos de valor
Muitos objetos não possuem nenhuma identidade conceitual. Esses objetos descrevem alguma característica de alguma coisa.
![Page 17: Domain Driven Design Seminario Show me The Code](https://reader034.vdocument.in/reader034/viewer/2022051514/5484cd775806b5a4588b469e/html5/thumbnails/17.jpg)
![Page 18: Domain Driven Design Seminario Show me The Code](https://reader034.vdocument.in/reader034/viewer/2022051514/5484cd775806b5a4588b469e/html5/thumbnails/18.jpg)
Serviços
Ás vezes, a situação simplesmente não se trata de alguma coisa. Em algums casos, um design mais limpo e mais pragmático inclui operações que não pertencem conceitualmente a nenhum objeto. Em vez de forçar a questão, podemos seguir os limites naturais do espaço do problema e incluir SERVIÇOS explicitamente no modelo.
![Page 19: Domain Driven Design Seminario Show me The Code](https://reader034.vdocument.in/reader034/viewer/2022051514/5484cd775806b5a4588b469e/html5/thumbnails/19.jpg)
![Page 20: Domain Driven Design Seminario Show me The Code](https://reader034.vdocument.in/reader034/viewer/2022051514/5484cd775806b5a4588b469e/html5/thumbnails/20.jpg)
Agregados
O design detalhado de associações ajuda a simplificar um comportamento de um objeto mas, em diversos casos, existe a necessidade de explorar a modelagem se adequando com o domínio complexo.
![Page 21: Domain Driven Design Seminario Show me The Code](https://reader034.vdocument.in/reader034/viewer/2022051514/5484cd775806b5a4588b469e/html5/thumbnails/21.jpg)
![Page 22: Domain Driven Design Seminario Show me The Code](https://reader034.vdocument.in/reader034/viewer/2022051514/5484cd775806b5a4588b469e/html5/thumbnails/22.jpg)
Fábricas
Quando a criação de um objeto ou um AGREGADO inteiro se torna complicada ou revela uma grande parte de estrutura interna, as FÁBRICAS fornecem o encapsulamento.
![Page 23: Domain Driven Design Seminario Show me The Code](https://reader034.vdocument.in/reader034/viewer/2022051514/5484cd775806b5a4588b469e/html5/thumbnails/23.jpg)
![Page 24: Domain Driven Design Seminario Show me The Code](https://reader034.vdocument.in/reader034/viewer/2022051514/5484cd775806b5a4588b469e/html5/thumbnails/24.jpg)
Repositórios
Associações nos permitem achar um objeto baseado em sua relação com outro objeto. Mas é preciso ter um ponto de partida para uma travessia até uma ENTIDADE ou um VALOR no meio do seu ciclo de vida.
![Page 25: Domain Driven Design Seminario Show me The Code](https://reader034.vdocument.in/reader034/viewer/2022051514/5484cd775806b5a4588b469e/html5/thumbnails/25.jpg)
![Page 26: Domain Driven Design Seminario Show me The Code](https://reader034.vdocument.in/reader034/viewer/2022051514/5484cd775806b5a4588b469e/html5/thumbnails/26.jpg)
Tijolos de construção
![Page 27: Domain Driven Design Seminario Show me The Code](https://reader034.vdocument.in/reader034/viewer/2022051514/5484cd775806b5a4588b469e/html5/thumbnails/27.jpg)
Plataforma EducacionalMagiZ, a Plataforma Educacional Online completa, configurável e fácil de usar.www.magiz.com.br
![Page 28: Domain Driven Design Seminario Show me The Code](https://reader034.vdocument.in/reader034/viewer/2022051514/5484cd775806b5a4588b469e/html5/thumbnails/28.jpg)
Tecnologias utilizadas
![Page 29: Domain Driven Design Seminario Show me The Code](https://reader034.vdocument.in/reader034/viewer/2022051514/5484cd775806b5a4588b469e/html5/thumbnails/29.jpg)
Arquitetura base
![Page 30: Domain Driven Design Seminario Show me The Code](https://reader034.vdocument.in/reader034/viewer/2022051514/5484cd775806b5a4588b469e/html5/thumbnails/30.jpg)
DDD no ZF2
https://github.com/pvgomes/dddzf2
![Page 31: Domain Driven Design Seminario Show me The Code](https://reader034.vdocument.in/reader034/viewer/2022051514/5484cd775806b5a4588b469e/html5/thumbnails/31.jpg)
Perguntas?
![Page 32: Domain Driven Design Seminario Show me The Code](https://reader034.vdocument.in/reader034/viewer/2022051514/5484cd775806b5a4588b469e/html5/thumbnails/32.jpg)
ReferênciaTudo sobre DDDhttp://dddcommunity.org/
Mini-book de DDDhttp://www.infoq.com/minibooks/domain-driven-design-quickly
Domain Driven Designhttp://domaindrivendesign.org/
Vídeo de Introdução a DDDhttp://vimeo.com/3545313
Vídeos sobre Projeto Estratégiohttp://vimeo.com/3972348
http://www.infoq.com/presentations/strategic-design-evans
Vídeo Colocando o Modelo para Funcionarhttp://www.infoq.com/presentations/model-to-work-evans