<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Últimas mensagens do tópico "Arquitetura: tentativas, sugestões."]]></title>
		<link>http://www.guj.com.br/posts/list/12.java</link>
		<description><![CDATA[Últimas mensagens enviadas no tópico "Arquitetura: tentativas, sugestões."]]></description>
		<generator>JForum - http://www.jforum.net</generator>
			<item>
				<title>Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ Buenas,<br /> Aqui no trampo vamos desenvolver um 'framework' pra servir de padrão no desenvolvimento de todos aplicativos(são todos pra uso próprio).<br /> Pelo que andei conversando com o Philip, o cv, e lendo vários posts daqui e outras coisas mais, modelei mais ou menos como vai ser a arquitetura, gostaria de sugestões e/ou críticas vossas:<br /> <br /> Vou ter um objeto que será a base para toda regra de negócio. Ele vai seguir uma sequência de inicialização, execução e finalização, que toda regra de negócio deverá implementar para seguir tal regra. EM outras palavras, vou ter uma interface com três métodos abstratos: init(), execute() e finalize(), e todo Business Object deverá implementar esta interface, e seus métodos.<br /> Vou ter uma camada de DAO, utilizando um objeto padrão(DAOFactory) para as operações básicas de persistência, e esta camada DAO é quem fará a comunicação com a camada de persistência em si. Provavelmente Hibernate ou Entity Beans.<br /> <br /> A interface ainda não está definida, mas provavelmente teremos um controle que comunicará a interface com a camada de negócios.<br /> <br /> E então, o que eu poderia melhorar?Mudar?Acrescentar?Ou devo largar tudo e montar uma banca de jornal?<br /> <br /> Obs:Sei que é meio vago definir uma arquitetura sem conhecer o negócio o qual ela servirá, mas é só pra fazer uma certa idéia do que seguir.<br /> Grato]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/115803.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/115803.java</link>
				<pubDate><![CDATA[Wed, 23 Mar 2005 11:50:41]]> GMT</pubDate>
				<author><![CDATA[ Rafael Nunes]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ Bom, parece normal para mim <img src="http://www.guj.com.br/images/smilies/e8a506dc4ad763aca51bec4ca7dc8560.gif" border="0"><br /> Está usando as patterns VO, DAO e Command. Que tal tirar o VO dali? <img src="http://www.guj.com.br/images/smilies/283a16da79f3aa23fe1025c96295f04f.gif" border="0">]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/115823.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/115823.java</link>
				<pubDate><![CDATA[Wed, 23 Mar 2005 12:20:22]]> GMT</pubDate>
				<author><![CDATA[ Filipe Sabella]]></author>
			</item>
			<item>
				<title>Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ [quote=Rafael Nunes]Aqui no trampo vamos desenvolver um 'framework' pra servir de padrão no desenvolvimento de todos aplicativos(são todos pra uso próprio).[/quote]<br /> <br /> O meu arrepio comecou aqui. <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0"><br /> <br /> Desenvolver um framework ANTES de desenvolver uma aplicacao nao da certo: ou voce acaba com a aplicacao tendo que fazer gambiarras em cima do framework, ou a aplicacao nao sai ate mudarem o framework. Eh melhor fazer uma aplicacao primeiro, refatorar ela e tirar os pedacos genericos e transformar num framework do que tentar advinhar o que eh generico e o que nao eh. Alias, risque a palavra advinhar do dicionario. <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0"><br /> <br /> [quote=Rafael Nunes]Pelo que andei conversando com o Philip, o cv, e lendo vários posts daqui e outras coisas mais, modelei mais ou menos como vai ser a arquitetura, gostaria de sugestões e/ou críticas vossas:<br /> <br /> Vou ter um objeto que será a base para toda regra de negócio. Ele vai seguir uma sequência de inicialização, execução e finalização, que toda regra de negócio deverá implementar para seguir tal regra. EM outras palavras, vou ter uma interface com três métodos abstratos: init(), execute() e finalize(), e todo Business Object deverá implementar esta interface, e seus métodos.<br /> Vou ter uma camada de DAO, utilizando um objeto padrão(DAOFactory) para as operações básicas de persistência, e esta camada DAO é quem fará a comunicação com a camada de persistência em si. Provavelmente Hibernate ou Entity Beans.[/quote]<br /> <br /> Bom, algumas observacoes:<br /> <br /> - O que acontece se o objeto nao puder seguir o padrao init/execute/finalize?<br /> <br /> - Por que um objeto de negocios - que trata de uma regra de negocio especifica - vai ter que implementar uma interface alien dessa, que modela coisas que sao inicializaveis, executaveis e paraveis, sem necessariamente serem inicializaveis, executaveis ou paraveis?<br /> <br /> - Por que ter uma "camada" de DAOs se voce nem sabe de que tipo de persistencia e nem de que tipo de queries voce precisa?<br /> <br /> - finalize() eh um metodo que ja tem na java.lang.Object e serve pra outra coisa. Voce vai ter que arrumar outro nome <img src="http://www.guj.com.br/images/smilies/ed515dbff23a0ee3241dcc0a601c9ed6.gif" border="0"><br /> <br /> E, como uma imagem vale mil palavras, eis a minha descricao mais completa da sua arquitetura ate agora:<br /> <br /> [img]http://photos6.flickr.com/7215636_40f771ef98_m_d.jpg[/img]]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/115832.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/115832.java</link>
				<pubDate><![CDATA[Wed, 23 Mar 2005 12:36:24]]> GMT</pubDate>
				<author><![CDATA[ cv]]></author>
			</item>
			<item>
				<title>Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ Habla chico...<br /> <br /> [quote=Rafael Nunes]<br /> Vou ter um objeto que será a base para toda regra de negócio. Ele vai seguir uma sequência de inicialização, execução e finalização, que toda regra de negócio deverá implementar para seguir tal regra. EM outras palavras, vou ter uma interface com três métodos abstratos: init(), execute() e finalize(), e todo Business Object deverá implementar esta interface, e seus métodos.<br /> [/quote]<br /> <br /> Segundo isso, você deve ter objetos assim:<br /> <br /> AdicionarUsuarioBO<br /> RemoverUsuarioBO<br /> editarUsuarioBO<br /> <br /> Certo?<br /> <br /> Se isso é verdade, me diz qual a diferença entre isso e um design procedural com funções com os mesmos nomes? (nota: esse excesso de Commands é sintoma de uso de Struts... acertei?)<br /> <br /> Antes de pensar nas ações tomadas pelo sistema, pense nos objetos do sistema. Ops, problema aí: como pensar em objetos de sistemas futuros?<br /> <br /> Fazer um framework tão genérico e manter boas práticas não é muito fácil... mais fácil você manter umf ramework vertical, sobre aquilo que sua emrpesa costuma ldiar (objetos relacionados ao negócio).<br /> <br /> Se você trabalha com telecom, por exemplo, provavelmente vai conseguir ter uns objetos Assinante, BaseTerrestre, blablabla reutilizáveis, mas eles vêm com o tempo <img src="http://www.guj.com.br/images/smilies/8a80c6485cd926be453217d59a84a888.gif" border="0"><br /> <br /> Acho que você está se preocupando muito com o RAD da coisa <img src="http://www.guj.com.br/images/smilies/9d71f0541cff0a302a0309c5079e8dee.gif" border="0">]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/115836.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/115836.java</link>
				<pubDate><![CDATA[Wed, 23 Mar 2005 12:48:50]]> GMT</pubDate>
				<author><![CDATA[ pcalcado]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ cv, se ele decidiu usar a Pattern Command, é necessário ter um interface comum a todos os comandos, não é?<br /> <br /> E Rafael, apesar dos exelentes comentários de ambos, não se desespere, o jeito que você fez é melhor do que muita coisa por aí.<br /> <br /> Sobre o comentário do cv sobre fazer a solução antes de surgir o problema, esclareço uma coisa a você: MVC não é um framework. Desenvolver uma maneira padrão para comunicação entre as camadas _poderia_ ser um framework.<br /> <br /> Aliás, tem certeza que não há algo pronto no mercado para a necessidade de vocês? Se o objetivo é produção e não aprendizado, há o Genesis.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/115838.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/115838.java</link>
				<pubDate><![CDATA[Wed, 23 Mar 2005 12:58:36]]> GMT</pubDate>
				<author><![CDATA[ Filipe Sabella]]></author>
			</item>
			<item>
				<title>Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ Olá<br /> <br /> [quote=Rafael Nunes]<br /> Aqui no trampo vamos desenvolver um 'framework' pra servir de padrão no desenvolvimento de todos aplicativos(são todos pra uso próprio).[/quote]<br /> <br /> 1. Suponho que além do obrigatório e basico Effective Java, você leu os 2 livros do Rod Johnson e percebeu claramente o trampo que virá pela frente. <br /> <br /> 2. É óbvio que você conhece muito bem os patterns Template Method, Strategy, Command, FrontController, ServiceToWorker e outros mais. <br /> <br /> 3. Tenho a certeza que você já estudou e usou muito os frameworks atuais como Struts, Webwork e Spring<br /> <br /> 4. Por fim você realmente precisa reinventar a roda.<br /> <br /> Se respondeu sim a todas as 4 afirmações então siga em frente e boa sorte.<br /> <br /> []s<br /> Luca ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/115848.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/115848.java</link>
				<pubDate><![CDATA[Wed, 23 Mar 2005 13:24:38]]> GMT</pubDate>
				<author><![CDATA[ Luca]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ [quote=LIPE]cv, se ele decidiu usar a Pattern Command, é necessário ter um interface comum a todos os comandos, não é?[/quote]<br /> <br /> Sim, o ponto eh que Command != Business Object... Command eh um metodo transformado em classe, pra poder ser tratado com uma granularidade um pouco diferente, ou quando voce tem parametros meio confusos e quer simplificar a coisa. Usar esse pattern pra "representar tudo" eh meio pisada de bola (de novo, olhem pra foto do cachorro) - e eh um dos defeitos do Prevayler, inclusive. <br /> <br /> [quote=LIPE]E Rafael, apesar dos exelentes comentários de ambos, não se desespere, o jeito que você fez é melhor do que muita coisa por aí.[/quote]<br /> <br /> Sem duvida. So de voce ter parado pra pensar e perguntar sobre isso ja torna o mundo um lugar melhor. <img src="http://www.guj.com.br/images/smilies/ed515dbff23a0ee3241dcc0a601c9ed6.gif" border="0">]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/115849.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/115849.java</link>
				<pubDate><![CDATA[Wed, 23 Mar 2005 13:24:45]]> GMT</pubDate>
				<author><![CDATA[ cv]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ Rafael, <br /> <br /> O CV disse tudo: <br /> <br /> [quote="CV"]<br /> Desenvolver um framework ANTES de desenvolver uma aplicacao nao da certo: ou voce acaba com a aplicacao tendo que fazer gambiarras em cima do framework, ou a aplicacao nao sai ate mudarem o framework. Eh melhor fazer uma aplicacao primeiro, refatorar ela e tirar os pedacos genericos e transformar num framework do que tentar advinhar o que eh generico e o que nao eh. Alias, risque a palavra advinhar do dicionario. <br /> [/quote]<br /> <br /> Todo o framework tem um determinado nível de "genericidade", ou seja, ele é generico e configurável até certo ponto. Como o framework é para a sua empresa e nada mais, eu sugiro vc criar o framework fortemente acoplado as decisões da sua empresa. <br /> <br /> Lembre-se que se acontecer alguma mudança nessas decisões, alguém da sua empresa pode alterar o framework em nível de código fonte. Vc não precisará criar inúmeros arquivos de configuração para utilizar o framework, e com isso, você ganha muito tempo de desenvolvimento. <br /> <br /> Em outras palavras, fazer coisas genéricas nem sempre é a melhor saída, porque, além de esperar por uma mudança que talvez nunca aconteça, é possível que o código ainda esteja errado. <br /> <br /> Como disse o CV, crie o seu framework ao longo do tempo em que desenvolve o sistema. Assim que detectar que algo pode ser "genérico" você o faz e separa dos fontes da aplicação. <br /> <br /> Refactoring é a palavra mágica <img src="http://www.guj.com.br/images/smilies/283a16da79f3aa23fe1025c96295f04f.gif" border="0">]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/115853.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/115853.java</link>
				<pubDate><![CDATA[Wed, 23 Mar 2005 13:26:18]]> GMT</pubDate>
				<author><![CDATA[ vfpamp]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ Hun, deixa eu dividir por partes então.<br /> Acho mais fácil situar-me primeiro. Onde trabalho é uma Universidade, logo, tudo que for desenvolvido é pra uso próprio. Já respondendo a última proposição do Lipe, usar algo terceiro está fora de cogitação, o que eles querem mesmo é desenvolver um framework, um padrão que deverá ser seguido por todas aplicações aqui desenvolvidas.<br /> <br /> [quote=Lipe] Está usando as patterns VO, DAO e Command. Que tal tirar o VO dali?[/quote]<br /> O VO que se refere é o Controller?<br /> Bem o sistema aqui é distribuído, os .jsp ficam em máquina separada dos .class. Iremos usar um Session Bean para comunicação entre a View e o restante da aplicação, sendo que não conheço maneira mais simples de comunicação RMI. Aliás, eu consigo conversar com o Hibernate através de RMI?<br /> <br /> [quote=Lipe]Desenvolver uma maneira padrão para comunicação entre as camadas _poderia_ ser um framework[/quote]<br /> Bingow, é exatamente isso!!!O que estamos querendo é um padrão para comunicação E desenvolvimento.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/115856.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/115856.java</link>
				<pubDate><![CDATA[Wed, 23 Mar 2005 13:28:31]]> GMT</pubDate>
				<author><![CDATA[ Rafael Nunes]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ [quote=Rafael Nunes]<br /> O VO que se refere é o Controller?<br /> Bem o sistema aqui é distribuído, os .jsp ficam em máquina separada dos .class. Iremos usar um Session Bean para comunicação entre a View e o restante da aplicação, sendo que não conheço maneira mais simples de comunicação RMI. Aliás, eu consigo conversar com o Hibernate através de RMI?[/quote]<br /> <br /> JSP longe dos .class? <br /> <br /> Isso me diz que você está usando JSP como se fosse ASP, e isso por si só já é um problema <img src="http://www.guj.com.br/images/smilies/9d71f0541cff0a302a0309c5079e8dee.gif" border="0"><br /> <br /> (aliás, conceitualmente isso não é possível, já que suas JSP viram .class <img src="http://www.guj.com.br/images/smilies/8a80c6485cd926be453217d59a84a888.gif" border="0"> )<br /> <br /> Passando ao próximo passo, sua camada de View não deve contatar a camada onde o Hibernate está localizado, para isso coloque uma camada de modelo/negócios no meio.<br /> <br /> Nessa camada ficam os objetos de domínio, para acessá-la você pode até utilizar um Stateless Session Bean se estiverem em computadores diferentes, ams não faça isso se não souber quando NÃO utilizar um EJB <img src="http://www.guj.com.br/images/smilies/8a80c6485cd926be453217d59a84a888.gif" border="0"><br /> <br /> Logo, não tem proque voc~e acessar o hibernate, DAOs e etc. pela View, se você precisar colocar sua camada de persistência numa máquina diferente, é outro papo, mas aidna assim a comunicação é entre a camada do meio e a de persistência <img src="http://www.guj.com.br/images/smilies/8a80c6485cd926be453217d59a84a888.gif" border="0"><br /> <br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/115857.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/115857.java</link>
				<pubDate><![CDATA[Wed, 23 Mar 2005 13:36:03]]> GMT</pubDate>
				<author><![CDATA[ pcalcado]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ [quote=cv]Eh melhor fazer uma aplicacao primeiro, refatorar ela e tirar os pedacos genericos e transformar num framework do que tentar advinhar o que eh generico e o que nao eh. Alias, risque a palavra advinhar do dicionario.[/quote]<br /> <br /> É exatamente isso Carlos, queremos criar por exemplo um padrão para todas aplicações por exemplo conversarem com o banco. Estamos entre duas opções, Hibernate e Entity Beans. Ou seja, toda aplicação, ou todo processo que quiser conversar com o banco, deverá passar pelo DAO e este conversará com o Hibernate/Entity<br /> <br /> [quote=cv]O que acontece se o objeto nao puder seguir o padrao init/execute/finalize[/quote]<br /> <br /> Como assim?Isto não será por objeto, e sim por caso de uso, os métodos serão na verdade preCondicoes(), execute() e posCondicoes(). Onde serão responsáveis respectivamente por executar pré condições antes do caso de uso, executá-lo em si, e alguma tarefa que deva ser executada após a sua finalização.<br /> <br /> <br /> [quote=cv] - Por que ter uma "camada" de DAOs se voce nem sabe de que tipo de persistencia e nem de que tipo de queries voce precisa?[/quote]<br /> A persistência será Hibernate ou Entity Beans, o que não quero e creio que não seria recomendável, é dentro do meu objeto de negócio chamar diretamente os métodos do Hibernate/Entity<br /> <br /> [quote=cv] - finalize() eh um metodo que ja tem na java.lang.Object e serve pra outra coisa. Voce vai ter que arrumar outro nome[/quote]<br /> Na verdade o nome dele é posCOndicoes(). É que não quis estragar a surpresa... ;o)]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/115858.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/115858.java</link>
				<pubDate><![CDATA[Wed, 23 Mar 2005 13:37:44]]> GMT</pubDate>
				<author><![CDATA[ Rafael Nunes]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ [quote=Luca] 1. Suponho que além do obrigatório e basico Effective Java, você leu os 2 livros do Rod Johnson e percebeu claramente o trampo que virá pela frente.<br /> [/quote]<br /> Acho que não é uma boa hora pra perguntar quem é Rod Johnson... <img src="http://www.guj.com.br/images/smilies/283a16da79f3aa23fe1025c96295f04f.gif" border="0"> <br /> <br /> [quote] 2. É óbvio que você conhece muito bem os patterns Template Method, Strategy, Command, FrontController, ServiceToWorker e outros mais. [/quote]<br /> Na verdade só o FrontController, que é o que usamos aqui hoje.<br /> <br /> [quote] 3. Tenho a certeza que você já estudou e usou muito os frameworks atuais como Struts, Webwork e Spring [/quote]<br /> Struts e Webwork sim, mas acho meio complicado implementar eles pras necessidades que temos aqui.<br /> <br /> [quote] 4. Por fim você realmente precisa reinventar a roda. [/quote]<br /> O que ando um pouco receoso é de usar uma porrada de frameworks e componentes terceiros e acabar tendo de ajustar minhas aplicações pras necessidades deles.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/115862.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/115862.java</link>
				<pubDate><![CDATA[Wed, 23 Mar 2005 13:43:19]]> GMT</pubDate>
				<author><![CDATA[ Rafael Nunes]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ [quote=pcalcado] JSP longe dos .class?<br /> Isso me diz que você está usando JSP como se fosse ASP, e isso por si só já é um problema<br /> (aliás, conceitualmente isso não é possível, já que suas JSP viram .class ) [/quote]<br /> Na verdade hoje a estrutura está assim, uma máquina com o tomcat rodando os JSP e uma outra rodando os .java<br /> <br /> [quote] Passando ao próximo passo, sua camada de View não deve contatar a camada onde o Hibernate está localizado, para isso coloque uma camada de modelo/negócios no meio. [/quote]<br /> É exatamente isso que eu tentei fazer com meus Business Objects e DAO´s.<br /> <br /> [quote] Nessa camada ficam os objetos de domínio, para acessá-la você pode até utilizar um Stateless Session Bean se estiverem em computadores diferentes, ams não faça isso se não souber quando NÃO utilizar um EJB[/quote]<br /> Hoje já utilizamos o Session Bean pra isso, e provavelmente é o que continuaremos a utilizar, pois não encontrei maneira mais fácil.<br /> <br /> [quote] Logo, não tem proque voc~e acessar o hibernate, DAOs e etc. pela View, se você precisar colocar sua camada de persistência numa máquina diferente, é outro papo, mas aidna assim a comunicação é entre a camada do meio e a de persistência[/quote]<br /> <br /> Acho que não me expliquei direito. É exatamente isso que não quero fazer, convesar diretamente minha View com minha camada de persistência. Por isso que coloquei os BO e DAO´s. E provavelmente teremos a camada de persistência em uma outra máquina e pra isso acho que será mais Session Beans pra conversar DAO com Persistência]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/115866.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/115866.java</link>
				<pubDate><![CDATA[Wed, 23 Mar 2005 13:49:48]]> GMT</pubDate>
				<author><![CDATA[ Rafael Nunes]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ uhhhmmm... Rafael, acho que antes de mais nada, você precisa entender o conceito de "Domain Model" de uma aplicação:<br /> <br /> <a class="snap_shots" href="http://www.martinfowler.com/eaaCatalog/domainModel.html" target="_blank" rel="nofollow">http://www.martinfowler.com/eaaCatalog/domainModel.html</a><br /> <br /> E um dos problemas que causam Domain Models ruins:<br /> <br /> <a class="snap_shots" href="http://www.martinfowler.com/bliki/AnemicDomainModel.html" target="_blank" rel="nofollow">http://www.martinfowler.com/bliki/AnemicDomainModel.html</a><br /> <br /> (quantas vezes esse link já foi dado no GUJ?)<br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/115870.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/115870.java</link>
				<pubDate><![CDATA[Wed, 23 Mar 2005 13:56:26]]> GMT</pubDate>
				<author><![CDATA[ pcalcado]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ Vou dar uma lida nestes artigos.(O que provavelmente vai me obrigar a abrir uma outra thread pra tirar as dúvidas que certamente terei).<br /> <br /> Só para mim, acho que você já recomendou umas 10 vezes esse link... <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0"> <br /> <br /> <br /> Edit:<br /> A impresão que tenho olhando essa pseudo-arquitetura que fiz, é que posso gerar um enorme trabalho desnecessário, ou engessar demais o desenvolvimento das aplicações, como o cachorro do cv. Mas é só uma impressão, tipo que eu to sempre esquecendo algo quando saio pra viajar. Talvez sim, talvez não.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/115874.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/115874.java</link>
				<pubDate><![CDATA[Wed, 23 Mar 2005 13:59:42]]> GMT</pubDate>
				<author><![CDATA[ Rafael Nunes]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ Quanto a JSP numa máquina e ".class" em outra não faz a menor diferença. Basta apontar o form da sua JSP para o Servlet correto na outra máquina.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/115877.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/115877.java</link>
				<pubDate><![CDATA[Wed, 23 Mar 2005 14:02:36]]> GMT</pubDate>
				<author><![CDATA[ Filipe Sabella]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ Cacete, isso que é especialização, Lipe! Eu quero ter um servidor de config files também <img src="http://www.guj.com.br/images/smilies/ed515dbff23a0ee3241dcc0a601c9ed6.gif" border="0">]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/115886.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/115886.java</link>
				<pubDate><![CDATA[Wed, 23 Mar 2005 14:13:28]]> GMT</pubDate>
				<author><![CDATA[ pcalcado]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ Isso me cheira uma serviço para TOP (Table oriented programming).<br /> <br /> Alguém já ouviu falar ?<br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/115887.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/115887.java</link>
				<pubDate><![CDATA[Wed, 23 Mar 2005 14:15:24]]> GMT</pubDate>
				<author><![CDATA[ jprogrammer]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ [quote]Quanto a JSP numa máquina e ".class" em outra não faz a menor diferença. Basta apontar o form da sua JSP para o Servlet correto na outra máquina.[/quote]<br /> <br /> É que neste caso, ao menos na estrutura da aplicação que ja tem rodando aqui, os servlets estão na mesma máquina do JSP, o que está em máquina diferente são os EJB´s e Business Objects.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/115888.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/115888.java</link>
				<pubDate><![CDATA[Wed, 23 Mar 2005 14:18:05]]> GMT</pubDate>
				<author><![CDATA[ Rafael Nunes]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ Não tem uma thread aqui no guj sobre isso?<br /> <br /> Esse negóciod e tabelas é engraçado... vamos colcoar tudo em tabelas e as manipular! Claro, mas... não é isso que programas estruturados fazem com registros, struts, resultsets, datasets...?]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/115889.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/115889.java</link>
				<pubDate><![CDATA[Wed, 23 Mar 2005 14:18:06]]> GMT</pubDate>
				<author><![CDATA[ pcalcado]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ hehe Shoes <img src="http://www.guj.com.br/images/smilies/283a16da79f3aa23fe1025c96295f04f.gif" border="0"><br /> <br /> Rafael, então realmente precisa de uma estrutura de comunicação. EJBs fazem o serviço para você, mas se quiser, pode dar uma olhada no [url=http://www.retrogui.com/cgi-bin/wiki_dualrpcserver.pl/DualRpcServer]DualRpc[/url].<br /> Pode resolver o seu problema com muito mais facilidade.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/115893.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/115893.java</link>
				<pubDate><![CDATA[Wed, 23 Mar 2005 14:20:57]]> GMT</pubDate>
				<author><![CDATA[ Filipe Sabella]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ O Business Delegate não pode ficar na mesma máquina que os JSP/Servlets e invocar os EJB´s via JNDI que aponta pra outra máquina?<br /> <br /> Pra que DualRpc?]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/115898.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/115898.java</link>
				<pubDate><![CDATA[Wed, 23 Mar 2005 14:30:04]]> GMT</pubDate>
				<author><![CDATA[ danieldestro]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ É que aqui tá sobrando dinheiro e máquinas, então provavelmente terão uma máquina pros servlets e jsp´s; uma máquina pros Business Object e DAO´s, e uma outra máquina pra persistência.<br /> Talvez tenham uma pra jogar paciência nos horários de folga... ;o)]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/115900.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/115900.java</link>
				<pubDate><![CDATA[Wed, 23 Mar 2005 14:35:53]]> GMT</pubDate>
				<author><![CDATA[ Rafael Nunes]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ [quote=danieldestro]Pra que DualRpc?[/quote]<br /> Ao invés de EJBs.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/115907.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/115907.java</link>
				<pubDate><![CDATA[Wed, 23 Mar 2005 14:49:29]]> GMT</pubDate>
				<author><![CDATA[ Filipe Sabella]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ [quote=LIPE]<br /> Ao invés de EJBs.[/quote]<br /> <br /> Invés de RMI, tu diz, né?]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/115908.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/115908.java</link>
				<pubDate><![CDATA[Wed, 23 Mar 2005 14:52:11]]> GMT</pubDate>
				<author><![CDATA[ pcalcado]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ Tudo a mesma coisa.<br /> <br /> Lipe, que está sempre certo.<br /> <br /> <img src="http://www.guj.com.br/images/smilies/49869fe8223507d7223db3451e5321aa.gif" border="0">]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/115912.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/115912.java</link>
				<pubDate><![CDATA[Wed, 23 Mar 2005 14:58:36]]> GMT</pubDate>
				<author><![CDATA[ Filipe Sabella]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ Padrões, Java, J2EE, EJB, Hibernate, Patterns, Domain Model, Anemic Domain Model, DualRPC.......<br /> <br /> Estou considerando seriamente a possibilidade de ir pro interior vender patos e javali. Aliás, carne de javali é bem saborosa, interessa?]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/115917.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/115917.java</link>
				<pubDate><![CDATA[Wed, 23 Mar 2005 15:06:33]]> GMT</pubDate>
				<author><![CDATA[ Rafael Nunes]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ hehe Rafael, por isso simplesmente falei que seu plano parecia bom. Quando começa a entrar nesse mundo, melhor ir devagar, sem se preocupar tanto. Tenha consciência que quanto mais estudar, mais nojo vai ter do código que escreveu.<br /> <br /> Por isso, sendo contrário ao que falaram, atenha-se ao seu plano básico. Mas saiba que, sem a experiência necessária, é _bastante_ improvável que saia um framework do seu trabalho todo; é mais provável surgir uma solução completamente engessada e fedida (como aconteceu comigo). E tudo bem! Já que é para aprendizado, se esbalde com seus erros <img src="http://www.guj.com.br/images/smilies/283a16da79f3aa23fe1025c96295f04f.gif" border="0">]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/115926.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/115926.java</link>
				<pubDate><![CDATA[Wed, 23 Mar 2005 15:14:07]]> GMT</pubDate>
				<author><![CDATA[ Filipe Sabella]]></author>
			</item>
			<item>
				<title>Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ Felizmente disso eu tenho consciência, que daqui há alguns meses ou anos, vou achar esta minha solução uma afronta a moral e bons costumes. Mas de alguma forma eu tenho de começar.<br /> <br /> E em todo caso, sempre haverão patos e javalis.... ;o)]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/115931.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/115931.java</link>
				<pubDate><![CDATA[Wed, 23 Mar 2005 15:22:50]]> GMT</pubDate>
				<author><![CDATA[ Rafael Nunes]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ Sinceramente, não faz sentido fazer um framework do zero a menos que você esbarre em um problema que não foi resolvido de forma satisfatória. Se você não pode usar outros frameworks, não pode usar Hibernate também <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0"> e, lógico que isso não faz o menor sentido. Assim como escrever um framework do zero por escrever...]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/115932.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/115932.java</link>
				<pubDate><![CDATA[Wed, 23 Mar 2005 15:23:37]]> GMT</pubDate>
				<author><![CDATA[ mister__m]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ Michael, um framework pode ser a soma de outros frameworks também oras. Contudo, considerando isso, tem razão sobre o uso deles; o Rafael poderia muito bem usar Webwork de um lado, a parte de comunicação do Genesis no meio e Hibernate no fim.<br /> <br /> Mas aí o aprendizado seria bem menor. Pense nos pobres patinhos <img src="http://www.guj.com.br/images/smilies/ed515dbff23a0ee3241dcc0a601c9ed6.gif" border="0">]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/115943.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/115943.java</link>
				<pubDate><![CDATA[Wed, 23 Mar 2005 16:01:16]]> GMT</pubDate>
				<author><![CDATA[ Filipe Sabella]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ [quote]Michael, um framework pode ser a soma de outros frameworks também oras[/quote]<br /> <br /> Nunca disse que não Ele é que mencionou antes nessa thread que não podia usar frameworks de terceiros. Isso que quis enfatizar: não faz sentido não usar! <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0"> Inclusive, a melhor solução a longo prazo sempre acaba sendo construir um framework em cima de outros frameworks que você usa nos seus projetos. Mas isso só pode ser feito após alguns projetos <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0"><br /> <br /> [quote]o Rafael poderia muito bem usar Webwork de um lado, a parte de comunicação do Genesis no meio e Hibernate no fim. <br /> <br /> Mas aí o aprendizado seria bem menor[/quote]<br /> <br /> Não. Depende do que você quer aprender. Se você faz tudo no braço (inclusive a persistência), você aprende as coisas no nível mais baixo, mas a tendência é que sua "overall architecture" seja uma porcaria. E, no dia a dia, é (geralmente) muito mais importante que você saiba escrever uma solução clara e fácil de manter, não a que é mais eficiente que o Hibernate, por exemplo.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/115949.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/115949.java</link>
				<pubDate><![CDATA[Wed, 23 Mar 2005 16:12:25]]> GMT</pubDate>
				<author><![CDATA[ mister__m]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ Tava considerando aqui a utilização de um framework tipo Webwork, pra fazer o controle. Mas acho que ele iria gerar um trabalho desnecessário.<br /> O que ele faria é simplesmente direcionar as chamadas da View pra camada dos Business Object. Aí lá vinha mais bibliotecas, mais xml, mais configuração, e isso eu poderia resolver com um simples servlet, estou errado?]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/115965.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/115965.java</link>
				<pubDate><![CDATA[Wed, 23 Mar 2005 16:39:38]]> GMT</pubDate>
				<author><![CDATA[ Rafael Nunes]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ Só um comentário sobre o uso indiscriminado do padrão Command, e o sistema altamente procedural resultante.<br /> <br /> Eu conheço um certo sistema produzido com algo muito próximo dessa estrutura que você sugeriu, só que ele usa Session Beans como os "business objects" do framework que vc fez.<br /> <br /> Resultado? Hoje existem quase 400 Session Beans, cada um faz uma coisa apenas (adiciona usuário, remove usuário), o deployment descriptor é ilegível (ok, nenhum descriptor é lá muito legível...) e simplesmente [b]não[/b] escala.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/115969.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/115969.java</link>
				<pubDate><![CDATA[Wed, 23 Mar 2005 16:49:14]]> GMT</pubDate>
				<author><![CDATA[ pcalcado]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ Hoje a gente já tem um ERP aqui que utiliza esse pattern Command. Utiliza Session Bean também, porém os Session Beans utilizam um Façade, só implementam um método que chama um business object.<br /> E temos um Session Bean por módulo, por exemplo, um Session Bean pra módulo financeiro, um Session Bean pra módulo acadêmico, outro pra relatório.<br /> Ao invés de termos um Session Bean pra cada caso de uso, temos um Session Bean com milhares de métodos, e esses chamam os objetos de negócio.<br /> <br /> <br /> Ps:Tá muito 'procedural' esta arquitetura?]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/115971.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/115971.java</link>
				<pubDate><![CDATA[Wed, 23 Mar 2005 16:55:40]]> GMT</pubDate>
				<author><![CDATA[ Rafael Nunes]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ [quote=LIPE][quote=danieldestro]Pra que DualRpc?[/quote]<br /> Ao invés de EJBs.[/quote]<br /> <br /> Você ainda pode usar JNDI com classes simples no Container. Não Pode?]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/116012.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/116012.java</link>
				<pubDate><![CDATA[Wed, 23 Mar 2005 18:54:32]]> GMT</pubDate>
				<author><![CDATA[ danieldestro]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ Olá<br /> <br /> [quote=Rafael Nunes]<br /> Acho que não é uma boa hora pra perguntar quem é Rod Johnson... <img src="http://www.guj.com.br/images/smilies/283a16da79f3aa23fe1025c96295f04f.gif" border="0"> <br /> [/quote]<br /> <br /> Rod Johnson, autor de J2EE Design and Development, um dos melhores livros de arquitetura J2EE que conheço e cujo capítulo 4 é de leitura [b]obrigatória[/b] para todo cara que pretende escrever código Java além do Hello World. Ele escreveu também J2EE Development without EJB e é o criador do Spring.<br /> <br /> [quote=Rod Johnson, J2EE Design and Development, pág 166]<br /> Why (and How) Not to reinvent the Wheel[/quote]<br /> <br /> São cerca de cinco páginas dizendo o que o CV já disse, que eu repeti e o Michael corroborou.<br /> <br /> Eu sou tão fã do Rod Johnson que vou afirmar o seguinte: assim como alguns dizem que programador Java que nunca leu Effective Java tem grande chance de escrever código merda e ilegível, arquiteto de sistemas que nunca leu Rod Johnson tem grande chance de criar sistemas dificeis de manter e extender (como casas que não servem para morar). <br /> <br /> E finalmente os patterns que citei são os mínimos necessários para escrever um framework meia boca. Se você não conhece Template Method e Strategy tem grande chance de também nunca ter ouvido falar em inversão de controle. O Service To Worker é como o Command é usado pelos frameworks para preparar a resposta dinâmica para a camada de apresentação. A importância de conhece-lo bem é para não usar Dispatcher View que viola o MVC.<br /> <br /> []s<br /> Luca]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/116040.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/116040.java</link>
				<pubDate><![CDATA[Wed, 23 Mar 2005 21:38:03]]> GMT</pubDate>
				<author><![CDATA[ Luca]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ Grato, vou dar uma olhada nesses patterns.<br /> <br /> Eu acho que acabei usando o termo errado, creio eu que o que estou fazendo não é bem um framework, é tipo criar um padrão, um contrato para o desenvolvimento das aplicações internas.<br /> Andei reavaliando o esquema todo, e me incomodou um pouco esta estrutura de Command, de toda regra que negócios ter de seguir um fluxo herdado da interface. Mas me incomoda mais ainda deixar o desenvolvimento dos objetos de negócio a esmo, não criar um contrato para isso. Principalmente porque a maioria dos programadores são ou vieram do mundo procedural, o que eu queria era tipo obrigá-los a programar OO(sim, eu sei que é bem difícil eu conseguir isso se não houver um comprometimento deles, e não, ameaças de morte/demissão/desconto de salário não são viáveis neste caso).<br /> <br /> Alguma sugestão?]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/116127.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/116127.java</link>
				<pubDate><![CDATA[Thu, 24 Mar 2005 10:26:32]]> GMT</pubDate>
				<author><![CDATA[ Rafael Nunes]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ [quote=Rafael Nunes]Grato, vou dar uma olhada nesses patterns.<br /> <br /> Eu acho que acabei usando o termo errado, creio eu que o que estou fazendo não é bem um framework, é tipo criar um padrão, um contrato para o desenvolvimento das aplicações internas.<br /> Andei reavaliando o esquema todo, e me incomodou um pouco esta estrutura de Command, de toda regra que negócios ter de seguir um fluxo herdado da interface. Mas me incomoda mais ainda deixar o desenvolvimento dos objetos de negócio a esmo, não criar um contrato para isso. Principalmente porque a maioria dos programadores são ou vieram do mundo procedural, o que eu queria era tipo obrigá-los a programar OO(sim, eu sei que é bem difícil eu conseguir isso se não houver um comprometimento deles, e não, ameaças de morte/demissão/desconto de salário não são viáveis neste caso).<br /> <br /> Alguma sugestão?[/quote]<br /> <br /> Matá-los'<img src="http://www.guj.com.br/images/smilies/0a4d7238daa496a758252d0a2b1a1384.gif" border="0">'<br /> <br /> talvez fosse interesante mostrar porque eles deveriam aprender OO? <br /> em que esta padronização sua melhoraria todo o processo?<br /> E a você se realmente é necessária uma mudança nesse sentido?<br /> <br /> Caso consiga algum volutário depois disso <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0"><br /> pode iniciar com eles, com o tempo os demais vão se juntando ao grupo.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/116130.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/116130.java</link>
				<pubDate><![CDATA[Thu, 24 Mar 2005 10:37:59]]> GMT</pubDate>
				<author><![CDATA[ skill_ufmt]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ [quote] talvez fosse interesante mostrar porque eles deveriam aprender OO? [/quote]<br /> A gente trabalha com uma plataforma OO, não faria sentido programar proceduralmente com ela.<br /> <br /> <br /> [quote] em que esta padronização sua melhoraria todo o processo? [/quote]<br /> Hoje temos uma equipe de 9 programadores, todos vieram e ainda programam em tecnologias procedurais. O problema é que hoje na hora do desenvolvimento, cada um cria as classes, os objetos a esmo. Acha o jeito mais fácil ou mais cômodo de fazer e sair criando classes e métodos. Pode imaginar como está a arquitetura e manutenção desta aplicação?<br /> <br /> [quote] E a você se realmente é necessária uma mudança nesse sentido?[/quote]<br /> Sim, pelos motivos acima.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/116150.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/116150.java</link>
				<pubDate><![CDATA[Thu, 24 Mar 2005 11:14:54]]> GMT</pubDate>
				<author><![CDATA[ Rafael Nunes]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ Uma sugestão que pode ajudar em casos assim, mas não é todo mundo que pode, é contratar um consultor especializado.<br /> <br /> Só cuidado com picaretas, e essa é a parte difícil em contratar um consultor. Desconfie de muitas siglas de empresas e certificações pop.<br /> <br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/116153.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/116153.java</link>
				<pubDate><![CDATA[Thu, 24 Mar 2005 11:21:49]]> GMT</pubDate>
				<author><![CDATA[ pcalcado]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ [quote=Rafael Nunes]Principalmente porque a maioria dos programadores são ou vieram do mundo procedural, o que eu queria era tipo obrigá-los a programar OO(sim, eu sei que é bem difícil eu conseguir isso se não houver um comprometimento deles, e não, ameaças de morte/demissão/desconto de salário não são viáveis neste caso).[/quote]<br /> <br /> A sugestao do Kiviano eh otima, mas esconder os corpos eh [b]sempre[/b] uma tarefa ingrata. O que voce pode fazer eh uma workshopzinha rapida de Test-Driven Development, e rejeitar qualquer codigo no CVS que nao tenha um teste unitario provando que ele deve existir, e que ele funciona. Enfase no "provando que ele deve existir", por favor.<br /> <br /> Demora uma ou duas semanas pra montar um sistema de build automatizado que toma conta disso pra voce, caso voce nao tenha nenhuma experiencia com a coisa (de uma olhada no DamageControl, CruiseControl e CruiseControl.NET).<br /> <br /> Isso, por si so, ja aumenta a qualidade do codigo - mesmo que seja uma porcaria nao-OO, pelo menos voce sabe se funciona ou nao inspecionando os testes unitarios, e como tem sempre uma base de testes por perto, fica facil refatorar e fazer a coisa mais OO.<br /> <br /> Outro esquema que pode ajudar bastante eh se livrar de metade das maquinas da sala, e botar todo mundo pra fazer pair programming. Assim, a comunicacao na equipe aumenta, e a troca de conhecimentos e aprendizados se agiliza. Dai, ja que voce ta fazendo integracao continua e pair programming, mesmo, aproveite pra dar uma lida sobre XP, e adapte as ideias que mais convierem (ou force aqueles que decidem esse tipo de coisa a adota-las. Armas apontadas pra cabeca do individuo e/ou familiares dele geralmente resolvem essas decisoes com uma eficacia incrivel) <img src="http://www.guj.com.br/images/smilies/8a80c6485cd926be453217d59a84a888.gif" border="0">]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/116156.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/116156.java</link>
				<pubDate><![CDATA[Thu, 24 Mar 2005 11:26:41]]> GMT</pubDate>
				<author><![CDATA[ cv]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ [quote=cv]Demora uma ou duas semanas pra montar um sistema de build automatizado que toma conta disso pra voce, caso voce nao tenha nenhuma experiencia com a coisa (de uma olhada no DamageControl, CruiseControl e CruiseControl.NET).[/quote]<br /> <br /> Samuel esnobe diz que nao demora nao <img src="http://www.guj.com.br/images/smilies/ed515dbff23a0ee3241dcc0a601c9ed6.gif" border="0"> <br /> <br /> Montei o ambiente em 4 dias com DamageControl, Maven, CVS e Eclipse. Ficou bem legal (servidor HPUX rodando DC e Maven, repositorio central do Maven para desenvolvedores e servidor, CVS em outro servidor e Eclipse para desenvolvimento) ... recomendo, o trabalho de manutencao é incrivelmente baixo (quase nulo) depois que estiver tudo redondo.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/116165.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/116165.java</link>
				<pubDate><![CDATA[Thu, 24 Mar 2005 11:40:52]]> GMT</pubDate>
				<author><![CDATA[ smota]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ [b]smota[/b], quer tentar "implantar" essa idéia aqui? PVT-me.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/116167.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/116167.java</link>
				<pubDate><![CDATA[Thu, 24 Mar 2005 11:47:10]]> GMT</pubDate>
				<author><![CDATA[ danieldestro]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ [quote=Rafael Nunes]<br /> Sim, pelos motivos acima.[/quote]<br /> <br /> <br /> Fiz as indagações porque hoje há um grande BOOM entorno de OO,<br />  Padrões, e bla bla, e ta cheio de especialistas nisso <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0"><br /> <br /> Aqui mesmo quando aparece um cara querendo saber fazer uma <br /> jsp + servlet, ja aparecem vários experts mandando o cara estudar padrões,<br />  que isso ta erado, que aquilo ta á errado.<br /> <br /> PS: foi ironia mesmo... <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0"><br /> <br /> Enfim, você nunca vai chegar a usar padrões se não sabe OO,<br />  e isso vale para seus desenvolvedores.<br /> A curva de aprendizado é muito ingrime, e quando você chegar ao topo dela, <br /> vai olhar pra baixo e dizer "putz, subi um degrau", <br /> ai quando tiver chegando no segundo vai olhar pra traz e dizer "putz, meu primeiro degrau não suporta o segundo" <br /> vamos reestudar, refatorar, reeaprender, e assim o ciclo segue.<br /> <br /> Só queria atentar ao fato de que não use OO, não use, Padrões, <br /> não use qualquer coisa se não tiver certeza de que no futuro vai agregar algum valor, <br /> e se não souber o que está fazendo.<br /> <br /> Do contrário continuará programando estruturalmetne o resto da vida mesmo usando Java. <br /> Ou acham que quem usa Java obrigatoriamente programa OO?<br /> <br /> é preciso tomar cuidado quando se diz vamos programar OO, <br /> maravilha, somos fodas, ai agente põe uns padrõezinhos aqui e <br /> ali e fica show.  Que show : ))<br /> <br /> no mais estude OO(sempre), padrões(sempre), e atentando ao fato de que sempre mudam, e que NÃO deve adotar a idéia de alguém completamente, mesmo este sendo O CARA, formule as suas idéias, e proponha novas idéias.<br /> <br /> <br /> PS2: saiu uma redação <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0"><br /> PS3: foi um desabafo sim <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0">]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/116170.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/116170.java</link>
				<pubDate><![CDATA[Thu, 24 Mar 2005 11:50:36]]> GMT</pubDate>
				<author><![CDATA[ skill_ufmt]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ Uma coisa que eu já vi funcionar e não é tão radical quanto a idéia do cv é atrelar o resultado do programador a métricas de software.<br /> <br /> Diga que existe uma limite X para LOC/método, metodos/classe, atributos/classe, complexidade ciclomática e violações da lei de Demeter.<br /> <br /> O código inicial vai ser caótico, mas em pouco tempo ou cai a ficha que sem OO não vai para frente ou explode.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/116184.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/116184.java</link>
				<pubDate><![CDATA[Thu, 24 Mar 2005 12:11:03]]> GMT</pubDate>
				<author><![CDATA[ louds]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ [quote=louds]Uma coisa que eu já vi funcionar e não é tão radical quanto a idéia do cv é atrelar o resultado do programador a métricas de software.<br /> <br /> Diga que existe uma limite X para LOC/método, metodos/classe, atributos/classe, complexidade ciclomática e violações da lei de Demeter.<br /> <br /> O código inicial vai ser caótico, mas em pouco tempo ou cai a ficha que sem OO não vai para frente ou explode.[/quote]<br /> <br /> isso não cairia numa prática de métodologia agil chamada refactoring? <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0">]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/116187.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/116187.java</link>
				<pubDate><![CDATA[Thu, 24 Mar 2005 12:14:41]]> GMT</pubDate>
				<author><![CDATA[ skill_ufmt]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ [quote=louds]Diga que existe uma limite X para LOC/método, metodos/classe, atributos/classe, complexidade ciclomática e violações da lei de Demeter.[/quote]<br /> <br /> Em um outro projeto a gente colocou isso no CVS... um commit demorava alguns minutinhos, pq ele tinha que analisar o codigo antes de aceitar o commit, mas valia a pena. O codigo so entrava no CVS se, e somente se, ele nao tivesse nenhum problema com sintaxe, imports inuteis, nenhum warning nem utilizacao de metodo ou API deprecada. Depois, a gente foi deixando a coisa mais divertida: nenhum commit passava se o codigo tivesse alguma dependencia circular, ou se o cliente usasse classes do servidor (ele tinha que falar com o servidor atraves do pacote de classes comuns), e todos os arquivos .java tinham que ter o copyright e a licenca no topo.<br /> <br /> Quando alguem pegava uma classe pra editar que violasse algum desses requisitos, tinha que arrumar ou nao fazia commit. Em 6 semanas o codigo tava lindinho de novo <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0">]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/116206.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/116206.java</link>
				<pubDate><![CDATA[Thu, 24 Mar 2005 12:38:23]]> GMT</pubDate>
				<author><![CDATA[ cv]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ Kivanio, sei que há uma certa tendência em modismo a querer aplicar OO em tudo. Sei que ainda falta muuuito, mas muito a se estudar, porém de algum lugar tenho de começar, se for deixar pra usar este tipo de coisa quando for um expert, creio que ainda passaremos uns bons anos produzindo lixo. Concorda?<br /> <br /> Quanto a dica do Phillip de contratatr um consultor eu cheguei a cogitar, porém foi refutada no primeiro comentário que fiz. Por um lado é ruim pois sei que vou quebrar muito a cabeça pra resolver coisas simples que poderiam ser resolvidas sem tanta burocracia, por outro creio que vai ser bom porque ou eu aprendo alguns padrões, ou aprendo como não utilizar certos padrões, de qualquer forma, aprendo.<br /> <br /> Quanto ao build no CVS que o cv dugeriu, nós usamos o Source Safe , vou tentar adaptar alguma dessas ou outra ferramenta nele, foi bem legal a idéia.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/116244.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/116244.java</link>
				<pubDate><![CDATA[Thu, 24 Mar 2005 13:59:25]]> GMT</pubDate>
				<author><![CDATA[ Rafael Nunes]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ [quote=Rafael Nunes]<br /> Quanto ao build no CVS que o cv dugeriu, nós usamos o Source Safe , vou tentar adaptar alguma dessas ou outra ferramenta nele, foi bem legal a idéia.[/quote]<br /> <br /> Concordo, mas cuidado para não criar um clima ruim, deixe claro os propósitos da ferramenta, antes que alguém coloque um desenho seu como alvo de tachinhas no banheiro <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0"><br /> <br /> Aproveita, entra numa clínica dessas por aí, isntala o Subversion e larga as drogas <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0"> Esse Microsoft SourceSafado ninguém merece!]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/116248.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/116248.java</link>
				<pubDate><![CDATA[Thu, 24 Mar 2005 14:09:01]]> GMT</pubDate>
				<author><![CDATA[ pcalcado]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ Hun, creio que deu pra amadurecer um pouco a idéia, já faço uma nova imagem da minha arquitetura:<br /> <br /> [img]http://zuckuss87.tripod.com/cats_vs_dogs/images/hurt_dog.jpg[/img]]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/116271.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/116271.java</link>
				<pubDate><![CDATA[Thu, 24 Mar 2005 15:17:49]]> GMT</pubDate>
				<author><![CDATA[ Rafael Nunes]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ Achei interessante essa abordagem de não deixar o código ser commitado se não está de acordo com algumas métricas e/ou padrões de codificação.<br /> <br /> Mas como vocês estão fazendo essa análise do código antes do commit no cvs? Através de um build file do ant?<br /> <br /> Desculpe minha ignorância do assunto...  <img src="http://www.guj.com.br/images/smilies/c30b4198e0907b23b8246bdd52aa1c3c.gif" border="0"> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/123644.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/123644.java</link>
				<pubDate><![CDATA[Wed, 20 Apr 2005 08:46:41]]> GMT</pubDate>
				<author><![CDATA[ eagnes]]></author>
			</item>
			<item>
				<title>Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ Voce pode fazer isso com um buildfile do ant, sim, mas a gente tava usando um scriptzao Python bonito. Configurar o CVS (ou SVN) pra isso eh super simples, e qualquer livro ou artigo mais detalhado no assunto te ajuda.<br /> <br /> O importante eh nao tornar as sessoes de commit infernais, tambem... pq antes codigo ruim gerenciado pelo CVS do que codigo ruim esquecido na maquina de alguem...]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/123692.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/123692.java</link>
				<pubDate><![CDATA[Wed, 20 Apr 2005 10:32:27]]> GMT</pubDate>
				<author><![CDATA[ cv]]></author>
			</item>
			<item>
				<title>Re: Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ Interessante cv! Eu andei pesquisando e pelo que entendi tenho que adicionar um script ou algo parecido no commitinfo no servidor CVS. Então antes de cada commit o CVS vai validar o arquivo através deste script... certo?<br /> <br /> Eu achava que essa validação era feita no cliente, mas aí ficava meio sem sentido a coisa...<br /> <br /> Valeu pela resposta!<br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/123769.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/123769.java</link>
				<pubDate><![CDATA[Wed, 20 Apr 2005 12:31:24]]> GMT</pubDate>
				<author><![CDATA[ eagnes]]></author>
			</item>
			<item>
				<title>Arquitetura: tentativas, sugestões.</title>
				<description><![CDATA[ [quote=cv]Voce pode fazer isso com um buildfile do ant, sim, mas a gente tava usando um scriptzao Python bonito.[/quote]<br /> <br /> Share!  <img src="http://www.guj.com.br/images/smilies/908627bbe5e9f6a080977db8c365caff.gif" border="0">  <img src="http://www.guj.com.br/images/smilies/908627bbe5e9f6a080977db8c365caff.gif" border="0">]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/posts/preList/21873/125679.java</guid>
				<link>http://www.guj.com.br/posts/preList/21873/125679.java</link>
				<pubDate><![CDATA[Wed, 27 Apr 2005 22:20:05]]> GMT</pubDate>
				<author><![CDATA[ plentz]]></author>
			</item>
	</channel>
</rss>