<?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>Gustavo Dutra &#187; engenharia de software</title>
	<atom:link href="http://gustavodutra.com/tag/engenharia-de-software/feed/" rel="self" type="application/rss+xml" />
	<link>http://gustavodutra.com</link>
	<description>Um pouco de tudo, nada de pouco</description>
	<lastBuildDate>Thu, 29 Jul 2010 22:57:57 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Usando Screen e Vim para Pair Programming remoto</title>
		<link>http://gustavodutra.com/post/276/usando-screen-e-vim-para-pair-programming-remoto/</link>
		<comments>http://gustavodutra.com/post/276/usando-screen-e-vim-para-pair-programming-remoto/#comments</comments>
		<pubDate>Sat, 10 Oct 2009 22:09:59 +0000</pubDate>
		<dc:creator>Gustavo Dutra</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Engenharia de Software]]></category>
		<category><![CDATA[Nerd]]></category>
		<category><![CDATA[Software Livre]]></category>
		<category><![CDATA[Vim]]></category>
		<category><![CDATA[dicas]]></category>
		<category><![CDATA[engenharia de software]]></category>
		<category><![CDATA[extreme programming]]></category>
		<category><![CDATA[how-to]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[pair programming]]></category>
		<category><![CDATA[screen]]></category>
		<category><![CDATA[skype]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[vim]]></category>
		<category><![CDATA[xp]]></category>

		<guid isPermaLink="false">http://gustavodutra.com/?p=276</guid>
		<description><![CDATA[Bem, é notável o crescimento das metodologias ágeis de desenvolvimento de software. Uma das práticas que me agrada muito, é a programação em pares (pair programming). É bem perceptível, a um longo prazo, a diferença que faz essa prática. Navegando pela internet, como um marujo sem rumo, encontrei um post falando sobre Remote Pair Programming. [...]]]></description>
			<content:encoded><![CDATA[<p>Bem, é notável o crescimento das <strong>metodologias ágeis de desenvolvimento de software</strong>. Uma das práticas que me agrada muito, é a programação em pares (<em>pair programming</em>). É bem perceptível, a um longo prazo, a diferença que faz essa prática. Navegando pela internet, como um marujo sem rumo, encontrei um post falando sobre <em>Remote Pair Programming</em>. Parece meio estranho, porque o XP (<a rel="nofollow" href="http://www.extremeprogramming.org/">eXtreme Programming</a>) faz alusão a uma dupla programar em um único computador, com um único teclado e um único mouse.<br />
<span id="more-276"></span><br />
Então, vamos tentar simular este ambiente utilizando 4 ferramentas simples:</p>
<ul>
<li>screen</li>
<li>ssh</li>
<li>vim</li>
<li>skype</li>
</ul>
<p>Destas, só o <em>skype</em> não é <em>open-source</em>. Mas é interessante manter uma conversa verbal, pois conversas escritas podem desviar o foco da programação, que é bem mais rápida e precisa do que a escrita, que pode deixar brechas para má interpretações. A conversa verbal consegue interromper o programador ao mesmo tempo em que escreve, corrigindo-o ou questionando-o.</p>
<p>Conectados no skype, basta decidir em qual máquina será o desenvolvimento. Esta, por sua vez, terá que ter um servidor <strong>ssh</strong>. Ela será o <em>host</em> da programação. Será necessário, também, nesta máquina, ter instalado o <em>screen</em>, que é um programa que possibilita criar &#8217;sessões&#8217; no terminal.</p>
<h2>Host</h2>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">screen</span> <span style="color: #660033;">-S</span> PairProgramming</pre></div></div>

<p>Parece que nada mudou, mas você está numa sessão do <strong>screen</strong> chamada <em>PairProgramming</em>.</p>
<p>Precione CTRL+a e digite:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">:multiuser on</pre></div></div>

<p>Pressione CTRL+a novamente e digite:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">:acladd usuarioclient</pre></div></div>

<p>Tudo que você ver nesta sessão, será visto pelo outro usuário (<em>usuarioclient</em>) que se conectará nela.</p>
<p>Então, abra o <strong>vim</strong>, pois será necessário um edito de textos de verdade <img src='http://gustavodutra.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> , e se divirta:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">vim</span> <span style="color: #000000; font-weight: bold;">/</span>caminho<span style="color: #000000; font-weight: bold;">/</span>arquivo</pre></div></div>

<h2>Client</h2>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">ssh</span> usuarioclient<span style="color: #000000; font-weight: bold;">@</span>host
<span style="color: #c20cb9; font-weight: bold;">screen</span> <span style="color: #660033;">-x</span> usuariohost<span style="color: #000000; font-weight: bold;">/</span>PairProgramming</pre></div></div>

<p>Pronto! Agora você está acessando a mesma seção! Tudo que o <em>usuáriohost</em> fizer, o <em>usuárioclient</em> enxergará e <strong>vice-versa</strong>.</p>
<p>Agora, basta descutir a tarefa via Skype e programar. As atualizações são em tempo real, ou seja, aparecem ao mesmo tempo que são escritos, digo&#8230; depende da conexão, mas não é um grande problema.</p>
<p>Caso seja necessário que o usuarioclient não possa modificar o código, apenas assitir e dar pitacos, o usuáriohost deve pressionar CTRL+A e digitar:</p>
<pre>:aclchg usuarioclient -w #</pre>
<p>Eu ainda vou programar assim, depois digo a experiência.</p>
<h2>Referências</h2>
<ul>
<li><a rel="nofollow" href="http://www.linux.com/archive/feature/56443">Linux.com</a></li>
<li><a rel="nofollow" href="http://haruska.com/2009/09/29/remote-pair-programming/">Jason Haruska</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://gustavodutra.com/post/276/usando-screen-e-vim-para-pair-programming-remoto/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Engenharia de Software</title>
		<link>http://gustavodutra.com/post/263/engenharia-de-software/</link>
		<comments>http://gustavodutra.com/post/263/engenharia-de-software/#comments</comments>
		<pubDate>Sun, 04 Oct 2009 19:35:39 +0000</pubDate>
		<dc:creator>Gustavo Dutra</dc:creator>
				<category><![CDATA[Engenharia de Software]]></category>
		<category><![CDATA[Nerd]]></category>
		<category><![CDATA[aumentar produtivade]]></category>
		<category><![CDATA[engenharia de software]]></category>
		<category><![CDATA[produtividade]]></category>

		<guid isPermaLink="false">http://gustavodutra.com/?p=263</guid>
		<description><![CDATA[Faz um tempo que quero escrever algo sobre engenharia de software, pois tenho aprendido muito disso nos últimos 6 meses, principalmente. Na verdade, tudo parte de observações e leituras que fiz por ai. Às vezes elas foram forçadas por professores ou espontâneas a ponto de eu apenas saber.
Inaugarado o blog da F1 Soluções, que não [...]]]></description>
			<content:encoded><![CDATA[<p>Faz um tempo que quero escrever algo sobre engenharia de software, pois tenho aprendido muito disso nos últimos 6 meses, principalmente. Na verdade, tudo parte de observações e leituras que fiz por ai. Às vezes elas foram forçadas por professores ou espontâneas a ponto de eu apenas saber.</p>
<p>Inaugarado o <a rel="nofollow" href="http://blog.f1solucoes.com.br/" target="_blank">blog da F1 Soluções</a>, que não é a empresa na qual trabalho, mas é do mesmo sócio e ainda tenho grande participação no processo de desenvolvimento de software da mesma, eu resolvi postar algumas coisas lá. Fiz, então, meu primeiro post sobre engenharia de software. O post se chama <a rel="nofollow" href="http://blog.f1solucoes.com.br/2009/10/04/filosofando-sobre-engenharia-de-software/">Filosofando sobre Engenharia de Software</a>.</p>
<p>Críticas aqui ou lá, lerei os dois comentários. Até mais!</p>
]]></content:encoded>
			<wfw:commentRss>http://gustavodutra.com/post/263/engenharia-de-software/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SchemaSpy &#8211; Ferramenta para Modelagem Literária</title>
		<link>http://gustavodutra.com/post/222/schemaspy-ferramenta-para-modelagem-literaria/</link>
		<comments>http://gustavodutra.com/post/222/schemaspy-ferramenta-para-modelagem-literaria/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 03:29:20 +0000</pubDate>
		<dc:creator>Gustavo Dutra</dc:creator>
				<category><![CDATA[Nerd]]></category>
		<category><![CDATA[Software Livre]]></category>
		<category><![CDATA[aumentar produtivade]]></category>
		<category><![CDATA[desenvolvimento web]]></category>
		<category><![CDATA[dicas]]></category>
		<category><![CDATA[engenharia de software]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[produtividade]]></category>
		<category><![CDATA[sgbd]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://gustavodutra.com/?p=222</guid>
		<description><![CDATA[No post anterior Vimperator, comportamente do Vim no Firefox eu tinha mensionado que:
Parece radical, mas a produtividade aumenta, de certo modo. Não só na hora de programar e testar, sempre que edito arquivos no Vim, tento não usar o mouse. Claro que sempre vai ter alguma aplicação que vai te obrigar a usar o mouse, [...]]]></description>
			<content:encoded><![CDATA[<p>No post anterior <a href="http://gustavodutra.com/post/175/vimperator-comportamento-do-vim-no-firefox/">Vimperator, comportamente do Vim no Firefox</a> eu tinha mensionado que:</p>
<blockquote><p>Parece radical, mas a produtividade aumenta, de certo modo. Não só na hora de programar e testar, sempre que edito arquivos no Vim, tento não usar o mouse. Claro que sempre vai ter alguma aplicação que vai te obrigar a usar o mouse, mas se pudermos evitar, melhor!</p></blockquote>
<p>Eu continuo com esta idéia. <em>Coisinha bonita é para cliente final</em>. Desenvolvedores devem trabalhar com ferramentas que proporcionam o melhor uso do tempo possível, pois o bom profissional é aquele que esbanja do ócio, eis o fluxo:</p>
<ul>
<li>Concluir as atividades rapidamente com <strong>eficácia e eficiência</strong> está diretamente ligado ao <strong>ócio</strong>, pois se ele tivesse feito algo mal feito, estaria corrigindo os bugs e não vendo vídeos no <a rel="nofollow" href="http://youtube.com">youtube</a>.</li>
<li>Com tempo livre, o cérebro humano fica mais descansado e mais propício a receber <strong>insights/intuições</strong> para resolver problemas difíceis, que &#8211; e estes merecem &#8211; precisam de mais tempo e necessitam ser bem planejados.</li>
<li>Resolvendo problemas de forma <strong>criativa</strong> &#8211; talvez até inovadora -, faz com que se evite problemas futuros. Logo, se poupa tempo. Se poupando tempo, voltamos a cláusula anterior.</li>
</ul>
<p>Parece utópico, mas eu acredito nisso. Eu acho que é possível. Basta saber onde conseguir ganhar tempo em atividades, <u>automatizando</u> com scripts, programas e etc, o tempo é <em>consequência</em>.</p>
<p><span id="more-222"></span></p>
<p>Todo Desenvolvedor Web já foi ou ainda é DBA. É inevitável aprender a utilizar banco de dados sem modelar os dados. Geralmente, para isso, é utilizado alguma ferramente gráfica que auxilia na visão do modelo. Não vou citar, mas existem várias para isso.</p>
<p>Porém, há um detalhe que muitos não se atinaram ainda. Me dei conta disso assistindo uma palestra no <a rel="nofollow" href="http://fisl.com.br/10/www/">FISL10</a>, na palestra do Leandro Dutra (se for parente, é primo de muitos graus :S) chamada <a rel="nofollow" href="http://fisl.softwarelivre.org/10/papers/pub/programacao/582">O elefante ilustrado: modelagem literária e documentação automática em PostgreSQL e outros SGBDs livres</a>.</p>
<h2>SchemaSpy</h2>
<h3>O que é?</h3>
<p>É uma ferramente que varre um banco de dados e gera um documentação em HTML nevegável. Ela gera gráfico de chaves estrangeiras utilizando o <a rel="nofollow" href="http://www.graphviz.org/">GraphViz</a> (.dot), como se fosse uma dessas ferramentas que terminam com <em>Designer</em>. </p>
<p>Esses gráficos gerados, são visivelmente bonitos e dispostos. Ou seja, não é mais necessário sofrer arrastando caixinhas de modo com que fique bem arrumado. O programa tem um bom algoritmo para organizar. O que possibilita que o DBA, ou o desenvolvedor mesmo, use este tempo para repensar uma constraint, uma foreign key, etc.</p>
<p>O HTML gerado também tem abas que diferenciam os conteúdos: abas para relacionamentos, abas para tabelas auxiliares, abas para listagem de colunas/tabelas, etc. Mostra os campos, o tipo dos campos, os comentários, valores em comum e as CONSTRAINTS. Ou seja, uma solução completa para documentação de bancos de dados e modelos de ER. Vem junto o <a rel="nofollow" href="http://jquery.com">jQuery</a>, que da uns efeitos e <em>toggleia</em> algumas colunas das tabelas de exibição.</p>
<h3>Onde conseguir?</h3>
<p>O site oficial deles é <a rel="nofollow" href="http://schemaspy.sourceforge.net">http://schemaspy.sourceforge.net</a>. Pode ser baixado de lá. Apenas o driver jdbc para o banco de dados que for ser usado deve ser encontrado separadamente.</p>
<p>Quem usa <a rel="nofollow" href="http://archlinux.com">ArchLinux</a>, pode baixar os repositórios do AUR. Eu mesmo sou o mantenedor do pacote, então, qualquer dúvida ou problema, comente lá que tentarei responder/resolver o mais rápido possível. O link do repositório é <a rel="nofollow" href="http://aur.archlinux.org/packages.php?ID=28022">http://aur.archlinux.org/packages.php?ID=28022</a></p>
<h3>Como usar?</h3>
<p>Para usar é muito simples. Depois de baixar o .jar, apenas execute</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">$ java -jar /path/to/schemaSpy.jar --help</pre></div></div>

<p>Ou, se você instalou o do repositório do <a rel="nofollow" href="http://archlinux.com">ArchLinux</a>, basta usar:</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">$ schemaspy --help</pre></div></div>

<p>Ele vai listar os parâmetros, é bem simples. Não vou me deter a isso. Qualquer dúvida comente no post abaixo.</p>
<p>Um exemplo de output pode ser encontrado na própria página do SchemaSpy: <a rel="nofollow" href="http://schemaspy.sourceforge.net/sample/">http://schemaspy.sourceforge.net/sample/</a></p>
<h3>Sugestoẽs</h3>
<p>Se existe algum defeito nele, com certeza é o template. O HTML gerado não é o mais bonito. Não obstante, me parece que o template não é customizável, para isso seria necessário hackear a classe que gera o template. Mas, quem sabe não é implementado algo nas próximas versões? Quem sabe VOCÊ não implementa?</p>
<p>Mas bem, falando em sugestões, aqui vai algumas:</p>
<ul>
<li>Integrar com a documentação do <a rel="nofollow" href="http://phpdocumentor.org">phpDocumentor</a>, <a rel="nofollow" href="http://java.sun.com/j2se/javadoc/">javaDoc</a> ou outro similar.</li>
<li>Versionar a documentação gerada para avaliação de crescimento da aplicação: poder comparar como era há certo tempo atrás e como está hoje.</li>
<li>Programar os SQL&#8217;s utilizando algum editor de texto, fazendo você ganhar desempenho e analisar mais facilmente para comentários, constraints, triggers, procedures e views, que são geralmente mais complexas de serem vistas em programas gráficos.</li>
</ul>
<p>Mais alguma sugestão? Críticas? Deixem nos posts abaixo!</p>
]]></content:encoded>
			<wfw:commentRss>http://gustavodutra.com/post/222/schemaspy-ferramenta-para-modelagem-literaria/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
