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 😉
https://medium.com/@alexalvess/criando-uma-api-em-net-core-baseado-na-arquitetura-ddd-2c6a409c686
http://docplayer.com.br/56227182-Domain-driven-design.html
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