|
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%
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
|