Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Domain-Driven Design: uma introdução para desen...

Domain-Driven Design: uma introdução para desenvolvedores, artistas, responsáveis ou degustadores de café com leite

Domain-Driven Design (DDD) é uma forma de desenvolver software que foca em implementar o melhor design de software baseado em modelos que refletem explicitamente as competências da organização. DDD força a organização a entender onde deve se distinguir, ao mesmo tempo em a guia na criação de um modelo de software correto. Isso leva a software valioso, usável e também elimina desperdícios.

Referências e mais informações em: https://blog.eriksen.com.br/palestras/domain-driven-design-introducao

eriksencosta

May 17, 2017
Tweet

More Decks by eriksencosta

Other Decks in Technology

Transcript

  1. Muitos projetos Ágeis estão Produzindo código ruim – Sandro Mancuso

    Muitos projetos Ágeis estão Produzindo código ruim – Sandro Mancuso “ “ ” ”
  2. Questionamentos se design é necessário ou Acessível Perdem o ponto:

    design é inevitável. A alternativa para Bom design é design ruim, e não a ausência de design. – Douglas Martin Questionamentos se design é necessário ou Acessível Perdem o ponto: design é inevitável. A alternativa para Bom design é design ruim, e não a ausência de design. – Douglas Martin “ “ ” ”
  3. Uma Grande Bola de Lama é uma selva de código

    Mal estruturado, desleixado, espaguete e todo Remendado com fita adesiva – Brian Foote & Joseph Yoder Uma Grande Bola de Lama é uma selva de código Mal estruturado, desleixado, espaguete e todo Remendado com fita adesiva – Brian Foote & Joseph Yoder “ “ ” ”
  4. É um enigma. As pessoas que são especialistas no Domínio

    – os especialistas de domínio – raramente Estão qualificadas para escrever software. As pessoas que estão qualificadas para escrever Software – os programadores – nem sempre Entendem O domínio-problema. – James Shore É um enigma. As pessoas que são especialistas no Domínio – os especialistas de domínio – raramente Estão qualificadas para escrever software. As pessoas que estão qualificadas para escrever Software – os programadores – nem sempre Entendem O domínio-problema. – James Shore “ “ ” ”
  5. se os programadores não estão interessados no domínio, eles aprendem

    apenas o que a aplicação deve fazer, não os princípios por trás dela. Software útil pode ser desenvolvido dessa Maneira, Mas o projeto nunca chegará em um ponto onde novas Funcionalidades poderosas surgirão como desdobramento de funcionalidades existentes. – Eric Evans se os programadores não estão interessados no domínio, eles aprendem apenas o que a aplicação deve fazer, não os princípios por trás dela. Software útil pode ser desenvolvido dessa Maneira, Mas o projeto nunca chegará em um ponto onde novas Funcionalidades poderosas surgirão como desdobramento de funcionalidades existentes. – Eric Evans “ “ ” ”
  6. Design Estratégico é como fazer o rascunho antes De Entrar

    nos detalhes da implementação. Destaca O que é estrategicamente importante para o seu Negócio, como dividir o trabalho por importância E como fazer integrações da melhor maneira. – Vaughn Vernon Design Estratégico é como fazer o rascunho antes De Entrar nos detalhes da implementação. Destaca O que é estrategicamente importante para o seu Negócio, como dividir o trabalho por importância E como fazer integrações da melhor maneira. – Vaughn Vernon “ “ ” ”
  7. DDD é primariamente sobre modelar Uma Linguagem Ubíqua em Um

    Contexto Delimitado – Vaughn Vernon DDD é primariamente sobre modelar Uma Linguagem Ubíqua em Um Contexto Delimitado – Vaughn Vernon ” ” “ “
  8. D u D u Contexto Transporte (Core Domain) Roteirização (Genérico)

    Agendamento (Suporte) Identificação (Genérico) Monitoramento (Suporte)
  9. Software funcionando é a medida primária de progresso – Princípio

    7 do Manifesto Ágil Software funcionando é a medida primária de progresso – Princípio 7 do Manifesto Ágil ” ” “ “
  10. No DDD há esse princípio de que o Software deve

    refletir o modelo explicitamentE – Eric Evans No DDD há esse princípio de que o Software deve refletir o modelo explicitamentE – Eric Evans ” ” “ “
  11. package br.com.ligeirinho.transporte package dominio.modelo @EntidadeRaiz class Itinerario( val id: ItinerarioId,

    private val veiculo: Veiculo, private val pernas: List[Perna] ) extends Entidade { // ... def transferirEntregasPendentes(outroItinerario: Itinerario): Unit = { } def alocarMotorista(motorista: Motorista): Unit = { } def realocarParaMotorista(motorista: Motorista): Unit = { } // ... }
  12. microserviços são serviços pequenos E autônomos que trabalham em conjunto

    – Sam Newman microserviços são serviços pequenos E autônomos que trabalham em conjunto – Sam Newman ” ” “ “
  13. Se os limites dos nossos serviços alinhaM-se Aos Contextos Delimitados

    do nosso domínio, Nós começamos bem para garantir que nossos Microserviços estão com baixo acoplamento E alta coesão – Sam Newman Se os limites dos nossos serviços alinhaM-se Aos Contextos Delimitados do nosso domínio, Nós começamos bem para garantir que nossos Microserviços estão com baixo acoplamento E alta coesão – Sam Newman ” ” “ “
  14. A arte nunca está terminada, é apenas abandonada – Leonardo

    da Vinci A arte nunca está terminada, é apenas abandonada – Leonardo da Vinci ” ” “ “
  15. Entregar frequentemente software funcionando, de poucas semanas a poucos meses,

    com preferência à menor escala de tempo – Princípio 3 do Manifesto Ágil Entregar frequentemente software funcionando, de poucas semanas a poucos meses, com preferência à menor escala de tempo – Princípio 3 do Manifesto Ágil ” ” “ “
  16. Não podemos fugir da Responsabilidade de sermos humanos Nigel Warburton

    sobre a filosofia de Jean-Paul Sartre Não podemos fugir da Responsabilidade de sermos humanos Nigel Warburton sobre a filosofia de Jean-Paul Sartre “ “ ” ”