Software is infrastructure: failures, successes, costs, and the case for formal verification
Este capítulo argumenta que, visto que o software funciona como uma infraestrutura crítica e os custos estonteantes de falhas históricas demonstram as consequências severas de uma má qualidade, a adoção de verificação formal e análise de programas é essencial, um posicionamento sustentado por aplicações industriais bem-sucedidas.
Artigo original sob licença CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta é uma explicação gerada por IA do artigo abaixo. Não foi escrita nem endossada pelos autores. Para precisão técnica, consulte o artigo original. Ler aviso legal completo
A Grande Ideia: Software é o Novo Concreto
Imagine um mundo onde nossas estradas, pontes e usinas de energia não são feitas de aço e concreto, mas de código invisível. Os autores argumentam que o software se tornou a infraestrutura da sociedade moderna. Assim como uma ponte precisa suportar um caminhão sem desabar, nosso software (que controla hospitais, bancos, aviões e até a sua torradeira) precisa funcionar perfeitamente.
O artigo faz uma pergunta simples, mas assustadora: Se uma ponte é construída com matemática errada, ela cai. Se um software é construído com matemática errada, o que acontece? A resposta é: bilhões de dólares desaparecem, pessoas se machucam e, às vezes, pessoas morrem.
O Problema: Estamos Construindo Castelos na Areia
Os autores apontam que tratamos o software de forma diferente da engenharia física.
- Construindo um Muro: Se você constrói um muro, a física faz o teste. Se o muro for fraco demais, a gravidade o derruba antes mesmo de você pintá-lo. Você não pode "executar" um muro para ver se ele funciona; você apenas o constrói e espera que a matemática se sustente.
- Escrevendo Software: Software é apenas texto. Você não consegue "sentir" um erro (bug). Você tem que executar o código para ver se ele funciona. Mas executar o código é como dirigir um carro de um precipício para ver se o paraquedas abre. Quando você encontra o erro, o acidente já aconteceu.
O artigo usa um exemplo engraçado: se você digitar rm -rf ~ em um terminal de computador, ele deleta toda a sua pasta pessoal. Você não precisa executá-lo para saber que é perigoso; basta ler o manual (a "matemática") para entender o que ele faz. Mas para códigos complexos, ler o manual não é suficiente.
O Custo da "Matemática Ruim": Um Vazamento de Um Trilhão de Dólares
O artigo lista um "Hall da Fama da Vergonha" de falhas de software nos últimos 40 anos para mostrar o quão caros são os erros. Pense neles como os "desabamentos de pontes" do mundo digital:
- O Therac-25 (Saúde): Uma máquina de radiação aplicou doses excessivas em pacientes porque o código permitiu que dois botões fossem pressionados rápido demais. Resultado: 6 mortes.
- O Ambulância de Londres (Serviços de Emergência): Um novo sistema de despacho tinha um vazamento de memória (como um balde com um furo). Ele se encheu de dados antigos e travou. Resultado: As ambulâncias não consegam encontrar os pacientes; 20 a 30 pessoas morreram.
- O Boeing 737 MAX (Aviação): Um sistema de software chamado MCAS empurrou o nariz do avião para baixo com base em um único sensor defeituoso. Resultado: Dois acidentes, 346 mortes e custos de US$ 20 bilhões.
- O Escândalo do Horizon (Bancos): Um sistema de contabilidade defeituoso disse a milhares de lojistas que eles estavam roubando dinheiro. Resultado: Mais de 900 pessoas foram injustamente presas, e o sistema custou aos contribuintes mais de £ 1 bilhão para ser consertado.
- CrowdStrike (TI Global): Um pequeno erro de atualização fez milhões de computadores em todo o mundo ficarem com a tela azul e "morrerem". Resultado: Caos global, custando bilhões em negócios perdidos.
Os autores calculam que a má qualidade do software custa à economia dos EUA US$ 1,56 trilhão por ano. Isso é mais do que o PIB inteiro de muitos países. É dinheiro puramente desperdiçado para consertar erros que poderiam ter sido evitados.
A Solução: O "Projeto Matemático"
O artigo argumenta que precisamos parar de adivinhar e começar a provar que nosso software funciona antes de executá-lo. Isso é chamado de Verificação Formal.
A Analogia:
Imagine que você está construindo um arranha-céu.
- Método Atual (Testes): Você constrói o 100º andar, depois o 101º, depois o 102º. Você verifica se o elevador funciona. Se o 102º andar desabar, você o derruba e tenta novamente. Isso é caro e perigoso.
- Verificação Formal: Antes de despejar uma única gota de concreto, você usa matemática avançada para provar que o projeto não pode desabar sob qualquer peso. Você verifica o projeto contra as leis da física para garantir que ele seja perfeito.
No software, isso significa usar a matemática para provar que o código fará exatamente o que deve fazer, e nada mais.
Vale a Pena? Sim, é um Negócio!
Você pode pensar: "Matemática é difícil e cara. Vale a pena?". O artigo diz que sim, absolutamente.
- Ar...
Afogado em artigos na sua área?
Receba digests diários dos artigos mais recentes que correspondam às suas palavras-chave de pesquisa — com resumos técnicos, no seu idioma.