<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Desenvolvimento &#193;gil - Blog da Improve It: Nada de janelas quebradas</title>
    <link>http://blog.improveit.com.br/articles/2007/01/05/nada-de-janelas-quebradas</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description></description>
    <item>
      <title>Nada de janelas quebradas</title>
      <description>&lt;p&gt;&lt;img src="http://blog.improveit.com.br/files/broken-window.jpg" alt="Broken window theory" title="Broken window theory"/&gt;&lt;/p&gt;

&lt;p&gt;Diz a lenda que, h&#225; alguns anos, fizeram o seguinte experimento em Nova York. Estacionaram um carro em um bairro perigoso e o deixaram l&#225; durante uma semana. Ap&#243;s esse per&#237;odo, ele ainda estava l&#225;, inteiro. Ent&#227;o, os pesquisadores jogaram uma pedra no vidro do carro e foram embora. N&#227;o precisaram nem esperar uma semana. No dia seguinte o carro j&#225; estava completamente depenado e destru&#237;do. Uma &#250;nica janela quebrada foi suficiente para iniciar o processo de vandalismo.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.pragmaticprogrammer.com/contact.html"&gt;David Thomas&lt;/a&gt; e &lt;a href="http://www.pragmaticprogrammer.com/contact.html"&gt;Andrew Hunt&lt;/a&gt; tratam desse assunto no livro &lt;a href="http://www.amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X/sr=8-1/qid=1168005327/ref=pd_bbs_sr_1/002-0042091-6362405?ie=UTF8&amp;amp;s=books"&gt;The Pragmatic Programmer&lt;/a&gt;. Eles mostram como a cidade de Nova York usou a &lt;a href="http://en.wikipedia.org/wiki/Broken_window_theory"&gt;Teoria das Janelas Quebradas&lt;/a&gt; para reduzir a viol&#234;ncia e como n&#243;s, desenvolvedores, podemos us&#225;-la para evitar que o design de nossas aplica&#231;&#245;es se degradem. Resumidamente, a id&#233;ia &#233; que um c&#243;digo permanentemente bem escrito, tender&#225; a ser mantido assim, pois as pessoas ficam "sem gra&#231;a" de estrag&#225;-lo. Por outro lado, um c&#243;digo que j&#225; tem v&#225;rias gambiarras &#233; um convite para outras novas.&lt;/p&gt;

&lt;p&gt;H&#225; algum tempo tive a id&#233;ia de usar a &lt;a href="http://www.improveit.com.br/xp/praticas/tdd/emma"&gt;an&#225;lise de cobertura dos testes&lt;/a&gt; como uma forma de contribuir para achar as janelas quebradas e consert&#225;-las rapidamente. Embora a cobertura n&#227;o diga se os seus testes est&#227;o bons ou n&#227;o, ela ao menos indica se existem partes do c&#243;digo que n&#227;o est&#227;o sendo exercitadas por testes. E isso &#233; bastante &#250;til.&lt;/p&gt;

&lt;p&gt;Trabalhando com &lt;a href="http://www.improveit.com.br/xp"&gt;XP&lt;/a&gt;, n&#243;s &lt;a href="http://www.improveit.com.br/xp/praticas/integracao"&gt;integramos&lt;/a&gt; o c&#243;digo freq&#252;entemente, portanto, uma id&#233;ia seria rodar a &lt;a href="http://www.improveit.com.br/xp/praticas/tdd/emma"&gt;an&#225;lise de cobertura&lt;/a&gt; antes de cada commit no reposit&#243;rio. Assumindo que o projeto tenha 100% de cobertura, o desenvolvedor que der o commit roda a an&#225;lise e, se o software continuar em 100% de cobertura, o commit &#233; feito. Sen&#227;o, ele deve implementar os testes que est&#227;o faltando. Usado consistentemente, isso pode ajudar a criar uma press&#227;o positiva na equipe, no sentido de nunca comitar c&#243;digo sem teste.&lt;/p&gt;

