Therac-25 - Therac-25

O Therac-25 era uma máquina de terapia de radiação controlada por computador produzida pela Atomic Energy of Canada Limited (AECL) em 1982 após as unidades Therac-6 e Therac-20 (as unidades anteriores foram produzidas em parceria com a CGR da França ).

Ele esteve envolvido em pelo menos seis acidentes entre 1985 e 1987, nos quais os pacientes receberam overdoses massivas de radiação . Por causa de erros de programação simultâneos (também conhecidos como condições de corrida), às vezes dava a seus pacientes doses de radiação centenas de vezes maiores do que o normal, resultando em morte ou ferimentos graves. Esses acidentes destacaram os perigos do controle de software de sistemas essenciais para a segurança e se tornaram um estudo de caso padrão em informática de saúde e engenharia de software . Além disso, o excesso de confiança dos engenheiros e a falta de devida diligência para resolver bugs de software relatados são destacados como um caso extremo em que o excesso de confiança dos engenheiros em seu trabalho inicial e a falta de acreditar nas reivindicações dos usuários finais causaram repercussões drásticas.

Projeto

A máquina oferece dois modos de terapia de radiação :

Também incluiu um modo de "luz de campo", que permitiu ao paciente ser posicionado corretamente iluminando a área de tratamento com luz visível.

Descrição do Problema

Interface de usuário simulada do Therac-25

Os seis acidentes documentados ocorreram quando o feixe de elétrons de alta corrente gerado no modo de raio-X foi entregue diretamente aos pacientes. Duas falhas de software eram as culpadas. Um, quando o operador selecionou incorretamente o modo de raio-X antes de mudar rapidamente para o modo eletrônico, o que permitiu que o feixe de elétrons fosse definido para o modo de raio-X sem que o alvo de raio-X estivesse no lugar. Uma segunda falha permitiu que o feixe de elétrons fosse ativado durante o modo de luz de campo, durante o qual nenhum scanner de feixe estava ativo ou o alvo estava no lugar.

Os modelos anteriores tinham intertravamentos de hardware para evitar tais falhas, mas o Therac-25 os removeu, dependendo, em vez disso, das verificações de segurança do software.

O feixe de elétrons de alta corrente atingiu os pacientes com aproximadamente 100 vezes a dose de radiação pretendida e em uma área mais estreita, liberando uma dose potencialmente letal de radiação beta . A sensação foi descrita pelo paciente Ray Cox como "um choque elétrico intenso", que o fez gritar e sair correndo da sala de tratamento. Vários dias depois, apareceram queimaduras de radiação e os pacientes mostraram os sintomas de envenenamento por radiação ; em três casos, os pacientes feridos morreram posteriormente como resultado da overdose.

Raiz dos problemas

Uma comissão atribuiu a causa principal às práticas gerais de design e desenvolvimento de software deficientes, em vez de apontar erros de codificação específicos. Em particular, o software foi projetado de forma que fosse realisticamente impossível testá-lo de uma forma limpa e automatizada .

Os pesquisadores que investigaram os acidentes encontraram várias causas contribuintes. Estas incluíram as seguintes causas institucionais:

  • A AECL não teve o código do software revisado de forma independente e optou por contar com o código interno, incluindo o sistema operacional.
  • A AECL não considerou o design do software durante sua avaliação de como a máquina poderia produzir os resultados desejados e quais modos de falha existiam, focando puramente no hardware e afirmando que o software estava livre de bugs.
  • Os operadores de máquinas foram tranquilizados pelo pessoal da AECL de que overdoses eram impossíveis, levando-os a rejeitar o Therac-25 como a causa potencial de muitos incidentes.
  • A AECL nunca testou o Therac-25 com a combinação de software e hardware até que ele foi montado no hospital.

Os pesquisadores também encontraram vários problemas de engenharia :

  • Várias mensagens de erro exibiam apenas a palavra "MALFUNCTION" seguida por um número de 1 a 64. O manual do usuário não explicava ou mesmo abordava os códigos de erro, nem dava qualquer indicação de que esses erros pudessem representar uma ameaça à segurança do paciente.
  • O sistema distinguiu entre os erros que pararam a máquina, exigindo uma reinicialização, e os erros que apenas pausaram a máquina (o que permitiu que os operadores continuassem com as mesmas configurações pressionando uma tecla). No entanto, alguns erros que colocavam o paciente em perigo apenas faziam uma pausa na máquina, e a ocorrência frequente de pequenos erros fizeram com que os operadores se acostumassem a despausar habitualmente a máquina.
    • Uma falha ocorreu quando uma sequência particular de pressionamentos de tecla foi inserida no terminal VT-100 que controlava o computador PDP-11 : se o operador pressionasse "X" para (erroneamente) selecionar o modo de fóton de 25 MeV, use o "cursor para cima" para editar a entrada para "E" para (corretamente) selecionar o modo 25 MeV Electron e, em seguida, "Enter", tudo dentro de oito segundos após o primeiro pressionamento de tecla, bem dentro da capacidade de um usuário experiente da máquina.
  • O projeto não tinha nenhum bloqueio de hardware para evitar que o feixe de elétrons operasse em seu modo de alta energia sem o alvo no lugar.
  • O engenheiro havia reutilizado o software do Therac-6 e do Therac-20, que usava intertravamentos de hardware que mascaravam seus defeitos de software. Esses dispositivos de segurança de hardware não tinham como informar que haviam sido acionados, portanto, erros preexistentes eram ignorados.
  • O hardware não forneceu nenhuma maneira para o software verificar se os sensores estavam funcionando corretamente. O sistema de posição da mesa foi o primeiro implicado nas falhas do Therac-25; o fabricante o revisou com interruptores redundantes para verificar sua operação.
  • O software define uma variável de sinalizador incrementando-a, em vez de defini-la como um valor fixo diferente de zero. Ocasionalmente , ocorria um estouro aritmético , fazendo com que o sinalizador voltasse a zero e o software ignorasse as verificações de segurança.

Leveson observa que uma lição a ser tirada do incidente é não presumir que o software reutilizado é seguro: "Uma suposição ingênua é freqüentemente feita de que reutilizar software ou usar software comercial de prateleira aumentará a segurança porque o software terá sido exercitado Reutilizar módulos de software não garante a segurança no novo sistema para o qual eles são transferidos ... "Essa fé cega em paradigmas codificados por software mal compreendidos é conhecida como programação de cultos de carga . Em resposta a incidentes como os associados ao Therac-25, foi criado o padrão IEC 62304 , que apresenta padrões de ciclo de vida de desenvolvimento para software de dispositivos médicos e orientações específicas sobre o uso de software de linhagem desconhecida .

Veja também

Notas

Leitura adicional