2. Giovanni Bassi Arquiteto de software Consultoria, gestão e mentoring Treinamento Microsoft MostValuable Professional em C# (MVP) InetaBoardMember C#, VB, J#, F#, etc... .Net de Beta a Beta Dezenas de artigos na .Net Magazine Editor técnico da .Net Magazine Palestrante Professor universitário Líder e fundador do .Net Architects
13. Motivo 1: Estamos livres do banco de dados! (pelo menos até o final da iteração)
14. Quais são as duas principais premissas do DDD? “Para a maioria dos projetos de software o foco principal deve ser no domínio e na lógica do domínio.” “Desenhos complexos de domínio devem ser baseados em um modelo.” Eric Evans
15. Domínio? Esfera de conhecimento, influênciaouatividade. A áreaemque o usuárioutiliza o software.
20. Modelos são abstrações Isso quer dizer que o que não interessa fica de fora Se você conseguir equalizar isso, o modelo é perfeito Modelos devem refletir o código ou são irrelevantes
21. Não há padrão para um modelo Ele pode ser assim... Ou assim...
23. Motivo 3: Use o que faz sentido pra você e para sua empresa!
24. UbiquitousLanguage (está em toda parte) Vem dos business experts É refletida no modelo É refletida no código É falada pelo time
25. Não Sim “Carga” “Conta corrente” “Serviço de tradução de itinerário” “Repositório de clientes” “Agendamento de horário” “Tabela” “Classe” “Thread” “Banco de dados” “Façade” “.Net 3.5”
26. Ouça o Business Expert É ele quem conhece o problema, não você
27. Motivo 4: Entenda o cliente! Entenda o resto do time. Entenda o código!
28. Camadas Camadas devem fazer sentido (verifique suas responsabilidades) Se não separou não é camada Layers != Tiers
29.
30. “Esta camada é o coração de um software de negócios” Eric Evans
32. Entidades têm significado no domínio Entidades possuem identidade Cores: Azul Amarelo Verde Vermelho Objetos de valor não tem identidade para o negócio Objetos de valor são reconhecidos por seus atributos Objetos de valorfreqüentemente são imutáveis
33. Agregaçõesreunem entidades e objetos de valor de maneira que faça sentido para o negócio Agregações definem fronteirasclaras Toda agregação tem uma raiz
41. Factories criam objetos Levemente diferente das factories de padrões de projeto Objetos devem ser criados consistentes Será responsabilidade de um objeto se construir?
43. Motivo 8: Defina claramente onde seus objetos nascem. Fim dos problemas de referência circular em entidades.
44. Repositórios fingem que têm todos os dados na memória Para o consumidor do repositório não faz muita diferença onde está o objeto Os Repositórios são os responsáveis por persistir e destruir os objetos
61. Referências DomainLanguage (empresa do Evans)http://domainlanguage.com/ Grupo do Yahoo sobre DDD (eminglês)http://groups.yahoo.com/group/domaindrivendesign Greg Young(MVP - eminglês)http://codebetter.com/blogs/gregyoung/ Domain Driven Design.org (eminglês)http://www.domaindrivendesign.org/ Jimmy Nilsson (eminglês)http://jimmynilsson.com