Microsoft Excel Iniciação Susana Rodrigues, Eng.ª Susana Rodrigues, Eng.ª.
Universidade da Beira Interior Mestrado em Eng.ª Informática
description
Transcript of Universidade da Beira Interior Mestrado em Eng.ª Informática
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