Grandes softwares exigem grandes responsabilidades

https://medium.com/@diego_moura/domain-driven-design-introdu%C3%A7%C3%A3o-88e8b41b2f9e

Há um bom tempo venho estudando e analisando diversos projetos, iniciativas, assuntos e práticas consideradas boas, para a produção de softwares de alta qualidade e performance, que são comumente utilizados no mercado. Seria impossível não dar uma atenção em especial para a abordagem criada por Eric Evans, sobre produzir softwares orientado à modelos ricos de domínio, que possuem um vasto entendimento sobre as regras cruciais e detalhes do negócio em questão.

Geralmente quando iniciamos nossos estudos em DDD, tendenciamos a ir direto na fonte, consequentemente o livro raiz — Domain-Driven Design | Atacando as complexidades no coração do software de Eric Evans, que certamente é um santo graal para a engenharia de software moderna, e substancial para todo desenvolvedor sério. No entanto, é um livro que traz consigo uma leitura densa, e extensa… Por esta razão, muitos desenvolvedores abortam os estudos, antes mesmo de obterem o entendimento básico sobre o design orientado à domínios ou DDD. Esta decisão, seja por indisciplina, inconsistência ou miopia a cerca do real valor agregado que a compreensão dos conceitos apresentados no livro de Eric Evans traz consigo, é certamente uma decisão de autossabotagem, e por isto, resolvi escrever uma serie de artigos, onde simplificarei o entendimento sobre alguns conceitos e componentes chaves do design orientado à domínios.

Bora lá! 🤓

O que é DDD?

Domain-Driven Design é uma abordagem criada por Eric Evans, onde ele propõe que o desenvolvimento do software seja orientado à domínio, ou seja, deve ser centrado na área de conhecimento de negócio em que a empresa esteja inserida, basicamente no que faz com que a empresa que esta desenvolvendo o software, ganhe ou continue ganhando dinheiro. Além disso, em DDD, Eric propõe a utilização de um conjunto de ferramentas e práticas para a confecção de um modelo estratégico e tático que façam sentido para o domínio de negócio da empresa.

Então, podemos concluir que um domínio nada mais é que o conhecimento de negócio necessário para que uma empresa tenha uma razão óbvia para existir. Por exemplo:

A empresa Olho no Carro, tem como core business a venda de um relatório detalhado e autoexplicativo de informações veiculares, capazes de auxiliar qualquer pessoa interessada em comprar ou vender um veiculo, a tomar a decisão certa a respeito deste veículo. Logo, o domínio central é o que faz com que a empresa Olho no Carro tenha razão para existir, ou seja, a venda dos relatórios de informações veiculares.

Para expressar os detalhes e conhecimentos do domínio de negócio de uma empresa, afim de criar modelos de domínio coerentes, se faz necessário uma interação forte entre os desenvolvedores e especialistas de domínio, e consequentemente a criação de um vocabulário formado por uma linguagem comum de negócios, com detalhes da comunicação utilizada no dia-dia pelos especialistas de negócios ou especialistas de domínio, conceito trazido também por Eric Evans em seu livro, conhecido como linguagem ubíqua.

A definição de uma linguagem onipresente que compreenda as nuances de negócio e traduza os detalhes em modelos estratégicos e táticos coerentes com a realidade de negócios da empresa, é imprescindível para um projeto baseado em DDD.

No próximo post, entrarei nos detalhes da Linguagem Ubíqua. Falaremos sobre metodologias, práticas e ferramentas que tornam possíveis a criação de uma linguagem comum de domínio. Além disso, exploraremos as responsabilidades dos especialistas de domínio e especialistas técnicos para um projeto orientado à domínio.

leitorEstaGostando() ? curtirEDarUmFeedback() : darUmFeedaback();

Valeuuuu! 😄😄😄

Referências