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

Começando a modelar sua aplicação Ruby com DDD

Começando a modelar sua aplicação Ruby com DDD

Entender e codificar requisitos do "mundo real" para um software muitas vezes é uma tarefa de complicada e que demanda muito tempo.
Uma estratégia atacar esses problemas é modelar o software através do Domain Driven Design e utilizar os seus elementos para projetar e estruturar o seu código a partir de uma linguagem comum, úbiqua, entre os envolvidos no projeto de forma a que ela reflita como o domínio se comporta.
Nesta palestra serão alguns de cenários com o DDD tático, mostrando exemplos de código e em como aplicar alguns dos fundamentos do DDD nos seus problemas.

Daniel Baptista Dias

November 29, 2019
Tweet

More Decks by Daniel Baptista Dias

Other Decks in Programming

Transcript

  1. Domain Driven Design área de interesse onde o software será

    desenvolvido o "como" estruturamos as partes internas do software para refletir o domínio
  2. • Ao fazer as modelagens no Domain Driven Design, podemos

    atacar o domínio sob uma perspectiva macro e micro do problema: ◦ o DDD estratégico: entender e separar o domínio como um todo em diversos contextos (contextos delimitados), cada um com a seu idioma / linguagem úbiqua ◦ o DDD tático: busca representar em software / código cada um desses contextos com os building blocks
  3. Linguagem úbiqua • Linguagem (termos, ações, papéis) sobre o conhecimento

    compartilhado / adquirido sobre domínio entre as partes do projeto • Ela "permeia" todo o software e o seu processo de construção, devendo ser refletida e evoluir com as interações entre os envolvidos na construção do modelo
  4. "O coiso deve ser ligado junto com o treco para

    conseguir a outra coisa" Primeira descrição de domínio
  5. "O coiso deve ser ligado junto com o treco para

    conseguir a outra coisa" Papéis
  6. "O coiso deve ser ligado junto com o treco para

    conseguir a outra coisa" Ações
  7. "O endereço deve ser usado no GPS para conseguir calcular

    a rota" Round 3, a.k.a. o que é o coiso?
  8. • Entidades: objeto com uma série de atributos definidos por

    uma identidade e linha de continuidade • Objeto de valor: objeto com uma série de atributos, sem identidade e imutável Building blocks
  9. "Um endereço é único no sistema e deve ter um

    logradouro, número, CEP, cidade e tipo (residência ou trabalho)" "Uma rota é um conjunto de instruções ordenadas, que descrevem a direção a seguir para o destino" Entidades X Objetos de Valor
  10. • Serviços: comportamentos do domínio que não se enquadram em

    entidades e em objetos de valor, não possuem estado • Repositórios: serviço responsável por gerenciar o ciclo de vida das entidades na aplicação, persistir os dados de uma entidade em um mecanismo de armazenamento (banco de dados, arquivo, etc) Building blocks
  11. Controllers Interactors / Serviços Entidades Repositórios External Clients ORMs ...

    Application Services Infraestrutura Domínio Infraestrutura
  12. Controllers Interactors / Serviços Entidades Repositórios External Clients ORMs ...

    Application Services Infraestrutura Domínio Infraestrutura
  13. • Livros: ◦ Domain Driven Design: Tackling Complexity in the

    Heart of Software ◦ Implementing Domain-Driven Design ◦ Domain-Driven Design Distilled ◦ Clean Architecture: A Craftsman's Guide to Software Structure and Design • Talks: ◦ GOTO 2017 • DDD Today - Modeling Uncertainty • Vaughn Vernon ◦ Eric Evans - Keynote: DDD Isn't Done: A Skeptical, Optimistic , Pragmatic Look Para saber mais...
  14. Engenheiro de Software na Resultados Digitais Mestre em Ciência da

    Computação (foco em IA) pela USP Quem sou?
  15. Engenheiro de Software na Resultados Digitais Mestre em Ciência da

    Computação (foco em IA) pela USP Pai coruja / zumbi Quem sou?