Revista MundoJava edição 28 - Sua Aplicação é Segura?

[quote=onolox]Mais uma edição sem nada interessante.

A cada 11 edições sai uma descente.

É so uma opinição.[/quote]Junto com sua critica, poderia vir uma sugestão para melhorar.
Não adianta só cair em cima, detonando com críticas, e não dar opinião pra melhorar.

Não li a revista ainda, mas alguns tópicos parecem bem interessantes. Principalmente o de DDD, que muitos desenvolvedores não conseguem entender o que realmente é isso.

Ótima sugestão do LPjava, exemplos reais de refactoring poderiam aparecer nas próximas edições. E adicionando mais algumas, poderia ter matérias exemplificando outras “siglas” no mundo do desenvolvimento como TDD, DSL, MDD, etc…

[quote=marcosbrandao]

Ótima sugestão do LPjava, exemplos reais de refactoring poderiam aparecer nas próximas edições. E adicionando mais algumas, poderia ter matérias exemplificando outras “siglas” no mundo do desenvolvimento como TDD, DSL, MDD, etc…[/quote]

Não vou adiantar nada, mas podem esperar que as próximas edições trarão novidades a respeito dessas “siglas”!!!

O artigo de DDD continuará nas próximas edições, focando os patterns e outros aspectos do DDD, por exemplo?

MDA também ficou bem legal. Sou um pouco pé atrás com essa sigla, nem li todo o artigo ainda, mas achei legal.

[quote=peczenyj]Eu gostei do artigo sobre DDD.

Ainda não li os outros artigos.[/quote]

Pena que foi só sobre linguagem omnipresente (ubiquitous language) que nem é uma caracteristica que mais atormenta quem quer usar DDD. Pelo menos a julgar pela quantidade de topicos do guj relativos a isso.

  1. A Revista Mundo Java, ela é bem organizada e objetiva em si, os conteúdos são bons, todavia uma questão que ficar à pensar , sobre o profissional consultor Java “ou especialista em aplicações OpenSourcer” é o que, o mesmo vem à enfrenta no mundo Corporativo em que vive, a revista não questiona isso.

:idea: Ela demonstrar soluções e técnica avançadas, mas em vista disso como é encarado nas Empresas este profissional, que mais parece um Gato Felix com a Maleta Mágica nas mãos, com resposta para tudo.

:arrow: Entrevista com profissionais e consultores depoimentos e incertezas sobre o futuro desse profissional, que tanto e técnico como investidor que paradigmas vai se defrontar.Quais as melhores consultorias , melhores empresas onde achar os caminhos das pedras.

:wink: Me lembro que a Revista Mundo Java, havia montado um Forúm, talvez em uma forma de questionar artigos e matérias, porém acho que o GUJ foi o que os consultores adotaram para um caminho com a cara do consultor java.

:idea: Temos que buscar o real das questões, acho que a revista esta indo atrás disso, ao menos é o que percebo.

Muito bom o conteudo da revista, gostaria que a materia sobre DDD fosse mais explorada na próxima edição.

[quote=sergiotaborda]
Pena que foi só sobre linguagem omnipresente (ubiquitous language) que nem é uma caracteristica que mais atormenta quem quer usar DDD. Pelo menos a julgar pela quantidade de topicos do guj relativos a isso.[/quote]

Sergio, a conversa com os especialistas de negócio e a ubiquitous language são o cerne da DDD. Os Domain Patterns não são necessariamente DDD. Como falei no artigo, não é porque vc está usando Repositories que necessariamente vc está usando DDD. DDD é mais fora do sistema que dentro dele.

Trabalhar com entidades é possível desde que a OO surgiu. Aggregates é praticamente o mesmo conceito de composição/agregação que tínhamos na OMT/Booch Method (coisinhas de 20 anos atrás, e nem foram eles que inventaram isso, é mais velho ainda). Muito das dúvidas correm sobre Repositories. Simplifique isso! Repositories simplesmente são abstrações do domínio que concentra as buscas do negócio (obter referências que não podem ser obtidas pela navegação numa associação como exemplo).

Um Domain Model e a Ubiquitous Lang. deveriam ser preocupações maiores que as Domain Patterns para quem busca DDD.

Também fiquei com essa mesma expectativa. Espero que o assunto continue.
Aliás, todos os últimos artigos escritos pelo Rodrigo Yoshima foram realmente excepcionais.

[quote=marcosbrandao]… o de DDD, que muitos desenvolvedores não conseguem entender o que realmente é isso.
… poderia ter matérias exemplificando outras “siglas” no mundo do desenvolvimento como TDD, DSL, MDD, etc…[/quote]

