Domain-Driven Design é uma furada?  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
sergiotaborda
GUJ Expert
[Avatar]

Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline

Leonardo3001 wrote:
Aí fiquei na dúvida, será que DDD é tão bom assim?


Quando ao blog mensionado: não ha como aceitar a critica de alguem que não entende o que é DDD, mas podemos aceitar a critica que o pessoal de DDD não explica , ou não evoluiu, os conceitos até ao ponto de vermos blogs com exemplos simples de uso de DDD.

Estas perguntas abaixo são realmente o cerne do DDD e várias vezes originaram threads aqui.


What I still need to hear from proponents of this idea is a clear accounting of:

* what problem does it solve?
* how do I tell when I need to use it?
* how do I tell which functionality belongs in the Repository, which on the Entity, and which on the DAO?
* what are the costs of using it?


Independentemente de como implementar DDD ( tem gente ai usando EJB para implementar DDD) o que interessa são os conceitos que DDD trás. O conceito de entidade é muito igual ao do EJB , a implementação é que é diferente. Os conceitos mais "novos" e que marcariam alguma evolução são os de: Aggregation (Aggregado) e Specification ( Especificação). O primeiro é uma abstração acima de entidade e o segundo é uma forma de codificar regras.

O Repositorio não é "le piéce de resistance" do DDD mas apenas um artetato necessário ao introduzir Aggregation

(
what problem does it solve ? : Constroi agregados
how do I tell when I need to use it? Quando usar Agregados
)

O conceito de agregado é na realidade velho. Agregado é um nome especificio para ressaltar a natureza de grafo de uma entidade e o controle que ela exerce sobre os outros objetos a si subjugados. É só isso.


Se DDD é uma furada ?
Se vc ler o livro do Evans vc vai achar que é. Várias vezes é mencionado que criar um domain é um processo demorado ( de vários meses) e que mesmo com refactoring é um processo de tentativa e erro. Eu associo isto mais ao uso que ele faz do DDD do que propriamente à filosofia do DDD em si. Afinal se vc contar com experts de dominio que sejam bons comunicandores e vc não for completamente burro, construir um dominio não é tão dificil. O problema é contruir um dominio flexivel que atenta a todos os requisitos - até mesmo aqueles que o dono do negocio ainda não pediu.

A filosofia DDD não é uma furada, mas a sua implementação generica é muito mais dificil do que os autores deixam transparecer. Se usar DDD num programa standalone, é uma maravilha. Mas quando começam a entrar requisitos fortes de arquitetura a implementação naive deles começa a sofrer. A solução disso, do ponto de vista deles é simplesmente refactorar, mas convenhamos que existe um tempo limite e refactorar ad infinitum não é uma estratégia aceitável.


This message was edited 1 time. Last update was at 14/11/2007 15:33:46


Criando sua própria API de Validação



Blog do MiddleHeaven
[WWW]
rodrigoy
GUJ Ranger
[Avatar]

Membro desde: 18/04/2006 01:06:28
Mensagens: 758
Localização: São Paulo
Offline

Thiago Senna wrote:
Quanto a Microsoft dar suporte a DDD, acho que isso ainda não rola. Talvez o DDD seja um vocabulário de alguns bons programadores .Net que geram conteúdo sobre o assunto.


Pode ser isso.

Vejo o Alt.Net ganhando força lá fora, mas aqui são poucos que olham a plataforma de maneira independente da M$.


Rodrigo Yoshima
www.ASPERCOM.com.br

Próximas Turmas:
São Paulo: Scrum 28/agosto | OOAD-UML 13/setembro

Débito Técnico Blog: blog.aspercom.com.br
[WWW]
Alessandro Lazarotti
Virtual Machine Man
[Avatar]

Membro desde: 21/01/2004 14:12:54
Mensagens: 719
Offline

Para mim a parte mais difícil de se lidar com DDD é definir o real Core of Domain (capítulo do Evans).
Em um sistema grande, onde o usuário final pode interagir com diferentes parâmetros da aplicação que modifica os comportamentos das entidades... a fronteira entre aplicação e domínio, é muito tênue.

... Lezinho
------------------------
twitter: @lazarotti
http://alessandrolazarotti.wordpress.com/
http://jbossbrasil.org/

[Email] [MSN]
Rodrigo Carvalho Auler
Virtual Machine Man

Membro desde: 14/02/2003 15:59:17
Mensagens: 576
Localização: Rio de Janeiro
Offline

rodrigoy wrote:Vejo o Alt.Net ganhando força lá fora, mas aqui são poucos que olham a plataforma de maneira independente da M$.

É verdade, eu sempre trabalhei no .Net usando NHibernate, Spring.Net, DDD, NUnit, etc. De vez em quando eu respondo alguns anúncios de emprego pra .Net só pra ver o que acontece quando eu falo que nunca associei um DataSet a um DataGrid diretamente... estranhamente nunca me chamam pra uma segunda entrevista...

[]'s

Rodrigo Auler
xandroalmeida
JavaChild
[Avatar]

