Imagem de fundo

Uma equipe de desenvolvimento de sistemas de uma autarquia...

Uma equipe de desenvolvimento de sistemas de uma autarquia federal está modelando o módulo de concessão de licenças ambientais utilizando Domain-Driven Design (DDD).


O domínio possui as classes


ProcessoLicenciamento, ParecerTecnico, Vistoria e DocumentoObrigatorio


O arquiteto definiu que a classe ProcessoLicenciamento atuará como Aggregate Root. Durante uma revisão de código, constatou-se que um desenvolvedor criou um repositório exclusivo para a classe Vistoria, permitindo que sistemas externos alterem o status de uma vistoria diretamente no banco de dados, sem passar pelas regras de validação contidas em ProcessoLicenciamento. À luz dos padrões táticos do DDD, a abordagem do desenvolvedor está incorreta porque viola o seguinte princípio:


A

todas as entidades de um mesmo contexto delimitado (Bounded Context) devem possuir seus próprios repositórios de persistência isolados


B

objetos externos ao Agregado não podem manter referências diretas para nenhum componente interno que não seja a Raiz do Agregado (Aggregate Root).


C

os Objetos de Valor (Value Objects) herdados por entidades secundárias devem ser persistidos em tabelas lógicas totalmente separadas.


D

a consistência eventual impede a execução de transações atômicas síncronas dentro das fronteiras de um mesmo subdomínio genérico.


E

os Serviços de Domínio (Domain Services) detêm a responsabilidade exclusiva de instanciar entidades que possuam identidade própria.