Marcos e outros… pena que não tive tempo de elaborar mais isso, mas nas referências temos exemplos de implementação de DDD no Jboss Seam.

http://www.aspercom.com.br/santapaola

Não está perfeito (esse mês passado foi muito corrido pra mim), mas dá para ter uma boa idéia. As Domain Patterns são simples!!!

Na próxima edição vou falar sobre “o ciclo ágil de 1 dia”, isto é, o dia a dia de um desenvolvedor agilista. Como ele obtem requisitos, como “planeja” a construção de um incremento, TDD, Colec. Code Owner., Pair Programming, Teste de Integração. E mais, teremos a ilustre participação do nosso amigo CV… (isso se ele não se esquecer de me mandar a parte dele até o final do dia).

Queria também agradecer aqui a colaboração do Lezinho e do Shoes para o artigo dessa edição, figurinhas que sempre estão por aqui.

Concordo que as ultimas edicoes da MundoJava estao excelentes, deixo como sugestao para as proximas edicoes:

  • como vender um projeto utilizando processos ágeis.

Uma das grandes barreiras que vejo na adocao de processos ágeis eh vender, por exemplo, um projeto em uma instituicao financeira, cheia de procedimentos e documentos e concorrer com uma grande consultoria (3 letras e/ou nome de banda emo) que adota processos de desenvolvimento tradicional e que, de certa forma, ja conhecem os caminhos para realizar a venda.

Marco.

Entendo a falta de tempo, não deve ser fácil.
Parabéns ao artigo e se um dia sobrar mais tempo espero que possa escrever mais sobre o assunto.
Vou aguardar a próxima edição.

Entendo a falta de tempo, não deve ser fácil.
Parabéns ao artigo e se um dia sobrar mais tempo espero que possa escrever mais sobre o assunto.
Vou aguardar a próxima edição.[/quote]

Digo o mesmo, pois essa matéria foi uma ótima iniciativa e deixou um gostinho de quero mais! Pena eu não ter a mesma proatividade para escrever um artigo como este, Rodrigo. No entanto, fica aqui a manifestação de um leitor que quer ler mais sobre o assunto. O assunto DDD é ao meu ver muito interessante e carece de bons materiais (pelo menos mais didáticos e práticos) mostrando como colocar a bagaça pra funcionar. :mrgreen:

[quote=rodrigoy][quote=sergiotaborda]
Pena que foi só sobre linguagem omnipresente (ubiquitous language) que nem é uma caracteristica que mais atormenta quem quer usar DDD. Pelo menos a julgar pela quantidade de topicos do guj relativos a isso.[/quote]

Sergio, a conversa com os especialistas de negócio e a ubiquitous language são o cerne da DDD.
[/quote]

O DDD é um subtipo de Model Driven Development. É MDD levando ao extremo por assim dizer.
As mesmas tecnicas de conversa e linguagem são usadas no MDD. A grande diferença é que o DDD
foca tudo no dominio ( que é um subconjunto do modelo) e retira todas as suas conclusões.

O que eu quiz dizer é que a linguagem omnipresente não é uma caracteristica especifica da DDD, não é o que torna a DDD a DDD. Da mesma forma que uma reunião stand-up ou pair programing não formam um processo agil.
Ok, os padrões tb não a formam a DDD. Concordo que porque usa entidades e serviços não significa estar usando DDD. Afinal esses padrões foram introduzidos pelo Fowler em paralelo à DDD.

Se vc tivesse escrito o mesmo artigo e tivesse chamado de MDD ficaria tudo na mesma (excepto a citação do Evans… )

Só acho que essas duas coisas não forma a DDD. são ferramentas da DDD como o pair-programing é do XP.
A bem ou a mal as pessoas entendem isso. Procurar um DM ou uma linguagem são coisas que todo o mundo deveria fazer mesmo antes de existir DDD. O que trava as pessoas é o uso práticos desses conceitos (patterns incluido). E se os conceitos por detrás do padrões não são explicados e entendido não ha diferença entre DDD e MDD com Design Patterns… bem, agora que penso nisso, se calhar não ha mesmo…

[quote=rodrigoy]… o de DDD, que muitos desenvolvedores não conseguem entender o que realmente é isso.
… poderia ter matérias exemplificando outras “siglas” no mundo do desenvolvimento como TDD, DSL, MDD, etc…[/quote]