Membro desde: 30/10/2006 16:45:54
Mensagens: 139
Localização: São Paulo
Offline

Mas se você não usar DDD, como programar orientado a objetos ? BOLOVO ?

Eu recentemente tiver a opotunidade de usar DDD deste o início em um novo projeto e posso garantir, o tempo gasto na modelagem do Domain no inicio do projeto se pagou várias com a economia de tempo na implementação do restante do projeto.

E os refectoring no Domain no decorrer do projeto não foram nada traumatizantes.

--
Alexandro D. Almeida
http://www.buzugo.com
[WWW]
okara
JavaTeenager

Membro desde: 16/05/2005 08:47:08
Mensagens: 152
Offline

jonataswingeter wrote:
DDD é voltar às origens da verdadeira Orientação a Objetos
que foi perdida durante os anos de difusão da arquitetura J2EE.


É verdade, como o J2EE (agora JEE) nos condiciona a programaar proceduralmente.
E vai questionar com os "Arquitetos" BAM-BAM-BAM para vc ver. Vc apanha.

This message was edited 2 times. Last update was at 16/11/2007 17:00:37

andre_salvati
GUJ Ranger

Membro desde: 02/06/2005 16:28:38
Mensagens: 939
Offline

Leonardo3001 wrote:Já ouvi falar desse tal de DDD (Domain-Driven Design), inclusive de gente daqui do fórum, e achei a idéia bastante interessante.

