Logo-4All_Branco

Blog 4all

Domain-Driven Design, DDD: comunicando, cooperando e evoluindo na programação

Linguagem universal expressa o conhecimento dos especialistas de negócio para o modelo de domínio.

Compartilhe:

Dia 30 de julho de 2020.

Você sabe o que é ou já ouviu falar em Domain-Driven Design, DDD? Não, não estamos falando sobre os códigos de área das cidades utilizados para fazer ligações, mas tem a ver com comunicação. No mundo da programação e desenvolvimento de software, DDD é a sigla para Domain-Driven Design, que consiste em um padrão de modelagem para softwares, cujo objetivo é facilitar a implementação de regras e processos complexos, além da divisão de responsabilidades por camadas. 

O termo Domain-Driven Design foi difundido por Eric Evans, dono da DomainLanguage, uma empresa especializada em treinamento e consultoria para desenvolvimento de software, em seu livro “Domian-Driven Design: atacando as complexidades no coração do software”, baseado nas experiências de mais de 20 anos desenvolvendo software utilizando técnicas de Orientação a Objetos do autor. Segundo Evans, muitos fatores podem fazer com que projetos percam o rumo, entre eles as questões burocráticas, falta de clareza nos objetivos ou falta de recursos. “O DDD é uma maneira de pensar em um conjunto de prioridades, voltado para a aceleração de projetos de software que têm que trabalhar com domínios complicados”, explica Evans em seu livro. Para isso, “especialistas do domínio (usuários, analistas e outros especialistas da área), juntamente com os desenvolvedores e arquitetos trabalham de mãos dadas com um objetivo em comum: construir software guiado pelo domínio para atender as necessidades do cliente”, comenta Maicon Heck, Software Craftsman, Senior Software Engineer e Domain-Driven Design Practitioner em seu texto na plataforma Medium. 

Para compreender melhor o DDD, é preciso entender alguns termos. Modelo, nesse sentido, é uma forma de representação simplificada, ou seja, não muito detalhada, algo que seja palpável para todos os membros de uma equipe. Fazendo uma analogia, podemos dizer que ele funciona como a maquete de um empreendimento, por exemplo. Ela serve para representar algo mais complexo, mas com ela é possível ter uma ideia bastante aproximada das características do imóvel. Assim, todos os envolvidos conseguem entender e conversar sobre o tema em questão, ou seja, a maquete pode ser entendida como um meio de comunicação, entre os corretores, construtores e clientes, assim como o modelo é um meio de comunicação usado pelo time de desenvolvimento. Outro termo indispensável é “domínio”. Segundo Heck, “o domínio de um software são as atividades desempenhadas pelo usuário e a área de interesse destes. O domínio pode ser tão complexo quanto os processos e dados que ele compreende”. Podemos entender, então, que o modelo é uma forma de lidar com o conhecimento que é extraído do domínio. 

Assim como uma maquete que vai ganhando mais detalhes conforme as características do empreendimento vão se desenvolvendo, o modelo, que em última instância será o software, vai evoluindo de acordo com as ideias e interações dos desenvolvedores. Esse conhecimento é transferido para o código por meio dos blocos de construção do DDD. Como explica Evans em seu livro, “DDD coloca um monte de conhecimento no modelo que reflete profundamente o domínio. Isso só é possível através da colaboração entre quem conhece o domínio e quem sabe criar software. E como o desenvolvimento é iterativo, essa colaboração continua durante todo o andamento do projeto”. 

Alguns modelos de empresas, como as fintechs, utilizam os padrões estratégicos do DDD, já que em alguns casos elas precisam lidar com a modelagem de domínios complexos em um negócio que passa por constantes mudanças. Desta forma, é possível escalar o negócio de maneira sustentável. Para que seja utilizado o DDD, é preciso que todas as partes do processo estejam interligadas, por mais que sejam diferentes, elas precisam conversar entre si para a obtenção satisfatória dos resultados que a empresa deseja.

Fique por dentro de outros assuntos sobre soluções financeiras, tecnologia e inovação acessando o nosso blog 😉

Fontes: http://www.agileandart.com/2010/07/16/ddd-introducao-a-domain-driven-design/#:~:text=Domain%20Driven%20Design%20significa%20Projeto%20Orientado%20a%20Dom%C3%ADnio.&text=DDD%20pode%20ser%20visto%20por,a%20%C3%A9poca%20remota%20do%20SmallTalk.

https://medium.com/@alexalvess/criando-uma-api-em-net-core-baseado-na-arquitetura-ddd-2c6a409c686

http://docplayer.com.br/56227182-Domain-driven-design.html

https://imasters.com.br/apis-microsservicos/domain-driven-design-ddd-em-uma-arquitetura-microsservicos

https://medium.com/creditas-tech/desafios-de-desenvolvimento-em-uma-fintech-de-crescimento-acelerado-parte-i-de-ii-beeb7faf909c

http://www.macoratti.net/11/05/ddd_liv1.htm

https://www.devmedia.com.br/introducao-ao-ddd-em-net/32724

https://medium.com/cwi-software/domain-driven-design-do-in%C3%ADcio-ao-c%C3%B3digo-569b23cb3d47

Nossas Redes Sociais

Siga-nos para mais conteúdos

Faça parte da nossa Newsletter!

Conheça nossos Reports

Fique por dentro dos maiores eventos de tecnologia e inovação do mundo a partir dos nossos reports.

Posts Relacionados

Inscreva-se em
nossa Newsletter!

Esteja sempre por dentro dos conteúdos mais importantes do mundo de inovação e tecnologia.