:thumbup: Na Edição da Revista Mundo Java nº19 (Reflexão+Anotações) sobre o artigo UML não é documentação, achei que você abriu a mente de muita gente, fora exemplos citados como Tecnicas de User Stories(XP), Features(FDD), Use Case.Tenho acompanho os artigos que você vem divulgando e tem uma aspecto que vem de encontro com as minhas idéias também, acho que é bem por ai mesmo.
Espero que os assuntos de TDD, DSL, MDD venham a ser colocador com todas as desmestificações possíveis.

Sergio, diferente do que você citou sobre as “práticas” utilizadas no XP e que o contempla, os padrões no DDD são apoios e não práticas necessárias.

Você utiliza Factory se precisar (vc poderia utilizar D.I.), utiliza Application Layer se assim fizer necessário (poderia utilizar um framework de abstração para esta camada), utiliza VO para maior flexibilidade do que uma entity desnecessária (mas não é estritamente necessário para a constituição de um DM).

Palavras de Evans sobre Domain-Driven:

[quote=Eric Evans]

Domain-driven design flows from the premise that the heart of software development is knowledge of the subject matter and finding useful ways of understanding that subject matter. The complexity that we should be tackling is the complexity of the domain itself – not the technical architecture, not the user interface, not even specific features. This means designing everything around our understanding and conception of the most essential concepts of the business and justifying any other development by how it supports that core.”[/quote]

… foco no conhecimento do domínio e de como espelhar sua complexidade entre “Domain Especialists” e o software, no lugar de se preocupar com arquiteturas técnicas e similares é o core do DDD, por isso a importancia do Ubiquitous sobre qualquer pattern.

[quote=Lezinho]Sergio, diferente do que você citou sobre as “práticas” utilizadas no XP e que o contempla, os padrões no DDD são apoios e não práticas necessárias.

Você utiliza Factory se precisar (vc poderia utilizar D.I.), utiliza Application Layer se assim fizer necessário (poderia utilizar um framework de abstração para esta camada), utiliza VO para maior flexibilidade do que uma entity desnecessária (mas não é estritamente necessário para a constituição de um DM).

Palavras de Evans sobre Domain-Driven:

(…)
… foco no conhecimento do domínio e de como espelhar sua complexidade entre “Domain Especialists” e o software, no lugar de se preocupar com arquiteturas técnicas e similares é o core do DDD, por isso a importancia do Ubiquitous sobre qualquer pattern.[/quote]

Tudo o que vc falou se aplica a qualquer metodologia de modelagem. Os padrões, quaiquer que sejam, sempre são usados quando necessário. “Domain Especilists” é apenas um nome para algo que sempre existiu. Outras metadologias dão outros nomes: por exemplo “stakeholders”. Não ha nada de novo em ter que falar com pessoas que entendem o dominio. E não ha nada de novo na necessidade de uma linguagem comum. Isso é o dia-a-dia.
Se o mérito da DDD é apenas chamar a atenção para a necessidade dessas coisas… bom, afinal não é muito mérito. É chamar as coisas com nomes bonitos e apresentar o óbvio.

Acho que a diferença fundamental entre a DDD e as outras metodologias de modelagem está no ponto de honra de colocar o desenvolvedor no mesmo patamar que o analista (aliás criando um hibrido). Ou seja, o cara que codifica é o mesmo que conversa com o cliente. Não ha intermediários. Não ha documentação “de tradução”. não ha perda (lost in translation) entre o que cliente “especilista” diz e o que o codigo faz.
Então a importancia do DDD está no facto do codigo também traduzir o dominio. Como diz a citação do Evans do artigo “dominio” é algo abstracto e está presente em muitos lugares de formas diferentes. Mas no fim, o que importa é que as interações entre os bytes mapeiem compreensivelmente as interações entre os atores , entidades e processos do dominio. Logo, a importância do DDD está no codigo ser uma reflexão do dominio. A complexidade da DDD é atingir esse introzamento entre o codigo e o dominio. O artigo parece defender que esse introzamento se limita a dar os nomes certos às classes… isso parece pouco.

Falar de DDD sem falar do codigo é insonso. Todas as outras caracteristias existem em outras modelagens. Ou vai-me dizer que em outras modelagem não se fala com os clientes ? não se cria um modelo ? não se usa uma linguagem comum ? As pessoas podem até estar menos consicentes de que estão fazendo isso, mas fazem.
A filosofia da DDD dá um passo à frente , e parece-me que foi esse passo em frente que não ficou explicito. Não foi dada a importancia necessária ao codigo. E mais, pelas respostas dos colegas do forum dá bem para ver que não ficaram satistifeitos só com aquele blablabla filosofico. O pessoal quer é codigo!

