Página Inicial > Qualidade de Software, Teste de Software > Qual a origem dos bugs de software?

Qual a origem dos bugs de software?

image O termo bug tem sido utilizado pelos engenheiros para classificar pequenas falhas nas máquinas a mais de um século. Tomas Edison já citava bugs em circuitos elétricos em 1870.
Quando o primeiro computador foi construído no início da década de 40, pessoas que trabalhavam na sua construção, encontraram bugs tanto no hardware quanto nos programas executados pelo computador
Um caso curioso sobre bugs data de 1947, quando engenheiros trabalhando no computador MarkII na Universidade de Harvard, encontraram uma traça enroscada em um dos seus componentes. Eles fixaram a traça no livro de registro de operações e rotularam-no como o “primeiro caso real de um bug sendo  encontrado”
As palavras bug e debug logo se tornaram parte da linguagem dos programadores, para designar respectivamente a ocorrência de falhas e o processo de depuração dessas falhas.

Um bug pode ser definido como um erro no funcionamento de um software. É também chamado de falha na lógica de um programa de computador, que pode causar discrepâncias nos resultados esperados, ou impossibilidade de realização, de uma funcionalidade desse programa.

A figura abaixo exemplifica o que se chama de bug: um erro é cometido durante a construção de um código de programa, que ao ser executado pelo usuário se comporta de forma indevida, resultando assim numa falha.

image

Vamos supor que a especificação de um software para controle de despesas de viagens, descreva as seguintes funcionalidades
a. o software deve efetuar a soma dos gastos com as despesas de viagem
b. despesas com refeições acima de R$ 20,00 serão limitadas e calculadas com este valor.

Podemos afirmar que um bug ocorre quando o software:
1) não faz algo que foi especificado
Exemplo: Se a soma do software de controle de despesas de viagens não produz um resultado correto, certamente há um bug no software
2) faz algo que a especificação diz que não faz
Exemplo: Se o software permitir lançar e calcular a soma com um despesa de R$ 25,00, certamente há um bug no software
3) faz algo que não foi especificado
Exemplo : Se um gerente utilizando o software para prestar contas de viagem lançar uma despesa acima de R$ 20,00 e o software aceitar, certamente há um bug no software
4) apesar de não ter sido especificado, o software deveria fazer e não faz
Exemplo: Se o software permitir que seja lançado mais de duas despesas com refeição em um único dia, certamente há um bug no software
5) é difícil de entender, de usar, é lento ou, sob os olhos de quem testa não está certo
Exemplo: estes exemplos de bugs, referem-se mais as dimensões de usabilidade e desempenho além da própria percepção do testador do software. Muitas vezes um software extremamente lento, mas funcionalmente correto, pode parecer para o usuário como um software com bug, pois ao realizar uma determinada operação, ele não tem confiança, devido a lentidão, que essa operação foi realizada corretamente pelo software.

Os bugs de um software podem ter sua origem nas fases de requisitos de análise e desenho ou de construção do software. São exemplos de bugs oriundos da fase de requisitos, o mau entendimento das necessidades dos usuários, descrição funcional ambígua ou incompleta, interface gráfica pobre. Na fase de análise e desenho pode-se originar bugs associados a arquitetura do software, no modelo de dados e nas interfaces do sistema. Já na fase de construção (ou codificação) pode-se imageoriginar bugs devido a implementação inadequada de algoritimos de processamento, controle da lógica, falta de documentação do código e integração entre componentes. Uma fase de testes mau planejada e implementada, pode contribuir para uma baixa detecção de bugs, decorrendo em um software de baixa qualidade. É importante manter um repositório de defeitos de forma a se obter indicadores da origem dos defeitos, e poder se atuar no processo de melhoria contínua do desenvolvimento de software.

Os bugs também são originados porque: existe pressão nos prazos de entregas do software, os códigos podem ser complexos, muita complexidade da infra-estrutura, mudanças na tecnologia, muitas interações do sistema.
Os bugs também podem ser causadas por condições do ambiente tais como:
radiação, magnetismo e poluição, que podem causar danos em software embarcado (firmware) ou influenciar a execução do software pela mudança das características de hardware.

Os bugs de software em função da sua gravidade podem causar diversos tipos de perdas para as empresas. Por exemplo a Intel, que detectou um bug em operações com ponto flutuante no Pentium em 1994, julgou-o como não crítico e posteriormente teve que arcar com uma despesa de U$ 400 milhões na reposição dos chips com defeito. Outro bug, o chamado bug do ano 2000, decorrente da representação do ano utilizando-se dois algarismos, teve em U$ 1 bilhão os gastos estimados com a sua correção.
Assim, para evitar que o software produzido entre para a lista dos bugs famosos, deve-se planejar um criterioso processo de testes visando reduzir ao máximos os bugs “críticos” .
Neste link http://wwwzenger.informatik.tu-muenchen.de/persons/huckle/bugse.html você encontra uma extensa lista de bugs encontrado nos mais diferentes tipos de software.

Para que se possa obter um produto de software de qualidade é importante conhecer onde os bugs são originados. A tabela abaixo ilustra (segundo Ron Patton) onde os bugs são originadosimage. Sabendo-se desse percentual de origem dos bugs, pode-se adotar procedimentos, como por exemplo revisões das especificações e revisão de código visando reduzir os bugs já na sua origem.

Veja esse divertido video sobre os bugs.  Talvez o vídeo nos sirva de inspiração para atacar os bugs existentes nos softwares que produzimos.

Referência bibliográfica: PATTON, Ron. Software Testing; 2 ed. Sans Publishing, 2006

Compartilhe:
  • Print
  • email
  • RSS
  • Add to favorites
  • Digg
  • Twitter
  • Facebook
  • MySpace
  • LinkedIn
  • del.icio.us
  • Slashdot
  • Technorati
  • Rec6
  • Google Bookmarks
  • Yahoo! Bookmarks
  • Yahoo! Buzz

Related posts:

  1. Saiba quais são as fases dos testes de software
  1. Nenhum comentário ainda.
  1. Nenhum trackback ainda.