O documento discute acidentes causados por falhas de software, como o caso do equipamento de radioterapia Therac-25 que causou mortes por overdoses de radiação devido a erros no software. Também menciona problemas em projetos de software complexos como o sistema de transporte de bagagens no Aeroporto Internacional de Denver e o voo inaugural do foguete Ariane 5 que explodiu por conta de um erro de conversão de tipo em um valor fora da faixa.
2. Engenharia de Software - Prof. Luciano Leme 2
ACIDENTES
• “O modo mais provável do mundo ser
destruído, como concorda a maioria dos
especialistas, é através de um acidente. É
ai que nós entramos. Somos profissionais
de computação. Nós causamos
acidentes.”
Nathaniel Borestein
3. Engenharia de Software - Prof. Luciano Leme 3
Uma Crise no horizonte
• A indústria de Software tem tido uma
“crise” que a acompanha há quase 30
anos:
– Aflição Crônica != Crise
• Problemas não se limitam ao software que
não funciona adequadamente, mas
abrangem:
– desenvolvimento, testes, manutenção,
suprimento etc.
4. Engenharia de Software - Prof. Luciano Leme 4
Therac-25
• Equipamento de Radioterapia com
software controlador.
• Entre 1985 e 1987 se envolveu em 6
acidentes, causando mortes por
overdoses de radiação.
5. Engenharia de Software - Prof. Luciano Leme 5
Therac-25
• Software foi adaptado de uma antecessora,
Therac-6:
– O dispositivo responsável para sincronizar o hardware
é removido, mas o software não possui sincronismo
– 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 do raio X
– O programador não tinha experiência em programação
concorrente
– Falhas por falta de testes integrados
– Falta de documentação
• http://sunnyday.mit.edu/therac-25.html
6. Engenharia de Software - Prof. Luciano Leme 6
Acidente no Panamá
• AAgência Internacional de Energia Atômica
declara ‘emergência radiológica’ no Panamá
em 22 de Maio de 2001
• 28 pacientes super expostos; 8 morreram, 3
dos quais em decorrência direta do fato;
espera-se que 3/4 dos 20 sobreviventes
desenvolvam ‘sérias complicações que em
alguns casos podem vir a ser fatais’
7. Engenharia de Software - Prof. Luciano Leme 7
Acidente no Panamá
• Especialistas encontraram equipamentos radioterápicos
‘em perfeito funcionamento’; os dados coletados pelo
sistema não indicavam nenhuma situação de emergência
• Se dados são registrados para diversos blocos de
blindagem contra radiação em uma única ação, temos
uma dose incorreta processada pelo sistema
• Finalmente o FDA concluiu que um dos fatores
causadores da falha foi a ‘interpretação, por parte do
software, dos dados coletados dos blocos dos feixes de
radiação’
• Detalhes:
http://www.fda.gov/Radiation-EmittingProducts/RadiationSafe
8. Engenharia de Software - Prof. Luciano Leme
Denver International Airport
• Custo do projeto: US$ 4.9 bilhões
– 100 mil passageiros por dia
– 1.200 voos
– 53 milhas quadradas
– 94 portões de embarque e desembarque
– 6 pistas de pouso / decolagem
8
9. Engenharia de Software - Prof. Luciano Leme
Denver International Airport
• Erros no sistema automático de transporte de bagagens
(misloaded, misrouted, jammed):
– Atraso na abertura do aeroporto com custo total estimado em
US$360 Milhões
• 86 milhões de dólares para consertar o sistema
9
10. Engenharia de Software - Prof. Luciano Leme 10
London Ambulance Service
(1992)
• Perdas de chamadas, despacho duplo de
chamadas duplicadas
• Escolha ruim do desenvolvedor:
experiência inadequada
• http://www.cs.ucl.ac.uk/staff/A.Finkelstein/las.h
14. Engenharia de Software - Prof. Luciano Leme
Resultado
• Explosão 40
segundos após a
decolagem.
• Destruição do
foguete e carga
avaliados em US$
500 milhões.
14
15. Engenharia de Software - Prof. Luciano Leme 15
O que aconteceu? (I)
• Fato: o veículo detonou suas cargas explosivas
de autodestruição e explodiu no ar. Por que?
• Porque ele estava se quebrando devido às
forças aerodinâmicas. Mas por que?
• O foguete tinha perdido o controle de direção
(altitude). Causa disso?
• Os computadores principal e back-up deram
shut-down ao mesmo tempo.
16. Engenharia de Software - Prof. Luciano Leme 16
O que aconteceu? (II)
• Por que o shut-down? Ocorrera um run time
error (out of range, overflow ou outro) e
ambos os computadores se desligaram.
De onde veio esse erro?
• Um programa que convertia um valor em
ponto flutuante para um inteiro de 16 bits
recebeu como entrada um valor que
estava fora da faixa permitida.
17. Engenharia de Software - Prof. Luciano Leme 17
Especificamente:
O que faltou?
strict precondition 1:
{
Set."x"=FLPT and Set."y"=INT16
and -32768 <= x <= +32767
}
program code:
y := int(x);
postcondition:
{Set."x"=FLPT and Set."y"=INT16 and y=int(x)}
18. Engenharia de Software - Prof. Luciano Leme 18
Ironia Total...
• O resultado desta conversão não era nem
mais necessário após a decolagem...
19. Engenharia de Software - Prof. Luciano Leme 19
ENEM (08/2010)
• Vazam dados de 12 milhões de inscritos no
ENEM.
• Informações (RG, CPF, nome de mãe, data
de nascimento, nota etc.) que deveriam ser
mantidas sob sigilo ficam expostas no site do
organizador do exame.
• Informações vazadas permitem fraudes por
parte de estelionatários.
• No mundo virtual, apenas gaveta e chave
não são suficientes para proteger um
documento?
20. Engenharia de Software - Prof. Luciano Leme 20
GOL (08/2010)
• Atrasos em voos.
• Implantação de novo sistema foi apontada
como a causa para o problema logístico
que levou aos atrasos.
• Imagem da empresa prejudicada.
• Milhares são vítimas de prejuízos
financeiros e/ou psicológicos?
21. Engenharia de Software - Prof. Luciano Leme 21
Mas quais são os problemas?
• A sofisticação do software ultrapassou
nossa capacidade de construção.
• Nossa capacidade de construir programas
não acompanha a demanda por novos
programas.
• Nossa capacidade de manter programas
é ameaçada por projetos ruins.
22. Engenharia de Software - Prof. Luciano Leme 22
Perguntas que a Engenharia
de Software quer responder:
• Por que demora tanto para concluir um
projeto (não cumprimos prazos)?
• Por que custa tanto (uma ordem de
magnitude a mais)?
• Por que não descobrimos os erros antes
de entregar o software ao cliente?
• Por que temos dificuldades de medir o
progresso enquanto o software está
sendo desenvolvido?
23. Engenharia de Software - Prof. Luciano Leme 23
Causas óbvias
• Não dedicamos tempo para coletar dados
sobre o desenvolvimento do software -
resultando em estimativas “a olho”.
• Comunicação entre o cliente e o
desenvolvedor é muito fraca ou
incompleta.
• Falta de testes sistemáticos e completos.
24. Engenharia de Software - Prof. Luciano Leme 24
Causas menos óbvias
• O Software é desenvolvido ou projetado
por engenharia, não manufaturado no
sentido clássico (característica 1).
• Gerentes sem background em
desenvolvimento de SW.
• Profissionais recebem pouco treinamento
formal.
• Falta investimento (em ES).
• Faltam métodos e automação.
25. Engenharia de Software - Prof. Luciano Leme 25
Principais conceitos
da Eng. Software
• Especificações de requisitos
• Documentações / Diagramas
• Implementações
• Testes
• Homologações
• Configurações
• Qualidade
• Modelos
• Revisões
Significant mechanical and software problems have plagued the automated baggage handling system. In tests of the system, bags were misloaded, were misrouted, or fell out of telecarts, causing the system to jam. Video cameras were installed at several known trouble spots to document problems, such as the following:
The baggage system continued to unload bags even though they were jammed on the conveyor belt. This problem occurred because the photo eye at this location could not detect the pile of bags on the belt and hence could not signal the system to stop.
The baggage system loaded bags into telecarts that were already full. Hence, some bags fell onto the tracks, again causing the telecarts to jam. This problem occurred because the system had lost track of which telecarts were loaded or unloaded during a previous jam. When the system came back on-line, it failed to show that the telecarts were loaded.
The timing between the conveyor belts and the moving telecarts was not properly synchronized, causing bags to fall between the conveyor belt and the telecarts. The bags became wedged under the telecarts. This occurred because telecarts were bumping into each other near the load point.
Significant mechanical and software problems have plagued the automated baggage handling system. In tests of the system, bags were misloaded, were misrouted, or fell out of telecarts, causing the system to jam. Video cameras were installed at several known trouble spots to document problems, such as the following:
The baggage system continued to unload bags even though they were jammed on the conveyor belt. This problem occurred because the photo eye at this location could not detect the pile of bags on the belt and hence could not signal the system to stop.
The baggage system loaded bags into telecarts that were already full. Hence, some bags fell onto the tracks, again causing the telecarts to jam. This problem occurred because the system had lost track of which telecarts were loaded or unloaded during a previous jam. When the system came back on-line, it failed to show that the telecarts were loaded.
The timing between the conveyor belts and the moving telecarts was not properly synchronized, causing bags to fall between the conveyor belt and the telecarts. The bags became wedged under the telecarts. This occurred because telecarts were bumping into each other near the load point.
a program segment for converting a floating point number to asigned 16 bit integer was executed with an input data value outside the range representable by a signed 16 bit integer.
This run time error (out of range, overflow), which arose in both the active and the backup computers at about the same time, was detected and both computers shut themselves down. This resulted in the total loss of attitude control. The Ariane 5 turned uncontrollably and aerodynamic forces broke the vehicle apart. This breakup was detected by an on-board monitor which ignited the explosive charges to destroy the vehicle in the air.
Ironia: o resultado desta conversão não era mais necessário após a decolagem...
a program segment for converting a floating point number to asigned 16 bit integer was executed with an input data value outside the range representable by a signed 16 bit integer.
This run time error (out of range, overflow), which arose in both the active and the backup computers at about the same time, was detected and both computers shut themselves down. This resulted in the total loss of attitude control. The Ariane 5 turned uncontrollably and aerodynamic forces broke the vehicle apart. This breakup was detected by an on-board monitor which ignited the explosive charges to destroy the vehicle in the air.
Ironia: o resultado desta conversão não era mais necessário após a decolagem...