&lt;p&gt;Existem dois problemas com essa abordagem. O primeiro &#233; atingir 100% de cobertura. Isso tipicamente &#233; mais vi&#225;vel se o projeto j&#225; utilizar &lt;a href="http://www.improveit.com.br/xp/praticas/tdd"&gt;TDD&lt;/a&gt; desde o in&#237;cio. &#201; bem mais complicado para projetos que j&#225; come&#231;aram sem testes. O segundo problema &#233; que o desenvolvedor pode simplesmente deixar de rodar a &lt;a href="http://www.improveit.com.br/xp/praticas/tdd/emma"&gt;an&#225;lise de cobertura&lt;/a&gt; antes de fazer o commit.&lt;/p&gt;

&lt;p&gt;Resolvemos esses problemas no desenvolvimento de &lt;a href="http://blog.improveit.com.br/articles/2007/01/02/2007-um-ano-de-mudancas"&gt;nosso produto&lt;/a&gt; de duas formas. Primeiro, o projeto tem &#234;nfaze em &lt;a href="http://www.improveit.com.br/xp/praticas/tdd"&gt;automa&#231;&#227;o de testes&lt;/a&gt; desde o in&#237;cio. Sendo assim, temos 100% de cobertura. Para que isso seja mantido, fiz uma melhoria no nosso script de integra&#231;&#227;o.  &lt;/p&gt;

&lt;p&gt;Temos um script que &#233; executado antes de cada commit. Ele executa todos os nossos testes, al&#233;m de fazer outras checagens, e s&#243; faz o commit se tudo estiver ok. A partir de hoje ele tem um passo adicional: executa a &lt;a href="http://www.improveit.com.br/xp/praticas/tdd/emma"&gt;an&#225;lise de cobertura&lt;/a&gt; e s&#243; permite o commit se ela estiver em 100%. Agora vai ser dif&#237;cil algu&#233;m deixar janelas quebradas pelo c&#243;digo, quer dizer, esses tipos de janelas quebradas, j&#225; que existem outras tamb&#233;m que n&#227;o s&#227;o identificadas pela &lt;a href="http://www.improveit.com.br/xp/praticas/tdd/emma"&gt;an&#225;lise de cobertura&lt;/a&gt;.  &lt;/p&gt;

&lt;p&gt;Esse projeto utiliza &lt;a href="http://www.rubyonrails.com"&gt;Ruby on Rails&lt;/a&gt;, portanto, a ferramenta usada para a an&#225;lise de cobertura &#233; o &lt;a href="http://eigenclass.org/hiki.rb?rcov"&gt;rcov&lt;/a&gt; que gera telas como essa:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://blog.improveit.com.br/files/rcov.jpg" alt="rcov" title="rcov: Ruby test coverage analysis"/&gt;&lt;/p&gt;

&lt;p&gt;Essa imagem &#233; do pr&#243;prio site do &lt;a href="http://eigenclass.org/hiki.rb?rcov"&gt;rcov&lt;/a&gt;. A &lt;a href="http://www.improveit.com.br/xp/praticas/tdd/emma"&gt;an&#225;lise de cobertura&lt;/a&gt; do &lt;a href="http://blog.improveit.com.br/articles/2007/01/02/2007-um-ano-de-mudancas"&gt;nosso produto&lt;/a&gt; n&#227;o tem essas cores vermelhas, naturalmnete. :-)&lt;/p&gt;</description>
      <pubDate>Fri, 05 Jan 2007 08:12:00 -0200</pubDate>
      <guid isPermaLink="false">urn:uuid:dda00e17-739c-468a-96e9-433b4868cb2b</guid>
      <author>Vinicius Manh&#227;es Teles</author>
      <link>http://blog.improveit.com.br/articles/2007/01/05/nada-de-janelas-quebradas</link>
      <category>teste</category>
      <category>qualidade</category>
    </item>
    <item>
      <title>"Nada de janelas quebradas" by luciano da silva</title>
      <description>&lt;p&gt;gostaria de ter um pouco mais de material relativo a este assunto, visto estar fazendo um trabalho academ&#234;mico e toda ajuda ser&#225; bem vinda. mto obrigado.&lt;/p&gt;</description>
      <pubDate>Fri, 24 Oct 2008 16:05:02 -0200</pubDate>
      <guid isPermaLink="false">urn:uuid:8ae35bc6-1b6f-4bb4-bd65-2aad86829f0b</guid>
      <link>http://blog.improveit.com.br/articles/2007/01/05/nada-de-janelas-quebradas#comment-1532</link>
    </item>
    <item>
      <title>"Nada de janelas quebradas" by Valdice</title>
      <description>&lt;p&gt;Oi Jorge. Como posso entrar em contato cm vc? tenho muito interesse no seu trabalho. Estou fazendo a minha monografia sobre tolerancia zero. Li que o programa iniciou exatamente com a teoria das janelas quebradas. Ser&#225; que vc pode me ajudar? Meu e-mail &#233; &lt;a href="mailto:valdicerodrigues@hotmail.com" rel="nofollow"&gt;valdicerodrigues@hotmail.com&lt;/a&gt;.
 Agrade&#231;o.&lt;/p&gt;</description>
      <pubDate>Sat, 01 Mar 2008 08:07:45 -0300</pubDate>
      <guid isPermaLink="false">urn:uuid:1c3a7f21-1acb-4eba-b386-d8ce97c628d8</guid>
      <link>http://blog.improveit.com.br/articles/2007/01/05/nada-de-janelas-quebradas#comment-994</link>
    </item>
    <item>
      <title>"Nada de janelas quebradas" by Nilva Maria </title>
      <description>&lt;p&gt;ol&#225;! , estou fazendo uma pesquisa e preciso muito saber sobre a teoria das janelas quebradas! fico muito grata se  se puder mim ajudar! &lt;/p&gt;

