Therac-25

Bruna Ferreira - Mar 27 - - Dev Community

Você já deve ter se deparado com vários erros de código no seu cotidiano, seja em um aplicativo, em um site ou em um sistema. Esses erros podem ser causados por diversos fatores, entre eles, as falhas de programação.

Captura de tela de um programa de computador fazendo a soma de dois campos. 1 + 1 = 11

Muitas vezes, esses erros podem ser inofensivos, até engraçados em alguns casos. Mas há situações em que eles podem ser extremamente perigosos.

Uma breve história

Entre as décadas de 70 e 80, radioterapia era um dos tratamentos utilizados para combater o câncer, existiam dois tipos diferentes de tratamento, com emissão de elétrons e raio-x. Cada um deles necessitava um equipamento específico para ser realizado, gerando mais custos para os hospitais.

Então, uma empresa desenvolveu um equipamento que podia realizar ambos os tratamentos, o Therac-25. De acordo com a necessidade do paciente, o equipamento poderia ser configurado para emitir elétrons _ou _raio-x.

Equipamento Therac-25

Uma boa solução?

O Therac-25 foi um grande avanço na medicina, pois permitia que os hospitais economizassem dinheiro e espaço, além de facilitar o tratamento dos pacientes. No entanto, o equipamento começou a apresentar comportamentos estranhos.

Relatos de pacientes

Em um dos primeiros casos, um paciente que estava em tratamento com o Therac-25 relatou que estava sentindo dores intensas durante o processo e sua pele no local da aplicação parecia queimar. Porém os médicos acreditavam que se tratava de uma reação normal do tratamento.

Em um caso mais grave, um paciente relatou estar sentindo choques elétricos durante o processo. Mas o equipamento parecia estar funcionando normalmente, sem apresentar erro durante o procedimento e o monitor indicava que tudo estava correto.

Terminal utilizado para configurações do equipamento

Malfunction 54

Esse erro genericamente chamado de "Malfunction 54" era causado na tela do equipamento, sem especificar o que estava acontecendo. Muitas vezes, os médicos apenas reiniciam o equipamento e continuavam o tratamento, sem saber o que estava acontecendo. Além disso, as informações no monitor apontavam os valores corretos.

O problema

O Therac-25 era controlado totalmente por software, programado em uma linguagem de baixo nível, o que permitia um controle mais preciso do hardware.

Em um momento, uma pessoa que estava operando o equipamento, cometeu um erro ao configurar o tratamento e assim que notou, mudou o tipo de radiação emitida para a correta. Após o procedimento, apareceu um alerta no monitor que indicava ter sido emitida a dose abaixo do necessário. Então a pessoa recomeçou o procedimento.

Ilustração do giro feito pelo equipamento ao mudar a configuração do tipo de raio emitido

Investigação

Depois de vários relatos, tentativas de reproduzir o erro e investigações, foi descoberto que o erro era causado por um problema de software. No momento em que a pessoa alterava o tipo de radiação, o equipamento não conseguia processar a mudança e emitia a dose de radiação muito acima do necessário, causando graves danos e até a morte dos pacientes.

A empresa responsável pelo Therac-25 usou práticas inadequadas de desenvolvimento de software, não haviam mensagens claras em relação aos erros, sequer haviam feito testes de segurança e qualidade.

Considerações

Essa história aqui resumida, é um exemplo de como um erro de software pode ser extremamente perigoso. A falta de ética e responsabilidade no desenvolvimento de software pode causar danos irreparáveis.

Um ponto importante, apesar de sermos muito dependentes de softwares atualmente, não podemos confiar cegamente neles. Mesmo que máquinas tenham uma precisão maior que humanos, elas ainda são programadas por humanos e muitas vezes podem não ter boas intenções.


Mais detalhes sobre o Therac-25.

Enjoy!

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .