Clique aqui para ler esse artigo em PDF.
Projeto/Análise – Boas Práticas - Expert
Um introdução ao DDD
Neste artigo veremos |
·Domain Driven Design. |
Qual a finalidade |
·Demonstrar uma das abordagens para arquitetura de software mais poderosas do momento. |
Quais situações utilizam esses recursos? |
·Aplicações de média a alta complexidade, com muitas regras de negócio são as que mais se beneficiarão do Domain Driven Design. |
Resumo do DevMan
O Domain Driven Design (DDD) é uma abordagem poderosa para o desenvolvimento de software, que aliada à orientação a objetos lhe entrega um grande poder para a criação de aplicações. É um dos grandes instrumentos disponíveis para a criação de aplicações corporativas de alta qualidade, performance, e manutenibilidade. Veja neste artigo seus conceitos básicos e entenda do que trata esse tão falado assunto.
Quando eu comecei no desenvolvimento de software tudo o que eu queria era uma “fórmula mágica” que me explicasse qual a melhor maneira de construir um aplicativo. Conforme fui ganhando experiência fui descobrindo que, para minha infelicidade, isso não existia. Era como a “fórmula do sucesso”: não existe. Comprar um livro ou ler um artigo que tenha essa pretensão é como ler aqueles livros “fique rico em 10 lições”, ou seja, serve mais para criar esperanças do que para atingir realmente o objetivo pretendido.
Neste artigo não vou dar uma fórmula para o sucesso no desenvolvimento de aplicações. Mas vou apresentar, em explanações objetivas e com exemplos, um assunto que comprovadamente, lhe colocará no caminho correto: o DDD.
O DDD, ou Domain Driven Design, ou ainda, em português, desenho direcionado ao domínio, é uma abordagem para o desenvolvimento de software comprovadamente capaz de construir aplicações com todas aquelas características desejáveis que sempre ouvimos falar: extensível, escalável, confiável, segura, fácil de manter, fácil de utilizar, flexível, inteligível, e que atende aos requisitos demandados.
Este artigo não tem a pretensão de abordar todos os assuntos compreendidos pelo DDD, ou mesmo esgotar os assuntos abordados. O objetivo é explicar os conceitos básicos dessa abordagem e passar uma compreensão inicial para que você possa, se gostar do assunto, aprofundar-se mais, seja através da leitura de livros, ou aqui na .Net Magazine e na Engenharia de Software Magazine. Se você gostar do assunto não deixe de acompanhar a .Net Magazine, já que continuaremos tratando de DDD nas edições futuras.
O que é o DDD
O DDD é uma abordagem para o desenvolvimento de software. Ele foi criado por Eric Evans e teve o pontapé inicial com a publicação do seu livro Domain-Driven Design – Tackling Complexity in the heart of software (Desenho direcionado ao domínio – atacando a complexidade no coração do software, editora Addison Wesley, 529 páginas). Talvez “compilado” seja um termo melhor do que criado, uma vez que o DDD agrega muitas informações que já existiam na engenharia e arquitetura de software, como, por exemplo, o padrão de arquitetura Domain Model, apresentado por Martin Fowler, autor reconhecido de vários livros igualmente importantes. Martin Fowler chama o DDD em seu site martinfowler.com de “o padrão de lógica de domínio mais sofisticado e o que é mais indicado para lógicas complexas”.
Não acredito e nem procuro mais “fórmulas mágicas”, mas de vez em quando, algumas empresas me pedem este Santo Graal, e quando isso acontece sugiro a leitura do livro do Evans, para começar. Ao longo da leitura, descobre-se que a fórmula mágica não existe, mas isso passa a não ser mais um problema. Sem dúvida quando os desenvolvedores conhecem DDD, meu trabalho de montagem da arquitetura fica muito facilitado, já que sei que o time já teve contato com ótimas práticas de desenvolvimento, e podemos partir daí. O DDD é uma ferramenta tão formidável, que normalmente os desenvolvedores que começam a trabalhar com DDD dificilmente a abandonam.
Nota: Antes de irmos em frente tenho dois termos a esclarecer:
1) Em inglês, a palavra “design” não tem somente o significado que geralmente aplicamos a ela em português, que é ligado a design gráfico. Significa também desenho da arquitetura de software ou da solução. Sempre que eu mencionar “design” ou “desenho”, ao longo do artigo, entenda neste sentido, e não como design gráfico.
2) O termo “domínio” significa a área de negócio do aplicativo que é objetivo do software. Em um software que controla, por exemplo, o movimento de um estacionamento, este é o domínio: o controle de entrada e saída dos carros, a cobrança, e os processos relacionados.
"
[...] continue lendo...