Hoje
em dia, os sistemas de software têm um papel de
suma importância na operação de redes de telecomunicações.
O constante crescimento desses sistemas tanto em
tamanho quanto em complexidade tornam eles extremamente
difíceis de terem o software exaustivamente testado
a fim de assegurar que eles desempenhem as funcionalidades
especificadas.
A
história das telecomunicações tem mostrado uma clara
tendência em direção à detecção automática de falhas.
Note que se isto é feito em tempo real, permite-se
que ações corretivas sejam tomadas antes que falhas
afetem a qualidade
ou mesmo sejam percebidas pelos usuários
dos serviços de telecomunicações.
Essa
tendência tem sido evidente em hardware. Por exemplo,
no entroncamento (i.e. elo de comunicação) entre
estações de telecomunicações, a confiança inicial
que antes recaía sobre o relato de usuários relativo
a problemas de transmissão passou então para o procedimento
de testes periódicos de entroncamentos quando do
advento dos troncos digitais e, em seguida, para
a monitoração contínua das taxas de erro. Por outro
lado, a detecção automática de falhas de software
tem caminhado a passos menores.
No
momento, os provedores de serviços de telecomunicações
fazem uso de um conjunto de medidas especiais, incluindo
temporizadores de sentinela (também conhecidos como
watchdog timers), auditores de software e chamadas
de testes. Apenas uma fração de relatos de problemas
de campo são eventualmente rastreados às causas
de software.
Todavia,
com o crescente uso de software para implementação
das funcionalidades dos serviços de telecomunicações,
a necessidade por detecção automática de falhas
de software tem-se tornado um item imprescindível.
Além disso, com as tendências atuais de redes com
múltiplos fornecedores, nas quais a localização
de falhas de software têm um papel crítico, exige-se
que o suporte à detecção automática de falhas.
Dentro
deste contexto, diversas abordagens têm sido propostas
para elevar o nível de confiabilidade de software
de sistemas bem como para prover suporte a tolerância
a falhas. Três das principais técnicas, relatadas
na literatura pertinente,
para melhorar a confiabilidade de software
na fase operacional de sistemas compreendem N-Version
Programming (NVP), Recovery Blocks (RB) e Software
Audits (SA). Essas técnicas são agrupadas junto
com a de
Supervisão de Software (SS) na tabela 1 em função
de suas características, incluindo a capacidade
de supressão
de falhas e a granulosidade de aplicação.
|
Abordagem
|
Granulosidade de Aplicação
|
Capacidade de Supressão de Falhas
|
|
NVP
|
grande
|
total
|
|
RB
|
pequena
|
total
|
|
AS
|
pequena
|
parcial
|
|
SS
|
grande
|
pequena
|
Tabela 1: Técnicas de Melhoria
da Confiabilidade de Software na Fase Operacional.
Embora
NVP, RB e AS tenham demonstrado com seu uso uma
redução na quantidade de falhas de software, elas
possuem custo elevado. Por outro lado, outra técnica
para melhoria indireta da confiabilidade de software,
i.e. SS, possui custo menor comparativamente às
demais nem tampouco requer desenvolvimento de várias
outras versões de software. Supervisão de software
(SS) é uma técnica que faz uso da especificação
do sistema supervisionado a fim de detectar falhas
em seu estágio operacional.
Uma
questão importante a ser destacada quanto a técnica
de supervisão de software é que considera-se a suposição
de que não existe erros de especificação. Uma discussão
mais detalhada sobre esse tópico irá aparecer no
artigo intitulado “Automatic Detection of Service
Degradations in Telecom Systems” dos anais do 14th
IEEE International Symposium on Software Reliability
Engineering.