JellyPages.com

quarta-feira, 16 de março de 2011

Therac - 25


 Therac-25
Os acidentes do Therac-25 são os acidentes mais sérios relacionados a falha em computadores.

Aceleradores lineares são dispositivos que aceleram elétrons a fim de criar feixes de luz que podem destruir tumores com um mínimo impacto do tecido saudável local. Estes dispositivos eram normalmente mecânicos em sua totalidade até o início da década de 70.

O Therac-25, máquina criada pela empresa AECL (Atomic Energy of Canada Limited) para produzir radiação a ser utilizada no tratamento Radioterápico, foi desenvolvida utilizando uma tecnologia diferente da usada nas máquinas anteriores, o que fez que a máquina fosse mais compacta, versátil, e deveria também ser mais fácil de usar.
Os predecessores do Therac-25 foram o Therac-6 (que produzia raio-x apenas) e Therac-20 (que produzia feixes de elétrons e raio-x). A Família Therac-20 era controlada por um PDP-11 (a máquina não é do tipo stand-alone); o projeto possui o controle através de travas mecânicas. Já no Therac-25 as funções de segurança foram colocadas no software.
Apesar desse investimento em Software, o projeto do Therac-25 teve partes inter-relacionadas e reutilizadas do Software das máquinas antigas. Porém os testes realizados aparentemente não tiveram uma grande preocupação com o Software.
A máquina trabalhava com dois tipos de tratamento:
·         A radioterapia de feixe de Elétrons direto, que aplicava desde doses fracas 5 MeV (milhões de elétrons-volts) até doses elevadas de 25 MeV, durante um curto período de tempo;
·         Terapia com Raios X, que usava o feixe de 25 MeV passando por uma chapa que o convertia em Raios X.
Os acidentes aconteciam quando o feixe de alta intensidade era ativado sem o target ter sido rotacionado para seu lugar. O software da máquina 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ência de queimadura.

Entre as principais causas dos acidentes investigados pelos pesquisadores, têm-se :
·         Ausência de procedimentos de análise, projeto e verificação (teste);
·         Ausência de gerenciamento de projeto e planejamento de manutenção;
·         Negligência no projeto de interface;
·         Tratamento falho de comunicação com hardware (race condition);
·         A documentação começou a ser feita quando os acidentes foram reportados;
·         Apenas hardware foi testado inicialmente;
·         Após os acidentes, hardware e software foram testados em separado e sem nenhum planejamento a cada modificação. Apenas a modificação do software foi considerada.
·         O software do THERAC-25 era similar ao do seu predecessor, o THERAC-20. Esse software tinha erros que podiam se manifestar em certas circunstâncias. Porém, no THERAC-25, o software também foi projetado para assumir maior responsabilidade pela segurança e alguns mecanismos de proteção por hardware, usados no THERAC-20, foram removidos do novo projeto. Como resultado, em determinadas situações em que o THERAC-20 queimaria alguns fusíveis, o THERAC-25 irradiou, fatalmente, alguns pacientes;
·         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 atribuia os valores digitados para os controles (o que levava a aplicação das doses letais). Não suportava intruções concorrentes;
·         Overflows* podiam fazer o software não executar procedimentos de segurança;
·         O dispositivo responsável por sincronizar o hardware é removido, mas o software não possui sincronismo e o software falha na tarefa de manter invariantes essenciais: o feixe de elétrons ou o feixe mais forte de radiação e a chapa se interferem na geração de raios X;
As overdoses ocorreram entre 1985 e 1987, a máquina estava em funcionamento desde 1983.
Serão citados alguns acidentes:
No primeiro, a AECL foi notificada e respondeu que nenhum problema poderia ter ocorrido. A paciente, apesar de ter desenvolvido uma vermelhidão e inchaço em volta da área do tratamento, continuou a ser submetida ao tratamento com o Therac-25, a reação foi tida como normal, conseqüente do tratamento, ou de sua doença.

Outro acidente ocorreu quando a máquina se desligou após mostrar a mensagem “H-tilt”, a mensagem de “no dose” e “Treatment pause” ao operador ativá-la. Após isso o operador tentou reativá-la, mais 5 vezes, após o operador da máquina chamou um técnico que não encontrou problemas na máquina.

