terça-feira, 7 de fevereiro de 2012

Predição de Defeitos nos Softwares

Apesar da produção de um software de qualidade depender de muitos fatores, a inclusão das atividade de teste contribuem, e muito, na qualidade final do software, pois uma de suas etapas é a identificação dos defeitos existentes no produto. Assim, antecipar a localização de defeitos contritui para o direcionamento do teste, de forma que a equipe de teste possa direcionar seus esforços para as partes do software que mais tendem a apresentar problemas

O que significa Prdição de Defeitos em Software?

Para Pontes(2008) "Predição de defeitos é a tentativa de antecipar a localização de defeitos em uma aplicação através do uso de técnicas específicas." Então, predizer um defeito, é prever seu aparecimento através de algumas ações corretivas.

E afinal o que se ganha com isso?

Ainda segundo Pontes(2008), tem-se os seguintes benefícios:
• Suporte ao planejamento e execução de testes;
• Identificação de pontos de melhoria no código desenvolvido, através do diagnóstico de trechos de código complexos que podem ser simplificados;
• Redução da taxa de inserção de defeitos na manutenção e evolução do software;
• Planejamento do esforço de desenvolvimento de iterações futuras do projeto.

E quais técnicas usar?

• Análise de Regressão: é uma técnica de modelagem utilizada para analisar a relação entre uma variável dependente (Y) e uma ou mais variáveis independentes X1, X2, X3,..., Xn.
Tem como  objetivo estimar uma função que descreve a relação entre essas variáveis e  predizer o valor que a variável dependente (Y) irá assumir.
 
Pontes (2008) exemplifica seu uso da seguinte forma: "Podemos exemplificar como variável dependente, o que se quer observar, como a existência ou não de defeitos em determinado módulo da aplicação, quantidade dos defeitos existentes ou densidade."

A Análise de Regressão está subdividida em:

Outras técnicas, conhecidas como técnicasde aprendizado de máquina, são as seguintes:
 • Árvore de decisão:utilizadas para dar ao agente a capacidade de aprender, bem como para tomar decisões.Árvores de decisão são similares a regras if-then.
Para representar graficamente a árvore de decisão são geralmente usadas linhas para identificar a decisão (por exemplo "sim" ou "não") e nós para identificar a as questões sobre as quais se deve decidir. Cada um dos ramos formador por linhas e nós termina numa espécie de folha que identifica a consequência mais provável da sequência de decisões tomadas.
 • Classificadores Bayesianos: São baseados na teoria de Thomas Bayes.
Trata da probabilidade de acontencimento de eventos: Altera a estimativa inicial com base em novas informaçõesque atuam como um modificador de opinião.
Mostra como fazer avaliações e como ajustá-las quando deparados com novos dados.
Apresentadas as técnicas, faz-se necessário um estudo de qual técnica será mais viável para cada projeto. E lembrem-se Para a equipe se beneficiar da aplicação de técnicas de predição, deve definir as informações a serem coletadas de um projeto já no inicio do seu desenvolvimento, pois qualidade dos dados coletados pode influenciar a qualidade dos modelos de predição desenvolvidos.
 
Referência:
Pontes, Melissa Barbosa. Predição de Defeitos em Software. 2008. Disponível em < http://www.devmedia.com.br/post-14497-Artigo-Engenharia-de-Software-17-Predicao-de-Defeitos-em-Software.html> Acesso em 07/02/2012