<?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; ANÁLISE</title>
	<atom:link href="http://www.paulomotta.pro.br/tag/analise/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>Gerenciando com Scrum</title>
		<link>http://www.paulomotta.pro.br/2011/01/27/gerenciando-com-scrum/</link>
		<comments>http://www.paulomotta.pro.br/2011/01/27/gerenciando-com-scrum/#comments</comments>
		<pubDate>Thu, 27 Jan 2011 13:57:56 +0000</pubDate>
		<dc:creator>prmottajr</dc:creator>
				<category><![CDATA[Análise]]></category>
		<category><![CDATA[Gerência]]></category>
		<category><![CDATA[Principal]]></category>
		<category><![CDATA[Tendências]]></category>
		<category><![CDATA[ANÁLISE]]></category>
		<category><![CDATA[SCRUM]]></category>

		<guid isPermaLink="false">http://www.paulomotta.pro.br/?p=1218</guid>
		<description><![CDATA[As pessoas têm falado muito de métodos ágeis, e consequentemente de gerenciamento ágil. Muitas pessoas confundem agilidade com a falta de vontade de realmente documentar e gerenciar. Esse engano, embora comum, é muito perigoso. O que temos feito lá no trabalho é usar o Scrum como forma de agilizar nosso processo, mas Scrum na mão [...]]]></description>
			<content:encoded><![CDATA[<p>As pessoas têm falado muito de métodos ágeis, e consequentemente de gerenciamento ágil. Muitas pessoas confundem agilidade com a falta de vontade de realmente documentar e gerenciar. Esse engano, embora comum, é muito perigoso.</p>
<p>O que temos feito lá no trabalho é usar o Scrum como forma de agilizar nosso processo, mas Scrum na mão é bem complicado, o jeito foi procurar uma ferramenta que desse um suporte. Começamos com uma ferramenta nacional, o <a href="http://pronto.bluesoft.com.br/" target="_blank">Pronto</a>, mas logo tivemos alguns problemas.</p>
<p>Não me entendam errado, o software é muito bom, mas o seu foco em um único projeto quebrou a nossa equipe. Após várias pesquisas chegamos a um bem completo, o <a href="http://www.icescrum.org/" target="_blank">IceScrum</a>.</p>
<p>O legal do IceScrum é que permite gerenciar vários projetos, assim você vai colocando todas as informações em um lugar só. É claro que tem algumas limitações, mas por já estar na versão 15.x ele é bem maduro e estável. Tem duas coisas que me incomodam bastante, a primeira é que não podemos adicionar vários arquivos a uma User-Story, então se você tiver mais de um documento a coisa fica complicada; a segunda é que só podemos ter 5 defeitos por sprint, eu acho isso ruim, porque o que tivemos que fazer foi criar uma Tech-Story para colocar bugs.</p>
<p>Mas no geral, a ferramenta é muito boa mesmo, tem o dashboard para trabalharmos, você pode declarar os testes que precisam ser feitos. Um grande problema é você conseguir mudar a cultura da equipe para escrever as coisas na ferramenta (mas isso também é um problema no PMBOK/RUP).</p>
<p>Estou preparando um pequeno manual da ferramenta em português, mas ainda não estou com previsão de quando estará completo, espero que em breve <img src='http://www.paulomotta.pro.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulomotta.pro.br/2011/01/27/gerenciando-com-scrum/feed/</wfw:commentRss>
		<slash:comments>8</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>Abolindo Diagramas</title>
		<link>http://www.paulomotta.pro.br/2010/09/21/abolindo-diagramas/</link>
		<comments>http://www.paulomotta.pro.br/2010/09/21/abolindo-diagramas/#comments</comments>
		<pubDate>Tue, 21 Sep 2010 12:04:51 +0000</pubDate>
		<dc:creator>prmottajr</dc:creator>
				<category><![CDATA[Análise]]></category>
		<category><![CDATA[Principal]]></category>
		<category><![CDATA[Tendências]]></category>
		<category><![CDATA[ANÁLISE]]></category>
		<category><![CDATA[UML]]></category>

		<guid isPermaLink="false">http://www.paulomotta.pro.br/?p=961</guid>
		<description><![CDATA[Calma! Na verdade eu não estou querendo abolir os diagramas de vez, na verdade a proposta é um pouco mais simples. O que estamos experimentando na minha equipe de desenvolvimento é deixar de fazer os diagramas em uma ferramenta, estamos tentando usar agora algumas práticas ágeis, e como muito do nosso código é gerado no [...]]]></description>
			<content:encoded><![CDATA[<p>Calma! Na verdade eu não estou querendo abolir os diagramas de vez, na verdade a proposta é um pouco mais simples. O que estamos experimentando na minha equipe de desenvolvimento é deixar de fazer os diagramas em uma ferramenta, estamos tentando usar agora algumas práticas ágeis, e como muito do nosso código é gerado no próprio código (e não via modelo como prega o MDD) então o diagrama perde um pouco de sentido. Mas como ferramenta para compreensão do problema é uma ótima alternativa então que fazer?</p>
<p>Optamos (experimentalmente) por fazer os diagramas em um quadro branco, todo mundo participa e discute no final tira-se uma foto digital do quadro e guardamos a foto na documentação do projeto. Então na prática não abolimos o diagrama como ferramenta de entendimento, mas a etapa de migrar do quadro para uma ferramenta de modelagem acabou.</p>
<p>Eu venho usando essa alternativa de fotografar os quadros desde 2008, tanto para palestras quanto para aulas, no final aquele quadro que foi usado para alguma discussão contém muito mais informação do que seria concebida em uma sessão de análise isolada.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulomotta.pro.br/2010/09/21/abolindo-diagramas/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>