Com a descrição destes acidentes pode-se observar que houve falha no projeto de Software, que deveria ter sido realizado com mais cuidado, já que foi escolhido utilizar o Software para realizar os controles de segurança. No caso de optar por reuso do sistema anterior, deveriam ser realizados testes mais cuidadosos. Não houve preocupação com a usabilidade do sistema, como podemos observar pelas mensagens de erro passadas do sistema, além das mensagens supracitadas, outras mensagens de erro, como “MALFUNCTION 1 ... 64” eram demonstradas ao usuário, sem que nem ao menos no manual, houvesse maiores explicações sobre elas. Falhas do lado dos operadores e médicos também ocorreram, por desconsiderar as reclamações dos pacientes e continuar com o tratamento. A AECL deveria ter levado em consideração os contatos feitos pelos médicos e hospitais dos pacientes acidentados, realizando novos testes no Therac-25, assim que o primeiro acidente ocorreu.

Em 1987, após o 6º acidente, a FDA declara que o Therac-25 não está de acordo com a lei dos Estados Unidos da América e pede que a AECL avise seus clientes que o aparelho não deve ser utilizado para tratamento de rotina.
Histórico dos Acidentes
Kenneston Regional Oncology Center (1985)
·         Paciente em tratamento de CA de mama recebe overdose
·         Máquina estava operando há 6 meses; após uma investigação superficial, técnicos concluíram que não havia risco de overdose.
·         Paciente desenvolveu uma queimadura profunda na área do tratamento. Tratamento persistiu e o paciente continuou a sentir dores cada vez maiores, perdendo o movimento em um dos braços
·         No total foram 15 os acidentes reportados em diferentes locais, antes que a máquina fosse
tirada de operação.
·         Todos os acidentes envolveram morte ou deixaram seqüelas para o resto da vida
·         Inabilidade dos órgãos de fiscalização em detectar e reconhecer a ocorrência dos acidentes.
·         Negligência da empresa durante o projeto e análise de segurança do software de controle.
·         Falta de um planejamento de manutenção: a medida que acidentes eram reportados, correções foram feitas, mas deram origem a outros acidentes.

Conclusões
·         Dispositivos mecânicos de segurança foram eliminados (procedimento relativamente comum, tendo em vista a redução de custos). Colocar demasiada confiança em software é errado. Produtos não podem ser desenvolvidos de forma que uma simples falha de software possa causar uma catástrofe. Dispositivosmecânicos de segurança adicionais devem ser mantidos.
·         A análise de segurança do dispositivo não levou em conta o software desenvolvido.
·         Tendência a acreditar que a causa do acidente havia sido determinada sem uma evidência adequada e sem examinar todos os fatores que contribuíram para o mesmo.
·         Assumir que corrigir um erro em particular iria prevenir futuros acidentes. Sempre existe
um outro erro...
·         Acidentes em sistemas complexos devem ser vistos do ponto de vista do processo de
engenharia empregado e não pelo uso de software. Será que algum dia poderemos
desenvolver software com zero erro?
Características de desenvolvimento do software
·         Ausência de procedimentos de análise, projeto e verificação (teste).
·         Ausência de gerenciamento de projeto e planejamento de manutenção
·         Negligência no projeto de interface
·         Tratamento falho de comunicação com hardware (race condition)
·         Documentação começou a ser feita quando os acidentes foram reportados
·         Apenas hardware foi testado inicialmente. Após os acidentes, hardware e software foram testados em separado e sem nenhum planejamento a cada modificação.
·         Reusabilidade não garante que o novo produto vai funcionar a contento e pode levar a projetos de baixa qualidade e potencialmente perigosos.
·         Cursos de programação e experiência em programação não garantem a produção de software de qualidade
·         Apesar de que o uso de boa prática de engenharia de software não se pode prevenir todos os erros, mas é possível eliminar grande parte deles. É portanto um requisito mínimo.
Referências:
LEVESON, Nancy. “An Investigation of the Therac-25 Accidents”, University of Washington e Clark S. Turner, University of California, Irvine, IEEE Computer, Vol. 26, No. 7, July 1993, pp. 18-41