Escolar Documentos
Profissional Documentos
Cultura Documentos
DE SISTEMAS
Introdução
Neste capítulo, você vai estudar os principais conceitos de domain-
driven design (DDD) e os principais blocos de construção que compõem
o conjunto de boas práticas de modelagem de softwares. Você vai
compreender a base de funcionamento do DDD e a sua aplicação
dentro de um contexto profissional de desenvolvimento de software,
verificando também as principais dificuldades encontradas durante esse
tipo de processo. Vale salientar que as práticas aqui empregadas são
especificamente voltadas para a concepção de domínio de software no
contexto do paradigma orientado a objetos (OO).
pessoa, podendo até mesmo ser outro sistema (Web services, motores
de indexação, etc.).
Aplicação: nessa camada, as operações de coordenação da aplicação
e de suporte a outras tarefas técnicas são o foco principal. Nesse ponto
do software, normalmente, é disparada a lógica de negócio que está em
outra camada, ou simplesmente uma consulta ou chamada de alguma
tarefa técnica do banco de dados da aplicação — ou seja, o início de
uma transação, a execução e o seu respectivo fim. É de total responsa-
bilidade da aplicação buscar qualquer dado que a camada de domínio
necessite para iniciar a operação.
Domínio: a camada de domínio é a camada em que o DDD foca suas princi-
pais práticas e padrões. Normalmente, a camada de domínio é considerada o
núcleo, abrangendo as regras de negócio do software. É aqui que estão todas
as regras discutidas nas conversas entre o cliente que usará o software e a
equipe que o desenvolveu. Nesse ponto, o time de desenvolvimento utiliza
um linguajar específico sobre o domínio de negócio, usando linguagem
ubíqua (linguagem comum, com termos bem-definidos, que fazem parte
do domínio do negócio e que são usados por todas as pessoas que fazem
parte do processo de desenvolvimento do software). É essa camada que
dá valor à aplicação; ela interage com todas as camadas da aplicação,
recebe chamadas da camada de aplicação, devolve valores para a camada
de interface com o usuário (que podem também passar pela camada de
aplicação) e dispara requisições para a camada de infraestrutura.
Infraestrutura: abrange tudo o que está relacionado aos eventos téc-
nicos do software, como banco de dados, bibliotecas, frameworks, per-
sistência de dados, conexões com bancos de dados, envio de mensagens
por redes, gravação e leitura de discos, etc. Esses detalhes técnicos estão
contidos na camada de infraestrutura e são separados dos interesses
do usuário final. Serve basicamente como uma camada isolante, para
separar o resto da aplicação desses detalhes.
Asserções
A adoção desse padrão significa que, para qualquer comando que altere estados
de objetos, deve-se criar testes de unidade que rodem automaticamente. Pode-se
também colocar asserções no código, que validem os comandos após a sua
chamada no código-fonte, seguidas de alterações do estado, que são esperadas
como resposta às asserções descritas.
Os padrões oferecidos pelo DDD refatoram o modelo, de maneira a refinar
o domínio do software, sempre primando pelo alinhamento do modelo à rea-
lidade em que o software será implantado. Nesse sentido, o uso dos padrões
fornecidos pelo DDD é de suma importância durante todo o processo de
desenvolvimento do domínio do software, ou seja, da modelagem do domínio
até a sua concepção por vias de fato, traduzidas em linhas de código.
https://qrgo.page.link/qf8G3
https://qrgo.page.link/832fE
Leituras recomendadas
BARBOSA, A. M. S. et al. Website empresarial com arquitetura MVC utilizando DDD
e angularjs. RE3C — Revista Eletrônica Científica de Ciência da Computação, v. 11, n. 1,
2016. Disponível em: http://revistas.unifenas.br/index.php/RE3C/article/view/167/112.
Acesso: 1 jul. 2019.
BOOCH, G. Object-oriented analysis and design with applications. 2. ed. Massachusetts:
Addison Wesley Longman, 1998.