Você já ouviu falar sobre o DDD não eu não tô me referindo à aquele prefixo da cidade que você disca ao fazer uma ligação no telefone DDD é a sigla para domain driven design design orientado domínio um conceito que foi criado para ajudar equipes de desenvolvimento de software a ter mais sucesso elevando o padrão de qualidade das suas aplicações quer saber mais sobre esse conceito Eu Sou o Victor e hoje vamos conferir juntos como o DDD é capaz de entregar um design que traduz exatamente como o domínio funciona roda vinheta [Música] entregar um software de
alta qualidade requer um design de software bem projetado concorda isso porque o design basicamente vai traduzir a complexidade das regras de negócios e processos da empresa sem contar que existem muitos benefícios a longo prazo porque um bom design facilita a implementação de novas features agiliza o processo e aumenta a vida útil do software por isso quando se fala em domain driven design o DDD estamos falando de uma série de ferramentas de modelagem estratégica e tática para entregar um software de alta qualidade e antes de me aprofundar ainda mais no conceito preciso falar que o domain
driven design não é considerado um padrão arquitetural mas ele afeta como as decisões arquiteturais são tomadas Beleza o DDD é muito mais sobre a forma de pensar desenhar e desenvolver aplicações combinando práticas de design e desenvolvimento e fazendo com que a modelagem e a implementação andem juntas basicamente o objetivo é construir um software guiado pelo domínio para atender as necessidades do cliente lidando também com processos complexos de negócio por isso o DDD tem tudo a ver com discussão escuta e compreensão Entre todos os envolvidos pois não impõe processos rígidos ao time Mas requer uma Harmonia
à medida que o negócio muda prezando sempre por manter o software alinhado com o negócio esse alinhamento com o negócio é vital para a qualidade de um software dentro desse conceito de domain driven design eu explico a abordagem do DDD acredita que o mais importante em o software não é o código e nem a sua arquitetura nem a tecnologia sobre a qual foi desenvolvido a a razão de um software existir está no problema em que ele se propõe a resolver ou em outras palavras na regra de negócio esse é o coração do software de acordo
com Eric Evans autor do livro domain driven design tackling complexity in the hard of software em praticamente todos os projetos de software a complexidade não reside nos aspectos técnicos mas sim no negócio em si na atividade que é exercida pelo cliente por isso a regra de negócio é o Ponto Central de qualquer aplicação e deve receber o máximo de tempo e atenção para que o software seja desenvolvido da melhor maneira possível a abordagem do DDD é quase como uma Filosofia mas para elucidar a ideia vou dar um exemplo Imagine que você tenha um novo projeto
para trabalhar para uma empresa de atendimento ao cliente um call center a finalidade do software é controlar todos os processos desse call center ou seja as atividades vitais do negócio beleza mas por onde começar quem conhece os processos dessa empresa o seu gerente as demais pessoas desenvolvedoras que vão atuar no projeto vocês podem até ter alguma ideia vaga sobre o funcionamento de um call center como eu também tenho a final quem nunca passou algum tempo fazendo uma reclamação de um produto que veio errado de uma cobrança indevida no cartão de crédito mas a verdade é
que nós não temos conhecimento suficiente para conduzir o desenvolvimento desse projeto quem realmente tem conhecimento sobre o negócio são assistentes analistas de atendimento supervisores gerentes e demais colaboradores do call center que vivenciam na prática todos os processos Essas são pessoas Chaves que devem estar envolvidas na equipe do projeto para que ele seja criado de forma alinhada aos desejos expectativas necess idades do domínio ou seja do negócio Essa é a filosofia que o domain driven design prega E aí sim ele pode ser aplicado em diferentes arquiteturas como Arquitetura em camadas arquitetura hexagonal e arquiteturas de microsserviço
o importante é colocar o domínio no centro pois ele é o Ponto Central de qualquer aplicação Afinal é por causa dele que o software é criado bom como acabei de comentar na maioria das vezes a equipe de desenvolvimento responsável pelo projeto não possui logo de cara um conhecimento aprofundado sobre o domínio do do problema esse conhecimento deverá ser adquirido de pessoas especialistas nesse domínio e para que essa comunicação entre desenvolvedores e especialistas do domínio ocorra da forma mais satisfatória possível é preciso que todos utilizem a mesma linguagem como objetivo de facilitar essa comunicação e entendimento
de todos É nesse ponto que entra o conceito de linguagem ubíqua que significa a linguagem difundida e representa o vocabulário do projeto que viabiliza a comunicação entre desenvolvedores e especialistas de maneira mais natural para que todos consigam contribuir de fato as discussões complexas Sobre o domínio e garantir que o projeto alcance os padrões desejados talvez você se pergunte como definir a linguagem ubíqua desde o início do projeto então eu trouxe algumas dicas de como começar desenhe o domínio sim Você vai desenhar o domínio de negócio e os subdomínios da empresa de uma forma não técnica
para que seja acessível e para que outras pessoas de outras áreas consigam entender o que esse modelo visual está querendo dizer crie um glossário de termos o glossário contém as definições simples de cada um dos termos presentes no seu desenho Inicial aqui a ideia é listar todos os termos que façam sentido para o projeto e para o negócio incluindo também os termos alternativos que correspondem a um significado ou mais de um revise constantemente estabelecer uma linguagem ubíqua é um esforço constante entre os membros da equipe por isso revise sempre os termos que foram definidos até
o momento por você e pelos demais envolvidos com o intuito de Sempre buscar novos pontos de vista e adequações que se façam necessárias conforme o projeto evolui na tela você tá vendo um exemplo de como pode ser um glossário básico sobre o domínio de negócio um call center como o exemplo que falamos agora a pouco agora que você sabe a importância da linguagem ubiqua no domain driven design não podemos deixar de mencionar outros conceitos importantes o DDD é composto de padrões táticos e estratégicos que ajudam a modelar o domínio do negócio começando pelos padrões táticos
eles são responsáveis por definir como as entidades objetos de valor agregados serviços eventos de domínio repositórios e fábricas devem ser implementados calma eu vou explicar quem é quem nessa lista as entidades são objetos que contêm identidade e podem ser diferenciados por suas propriedades exemplo um cliente uma pessoa os objetos de valor são objetos que não têm identidade e que são definidos por suas propriedades exemplo o endereço de um cliente os agregados são objetos que apresentam um conjunto de entidades e objetos de valor relacionados por exemplo um pedido uma compra e um sistema de vendas o
serviços de domínio correspondem a objetos que representam operações importantes no domínio que não se encaixam em entidade e objetos de valor exemplo um serviço de cálculo de frx e um sistema de vendas os eventos de domínio são objetos que representam eventos importantes do domínio exemplo um evento de confirmação de pedido de compra realizada já os repositórios representam a camada de persistência do sistema exemplo um repositório de clientes e um sistema de vendas e por fim temos as fábricas que representam a criação de objetos complexos do domínio exemplo uma fábrica de pedidos em um sistema de
vendas os padrões estratégicos por outro lado ajudam a alinhar a arquitetura do software com um domínio de negócio eles são derivados das regras e conceitos do domínio garantindo que o software represente de forma precisa e eficaz os processos e estruturas do mundo real os padrões estratégicos são responsáveis por definir como o domínio deve ser dividido em subdomínios como os limites de contexto devem ser definidos e como a linguagem ubíqua deve ser utilizada é quase como fazer um rascunho antes de entrar nos detalhes da implementação que é a parte tática que mencionamos agora a pouco o
design estratégico é essencial para dividir o trabalho por importância e garantir que as integ ações sejam feitas da melhor maneira possível muito bem Deu para entender como os padrões táticos e estratégicos funcionam esses que eu citei são os padrões básicos para que você possa se familiarizar com a abordagem DDD E então buscar aplicações reais do que estamos trazendo aqui hoje beleza Ah eu não posso deixar de falar que o DDD é voltado para domínios complexos e nem sempre vai servir para o cenário de desenvolvimento que você está lidando Mas é uma abordagem indispensável para você
conhecer e se você deseja ampliar os seus conhecimentos Eu recomendo a leitura do livro do er Evans que explica em detalhes os conceitos que apresentamos aqui e muito mais como mensagem final o que eu quero dizer é o principal objetivo do domain driven design é o entendimento análise e compreensão dos problemas e não a codificação em si o código a arquitetura escolhida serão apenas uma consequência da aplicação correta dos princípios que citei aqui hoje o valor do seu software está primeiro na construção do conhecimento sobre o problema sobre o negócio e em como se chegou
à conclusão de que determinado código era o melhor mas tenha certeza de que para conhecer por completo essa Filosofia de desenvolvimento de software Vai ser necessário muito mais que esse vídeo hein no canal da Localweb temos uma série de conteúdo sobre conceitos e boas práticas de infraestrutura e desenvolvimento de software Além disso nosso blog é constantemente atualizado com novos conteúdos para otimizar os seus estudos e tornar a sua jornada digital muito mais fácil e por último mas não menos importante convido vocês a conhecer os produtos e serviços que a Localweb oferece para você desenvolver projetos
incríveis a hospedagem de sites Localweb por exemplo com conta com o domínio SSL grátis com sites ilimitados e o melhor custo benefício do mercado além de suporte em português para ajudar você 24 horas por dia S dias da semana o link do nosso site está na descrição bom é isso pessoal Se gostou desse conteúdo deixa o seu like compartilha com os seus amigos agradeço demais a sua companhia e até a [Música] próxima