<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>PauloMotta.pro &#187; SISTEMA</title>
	<atom:link href="http://www.paulomotta.pro.br/tag/sistema/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.paulomotta.pro.br</link>
	<description>&#34;Qualquer tecnologia suficientemente avançada é indistinguível da mágica&#34; - Arthur C. Clarke</description>
	<lastBuildDate>Tue, 10 Jan 2012 03:00:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Uma bibliografia JavaEE mais atual</title>
		<link>http://www.paulomotta.pro.br/2011/02/22/uma-bibliografia-javaee-mais-atual/</link>
		<comments>http://www.paulomotta.pro.br/2011/02/22/uma-bibliografia-javaee-mais-atual/#comments</comments>
		<pubDate>Tue, 22 Feb 2011 11:00:00 +0000</pubDate>
		<dc:creator>prmottajr</dc:creator>
				<category><![CDATA[Bibliografias]]></category>
		<category><![CDATA[Principal]]></category>
		<category><![CDATA[ANÁLISE]]></category>
		<category><![CDATA[Banco de Dados]]></category>
		<category><![CDATA[JAVA]]></category>
		<category><![CDATA[Java EE]]></category>
		<category><![CDATA[JPA]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[SISTEMA]]></category>
		<category><![CDATA[UML]]></category>

		<guid isPermaLink="false">http://www.paulomotta.pro.br/?p=1265</guid>
		<description><![CDATA[Há muito tempo, meu primeiro post foi uma bibliografia sobre Java. Naquela época eu pensava em usar o site mais como apoio aos cursos que ministrava do que como um lugar para expressar meus pensamentos sobre tecnologia. De lá para cá muita coisa mudou, embora algunas daqueles livros continuem válidos. Resolvi então colocar aqui uma [...]]]></description>
			<content:encoded><![CDATA[<p>Há muito tempo, meu primeiro post foi uma bibliografia sobre Java. Naquela época eu pensava em usar o site mais como apoio aos cursos que ministrava do que como um lugar para expressar meus pensamentos sobre tecnologia.</p>
<p>De lá para cá muita coisa mudou, embora algunas daqueles livros continuem válidos. Resolvi então colocar aqui uma lista dos livros que um desevolvedor Java EE da atualidade deve ler para conseguir dominar esse ambiente, pelo menos são os livros básicos <img src='http://www.paulomotta.pro.br/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<ol>
<li><a href="http://www.submarino.com.br/produto/1/158382/utilizando+uml+e+padroes/franq=268087" target="_blank">Utilizando UML e Padrões do Craig</a> &#8211; livro obrigatório porque discute o que é desenvolver sistemas, fala de padrões de projeto e de como fazer a análise</li>
<li><a href="http://www.submarino.com.br/produto/1/1981750/franq=268087" target="_blank">Java Persistence com Hibernate</a> &#8211; detalha como funciona a API de persistência do Java, mas utiliza muitos detalhes relacionados ao Hibernate. O livro é muito bom porque discute em detalhes todos os problemas relacionados ao uso de bancos de dados relacionais com linguagens de programação orientadas a objetos.</li>
<li><a href="http://www.submarino.com.br/produto/1/1974097/franq=268087" target="_blank">Core Java Server Faces</a> -  apresenta o framework da Sun para o desenvolvimento de aplicações web, desde que comecei a usar o JSF não quero mais saber de Struts <img src='http://www.paulomotta.pro.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  não vou falar mal do Struts porque usei muito no passado, mas o JSF realmente é um modelo mais robusto e interessante. Este livro cobre todos os detalhes de como usar e como escrever uma aplicação completa.</li>
<li><a href="http://www.submarino.com.br/produto/1/21565273/franq=268087" target="_blank">EJB3 em Ação</a> &#8211; Nenhuma aplicação Java EE está completa sem o uso de EJB, que é o modelo de componentes proposto pela Sun para a linguagem Java. Neste livro aprendemos como usar a especificação mais recente e como o uso de anotações facilita a vida do desenvolvedor que fica livre de muitos arquivos XML.<a href="http://www.submarino.com.br/produto/1/21565273/franq=268087" target="_blank"><br />
</a></li>
<li><a href="http://www.submarino.com.br/produto/1/21393669/franq=268087" target="_blank">EJB3 Profissional: Java Persistence API</a> &#8211; Um complemento ao livro de Hibernate, neste livro o leitor vai achar material relacionado apenas a especificação o que é muito bom porque, como costumo trabalhar, pode-se ficar totalmente independente da implementação de persitência.</li>
<li><a href="http://www.submarino.com.br/produto/1/21499577/franq=268087" target="_blank">Desenvolvendo Relatórios Profissionais Com iReport Para Netbeans IDE</a> &#8211; Como toda aplicação precisa de relatórios para estar completa, nada como usar uma ferramenta poderosa e baseada em ambiente gráfico para escrever os seus. Neste livro, aprendemos a usar o plugin para Netbeans de forma gradual e bem detalhada.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.paulomotta.pro.br/2011/02/22/uma-bibliografia-javaee-mais-atual/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Java 6 e a compatibilidade com Java 1.3</title>
		<link>http://www.paulomotta.pro.br/2011/01/18/java-6-e-a-compatibilidade-com-java-1-3/</link>
		<comments>http://www.paulomotta.pro.br/2011/01/18/java-6-e-a-compatibilidade-com-java-1-3/#comments</comments>
		<pubDate>Tue, 18 Jan 2011 15:48:15 +0000</pubDate>
		<dc:creator>prmottajr</dc:creator>
				<category><![CDATA[Principal]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Testes]]></category>
		<category><![CDATA[APLICAÇÃO]]></category>
		<category><![CDATA[JAVA]]></category>
		<category><![CDATA[JVM]]></category>
		<category><![CDATA[PROGRAMAÇÃO]]></category>
		<category><![CDATA[SISTEMA]]></category>

		<guid isPermaLink="false">http://www.paulomotta.pro.br/?p=1173</guid>
		<description><![CDATA[Eu tinha planejado escrever sobre outra coisa hoje, mas vou contar uma história triste. Em meados de 2002 eu fiz um sistema de controle de condomínios, na época o Java estava na versão 2 release 1.3, e ninguém tinha discutido ainda essa coisa de chamar o Java de versão 2 e ficar lançando releases. Uma [...]]]></description>
			<content:encoded><![CDATA[<p>Eu tinha planejado escrever sobre outra coisa hoje, mas vou contar uma história triste. Em meados de 2002 eu fiz um sistema de controle de condomínios, na época o Java estava na versão 2 release 1.3, e ninguém tinha discutido ainda essa coisa de chamar o Java de versão 2 e ficar lançando releases. Uma das grandes novidades daquele release é que havia suporte para impressoras em ambientes gráficos. Sim, embora você possa não acreditar nisso, houve um tempo em que não era possível usar Java para falar com impressoras ou portas seriais.</p>
<p>Usei então aquela API (hoje eu recomendo fortemente que você use iReport) para fazer os relatórios e boletos de pagamento, tudo impresso manualmente. É claro que quando rodou foi uma grande conquista, foi uma experiência bem legal. Mas vários anos se passaram e o Java evoluiu, até que recentemente colocamos o sistema para rodar sobre uma máquina virtual atual Java 6, tudo funcionou bem, e na hora não nos ocorreu de testar a impressão, já que toda a parte de telas e banco de dados estava funcionando.</p>
<p>Qual não foi nossa surpresa quando foi necessário imprimir boletos? Tudo fora de alinhamento, tudo fora de margem, mexemos, olhamos e nada. Troca a impressora, troca a máquina e nada. Só faltava trocar a máquina virtual, e não deu em outra, imprimiu corretamente.</p>
<p>É por isso que eu sempre falo que precisamos ter muito cuidado quando atualizamos as partes de um sistema, porque não sabemos o que outras pessoas podem ter mudado em suas próprias bibliotecas. É fundamental, antes de migrar, fazer um teste extenso de compatibilidade para garantir que tudo vai funcionar direitinho.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulomotta.pro.br/2011/01/18/java-6-e-a-compatibilidade-com-java-1-3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Testes de Usabilidade, Negligência na Análise e Testes Unitários Corporativos</title>
		<link>http://www.paulomotta.pro.br/2011/01/17/testes-de-usabilidade-negligencia-na-analise-e-testes-unitarios-corporativos/</link>
		<comments>http://www.paulomotta.pro.br/2011/01/17/testes-de-usabilidade-negligencia-na-analise-e-testes-unitarios-corporativos/#comments</comments>
		<pubDate>Mon, 17 Jan 2011 11:00:14 +0000</pubDate>
		<dc:creator>prmottajr</dc:creator>
				<category><![CDATA[Análise]]></category>
		<category><![CDATA[Inovação]]></category>
		<category><![CDATA[Principal]]></category>
		<category><![CDATA[Tendências]]></category>
		<category><![CDATA[Testes]]></category>
		<category><![CDATA[ANÁLISE]]></category>
		<category><![CDATA[ARQUITETURA]]></category>
		<category><![CDATA[EJB]]></category>
		<category><![CDATA[ICEFaces]]></category>
		<category><![CDATA[JAVA]]></category>
		<category><![CDATA[JPA]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[JUnit]]></category>
		<category><![CDATA[SISTEMA]]></category>

		<guid isPermaLink="false">http://www.paulomotta.pro.br/?p=1145</guid>
		<description><![CDATA[Eu confesso que esse conceito, Teste de Usabilidade (o artigo pode ser lido aqui), me surpreendeu e acho que merece uma atenção de nós que desenvolvemos software. Já temos muita dificuldade de testar o sistema para garantir que ele faz o que deve fazer do jeito que deve ser feito, que as integrações estão todas [...]]]></description>
			<content:encoded><![CDATA[<p>Eu confesso que esse conceito, Teste de Usabilidade (o artigo pode ser lido <a href="http://queue.acm.org/detail.cfm?id=1925091" target="_blank">aqui</a>), me surpreendeu e acho que merece uma atenção de nós que desenvolvemos software. Já temos muita dificuldade de testar o sistema para garantir que ele faz o que deve fazer do jeito que deve ser feito, que as integrações estão todas corretas e que as regras de negócio estão aderentes à análise (supondo que esta última esteja correta), imagine agora além disso tudo testar como está o fluxo de experiência do usuário no uso do software?</p>
<p>Mas é exatamente disso que os testes de usabilidade tratam, e no final das contas, temos mais é que testar isso tudo mesmo! Eu acho que quanto mais fácil se tornou desenvolver os sistemas, mais preguiçosos ficamos. Explico. Fácil de desenvolver porque hoje temos ferramentas de geração de código (que não existiam até bem pouco tempo) baseadas em padrões de projeto (que não estavam documentados até bem pouco tempo) que nos permitem simplesmente esquecer que certas partes precisam ser feitas. Muitas vezes tudo que precisamos fazer é introduzir pequenos detalhes específicos no código gerado, mas na maioria dos casos nem isso! Ficamos preguiçosos porque os sistemas cresceram, são agora corporativos, é muito menor a demanda de pequenas empresas por seus próprios softwares, com isso o analista que sai da faculdade demora a ter, se é que vai ter, contato direto com o cliente. Os analistas passam a ter um ponto focal centralizado a quem se reportam e acho que isso mascara a responsabilidade levando a uma negligência involuntária.</p>
<p>Antes que eu receba vários ataques de analistas raivosos, não estou aqui falando que todo analista de sistemas (e neste caso estou considerando a dualidade analista/programador) sejam negligentes. Embora eu já tenha trabalhado com muitos que eram realmente negligentes, estou falando aqui de uma negligência involuntária, é mais uma coisa de não fazer porque a percepção é de que o software é para uso próprio e poderemos conversar com o usuário e explicar.</p>
<p>Mesmo que o software seja para uso da própria empresa deve ser desenvolvido com todo o cuidado. Você pode ler mais sobre as minhas impressões sobre análise em:</p>
<ul>
<li><a href="http://www.paulomotta.pro.br/2009/08/01/como-se-faz-analise/" target="_blank">Como se faz análise</a></li>
<li><a href="http://www.paulomotta.pro.br/2009/08/04/antes-de-resolver-defina-o-problema/" target="_blank">Antes de resolver, defina o problema</a></li>
<li><a href="http://www.paulomotta.pro.br/2009/08/12/artesanato-de-software/" target="_blank">Artesanato de Software</a></li>
</ul>
<p>Mas agora de volta aos testes de usabilidade. Um problema que temos com os sistemas corporativos é que são muito difíceis de testar pelo alto grau de dependência entre as partes, dessa forma, os testes unitários são quase testes de integração. Uma alternativa é fazer os testes unitários das camadas mais básicas de forma a garantir que estas estão funcionando de forma que os testes das camadas superiores possam se basear nessas camadas, mas se fizermos isso quebramos a possibilidade de paralelizar nossa equipe já que não haverão módulos básicos suficientes para todos. O que acaba ocorrendo é que as pessoas codificam antes de criar seus testes (acredite o Test Driven Development funciona!) e acabam por nunca mais fazer os testes.</p>
<p>Além disso os sistemas corporativos têm uma tendência forte a serem baseados em arquitetura Web ou SOA precisando estar instalados em um servidor de aplicação para executar, o problema disso é que a fórmula:</p>
<p>(a implantação do sistema em um servidor + iniciar o servidor de aplicação) * (obter referências aos componentes a serem testados + executar os testes)</p>
<p>Não é facilmente incluída nos scripts de testes unitários. O que estou pensando em adotar é um esquema de testes semiautomatizado, ou seja, a parte de iniciar o servidor e implantar a aplicação é feita manualmente, a parte de obter referências e executar testes é feita com JUnit.  Até existe um <em>framework</em> JSFUnit, mas infelizmente ele tem uns problemas com o ICEfaces, eu até achei o ponto onde é o problema (depois de baixar o código fonte do JSFUnit e do ICEFaces dos repositórios e gastar umas 4 horas nisso direto), mas precisa de uma modificação no código que ainda não tive tempo de implementar e testar. Embora esta seja uma parte importante, ainda assim não testaria todo o sistema, porque não resolveria a parte dos EJBs e depois de testar com EJBUnit (e mais alguns vários) chegamos a conclusão que não existe um suporte efetivo para essa camada.</p>
<p>Um pouco dessa dificuldade vem do fato que os <em>frameworks</em> *Unit são ferramentas independentes, se a Oracle/Sun adotassem o *Unit como padrão da implementação do Java isso seria incrível para os desenvolvedores, isto porque toda vez que saísse uma nova versão da plataforma e suas especificações já teríamos uma ferramenta de testes para usar.</p>
<p>Estou realmente achando que essa coisa de testes unitários semiautomáticos pode dar certo para a camada EJB.</p>
<p>Uma outra alternativa mais radical (e que na verdade eu gosto muito) é fazer o sistema todo isolado de tecnologias específicas tal como EJB, ou seja, as regras de negócio ficam em classes puramente Java, também conhecidos como POJO &#8211; Plain Old Java Objects &#8211; algo que em português seria (livremente) traduzido para Bom e Velho Objeto Java. Isto funciona porque os POJOs podem ser facilmente testados com JUnit básico, e se você usar o EJB apenas para envolver os POJOs então você garante que as regras de negócio estão sendo testadas o que já é um grande alívio. Mas porque então não tem muita gente fazendo isso?</p>
<p>Para separar as regras de negócio você terá mais uma camada, mais um nível de indireção e consequentemente mais classes para gerenciar. Acredito que esta seja a maior barreira para se adotar essa prática, mas eu vou criar um sistema de testes (digo sistema, porque para testar esse tipo de coisa não adianta criar uma classezinha de teste) para avaliar o impacto de se criar essa camada extra.</p>
<p>Outro fator é que muitas vezes as regras de negócio têm dependências de dados que precisam ser supridas, se você conseguir prever todas as necessidades de acesso a banco de dados por exemplo e executar isso antes de chamar o método fica mais fácil de tratar, mas as vezes precisamos fazer uma busca em banco no meio de um processamento de regra de negócio. Aí começa o dilema, porque se você usa JPA com EJB, então terá uma dependência do servidor de aplicação para resolver isso e quebramos a automatização do teste de novo. É claro que você pode usar <em>Mock Objects</em>, uma técnica de fornecer objetos que fingem ser os que realmente precisamos para efeitos de teste, mas ainda assim você terá uma proliferação de classes muito grande.</p>
<p>Assim que eu tiver resultados vou colocar aqui.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulomotta.pro.br/2011/01/17/testes-de-usabilidade-negligencia-na-analise-e-testes-unitarios-corporativos/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tecnologia móvel, mas frágil</title>
		<link>http://www.paulomotta.pro.br/2010/12/23/tecnologia-movel-mas-fragil/</link>
		<comments>http://www.paulomotta.pro.br/2010/12/23/tecnologia-movel-mas-fragil/#comments</comments>
		<pubDate>Thu, 23 Dec 2010 11:47:04 +0000</pubDate>
		<dc:creator>prmottajr</dc:creator>
				<category><![CDATA[Principal]]></category>
		<category><![CDATA[Tendências]]></category>
		<category><![CDATA[SISTEMA]]></category>
		<category><![CDATA[Smartphone]]></category>

		<guid isPermaLink="false">http://www.paulomotta.pro.br/?p=1106</guid>
		<description><![CDATA[Uma coisa que eu tenho percebido é que nós não temos ainda uma visão clara do quanto as nossas pequenas máquinas, os smartphones, são frágeis. Não no sentido de quebrar, contra quedas eles são muito bons, porém o que acontece é que são máquinas que funcionam ligadas direto, como se fossem pequenos servidores e isso [...]]]></description>
			<content:encoded><![CDATA[<p>Uma coisa que eu tenho percebido é que nós não temos ainda uma visão clara do quanto as nossas pequenas máquinas, os smartphones, são frágeis. Não no sentido de quebrar, contra quedas eles são muito bons, porém o que acontece é que são máquinas que funcionam ligadas direto, como se fossem pequenos servidores e isso vai afetando o sistema.</p>
<p>Se você parar para pensar, o seu PC em casa é desligado pelo menos uma vez por semana, se as coisas ficarem estranhas, ou o sistema lento, você pode formatar, instalar novamente e tudo volta a normalidade. Mas e quando o celular fica lento e estranho? Sim, porque quando você comprou o aparelho toda vez que acessava a pasta de fotos ele rapidamente carregava, independente da quantidade de arquivos que haviam, mas agora um ano e pouco depois você é obrigado a tirar a bateria porque o sistema travou, nem o botão de desligar está funcionando direito.</p>
<p>Isso está cada vez mais comum, mas muitas vezes as pessoas não percebem porque não ficam tanto tempo assim com seus aparelhos, a vida útil de um smartphone, ao que parece, é de pouco mais (ou pouco menos) que um ano, exatamente o período de tempo que leva para o sistema degradar.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulomotta.pro.br/2010/12/23/tecnologia-movel-mas-fragil/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>5 Capacidades que o profissional de TI precisará dominar</title>
		<link>http://www.paulomotta.pro.br/2010/08/30/5-capacidades-que-o-profissional-de-ti-precisara-dominar/</link>
		<comments>http://www.paulomotta.pro.br/2010/08/30/5-capacidades-que-o-profissional-de-ti-precisara-dominar/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 18:00:33 +0000</pubDate>
		<dc:creator>prmottajr</dc:creator>
				<category><![CDATA[Principal]]></category>
		<category><![CDATA[Tendências]]></category>
		<category><![CDATA[ANÁLISE]]></category>
		<category><![CDATA[REQUISITO]]></category>
		<category><![CDATA[Robôs]]></category>
		<category><![CDATA[SISTEMA]]></category>

		<guid isPermaLink="false">http://www.paulomotta.pro.br/?p=891</guid>
		<description><![CDATA[De acordo com a Computer World (a matéria em inglês pode ser achada aqui), até o ano de 2020 os profissionais de TI terão que desenvolver certas habilidades especiais: Analisar Dados Entender Risco Dominar Robótica Garantir a Segurança da Informação Gerenciar a Rede Desses, alguns chamam mais a atenção, e neste caso acho que são [...]]]></description>
			<content:encoded><![CDATA[<p>De acordo com a Computer World (a matéria em inglês pode ser achada <a href="http://www.computerworld.com/s/article/350908/5_Indispensable_IT_Skills_of_the_Future" target="_blank">aqui</a>), até o ano de 2020 os profissionais de TI terão que desenvolver certas habilidades especiais:</p>
<ol>
<li>Analisar Dados</li>
<li>Entender Risco</li>
<li>Dominar Robótica</li>
<li>Garantir a Segurança da Informação</li>
<li>Gerenciar a Rede</li>
</ol>
<p>Desses, alguns chamam mais a atenção, e neste caso acho que são os itens 2 e 3, entender risco é uma coisa fundamental, essa é uma daquelas partes da TI em que o analista se aproxima mais do administrador de empresas, é uma habilidade mais relacionada ao negócio do que à técnica, no entanto, mesmo no desenvolvimento de sistemas temos que estar cientes das modificações que fazemos e entender os riscos disso. Risco não está relacionado apenas a problemas catastróficos ou eventos de desastre que podem ocorrer, podemos pensar também em quando não atingimos um prazo e temos que pagar uma multa, ou se o desenvolvedor chefe da equipe sofre um acidente e precisa ficar fora por um tempo.</p>
<p>Já a robótica é um assunto que me interessa muito! Isso pode ser visto pela quantidade de posts que coloco aqui sobre robôs. É fato que nós não temos mais como pensar em não conviver com os robôs, mas o profissional de TI deve saber como usá-los como ferramentas, e como programá-los também. As soluções do futuro vão contar com requisitos de robótica, e portanto devemos nos preparar para poder colocar robôs nas arquiteturas de sistemas e soluções propostas.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulomotta.pro.br/2010/08/30/5-capacidades-que-o-profissional-de-ti-precisara-dominar/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

