Blog da Improve It

Nada de janelas quebradas

Publicado por Vinicius Manhães Teles há aproximadamente 1 ano.

Broken window theory

Diz a lenda que, há alguns anos, fizeram o seguinte experimento em Nova York. Estacionaram um carro em um bairro perigoso e o deixaram lá durante uma semana. Após esse período, ele ainda estava lá, inteiro. Então, os pesquisadores jogaram uma pedra no vidro do carro e foram embora. Não precisaram nem esperar uma semana. No dia seguinte o carro já estava completamente depenado e destruído. Uma única janela quebrada foi suficiente para iniciar o processo de vandalismo.

David Thomas e Andrew Hunt tratam desse assunto no livro The Pragmatic Programmer. Eles mostram como a cidade de Nova York usou a Teoria das Janelas Quebradas para reduzir a violência e como nós, desenvolvedores, podemos usá-la para evitar que o design de nossas aplicações se degradem. Resumidamente, a idéia é que um código permanentemente bem escrito, tenderá a ser mantido assim, pois as pessoas ficam "sem graça" de estragá-lo. Por outro lado, um código que já tem várias gambiarras é um convite para outras novas.

Há algum tempo tive a idéia de usar a análise de cobertura dos testes como uma forma de contribuir para achar as janelas quebradas e consertá-las rapidamente. Embora a cobertura não diga se os seus testes estão bons ou não, ela ao menos indica se existem partes do código que não estão sendo exercitadas por testes. E isso é bastante útil.

Trabalhando com XP, nós integramos o código freqüentemente, portanto, uma idéia seria rodar a análise de cobertura antes de cada commit no repositório. Assumindo que o projeto tenha 100% de cobertura, o desenvolvedor que der o commit roda a análise e, se o software continuar em 100% de cobertura, o commit é feito. Senão, ele deve implementar os testes que estão faltando. Usado consistentemente, isso pode ajudar a criar uma pressão positiva na equipe, no sentido de nunca comitar código sem teste.

Existem dois problemas com essa abordagem. O primeiro é atingir 100% de cobertura. Isso tipicamente é mais viável se o projeto já utilizar TDD desde o início. É bem mais complicado para projetos que já começaram sem testes. O segundo problema é que o desenvolvedor pode simplesmente deixar de rodar a análise de cobertura antes de fazer o commit.

Resolvemos esses problemas no desenvolvimento de nosso produto de duas formas. Primeiro, o projeto tem ênfaze em automação de testes desde o início. Sendo assim, temos 100% de cobertura. Para que isso seja mantido, fiz uma melhoria no nosso script de integração.

Temos um script que é executado antes de cada commit. Ele executa todos os nossos testes, além de fazer outras checagens, e só faz o commit se tudo estiver ok. A partir de hoje ele tem um passo adicional: executa a análise de cobertura e só permite o commit se ela estiver em 100%. Agora vai ser difícil alguém deixar janelas quebradas pelo código, quer dizer, esses tipos de janelas quebradas, já que existem outras também que não são identificadas pela análise de cobertura.

Esse projeto utiliza Ruby on Rails, portanto, a ferramenta usada para a análise de cobertura é o rcov que gera telas como essa:

rcov

Essa imagem é do próprio site do rcov. A análise de cobertura do nosso produto não tem essas cores vermelhas, naturalmnete. :-)

Tags ,  | 5 comentários

O que você achou? Coloque seus comentários e sugestões abaixo!

Acompanhe o RSS dessa página.

Comentários (5 até o momento)

  1. Eduardo Fiorezi disse aproximadamente 17 horas depois:

    Vinicius muito bom o texto, este é um fato que reflete muito bem a ação das pessoas no dia a dia. Obrigado pelo link do rcov, não sabia da existencia dele. Mto facil de usar.

  2. jorge disse 4 meses depois:

    Prezado:

    O experimento das janelas quebradas não foi uma lenda, mas, um fato. O autor é o PHD, Prof. Zimbardo. Qualquer dúvida, tenho relativo conhecimento sobre o assunto, pois sou autor de tese a respeito. A disposição Jorge Luiz

  3. Girlaine Souza/ girlaine5@hotmail.com disse 4 meses depois:

    olá, sou acadêmica do curso de Direito, e estou fazendo uma pesquisa, sobre o tema ora abordado "Teoria das Janelas Quebradas", se alguém puder me ajudar de alguma forma, agradeço.

    Antenciosamente,

    Girlaine Souza

  4. Nilva Maria disse 11 meses depois:

    olá! , estou fazendo uma pesquisa e preciso muito saber sobre a teoria das janelas quebradas! fico muito grata se se puder mim ajudar!

    Nilva Maria

  5. Valdice disse aproximadamente 1 ano depois:

    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á que vc pode me ajudar? Meu e-mail é valdicerodrigues@hotmail.com. Agradeço.