Engenharia de Software e Qualidade
Softwares que ficaram em loop de boot infinito após atualizações ios - 2016 Sistema de navegação de carros da montadora japonesa Lexus (divisão de carros de Luxo da Toyota) 2016 Windows 7 2009, Windows 10 2015 Playstation 4-2014
O homem que salvou o mundo sem fazer nada Stanislav Petrov era um Tenente-coronel da antiga União Soviética, em plena Guerra Fria, que trabalhava em uma central de monitoramento de mísseis que usava dados de satélite Em 26 de setembro de 1983, ele recebe um alerta na tela de um computador alertando sobre o lançamento de seis mísseis vindo dos EUA O que ele faz? Ignora o alerta De fato houve um erro por parte do software devido à imprecisão de dados de geolocalização E se ele não tivesse ignorado?
Falhas de Software Clássicas Foguete Ariane 5 da Agência Espacial Européia (04/06/1996)
Ariane 5 Explosão após 40 segundos delançamento. Causa: Arithmetic Overflow na conversão de um número em ponto flutuante de64 bit para um número inteiro com sinalde16 bit Uma das falhas de software mais caras da história: $ 370 milhões
Therac-25
Therac-25 Entre 1985 e 1986: seis pacientes morreram por overdose de radiação Equipamento recebeu software usado na geração anterior, sem devida validação Nos casos específicos dos pacientes que morreram, o software exibiu a seguinte mensagem Malfunction 54. Operadores insistiram na operação de toda maneira. Problema: ausência de práticas adequadas de desenvolvimento (por exemplo Validação). Software concorrente, checagens em tempo real (missão crítica) Problema não ocorria nas gerações anteriores por limitações do hardware
General Motors (2016) Recall de 4,3 milhões de veículos com defeitos nos airbags produzidos pelaempresa Takata 1 pessoa morta e 3 pessoas feridas Bug no software impossibilitava a abertura do airbag durante uma colisão
F-35 Lightning II Projeto de substituição de F-16, A-10, F/A-18 e AV-8B Família com três variantes: F35A, F35B e F35C Contrato (US Lockheed Martin): 16/11/1996 America s Most expensive weapons system
F-35 Lightning II 2014: $ 163 bilhões acima do orçamento e 7 anos de atraso com relação ao prazo original; 2016 ($ 400 bilhões) Críticas: projeto infestado de falhas de desenho; Lockheed desenha, testa e produz, tudo ao mesmo tempo, em vez de identificar e corrigir defeitos, antes deproduzir Software: Seis Liberações (Blocos 1A, 1B, 2A, 2B, 3i, 3F) 8,3 Milhões de Linhas de Código Vários bugs Bug Bloco 3F (descoberto em 2015): Problema de renderização do radar deixava o piloto cego até queo radar fosse reiniciado Bloco 3F: finalização dedesenvolvimento e testes em Janeiro/2018
Falhas recentes (2017) Um engenheiro da Amazon quebra a Internet por 4 horas Yahoo! admite a invasão de 32 milhões de contas entre 2015 e 2016 Agência governamental do Canadá é hackeada Falha de software deixa 60.000 pessoas sem energia na Austrália Falha de software leva a problemas de aceleração de trem do Aeroporto de Denver, ferindo 26 pessoas Marcapassos da Saint Jude Medical, fáceis de serem hackeados, são atualizados
Falhas (Bugs) Podem trazer danos financeiros, humanos e para a reputação da empresa desenvolvedora/contratante Qualidade de software precisa ser considerada em todos os estágios do desenvolvimento de software Mas o que é qualidade de software? Conformidade com requisitos Satisfação do cliente
Engenharia de Software Começou em 1968 com o reconhecimento da crise do software O que é? Processos, métodos (prática) e ferramentas que permitem aos profissionais construírem software de alta qualidade, dentro do prazo e custo previstos pelo projeto Envolve quais pessoas? Engenheiros de Software software utilizado por muitas pessoas que constroem o Por que é importante? Software afeta cada aspecto da nossa vida e se tornou ubíquo no comércio, culturae nas atividades cotidianas
Processos tradicionais Também conhecidos como Processos Dirigidos por Planos Caracterizados por extensa documentação e planejamento Modelos de processos mais comuns: Cascata, Evolucionário, Espiral (Incremental) Exemplo de processo
Métodos Ágeis Foram pensados a partir de um movimento de insatisfação de profissionais de desenvolvimento de software com os processos tradicionais (controverso Relatório do Caos, Standish Group) Estamos descobrindo maneiras melhores de desenvolver software, fazendo-o nós mesmos e ajudando outros a fazerem o mesmo. Através deste trabalho, passamos a valorizar: Indivíduos e interações mais que processos e ferramentas; Software em funcionamento mais que documentação abrangente; Colaboração com o cliente mais que negociação de contratos; Responder a mudanças mais que seguir um plano; Ou seja, mesmo havendo valor nos itens à direita, valorizamosmaisos itens à esquerda (Manifesto Ágil, 2001).
Métodos Ágeis
Arsenal da Engenharia de Software para a Garantia da Qualidade Técnicas de Verificação e Validação Inspeções Testes Unidade Integração Sistema (Funcional, Desempenho, Segurança) Aceitação Alfa, Beta Exploratório Verificação Formal (por exemplo Model-Checking)
Referências https://www.tricentis.com http://agilemanifesto.org R. S. Pressman (2010). Software Engineering: A Practitioner s Approach, 7th edition, Mc-Graw-Hill.