Porém, no blog In Relation To, pelo menos nos últimos cinco posts (http://in.relation.to/Bloggers/SilliestPersistencePostEver , http://in.relation.to/Bloggers/WhatMethodsBelongOnAnEntity , http://in.relation.to/Bloggers/RepositoryPatternVsTransparentPersistence , http://in.relation.to/Bloggers/OnReligionWhyImAnIgnorantCProgrammerAndDontKnowWhatAnObjectIs , http://in.relation.to/Bloggers/StillConfusedAboutRepositories), Gavin King e companhia fazem críticas a essa arquitetura.

Aí fiquei na dúvida, será que DDD é tão bom assim?



Só para constar...

Gavin King é o criador do Hibernate. Hoje, ele tem outro filho (o Seam).

Christian Bauer, atualmente, é o maior contribuidor do projeto Hibernate.

Esses caras devem ter alguma razão no que falam, não!?

This message was edited 2 times. Last update was at 16/11/2007 21:43:33


Ajude na criação do StackOverflow em português!!!

http://area51.stackexchange.com/proposals/23539/software-development-in-portuguese?referrer=tI8Uon7RDszY236h5e0UuA2


http://www.empresadigital.inf.br
http://twitter.com/afsalvati
YvGa
Virtual Machine Man

Membro desde: 07/03/2007 15:58:16
Mensagens: 518
Offline

Só para constar...

Gavin King é o criador do Hibernate. Hoje, ele tem outro filho (o Seam).

Christian Bauer, atualmente, é o maior contribuidor do projeto Hibernate.

Esses caras devem ter alguma razão no que falam, não!?


Entao ta explicado, a praia deles eh outra.

De qqr forma, seja la quem for, nao se deve criticar algo sem nunca ter lido.

Paulo Borio
andre_salvati
GUJ Ranger

Membro desde: 02/06/2005 16:28:38
Mensagens: 939
Offline

YvGa wrote:
Só para constar...

Gavin King é o criador do Hibernate. Hoje, ele tem outro filho (o Seam).

Christian Bauer, atualmente, é o maior contribuidor do projeto Hibernate.

Esses caras devem ter alguma razão no que falam, não!?


Entao ta explicado, a praia deles eh outra.

De qqr forma, seja la quem for, nao se deve criticar algo sem nunca ter lido.


Pelo que eu li nos posts até que eles entendem bem de DDD, pelo menos mais do que a média por aqui...

Ajude na criação do StackOverflow em português!!!

http://area51.stackexchange.com/proposals/23539/software-development-in-portuguese?referrer=tI8Uon7RDszY236h5e0UuA2


http://www.empresadigital.inf.br
http://twitter.com/afsalvati
YvGa
Virtual Machine Man

Membro desde: 07/03/2007 15:58:16
Mensagens: 518
Offline

Ja pelo q eu entendi alguns disseram nem ter lido.

Pra eles terem escrito uma ferramenta como hibernate a experiencia deles deve ser muito grande em DB, ou seja, essa é a especialidade deles, talvez nao tenham tanta assim em arquitetura.

Mas enfim, o problema eh o conceito do Repository q o pessoal perde. Eles reclamam dizendo q eh igual ao DAO e q entao nao ha necessidade. Primeiro q segundo DDD repositorios sao concretos, nao se abstrai, nao tem generico, nem reutilizavel. A responsabilidade dele eh o seu agregate e nada mais. Mudam as regras, mudam os repositorios. Claro q tem muita gente usando eles como DAO, mas nao eh esse o intuito.

Vale lembrar tambem q o Eric Evans sequer menciona o pattern DAO no livro, o repositorio ta la, por tras dele se vc vai usar DAO, Hibernate diretamente, JDBC ou qqr outro pattern q possa surgir, eh opcao sua e nao invalida o uso do repositorio. Repositorio nao eh mecanismo de persistencia, eh objeto de dominio.

Pelo menos foi assim q eu entendi, a nao ser q eu tenha entendido errado, o q nao eh incomun.

Paulo Borio
Thiago Senna
GUJ Master
[Avatar]

Membro desde: 11/02/2005 08:08:02
Mensagens: 1595
Offline

Não interessa muito as ferramentas que o camarada criou para poder criticar DDD. O fato é que DDD é OO. Ao meu ver, dizer que DDD não funfa é o mesmo que dizer que OO é utopia.

Se DDD não for possível em java do jeito que gostariamos, linguagens mais interessantes é o que não faltam.
[Email]
Thiago Senna
GUJ Master
[Avatar]

Membro desde: 11/02/2005 08:08:02
Mensagens: 1595
Offline

rodrigoy wrote:
Thiago Senna wrote:
Quanto a Microsoft dar suporte a DDD, acho que isso ainda não rola. Talvez o DDD seja um vocabulário de alguns bons programadores .Net que geram conteúdo sobre o assunto.


Pode ser isso.

Vejo o Alt.Net ganhando força lá fora, mas aqui são poucos que olham a plataforma de maneira independente da M$.


Alt.Net? Não conhecia este termo. Mas nas caças por conteúdo deu pra entender um pouco o que é este tal de "Alt.Net".

the ?bee log wrote:What does it mean to be to be ALT.NET? In short it signifies:

1. You?re the type of developer who uses what works while keeping an eye out for a better way.
2. You reach outside the mainstream to adopt the best of any community: Open Source, Agile, Java, Ruby, etc.
3. You?re not content with the status quo. Things can always be better expressed, more elegant and simple, more mutable, higher quality, etc.
4. You know tools are great, but they only take you so far. It?s the principles and knowledge that really matter. The best tools are those that embed the knowledge and encourage the principles (e.g. Resharper.)


http://laribee.com/blog/2007/04/10/altnet/


Será que é muito difícil instalar o visual studio? rsrs...
[Email]
andre_salvati
GUJ Ranger

Membro desde: 02/06/2005 16:28:38
Mensagens: 939
Offline

Thiago Senna wrote: Ao meu ver, dizer que DDD não funfa é o mesmo que dizer que OO é utopia.

Se DDD não for possível em java do jeito que gostariamos, linguagens mais interessantes é o que não faltam.


Alguém disse que DDD não funciona com Hibernate/Java!? Vamos fazer DDD em Cobol!!!

É possível criar um modelo rico com Hibernate/Java. A ausência de um Repository não restringe o fato de se ter DDD.

Mais uma vez vou repetir:

Evans wrote:
In general, don't fight your frameworks. Seek ways to keep the fundamentals of domain-driven
design and let go of the specifics when the framework is antagonistic. Look for affinities between
the concepts of domain-driven design and the concepts in the framework


Respondendo a pergunta do tópico:

Não. DDD não é uma furada, pelo menos quando vc sabe utilizá-la bem com os frameworks que vc escolheu.

This message was edited 2 times. Last update was at 17/11/2007 14:07:30


Ajude na criação do StackOverflow em português!!!

http://area51.stackexchange.com/proposals/23539/software-development-in-portuguese?referrer=tI8Uon7RDszY236h5e0UuA2


http://www.empresadigital.inf.br
http://twitter.com/afsalvati
pcalcado
Moderador
[Avatar]

Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline

Linus Torvalds criou um sistema onde a maioria das instalações de C++. Java, Subversion e CVS roda. Ele é a referência máxima quanto à este sistema. pergunte ao Linus o que ele acha de Java, CVS, C++ ou Subversion.

O problema de Domain-Driven Design é que o livro referência é bem difícil. Tem pessoas nesta thread que já falaram várias besteira sobre ele em outro tópico, se agarram a um ou outro parágrafo sem entender o todo (no caso em específico do blog e da pessoa desta thread sem sequer LER o todo).

This message was edited 1 time. Last update was at 18/11/2007 19:00:53


Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay
[Email] [WWW] [Yahoo!] [MSN]
Fabio Kung
JavaEvangelist

Membro desde: 08/03/2004 08:24:47
Mensagens: 445
Localização: São Paulo
Offline

Gente, quando eu li todos esses posts não tive a impressão de ninguém atacando o DDD. Foi mais um ActiveRecord x DataMapper.

Não sei de onde vocês tiraram esse flame, a única coisa que o Gavin disse foi que ele ainda não entendia ainda muito bem a necessidade desses tais "Repositórios". No fim, ele acabou percebendo que os Repositórios são o que ele chama de Daos.

Procurando por oportunidades de emprego?
OndeTrabalhar.com
OndeTrabalhar.com Java?


http://blog.caelum.com.br


Fabio Kung
[WWW] [MSN] [ICQ]
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team