Recentemente, em um dos seminários do LES, foi apresentada uma pesquisa sobre estratégias de aumento de qualidade em software utilizando-se instrumentação de código. Com adequada instrumentação é possível evitar-se que um software apresente um defeito de maneira não controlada. Antever um possível problema e fazer com que o software reaja a esse problema de maneira “educada” é um desafio para os Engenheiros de Sofware. Em Inglês, utiliza-se o termo “graceful degradation” para denotar essa maneira “educada”. Além disso, uma instrumentação adequada fornecerá subsídios para a reparação do problema.
Vamos utilizar esse contexto para mostrar como é problemático o uso de nomes de uma maneira pouco cuidadosa. Nomes, claro, são muito importantes, mas muitas vezes o seu mau uso pode gerar muita confusão.
O caso que iremos tratar é justamente o termo utilizado para denotar essas estratégias de instrumentação do código com objetivo de torná-lo mais “educado”. Em Inglês utiliza-se o termo “Fault-Tolerant” para denotar software que age educadamente. No entanto em Português o nome comumente utilizado é “Tolerância a Falhas“ .
Tradução errada? Não exatamente, tendo em vista que vários dicionários traduzem “fault” para falha ( veja aqui, aqui e aqui). Se consultarmos o dicionário do Aurélio, veremos que falha tem como sinônimo falta, mas falta não tem falha como sinônimo. No entanto, o mais apropriado seria que a tradução fosse falta, conforme esse dicionário. Se consultarmos o Wordnet, veremos que “fault” não tem “failure” como sinônimo, mas veremos que “failure”, sim, tem “fault” como sinônimo. Portanto há coerência entre os dicionários do Aurélio e o Wordnet.
E dái? Bom, na literatura de Engenharia de Software na língua Inglesa o termo “failure” tem uma denotação bastante distinta do termo “fault”. Diz-se que um software pode ser tolerante a faltas, mas não a falhas! Não existe em Inglês o termo “Failure Tolerant”. É simples de ver: na Wikipedia encontra-se o termo “fault tolerant”, mas o termo “failure tolerant” é inexistente.
A distinção entre falta e falha é a seguinte: a) falta é um problema bem determinado no artefato, b) falha é a conseqüência de uma ou mais faltas e c) a falha é a percepção de que o artefato não comportou-se como o esperado. Portanto, observar que um software falhou é um nível de percepção externa ao software, enquanto a falta é a identificação interna, no software, de um problema.
No entanto, a Engenharia de Software, principalmente na área de Validação, é mais cuidadosa na escolha de termos, com o uso de “error” e “defect”. Se consultarmos o Wordnet veremos que não existe ligação direta de “error” para “defect”, nem vice-versa. No entanto, o termo “fault” aparece na lista de sinônimos das duas palavras. O mesmo ocorre no dicionário do Aurélio.
Na área de Validação utiliza-se erro para denotar um problema interno ao artefato e defeito para denotar a percepção externa de que o artefato não se comportou como o esperado. Erros ocasionam defeitos. Veja o paralelismo com a definição acima de falha e falta. No entanto em Validação vai-se além: testa-se para descobrir-se defeitos e depura-se para descobrir-se erros!
Nomes têm que ser utilizados com cuidado!
(08/07) – Veja uma relação de relatos sobre problemas na produção de software.
…………
Leia sobre Sistemas de Informação.
Veja a página do autor.
agosto 20, 2006 às 9:59 pm |
# S: (n) defect (an imperfection in a bodily system) “visual defects”; “this device permits detection of defects in the lungs”
# S: (n) defect, shortcoming (a failing or deficiency) “that interpretation is an unfortunate defect of our lack of information”
# S: (n) defect, fault, flaw (an imperfection in a device or machine) “if there are any defects you should send it back to the manufacturer”
# S: (n) blemish, defect, mar (a mark or flaw that spoils the appearance of something (especially on a person’s body)) “a facial blemish”
junho 8, 2007 às 12:58 am |
Muito bom.
Entretanto, convém lembrar que de acordo com a KA de Testes do SWEBoK, fault e defect (falta e defeito) são considerados sinônimos – são as causas do mau funcionamento – e podem gerar como consequência uma failure (falha) – o efeito indesejado.
[]s,
Marcos Urata
junho 10, 2007 às 10:22 pm |
Obrigado. A nota é justamente para lembrar como muitas vezes a literatura é pouco cuidadosa com o uso de nomes.
Veja o que escrevi: “Se consultarmos o Wordnet veremos que não existe ligação direta de “error” para “defect”, nem vice-versa. No entanto, o termo “fault” aparece na lista de sinônimos das duas palavras.”, ou seja em Inglês, de maneira geral, os termos fault and defect são sinônimos.
agosto 16, 2007 às 11:08 am |
[…] Falhas no Processo de Produção de Software Relaciono abaixo alguns elos que reportam sobre problemas na produção de software. Estão em Inglês. Vou atualizar a lista com textos em Português na […]
outubro 3, 2007 às 3:48 pm |
[…] porque procura comparar as expectativas com os resultados demonstrados. Lembrem que um teste detecta defeito, para encontrar os erros precisamos de outro processo. Considero testes um tema já devidamente […]
novembro 22, 2007 às 9:48 am |
[…] A reportagem inicia-se com a frase: “O maior apagão da história da aviação brasileira foi causado por falha humana.”. O termo apagão foi cunhado pela imprensa por lembrar a crise de energia que o país passou no fim do século passado. Outro ponto a ressaltar é o emprego do termo “falha” ao ínves de “falta”, veja nota anterior sobre isso. […]
agosto 26, 2011 às 3:34 am |
[…] Sobre erros e defeitos: vejam aqui. […]
novembro 24, 2020 às 11:32 pm |
[…] S. P. Erro, Defeito: Falta, Falha -> cuidado ao dar nomes!!. Disponível em <https://jcspl.net/2006/08/20/erro-defeito-falta-falha-error-fault-failure/>. Acesso em 15 mai. […]