Falar de codigo não significa necessáriamente falar dos padrões , mas a menos que seja uma programação POG os padrões têm que estar lá. O que parece que falta entender é que não ha uma mapeamento 1:1 entre os padrões e as classes. Por exemplo, ninguem vai entender o que é uma entidade sem o conceito de identidade. A DDD diz que o dominio deve ser expresso em codigo. Então a pergunta que todos fazemos é : “Então, como se expressa em codigo ?”

[quote=mrmarcondes]Concordo que as ultimas edicoes da MundoJava estao excelentes, deixo como sugestao para as proximas edicoes:

  • como vender um projeto utilizando processos ágeis.

Uma das grandes barreiras que vejo na adocao de processos ágeis eh vender, por exemplo, um projeto em uma instituicao financeira, cheia de procedimentos e documentos e concorrer com uma grande consultoria (3 letras e/ou nome de banda emo) que adota processos de desenvolvimento tradicional e que, de certa forma, ja conhecem os caminhos para realizar a venda.

Marco.[/quote]

+1! Essa é uma questão bastante comum.

Sérgio,

  1. Me cite algum outro autor que falou de linguagem comum que deve ser expressa no código… me diga um autor antes do Evans que falou para “fortalecer essa linguagem”.

  2. Nenhuma metodologia diz que o analista não pode programar e nem que programador não pode analisar. Que autor defende essa história do “híbrido”?

Que parte vc sentiu isso?

Jesus…

[size=18]http://www.aspercom.com.br/santapaola
[/size]

Você acessou? Desculpa cara, vc está sendo insolente. Não coloquei o código no artigo porque o artigo não é um HOW-TO isolado. Se eu colocasse o código no artigo ficaria com 40 páginas. O código está nesse link. E tem bastante código, acredite. Logicamente vc vai postar aqui kilos de crítica ao código. Se vc fizer isso vou ser obrigado a te desafiar a escrever um artigo melhor.

O objetivo do artigo era chamar a atenção para outras práticas da DDD que são ofuscadas pelos patterns. E tem outra. A DDD é uma evolução porque hoje temos tecnologia para focar mais o domínio no código. Antigamente isso era possível mas inviável na maioria das vezes (lembra dos datamappers implementados na mão e os infinitos proxies para ter um lazyload?). DDD é novidade porque a tecnologia hoje permite que a gente desenvolva software desse jeito.

Sérgio, primeiro não foi “eu que falei”, vide citação do próprio Evans…
O que você diz sobre interações de desenvolvedores com o cliente é mérito de qualquer metodologia ágil, e não exclusividade do DDD. Tomando a linha de raciocínio de seu post anterior, isto também não é merito de DDD.

Mas o resto do que você falou sobre não perder informações entre o cliente e a codificação, não ter (necessariamente) documentação de tradução, código traduzir o domínio… foi justamente o foco “Ubiquitous” do artigo. Em vista que você mesmo reafirma estes pontos e também concorda que os padrões não são frutos do Domain-Driven (quote abaixo):

[quote=sergiotaborda]
(…)Ok, os padrões tb não a formam a DDD. Concordo que porque usa entidades e serviços não significa estar usando DDD. Afinal esses padrões foram introduzidos pelo Fowler em paralelo à DDD.(…) [/quote]

… eu fico meio sem entender o enfoque que você gostaria. O Shoes já escreveu sobre a maioria dos padrões utilizados em DDD na própria Mundo Java. A leitura do livro Domain-Driven Design, gera tópicos de dezenas de páginas, acho que uma abordagem no estilo “Resumão” de todo o livro, perderia o foco de quem esta lendo sobre o assunto pela primeira vez.

O que eu acho interessante, em todo e qualquer artigo de revistas, é despertar no profissional o interesse em se aprofundar no assunto abordado e não ser um expert em poucas páginas. Por isso a resposta que acho a mais sensata para a pergunta que você fez: “Então, como se expressa em codigo ?” é:

Concordo que novas edições sobre o tema poderia ser bom, só não vejo como resumir todo o livro em um artigo. Acredito que a maior relevância, de fato foi abordada.

Rodrigo,

Eu acho que o codigo fonte disponivel para o artigo poderia ter dado mais enfase no dominio explorando outros padroes como demonstracao, mas o exemplo que baixei so continha entities e um DTO.

Espero que considere isso uma critica construtiva porque em relacao ao artigo eu achei muito bom e espero que mais artigos sobre esse tema sejam publicados nas proximas edicoes!