| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/12/2009 11:07:04
|
Thiago Senna
GUJ Master
![[Avatar]](/images/avatar/78719f11fa2df9917de3110133506521.jpg)
Membro desde: 11/02/2005 08:08:02
Mensagens: 1595
Offline
|
Olá,
já testei algumas vezes o Spider. Não me adaptei, no entanto a idéia é bastante valida! Sou bastante solidário a geração de código e espero que esta área continue ganhando adeptos.
Mas enfim, tenho algumas sugestões e opiniões (algumas já faladas neste tópico)
Também não achei o nome Spider On Rails um bom nome. Um nome como Spider Generator ou Spider Scaffold seria muito mais bem vindo!
Até onde me lembro, eu populo varias telinhas com informacoes para que o spider possa gerar código. Aqui vai a sugestão: já pensou se não seria interessante eu popular essas informacoes textualmente, como se fosse uma DSL?
[Sugestão Viagem] O Spider poderia talvez se integrar com o TextUML. Se houver outra ferramenta mais interessante, pq não?
As sugestões ficaram um pouco vagas, mas espero ter contribuído de alguma forma
Abraço,
Thiago
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/12/2009 11:17:37
|
Alex Basto
JavaBaby
![[Avatar]](/images/avatar/cb0e59b8f769a8698b9f7154dd8809b5.jpg)
Membro desde: 11/11/2009 09:56:06
Mensagens: 98
Offline
|
Thiago Senna wrote:
As sugestões ficaram um pouco vagas, mas espero ter contribuído de alguma forma
Abraço,
Thiago
Faça uma parceiria com a Caelum e pede pra que a mesma liberar um plugin do Vraptor3 (Open Source) assim a ideia iria ganhar um reforço consideravel.
This message was edited 1 time. Last update was at 29/12/2009 11:18:09
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/12/2009 15:11:39
|
bruno.braga
JavaChild
![[Avatar]](/images/avatar/d8ec7fefbec9864f0453074a21fc2067.jpg)
Membro desde: 23/09/2006 15:02:46
Mensagens: 121
Localização: BH - MG
Offline
|
Ei Thiago,
Bom, vamos por partes:
Sobre o TextUML eu não conheço. Mas se a sugestão é colocar annotações nas classes para gerar diamagras UML também, isso pode ser feito de forma muito fácil (apesar de que eu não sei qual o valor desses diagramas para CRUDs).
Agora se a sugestão é gerar código a partir de diagramas (ao estilo MDD), isso não está nos planos porque muda totalmente o conceito / foco da ferramenta. Neste caso é melhor utilizar alguma ferramenta MDD que ja tem pronta.
Segue um comparativo entre a geração de código do SPIDER e MDD:
spideronrails.org/cnf/display/docPT/Comparativo
*SPIDER versus MDD*
Algumas ferramentas de geração de código são Model-Driven Development (MDD) e o SPIDER possui outro conceito. Vamos tentar explicar as diferenças:
No SPIDER você não precisa criar diagramas e não tem dependência com a ferramenta se quiser alterar o código. Nós suportamos você a criar o código do seu projeto e após criar os arquivos eles tem como único dono o próprio desenvolvedor. O SPIDER não precisa manter qualquer sincronismo regular com o código. Você pode continuar o seu projeto manualmente, após algumas semanas pode usar o SPIDER novamente, para novos Use Case.
o SPIDER não possui dependência entre o código e a ferramenta, os dois são completamente independentes. Se na metade do projeto você decidir não usar mais o SPIDER, ok. Você pode fazer isso.
Algumas outras ferramentas parecidas tem alguns passos manuais como: muitos "comandos maven", ou entrada de dados usando somente comandos (command line). A abstração do SPIDER é mais elevada e você não precisa "conhecer ou aprender" nada para usar a ferramenta... é muito mais fácil e permite mais features por exemplo: escolher layout (skin) visualmente. Fazer isso em um prompt seria ruim.
As facilidades do SPIDER permitem que você crie projetos muito mais rápido do que com ferramentas MDD ou ferramentas baseadas em comandos.
A qualidade também será boa porque o código gerado é baseado em templates. Você pode usar o seu template com as customizações que quiser.
A documentação e diagrama UML são importantes, mas nós não precisamos delas para configurar o projeto ou criar CRUDs. O SPIDER é mais ágil e consegue criar código (como você quiser) sem usar o conceito de MDD, então você economiza tempo.
Na nossa opinião MDD é importante (por exemplo) para modelar um sistema e criá-lo em várias tecnologias diferentes. Se o seu sistema terá somente uma tecnologia (JEE), MDD não é necessário ou não agrega muitas vantagens. Por isso o SPIDER não é uma ferramenta MDD.
Então o projeto tem um objetivo muito bem definido, e (felizmente ou infelizmente) MDD ou DSL não fazem parte dele. Essas tecnologias são bacanas para alguns casos especificos, mas sinceramente não sei se precisa de tudo isso para configurar um projeto e criar CRUDs. Veja bons exemplos no django e ruby, tudo é feito da maneira mais simples e rápida possível. No SPIDER também sempre foi com esse objetivo, só que tentando ser mais fácil ainda (visualmente), integrado a IDE e sem ter que aprender nenhum comando.
Se está procurando por MDD e DSL, realmente não vai se adaptar (mas não estou dizendo que essas tecnologias são ruins, só que o objetivo é outro).
Abçs,
|
Bruno Braga
http://www.brunobraga.com.br
http://www.spideronrails.org |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/12/2009 18:37:47
|
Alex Basto
JavaBaby
![[Avatar]](/images/avatar/cb0e59b8f769a8698b9f7154dd8809b5.jpg)
Membro desde: 11/11/2009 09:56:06
Mensagens: 98
Offline
|
bruno.braga wrote:
Se está procurando por MDD e DSL, realmente não vai se adaptar (mas não estou dizendo que essas tecnologias são ruins, só que o objetivo é outro).
Quando você fala em gerar código é algo similar ao Xdoclet, poderia ter código scala gerado também ????
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/12/2009 18:42:56
|
Mauricio Linhares
Moderador
![[Avatar]](/images/avatar/97af07a14cacba681feacf3012730892.jpg)
Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline
|
bruno.braga wrote:Então o projeto tem um objetivo muito bem definido, e (felizmente ou infelizmente) MDD ou DSL não fazem parte dele. Essas tecnologias são bacanas para alguns casos especificos, mas sinceramente não sei se precisa de tudo isso para configurar um projeto e criar CRUDs. Veja bons exemplos no django e ruby, tudo é feito da maneira mais simples e rápida possível. No SPIDER também sempre foi com esse objetivo, só que tentando ser mais fácil ainda (visualmente), integrado a IDE e sem ter que aprender nenhum comando.
Bem, no Django eu realmente não sei, mas em Rails o pessoal está caminhando cada vez mais pra DSLs até mesmo nos geradores, é só ver como funcionam os novos esqueletos de geradores de aplicação do Rails, o novo Bundler de gems e vários plugins. O rails em si já funciona a base de várias DSLs, como as migrations, o router, as validações do active-record.
|
Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr
Screencast de Introdução a linguagem Objective-C |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/12/2009 19:55:06
|
bruno.braga
JavaChild
![[Avatar]](/images/avatar/d8ec7fefbec9864f0453074a21fc2067.jpg)
Membro desde: 23/09/2006 15:02:46
Mensagens: 121
Localização: BH - MG
Offline
|
Opa Mauricio,
Usar DSL internamente nos geradores ou ate gerar um projeto que possua DSLs, ok.
O que eu quis dizer é só que eu não sei se o usuário final precisa escrever uma DSL para dizer a ferramenta o que ela deve fazer. A ideia é descomplicar ao máximo a vida do desenvolvedor para que ele se preocupe com o que realmente importa que são as regras de negocio, arquitetura e etc.
Eu tenho muita preocupação em não tirar o foco do que realmente importa em um projeto (regras de negocio e etc). Então eu quero evitar que as pessoas escrevam códigos, comandos ou modelos para gerar algo descartavel (CRUDs). Esse é o objetivo desse projeto. Mas enfim, concordo que podem existir outras soluções
Vamos ver como as coisas caminham com o tempo. Atualmente a preocupação é essa.
|
Bruno Braga
http://www.brunobraga.com.br
http://www.spideronrails.org |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/12/2009 00:57:49
|
Alex Basto
JavaBaby
![[Avatar]](/images/avatar/cb0e59b8f769a8698b9f7154dd8809b5.jpg)
Membro desde: 11/11/2009 09:56:06
Mensagens: 98
Offline
|
bruno.braga wrote:Opa Mauricio,
Usar DSL internamente nos geradores ou ate gerar um projeto que possua DSLs, ok.
O que eu quis dizer é só que eu não sei se o usuário final precisa escrever uma DSL para dizer a ferramenta o que ela deve fazer. A ideia é descomplicar ao máximo a vida do desenvolvedor para que ele se preocupe com o que realmente importa que são as regras de negocio, arquitetura e etc.
Regras de negócios estão na DSL.
Eu tenho muita preocupação em não tirar o foco do que realmente importa em um projeto (regras de negocio e etc). Então eu quero evitar que as pessoas escrevam códigos, comandos ou modelos para gerar algo descartavel (CRUDs). Esse é o objetivo desse projeto. Mas enfim, concordo que podem existir outras soluções
Vamos ver como as coisas caminham com o tempo. Atualmente a preocupação é essa.
Acho que você esta usando um modelo antigo e não entende o que é percebido hoje, algo como Drools usa DSL para implementar regras de negocios.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/12/2009 09:49:50
|
Thiago Senna
GUJ Master
![[Avatar]](/images/avatar/78719f11fa2df9917de3110133506521.jpg)
Membro desde: 11/02/2005 08:08:02
Mensagens: 1595
Offline
|
bruno.braga wrote:Opa Mauricio,
Usar DSL internamente nos geradores ou ate gerar um projeto que possua DSLs, ok.
O que eu quis dizer é só que eu não sei se o usuário final precisa escrever uma DSL para dizer a ferramenta o que ela deve fazer. A ideia é descomplicar ao máximo a vida do desenvolvedor para que ele se preocupe com o que realmente importa que são as regras de negocio, arquitetura e etc.
então.. eu dei a sugestão da DSL pq eu acho wizards mais complicado. Você poderia manter ambos - os wizards e a DSL. Os wizards por exemplo, poderiam gerar a DSL. Se o desenvolvedor quiser, ele que opte por não usar os wizards e atuar direto na DSL.
Eu sugeri que desse uma olhada no TextUML não é pelo fato de que me interesso por MDD. É que no TextUML já existe uma DSL que representa a UML e talvez valesse a pena reaproveitar ao invés de criar do zero. Valeria muito a pena manter uma DSL onde à partir dela você gera todo o Scaffold da aplicação. Como o seu público alvo são programadores editar as configurações em uma DSL pode ser mais interessante do que editar wizards, é minha sincera opinião
bruno.braga wrote:Eu tenho muita preocupação em não tirar o foco do que realmente importa em um projeto (regras de negocio e etc). Então eu quero evitar que as pessoas escrevam códigos, comandos ou modelos para gerar algo descartavel (CRUDs). Esse é o objetivo desse projeto. Mas enfim, concordo que podem existir outras soluções
Vamos ver como as coisas caminham com o tempo. Atualmente a preocupação é essa.
Bom, também acho que está fora de foco o Spider conter regra de negócio. Até onde entendi o foco é gerar a estrutura da aplicação. Ou melhor ainda, dar a opção do programador gerar o que quiser e como quiser Mas a estrutura do modelo acho que não tem muito como o Spider evitar, ou tem?
Por exemplo, algo q eu senti falta em alguns projetos por aí é a opção de você gerar código para multi-projetos. Se tenho por exemplo um projeto usando maven com dois subprojetos, como faço pra gerar alguns artefatos no projeto A e outros no projeto B?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/12/2009 10:40:21
|
Bruno Laturner
JWizard
![[Avatar]](/images/avatar/5800ccd9514fd789d08e5831951aa6bc.jpg)
Membro desde: 18/02/2008 16:17:53
Mensagens: 2981
Offline
|
Prevejo uma ameaça de processo por infração de marca vindo do DHH.
|
A resposta acima foi achada em menos de 5 minutos no google.
The prisoner falls in love with his chains. --E.W. Dijkstra |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/12/2009 14:23:26
|
Alex Basto
JavaBaby
![[Avatar]](/images/avatar/cb0e59b8f769a8698b9f7154dd8809b5.jpg)
Membro desde: 11/11/2009 09:56:06
Mensagens: 98
Offline
|
Bruno Laturner wrote:Prevejo uma ameaça de processo por infração de marca vindo do DHH.
Não chegaria a tanto
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/12/2009 16:44:53
|
bruno.braga
JavaChild
![[Avatar]](/images/avatar/d8ec7fefbec9864f0453074a21fc2067.jpg)
Membro desde: 23/09/2006 15:02:46
Mensagens: 121
Localização: BH - MG
Offline
|
Alex Basto wrote:Acho que você esta usando um modelo antigo e não entende o que é percebido hoje, algo como Drools usa DSL para implementar regras de negocios.
Não Alex, acho que vc não entendeu. A sugestão era para escrever a DSL em vez de usar os wizards. Não estamos falando de regras de negocio. O assunto regra de negocio está fora do escopo da ferramenta. As regras tem que ser escritas pelos desenvolvedores usando o que eles quiserem - DSL, codigo java puro, patterns, etc...
|
Bruno Braga
http://www.brunobraga.com.br
http://www.spideronrails.org |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/12/2009 17:16:28
|
bruno.braga
JavaChild
![[Avatar]](/images/avatar/d8ec7fefbec9864f0453074a21fc2067.jpg)
Membro desde: 23/09/2006 15:02:46
Mensagens: 121
Localização: BH - MG
Offline
|
Thiago Senna wrote:então.. eu dei a sugestão da DSL pq eu acho wizards mais complicado. Você poderia manter ambos - os wizards e a DSL. Os wizards por exemplo, poderiam gerar a DSL. Se o desenvolvedor quiser, ele que opte por não usar os wizards e atuar direto na DSL.
Eu sugeri que desse uma olhada no TextUML não é pelo fato de que me interesso por MDD. É que no TextUML já existe uma DSL que representa a UML e talvez valesse a pena reaproveitar ao invés de criar do zero. Valeria muito a pena manter uma DSL onde à partir dela você gera todo o Scaffold da aplicação. Como o seu público alvo são programadores editar as configurações em uma DSL pode ser mais interessante do que editar wizards, é minha sincera opinião
Ok Thiago. Agora as sugestões / ideias estão começando a tomar forma (não seria MDD, usar o DSL como opção ao wizards, etc), apesar de que eu acho os wizards bem simples e da para clonar as configs de um projeto para o outro.
Vou fazer o seguinte: vou dar uma olha no TextUML e depois a gente conversa para entender melhor o q está sugerindo e ver se é possível de implementar. Se não for atrapalhar nada e só for agregar, tranquilo.
Thiago Senna wrote:
Por exemplo, algo q eu senti falta em alguns projetos por aí é a opção de você gerar código para multi-projetos. Se tenho por exemplo um projeto usando maven com dois subprojetos, como faço pra gerar alguns artefatos no projeto A e outros no projeto B?
A geração do SPIDER e incremental e baseada em assuntos (divididos em abas no wizard).
Vc pode gerar o conteúdo de uma aba em um projeto (ex: layout) e o conteudo de outra em outro projeto (ex: codigo java).
É isso que quer?
|
Bruno Braga
http://www.brunobraga.com.br
http://www.spideronrails.org |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/12/2009 17:42:16
|
Thiago Senna
GUJ Master
![[Avatar]](/images/avatar/78719f11fa2df9917de3110133506521.jpg)
Membro desde: 11/02/2005 08:08:02
Mensagens: 1595
Offline
|
bruno.braga wrote:Ok Thiago. Agora as sugestões / ideias estão começando a tomar forma (não seria MDD, usar o DSL como opção ao wizards, etc), apesar de que eu acho os wizards bem simples e da para clonar as configs de um projeto para o outro. Vou fazer o seguinte: vou dar uma olha no TextUML e depois a gente conversa para entender melhor o q está sugerindo e ver se é possível de implementar. Se não for atrapalhar nada e só for agregar, tranquilo.
Legal  O TextUML acho que seria legal para que fosse possível escrever a estrutura do modelo (no caso do java, as entidades). Mas há opções ainda - o pacote "Modelling Package" do eclipse tem um bom suporte para DSL. Dê uma procurada por XText e você vai ver que criar as DSL's talvez até seja tranquilo. Mas não manjo muito de desenvolvimento dentro da plataforma eclipse para saber o quão complicado pode ser. Com ctz podemos sim trocar mais idéias sobre este assunto quando quiser 
bruno.braga wrote:A geração do SPIDER e incremental e baseada em assuntos (divididos em abas no wizard). Vc pode gerar o conteúdo de uma aba em um projeto (ex: layout) e o conteudo de outra em outro projeto (ex: codigo java). É isso que quer?
Vou tentar dar um exemplo - dado que criei no Spider um modelo que represente uma classe do tipo Pessoa e com um atributo nome do tipo String, eu gostaria de gerar o seguinte: -MeuProjeto ---- core -------- src/main/java/Pessoa.java (....) ---- web -------- src/main/java/PessoaController.java -------- src/main/webapp/pessoa/list.jsp (....) ---- infra -------- src/main/java/PessoaDAO.java É mais ou menos esta a idéia - seria legal gerar e ter a opção de que a geração jogasse o código gerado dentro do projeto certo. Muitos geradores de código acabam gerando código sempre dentro de apenas um projeto. Ter a opção de selecionar quais artefatos serão gerados em quais 'sub-projetos' seria bem legal. Obs: Bruno, qualquer hora vou separar um tempo para explorar o Spider com mais calma, espero, rsrs. Fazendo isto tento trazer sugestões mais claras. Acabei dando essas sugestões pq são as primeiras coisas que me vieram a cabeça e já me fizeram falta.
This message was edited 1 time. Last update was at 30/12/2009 17:49:10
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/12/2009 20:06:15
|
bruno.braga
JavaChild
![[Avatar]](/images/avatar/d8ec7fefbec9864f0453074a21fc2067.jpg)
Membro desde: 23/09/2006 15:02:46
Mensagens: 121
Localização: BH - MG
Offline
|
Opa,
Então, eu estava dando uma olhada no TextUML e acabei achando o xtext do eclipse antes de ler o forum. O xtext pode ajudar a criar uma DSL para isso. O textUML ja é algo pronto para criar modelos UML. N entendi ainda onde ele pode ajudar, mas depois a gente conversa.
Sobre o exemplo que deu dos artefatos, o que é um projeto no eclipse? "Meu Projeto" ou "core", "web", "infra"?
|
Bruno Braga
http://www.brunobraga.com.br
http://www.spideronrails.org |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/12/2009 10:59:08
|
Thiago Senna
GUJ Master
![[Avatar]](/images/avatar/78719f11fa2df9917de3110133506521.jpg)
Membro desde: 11/02/2005 08:08:02
Mensagens: 1595
Offline
|
bruno.braga wrote:Opa,
Então, eu estava dando uma olhada no TextUML e acabei achando o xtext do eclipse antes de ler o forum. O xtext pode ajudar a criar uma DSL para isso. O textUML ja é algo pronto para criar modelos UML. N entendi ainda onde ele pode ajudar, mas depois a gente conversa.
Sobre o exemplo que deu dos artefatos, o que é um projeto no eclipse? "Meu Projeto" ou "core", "web", "infra"?
XText pode mesmo ajudar muito. Sobre o TextUml já acho que precisariamos pensar com mais calma. Mas se você se familiarizar com XText ele já vai ser suficiente, tanto pra criar as DSL`s dos wizards e modelo.
No exemplo que dei, as pastas core, web e infra são cada um deles um projeto no eclipse.
|
|
|
 |
|
|