&lt;p&gt;Nilva Maria  &lt;/p&gt;</description>
      <pubDate>Sat, 01 Dec 2007 12:28:51 -0200</pubDate>
      <guid isPermaLink="false">urn:uuid:635c8769-d865-43f4-9f2b-214578ed7823</guid>
      <link>http://blog.improveit.com.br/articles/2007/01/05/nada-de-janelas-quebradas#comment-910</link>
    </item>
    <item>
      <title>"Nada de janelas quebradas" by Girlaine Souza/ girlaine5@hotmail.com</title>
      <description>&lt;p&gt;ol&#225;, sou acad&#234;mica do curso de Direito, e estou fazendo uma pesquisa, sobre o tema ora abordado "Teoria das Janelas Quebradas", se algu&#233;m puder me ajudar de alguma forma, agrade&#231;o.&lt;/p&gt;

&lt;p&gt;Antenciosamente,&lt;/p&gt;

&lt;p&gt;Girlaine Souza&lt;/p&gt;</description>
      <pubDate>Fri, 11 May 2007 21:22:21 -0300</pubDate>
      <guid isPermaLink="false">urn:uuid:d9793948-8fab-4d33-9a6c-6702e10595f3</guid>
      <link>http://blog.improveit.com.br/articles/2007/01/05/nada-de-janelas-quebradas#comment-307</link>
    </item>
    <item>
      <title>"Nada de janelas quebradas" by jorge</title>
      <description>&lt;p&gt;Prezado:&lt;/p&gt;

&lt;p&gt;O experimento das janelas quebradas n&#227;o foi uma lenda, mas, um fato. O autor &#233; o PHD, Prof. Zimbardo. Qualquer d&#250;vida, tenho relativo conhecimento sobre o assunto, pois sou autor de tese a respeito. A disposi&#231;&#227;o Jorge Luiz&lt;/p&gt;</description>
      <pubDate>Sun, 29 Apr 2007 19:21:17 -0300</pubDate>
      <guid isPermaLink="false">urn:uuid:a3403d59-1c7e-453e-81aa-9d7d502d9773</guid>
      <link>http://blog.improveit.com.br/articles/2007/01/05/nada-de-janelas-quebradas#comment-301</link>
    </item>
    <item>
      <title>"Nada de janelas quebradas" by Eduardo Fiorezi</title>
      <description>&lt;p&gt;Vinicius muito bom o texto, este &#233; um fato que reflete muito bem a a&#231;&#227;o das pessoas no dia a dia. 
Obrigado pelo link do rcov, n&#227;o sabia da existencia dele. Mto facil de usar. &lt;/p&gt;</description>
      <pubDate>Sat, 06 Jan 2007 01:21:03 -0200</pubDate>
      <guid isPermaLink="false">urn:uuid:58a59c4b-b9ba-4e98-8842-bee63ceb9ffc</guid>
      <link>http://blog.improveit.com.br/articles/2007/01/05/nada-de-janelas-quebradas#comment-211</link>
    </item>
  </channel>
</rss>
