Gerencia de Qualidade de
Software
Aula 4 Estudo de Caso.
https://sites.google.com/site/thiagoaalves/
thiago.augusto2@anhanguera.com
Conteúdo Programático
Apresentação da disciplina e metodologia
de trabalho. Apresentação do Plano de
Estudo e Aprendizagem. Introdução à
Qualidade de Software.
Estudo dos fatores técnicos e humanos
que influenciam a qualidade de um
software
.
Garantia da Qualidade de Software
(SQA): conceito, importância e
apresentação das técnicas.
Conteúdo Programático
Garantia da Qualidade de Software (SQA):
Impactos de um sistema de má qualidade.
CMMI. Introdução, diferenciação entre
qualidade de software e de processo. Estudo
dos níveis CMMI. Abordagem das Key
Process Areas (KPA)
CMMI: abordagem dos aspectos práticos de
implantação do modelo. Apresentação de
casos de sucesso na implantação, níveis
obtidos pelas principais empresas de TI ou
não.
Conteúdo Programático
Norma ISO 15504 (Spice): conceituação,
utilização, metodologia de avaliação.
Normas MPS:BR e ISO 12207.
Modelos de Processo Pessoal e de Equipe
na Melhoria da Qualidade do processo de
desenvolvimento de Software
Conteúdo Programático
Métricas de software: conceituação,
motivos para medição de um produto de
software. Principais tipos e utilizações.
Qualidade de código. Programação:
Fatores de qualidade
Atividades de revisão de conteúdo e/ou
Trabalhos
Alguma duvida do Trabalho 1 ?
Já tem o trabalho 2.
Estudo de Caso
Parte 1 Apresentação do Problema;
Parte 2 Analise;
Therac - 25
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
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
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.
Conceito
Therac - 25
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
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
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
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
Therac - 25
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
Therac - 25
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
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
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
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
Depois de tudo verificado era dado início ao tratamento Aparentemente tudo funcionava na perfeição
Acidente – Parte Técnica
Therac - 25
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
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
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
Therac - 25
Universidade da Beira InteriorMestrado 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
Acidente – Causa 2
Therac - 25
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
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
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)
Therac - 25
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
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
Therac - 25
Baseado nos problemas levantados do Therac-25, faça um levantamento dos
possíveis problemas de qualidade que podem ter acontecido no desenvolvimento do therac-25.
Em paralelo pense nas possíveis soluções que poderiam ter evitado a maioria dos problemas.
On-line http://infotech.fanshawec.on.ca/gsantor/Computing/FamousBugs.htm http://courses.cs.vt.edu/%7Ecs3604/lib/Therac_25/Therac_1.html http://computingcases.org http://courses.cs.vt.edu/~cs3604/lib/Therac_25/