Por

ANTONIO MENDES DA SILVA FILHO
Professor do Departamento de Informática da UEM. Doutor em Ciência da Computação

VERSÃO WORD [ZIP]

 

Engenharia de confiabilidade de software

 

Software tem sido companheiro meu, seu e de quase todas as pessoas em uma gama enorme de produtos. Em nosso cotidiano, podemos encontrar software embutido em forno microondas, nos jogos de computador bem como no controle de aeronaves e sistemas de telecomunicações, só para citar alguns exemplos.

Associado ao software, há um atributo de qualidade de suma importância para qualquer produto: confiabilidade. A confiabilidade de software é, geralmente, definida como a probabilidade do software operar sem ocorrência de falhas durante um período especificado de tempo em um determinado ambiente.

Num contexto mais amplo, a qualidade de software é uma propriedade multidimensional que inclui, além da confiabilidade, outros fatores de satisfação do cliente como funcionalidade, usabilidade, desempenho, habilidade de prestação de serviço, manutenibilidade e documentação. Todavia, a confiabilidade de software é, comumente, aceita como um fator chave da qualidade de software, uma vez que a confiabilidade de software pode quantificar as falhas de software.

Disponibilidade é um outro atributo importante de sistemas que têm software como componente. Disponibilidade é a probabilidade, em qualquer instante de tempo, de um sistema funcionar satisfatoriamente em um determinado ambiente. Em outras palavras, é a probabilidade de um sistema está disponível quando necessário.  Disponibilidade pode ser determinada pela relação:

Disponibilidade = ((MTTF)/(MTTF + MTTR)).100%
onde:
MTTF (Mean Time to Failure) é o tempo médio até a ocorrência de falha.
MTTR (Mean Time to Repair) é o tempo médio de reparo.

Esses dois atributos, confiabilidade e disponibilidade compreendem a base da engenharia de confiabilidade de software (ECS) que é definida como o estudo quantitativo do comportamento operacional de sistemas de software com base nos requisitos de usuários relativo a confiabilidade. Engenharia de confiabilidade de software inclui:

  • Medição de confiabilidade de software, a qual inclui estimação e previsão com o uso de modelos de confiabilidade de software.

  • Atributos e métricas de projeto de produtos, processo de desenvolvimento, arquitetura de sistema, ambiente operacional do software e suas implicações sobre a confiabilidade.

  • Aplicação deste conhecimento na especificação e projeto da arquitetura de software do sistema, desenvolvimento, testes, uso e manutenção.

Para tanto, torna-se necessário a coleta de dados de falhas. Esses dados são coletados para se fazer a medição da confiabilidade de software. Essa coleta compreende: (a) contagem de falhas – esse tipo de dado faz o rastreamento da quantidade de falhas detectadas por unidade de tempo; (b) tempo médio entre falhas – esse tipo de dado faz o rastreamento dos intervalos entre falhas consecutivas. Além disso, ECS requer a medição de confiabilidade de software que envolve duas atividades: estimação e previsão de confiabilidade.

A atividade de estimação determina a confiabilidade de software atual aplicando  técnicas estatísticas de inferência aos dados de falhas obtidos durante o teste do sistema ou durante a operação do sistema. Esta é uma medida que considera a confiabilidade obtida desde um instante passado até o instante atual. Seu principal objetivo é avaliar a confiabilidade atual e determinar se o modelo de confiabilidade está bem calibrado.

Já a atividade de previsão determina a confiabilidade de software futura baseada em métricas de software e medidas disponíveis. Dependendo do estágio de desenvolvimento, a previsão pode envolver diferentes técnicas como:

Quando os dados de falhas estão disponíveis – Por exemplo, o software encontra-se em testes ou no estágio operacional. Neste caso, as técnicas de estimação podem ser usadas para parametrizar e verificar os modelos de confiabilidade de software, os quais realizam previsão de confiabilidade de software futura.

Quando os dados de falhas não estão disponíveis – Por exemplo, quando o software ainda encontra-se na fase de projeto ou implementação. Neste caso, as métricas obtidas do processo de desenvolvimento de software e as características do produto resultante podem ser utilizadas para determinar a confiabilidade de software durante testes.

 

Aos leitores interessados em conhecer um pouco mais sobre engenharia de confiabilidade de software, recomendo consultar as referências abaixo.

Musa, J. D. Software Reliability Engineering: More Reliable Software, Faster Development and Testing, ISBN 0-07-913271-5, McGraw-Hill, New York. 1998.

Musa, J. D. (updated regularly). More Reliable Software Faster and Cheaper (Software Reliability Engineering) website: http://members.aol.com/JohnDMusa/

Musa, J.D., A. Iannino, and K. Okumoto. Software Reliability: Measurement, Prediction, Application, ISBN 0-07-044093-X, McGraw-Hill, New York. 1987.

ANTONIO MENDES DA SILVA FILHO

     



http://www.espacoacademico.com.br - Copyright © 2001-2003 - Todos os direitos reservados