Diferença entre erro, falha e defeito

Os termos errofalha e defeito significam a mesma coisa? Não. Apesar de existirem diversas definições na literatura, estes e outros termos são utilizados sem cuidado e sem distinção. E isto de fato não representa um problema para equipes que se entendem perfeitamente (que são raras exceções). Porém uma utilização correta das definições pode melhorar bastante a comunicação do grupo quando algo de estranho aparece. Mas qual delas adotar?

Então vamos a mais uma:

Um erro ou defeito (faulterrordefect) está relacionado a um problema latente nos artefatos gerados durante o processo de desenvolvimento. Ok, vamos com calma. Eles normalmente se encontram nos produtos de trabalho antes mesmo do executável, tais como: documentação de requisitos (ex. requisitos ambíguos ou incorretos), código fonte (ex. erros de precedência lógica), modelos de dados (ex. omissão de tipagem), e por aí vai. Resumidamente, o defeito não depende de um programa executável para existir. Sendo assim, pode ser mapeado antes mesmo da codificação e dos testes!

Já uma falha (failure) está normalmente relacionada a um comportamento resultante de um defeito. Ou seja, é um evento inesperado que ocorre durante a execução do software. Por exemplo, o usuário não se autentica pois o campo de senha aceita apenas 6 caracteres, e no cadastro ele se registrou com uma senha de 8 caracteres! Você consegue imaginar algum defeito que origine esta falha? E em qual artefato?