Domanin-Driven Design

De alguns anos para cá, surgiu uma nova metodologia, esta chama DDD (Domain-Driven Design).
Esta metodologia é a metodologia do futuro de acordo com alguns analistas de sistemas que já utilizam da mesma.

DDD: Domain-Driven Design

DDD

O que é a metodologia DDD?

DDD é uma metodologia desenvolvida por Eric Evans. Trata-se de uma metodologia de desenvolvimento que prega que todo o material feito pela equipe durante o desenvolvimento de um software deve estar diretamente relacionado com a “linguagem” dita pelo cliente (sub entende-se que o cliente seja especialista na área ou ramo da qual o software será aplicado). Entre outras palavras, o DDD visa o desenvolvimento a partir de um domínio. O que deixa em destaque a complexidade no desenvolvimento de software.

Esta metodologia implica nas alterações de dados. Ao invés de receber entidades inteiras no novo estado para salvar, eles recebem objetos que representam as alterações de estado das entidades. Além disso, permitem salvamentos em ordem aleatória, permitindo que o sistema tenha seus dados ligeiramente inconsistentes em certos momentos, enquanto parte das alterações ainda não foram salvas. À grosso modo: O desenvolvedor programa em cima de camadas de abstração :)

Antes de mais nada, vamos definir o que é um Domínio!

Domínio é um conjunto de objetos que, de forma abstrata, descreve aspectos (problemas) de um determinado domínio complexo.

O DDD possuí alguns enfoques interessantes, como por exemplo:
– Focalizar no modelo: Elaborar uma representação abstrata do domínio que nos ajude em cumprir o propósito;
– Linguagens onipresente: Os programadores partilham de uma linguagem comum;
– É Orientado à Objeto e combina com outras metodologias ágeis, como TDD, BDD

Um dos itens que pesquisei sobre o DDD, é o chamado “linguagem comum”. Vamos abordar mais sobre logo a baixo:

Linguagens Comuns
As vezes quando eu estou conversando com algum amigo sobre programação ou patterns e minha esposa está por perto ela fica muito perdida e diz que não consegue compreender nada do que estamos falando. O fato é que nós desenvolvedores possuímos uma linguagem muito específica que somente outro integrante de nossa “tribo” consegue compreender bem. Da mesma forma um profissional da área de risco financeiro por exemplo (falo isso por experiência própria) consegue falar um dialeto que pode ser completamente incompreensível para a maioria de nós desenvolvedores. Tente imaginar o que acontece quando estes especialistas do ramos de análise de risco financeiro contratam nós desenvolvedores para desenvolver um software? Em muitas situações como esta (e eu já tive a oportunidade de viver algumas) o software acaba não tendo sucesso por falta de uma comunicação clara entre os desenvolvedores e o cliente.
O DDD tenta acabar com este problema de comunicação diminuindo a dissonância entre o que é falado pelo time de desenvolvimento e pelo time de especialistas e para isso apresenta varias técnicas interessantes.
O design de um software (forma com que o mesmo é arquitetado) é aperfeiçoado a medida que o entendimento sobre o domínio aumenta. A cada refatoração o nosso design passa a expressar mais o domínio. Para isso tentamos fazer com que o modelo seja a linguagem falada pelo time de desenvolvedores de especialistas.
Diullei Gomes

Isto é uma das poucas coisas que li até agora sobre DDD.
A medida que vou lendo mais e mais, fico de postar no blog :)

Para quem quiser saber mais sobre DDD, só clicar neste link.

Agradecimentos à Diullei Gomes e ao fórum .NET Ponto

Alan Machado

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s