Segredos do WindowsTrabalhe mais, com menos inteligência

Raymond Chen

Para os desenvolvedores de software, um dos grandes benefícios do Relatório de Erros do Windows é que eles podem obter informações do mundo real sobre as falhas dos seus programas. Esses relatórios de erros estão disponíveis a qualquer fornecedor de software que se registre online em winqual.microsoft.com. Certamente, é possível executar todos os tipos de testes nos laboratórios, mas sempre existe uma lacuna entre as condições do laboratório e as condições do mundo real. Isso pode resultar em bugs que jamais aparecem no teste, mas que enlouquecem os clientes.

Há alguns anos, um programador me contou uma história de que tinha recebido uma tarefa da equipe de confiabilidade do produto. A equipe queria corrigir os principais motivos de falhas e paradas de um determinado componente. Depois de alguma negociação, ambas as partes chegaram a um objetivo de reduzir o número desses tipos de falhas pela metade. Ela queria corrigir bugs responsáveis por pelo menos 50 por cento das falhas e das paradas nesse componente, conforme medição feita pelo Relatório de Erros do Windows.

Todos nós sabemos que as falhas não estão distribuídas de maneira uniforme. Algumas são raras, outras são comuns e ainda existem as inesperadas (em termos relativos). Engenharia é um jogo de compromissos; dados recursos limitados (tempo, dinheiro, idéias), você precisa dedicá-los onde eles terão o melhor efeito. Como o objetivo aqui era reduzir o número de falhas e paradas, a abordagem apropriada era estudar as falhas mais comuns informadas pelo Relatório de Erros do Windows, compreender as causas principais e, em seguida, tentar corrigir essas falhas comuns.

fig00.gif

O Relatório de Erros do Windows fornece informações do mundo real sobre falhas de programas (Clique na imagem para ampliá-la)

Quando o programador pesquisa os dados da falha, fica claro que cinco falhas e paradas específicas foram responsáveis por mais de 60 por cento dos relatórios. Se pudesse corrigir os bugs que estavam causando essas cinco falhas, o programador reduziria 2,5 vezes o número de falhas e paradas, bem acima das 2 vezes desejadas.

A análise dos dados do Relatório de Erros do Windows feita pela própria Microsoft mostra que o princípio de Pareto é, surpreendentemente, uma ótima regra prática para falhas e paradas do Windows; cerca de 20 por cento dos bugs causam 80 por cento das falhas. O mesmo estudo revelou um resultado ainda mais surpreendente: apenas 1 por cento dos bugs causa 50 por cento dos erros. Nem todos os bugs são criados da mesma forma, mas conhecer o grau de incidência da distribuição ajuda muito a manter os olhos abertos.

Depois de estudar essas cinco falhas mais atentamente, o programador conseguiu perceber que todas elas tinham a mesma causa principal. As falhas e as paradas eram apenas manifestações diferentes do mesmo bug subjacente. Assim, ele desenvolveu e testou uma correção e, com o pessoal do controle de qualidade, deu os primeiros passos para incluí-la no próximo patch. Com a correção desse único bug, a taxa teórica de falhas do componente caiu instantaneamente 2,5 vezes. A missão foi cumprida com uma única correção bem simples do código.

Quando ouvi essa história, fiquei surpreso pela curva de distribuição do erro do componente ser ainda mais acentuada do que a do Windows. Bem mais da metade de todas as falhas e paradas foi causada por um único bug. Trata-se do tipo de informação no código que não é possível sem que os dados sejam coletados por algo como o Relatório de Erros do Windows.

Você pensaria: a equipe de confiabilidade ficou maravilhada ao atingir o objetivo tão rapidamente. A meta estabelecida foi superada em apenas duas semanas com uma única correção. Na verdade, ela ficou furiosa.

"Isso é inaceitável – esperávamos que isso demorasse dois meses. Foi muito fácil!" Aparentemente, ela queria que o programador trabalhasse mais, com menos inteligência.

O site do Raymond Chen, The Old New Thing, e o livro homônimo tratam do histórico do Windows e da programação Win32. Vinte por cento das suas roupas são responsáveis por oitenta por cento da sua lavanderia.