Arquitetura Orientada ao Modelo do Domínio
Em seu trabalho, (Evans, 2003) observa que qualquer domínio pode ser expresso em vários modelos e qualquer modelo pode ser codificado de várias maneiras. Dentre essas maneiras, temos que considerar os princípios de arquitetura de software, como vamos abordar a transição do modelo para o código e como essa arquitetura poderá evoluir durante o processo de desenvolvimento.
Também, (Avram, et al., 2006) destacam ainda que um modelo correto pode não ser expresso em código ou acabar quebrando algum princípio de arquitetura de software. Diante disso, é preciso definir um modelo que seja fácil e precisamente codificado.
A questão fundamental aqui é: como vamos abordar a transição do modelo para o código?
Vale ressaltar que um dos principais problemas das arquiteturas é que os arquitetos não conseguem prever todos os possíveis cenários e detalhes de um domínio. Detalhes muito importantes são descobertos durante a implementação e um modelo válido para o domínio poderá apresentar sérios problemas com a persistência ou mesmo um desempenho inaceitável entre outros.
Sendo assim, a arquitetura deve evoluir durante o processo ou os desenvolvedores serão obrigados a tomar algumas decisões por conta própria, fazendo alterações na arquitetura a fim de resolver problemas reais que não foram considerados quando o modelo foi criado.
Dessa forma, (Evans, 2003) sugere que para manter a consistência entre o modelo e sua implementação são necessárias ferramentas de desenvolvimento e linguagens que suportem o paradigma de modelagem que está sendo proposto.
Diante disso, a programação orienta a objetos é adequada para a implementação do modelo de domínio porque ambos são baseados no mesmo paradigma fornecendo classes de objetos, associações e troca de mensagens entre eles, mapeando diretamente os objetos do modelo.
Referências:
Evans, Eric. 2003. Domain-Driven Design: Tackling Complexity in the Heart of Software. Boston : Addison-Wesley Professional, 2003.
Avram, Abel and Marinescu, Floyd. 2006. Domain-Driven Design Quickly. 2006.
Fala amigão!!
Sobre “A questão fundamental aqui é: como vamos abordar a transição do modelo para o código?”
Vou arriscar uma opnião, mas de longe responder de forma com definição final: Defendo que uma boa resposta está na construção de estruturas básicas que muitos programadores desconhecem ou mal-conhecem, tipo, Arquitetura de Computadores, Compiladores e até mesmo o mal-falado modelo OSI. A forma como são construídas essas arqutieturas é Domain-Driven na veia. Tem gente, e até mesmo professores que acham isso um conhecimento desnecessário, muitos alunos acham que nunca vão escrever um compilador na vida e não conseguem ver praticabilidade – eu diria: “ah se minha DSL falasse”
Eric Evans fez um bom trabalho em colocar a ciência da computação de uma forma mais prática. Tem um amigo que diz que a “ciência da computação está mais para arte do que para engenharia”….
Eduardo Xavier
22/novembro/2010 em 08:41