Domain-Driven Design: Atacando as Complexidades no Coração do Software
A comunidade de desenvolvimento de softwares reconhece que a modelagem de domínios é fundamental para o design de softwares. Através de modelos de domínios, os desenvolvedores de software conseguem expressar valiosas funcionalidades e traduzi-las em uma implementação de software que realmente atenda às necessidades de seus usuários. Mas, apesar de sua óbvia importância, existem poucos recursos práticos que explicam como incorporar uma modelagem de domínios eficiente no processo de desenvolvimento de softwares.
O Domain-Driven Design: Atacando as Complexidades no Coração do Software atende essa necessidade. Este não é um livro sobre tecnologias específicas. Ele oferece aos leitores uma abordagem sistemática com relação ao domain-driven design, ou DDD, apresentando um conjunto abrangente de práticas ideais de design, técnicas baseadas em experiências e princípios fundamentais que facilitam o desenvolvimento de projetos de software que enfrentam domínios complexos. Reunindo práticas de design e implementação, este livro incorpora vários exemplos baseados em projetos que ilustram a aplicação do design dirigido por domínios no desenvolvimento de softwares na vida real.
Os leitores aprendem a usar um modelo de domínios para tornar mais enfocado e dinâmico seu trabalho em um desenvolvimento complexo. Um conjunto de práticas ideais e padrões convencionais oferece uma linguagem comum para a equipe de desenvolvimento. Uma mudança de ênfase – refatorar não só o código, mas o modelo existente por trás do código – em conjunto com frequentes iterações de desenvolvimento Agile levam a uma visão mais profunda dos domínios e a uma comunicação mais apurada entre especialistas do domínio e programadores. O Domain-Driven Design baseia-se nesses fundamentos ensinando modelagem e design para sistemas complexos e grandes organizações.
Tópicos específicos abordados neste livro:
- Fazer com que todos os membros da equipe falem a mesma língua;
- Ligar o modelo e a implementação com mais profundidade;
- Realçar as principais distinções em um modelo;
- Gerenciar o ciclo de vida de um objeto de domínio;
- Escrever um código de domínio com o qual se possam fazer combinações seguras com mais elaboração;
- Transformar códigos complexos em códigos óbvios e previsíveis;
- Formular uma declaração de visão para o domínio;
- Destilar o núcleo de um domínio complexo;
- Desvendar conceitos implícitos necessários para o modelo;
- Aplicar padrões de análises;
- Associar padrões de projeto com o modelo;
- Manter a integridade do modelo em um sistema grande;
- Lidar com modelos coexistentes no mesmo projeto;
- Organizar sistemas com estruturas em larga escala;
- E conhecer e responder às oportunidades de avanço na modelagem.