universidade da beira interior mestrado em eng.ª informática
DESCRIPTION
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas. Acidentes originados por falhas de software. Therac -25. Ricardo Campos, 18 de Junho de 2004. Universidade da Beira Interior Mestrado em Eng.ª Informática - PowerPoint PPT PresentationTRANSCRIPT
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas
Acidentes originadospor falhas de software
Ricardo Campos, 18 de Junho de 2004
Therac -25
Agenda
Programação Concorrente
Therac-25
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas
Programação Concorrente
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas
Programação Concorrente
Um programa sequencial tem uma única thread de controlo
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas
Um programa concorrente tem múltiplas threads de controlo que lhe permitem executar várias tarefas em paralelo
O que é um programa concorrente?
Programação Concorrente
Um fio de execução.
Cada thread tem a sua própria pilha, mas partilha o código e a memória com as restantes threads do mesmo processo
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas
O que é uma thread?
pilha pilha
Código
Memória
Programação Concorrente
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas
Porquê a programação concorrente?
Ganhos de performance
Aumento da rapidez de resposta ao utilizador
Programação Concorrente
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas
Problemas
A concorrência é muito utilizada, mas extremamente propensa a erros
Mars Rover
Therac - 25
Therac - 25
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas
Therac - 25
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas
Cronologia 1970 AECL e uma companhia francesa, desenvolvem o Therac-6 e o Therac-20
1983 Anunciado o desenvolvimento do Therac-25
1984 Implementado o Therac-25
1985 – 1987 Vários pacientes recebem doses excessivas durante o tratamento
Introdução Visto até hoje, como o incidente mais trágico relacionado com a morte ou ferimentos em seres humanos, por causa directa de falhas em software
Therac - 25
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas
o caso serve para lembrar: no momento em que confiamos a vida e a saúde das pessoas a computadores, a importância da eliminação de bugs é questão de vida ou morte.
Entre Junho de 1985 e Janeiro de 1987, seis pacientes receberam doses exageradas de radiação enquanto recebiam tratamento do acelerador linear médico Therac-25.
4 dos pacientes morreram
Conceito
Therac - 25
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas
A terapia de radiação é usada para tratar tumores e consiste em destruir o cancro entregando uma dose cuidadosamente calculada de radiação ao tumor, enquanto é minimizada a radiação do tecido circunvizinho
Em tratamentos simples, são aplicados doses na ordem dos 200 rads (dose de radiação absorvida)
Therac - 25
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas
Funcionamento
O Therac-25, antecedido da versão 20, aplicou mais de 20.000 radiações com sucesso em cerca de 500 pacientes
Consistia de uma máquina, instalada numa sala de tratamento e controlada através de software, monitorizado por um operador numa sala contígua
Era uma máquina, com funcionamento em ‘modo-dual’, o mesmo acelerador gerava dois tipos diferentes de raios:
Raios-x para tumores profundos
Raios de electrões para tumores superficiais
Therac - 25
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas
Assentava numa plataforma giratória (que rodava para a posição correcta antes do início do tratamento), com 3 posições:
modo electrões
modo raio-x
operação luz de campo
Therac - 25
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas
O operador sentado numa mesa de controlo (fora da sala de tratamento) confirmava um a um, os parâmetros previamente inseridos na sala de tratamento
Uma vez este processo concluído, o operador digitaria o programa de tratamento previamente prescrito:
´x´ para raios X ´e´ para electrões
Therac - 25
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas
Modo Electrões
A energia do raio era fixada num valor apropriadamente baixo
Um conjunto de ‘scanning magnets’ era usado para espalhar o raio
Therac - 25
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas
O problema com os raios de electrões, é que difundem rapidamente e não conseguem penetrar mais profundamente para outro tipo de tratamentos que não sejam os superficiais
Para resolver este problema, o Therac-25 funcionava como referido anteriormente em dual- mode no qual os raios-x (fotões) são usados para tratamentos mais exigentes
Therac - 25
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas
Modo Raios-X Para funcionar em modo de raio-x, um direccionador de tungsténio e um ‘aplanador de raio’ eram movidos para a base do raio de electrões
Debaixo desse feixe de electrões, o aparelho criava os raio-xs
No entanto, a potência destes raios-x produzidos é muito fraca
Por isso a intensidade dos electrões tinha que ser massivamente incrementada em cerca de 100 vezes mais, do que durante um tratamento de electrões
Therac - 25
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas
Acidente – Causa 1
O operador digitava a tecla ‘X’ em vez da tecla ‘e’
Administrava assim uma dose de radiação cerca de 100 vezes superior ao máximo, que o corpo humano podia aguentar naquela zona de acção
Apercebendo-se do facto e para corrigir o problema, o operador, movia o cursor para cima no monitor com a tecla ‘seta para cima’ e em modo de edição corrigia as entradas erradas
o campo modo, tecla ‘e’
o campo energia
Therac - 25
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas
Depois de tudo verificado era dado início ao tratamento
Aparentemente tudo funcionava na perfeição
O erro continuou ignorado
Acidente – Parte Técnica
Therac - 25
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas
Definir na posição correcta as várias partes do scanning magnet levava cerca de 8 segundos
A rotina Ptime era executada tantas vezes quantas as partes do scanning magnet a posicionar
A flag Bending Magnet era iniciada na sub-rotina Magnet e limpa no final da sub-rotina Ptime
Ptime verificava uma variável partilhada que indicava a presença de algum pedido de edição por parte do operador
Se houvesse uma alteração do modo de operação de ´x´ para ´e´ o posicionamento dos magnets era interrompido
Therac - 25
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas
O problema é que Ptime aquando da sua primeira execução (tantas quantos os magnets a posicionar), limpava a flag e dessa forma, tornava-se impossível entrar no ciclo e verificar alguma alteração
Como o operador corrigia os dados em menos de 8 seg. (o tempo que levava a configurar os scanning magnets), o software não aceitava o valor de energia corrigido e deixava-o em 25MeV
A “limpeza” da flag bending magnet deveria pois ser feita no fim do posicionamento de todos os magnets ao invés de ser feito no final de cada ciclio de ptime.
Therac - 25
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas
Therac - 25
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas
Acidente – Causa 2 Havia no software uma parte do programa (tarefa Hkeper) que continuamente verificava o correcto posicionamento da plataforma giratória (turntable/collimator). Essa verificação era feita com base
numa variável partilhada (Class3), incrementada (tarefa Treat) a cada fase da verificação das várias rotinas
Valor zero no contador (variável Class3), indicava ao operador a correcta configuração dos parâmetros
Therac - 25
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas
Depois de definir a variável Class3, a rotina verifica por alguma “Malfunction” (valor diferente de zero) no sistema usando outra variável partilhada (FSmal)
A questão é que esta verificação só era feita se o valor da variável Class3 não fosse zero
Acidente – Causa 2
Therac - 25
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas
Como a variável do contador (Classe3) tinha apenas 1 byte, 255 era o valor decimal mais elevado que o contador (incrementado a cada fase da verificação das várias routinas) poderia registar
Se o programa fizesse 256 verificações, o contador automaticamente ficava com o valor zero
A verificação Chkcol não era feita e o software passava a ideia de uma segurança inexistente
A plataforma não estaria na posição correcta e o operador se iniciasse o tratamento naquele momento injectaria no paciente uma dose demasiado elevada de electrões
Therac - 25
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas
Therac - 25
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas
Conclusão O Therac-25 era olhado como uma máquina extremamente fiável, que custava milhões de dólares, ocupava uma sala inteira, e tida como o sonho de qualquer médico. Gradualmente, os médicos foram tirando impressões entre eles e chegaram à conclusão do mau funcionamento da máquina
Este triste exemplo ilustra bem o perigo de software defeituoso
Em cada um dos diferentes tipos de acidentes, o raio de electrões foi aplicado na máxima força (25 MeV, como seria apropriado para modo de raio-X) directamente ao paciente
Therac - 25
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas
A aplicação de doses excessivas, apesar de envolver erros por parte do operador ocorriam por causa de erros no software Therac-25 e porque a equipa de desenvolvimento não seguiu as práticas correntes da engenharia de software
O desenho do software do Therac-25, suportava um ambiente multi-tarefa e o software permitia acesso concorrente a variáveis partilhadas
Esta precária implementação, causou a falha da máquina perante determinadas condições
O sistema da máquina tinha erros ocasionados por execuções concorrentes de tarefas.
Therac - 25
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas
A programação concorrente é muito utilizada mas extremamente propensa a erros (maioritariamente devido a uma cultura de programação sequencial)
Desde o princípio dos anos 90, particularmente após o despenho do Ariane 5, o interesse em tácticas de desenvolvimento que previnam bugs, renovou-se
Implementaram-se assim: técnicas de programação; metodologias de desenvolvimento e melhorias nas linguagens de programação
On-line
Nota: Não é possível garantir a existência futura dos endereços (URL’s), citados nos recursos on-line. Como se sabe, os endereços são virtuais e a sua vida útil depende única e exclusivamente dos seus autores e proprietários .
http://infotech.fanshawec.on.ca/gsantor/Computing/FamousBugs.htmhttp://courses.cs.vt.edu/%7Ecs3604/lib/Therac_25/Therac_1.htmlhttp://computingcases.orghttp://courses.cs.vt.edu/~cs3604/lib/Therac_25/
Bibliografia
Universidade da Beira Interior Mestrado em Eng.ª Informática Sistemas Distribuídos e Tolerância a Falhas