# Therac-25

Therac-25 era uma máquina de radioterapia controlada por computador, muito moderna para sua época, por permitir a utilização do mesmo equipamento para a aplicação de diversas doses de radiação nos pacientes. Houve uma série de pelo menos 6 acidentes entre 1985 e 1987, nos quais os pacientes receberam overdose de radiação. Pelo menos cinco mortes aconteceram devido aos acidentes, causados por erros no software que controlava a máquina. Este acidente mostrou o perigo que reside em softwares que controlam operações de segurança.

## Descrição do Problema

A máquina trabalhava com dois modos de tratamento:
* Terapia de feixe de Elétrons direto, que aplicava desde baixas energias (5 MeV) até energias altas,por exemplo 25 MeV, durante um curto período de tempo;
* Terapia com Raios X, que usava o feixe de elétrons de 25 MeV passando por um alvo de tungstênio que o convertia em Raios X.
Quando operava no modo de Feixe de Elétrons direto, um raio de elétrons de baixa intensidade era emitido diretamente da máquina, e então era espalhado para uma concentração segura usando magnetos. Quando operava em modo de Raios X, a máquina havia sido desenhada para rotacionar três componentes no caminho do feixe de alta intensidade emitido, para moderar sua força e modelar seu formato: um target que convertia o feixe de elétrons em Raios X, um filtro, que modelava estes raios e uma câmara de íons, que media a intensidade dos raios.
Os acidentes aconteciam quando o feixe de alta intensidade era ativado sem o target ter sido rotacionado para seu lugar; o software da maquina não detectava que isto havia acontecido e não podia detectar que o paciente estava recebendo uma dose letal de radiação, ou evitar que isso ocorresse. O feixe de alta intensidade atingindo diretamente os pacientes causava a sensação de um forte choque elétrico e a ocorrêcia de queimaduras. Em alguns casos, os pacientes morreram pouco depois devido a exposição excessiva à radiação.

## Causas

Pesquisadores que investigaram os acidentes encontraram diversas causas que contribuíram para os acidentes acontecerem. Entre elas, estavam alguns erros de desenvolvimento que poderiam ter sido evitados, como:
* O código do software não havia sido revisado/testado independentemente;
* O projeto do software não havia sido documentado com detalhes suficientes para permitir o entendimento dos erros
* A documentação do sistema fornecida aos usuários não explicava o significado dos códigos de erro que a máquina retornava
* A primeira reação dos funcionários da AECL (fabricante da máquina) foi negar a existência de erros.
Os pesquisadores também encontraram diversos problemas de engenharia:
* O projeto não continha travas de hardware para prevenir que o feixe de elétrons de alta intensidade fosse aplicado sem o filtro estar em seu lugar;
* O software de modelos mais antigos havia sido reutilizado sem se considerar as diferenças no hardware;
** Os modelos antigos possuíam travas de hardware, quando o defeito se manifestava nestes modelos, eles reiniciavam, o que sempre havia sido visto como algo perturbador, mas nunca foi investigado;
* O software considerava que os sensores sempre funcionavam corretamente, e não havia como verificar isto;
* O sistema de controle não operava sincronizado com a interface usada pelo operador da máquina, e caso o operador mudasse a configuração da máquina muito rapidamente, o sistema não atribuía os valores digitados para os controles (o que levava a aplicação das doses letais);
* Overflows podiam fazer o software não executar procedimentos de segurança;
O caso de Therac-25, suas causas e consequências, é hoje um tema de estudo constante na história da computação e da medicina.