Como evitar problemas de software
Miscelânea / / November 29, 2021
Nesta era digital, você deve ter ouvido falar sobre gigantes da mídia social como Facebook e Twitter e plataformas de e-commerce como Alibaba e Amazon. Esses sites online contam com vários pacotes de software para seu funcionamento. Esses programas mudaram francamente a maneira como trabalhamos, pensamos e vivemos.
![Gt Como o software nos ferrou](/f/0f7a9bf696d466f9ec123df1e1c0a618.png)
Além disso, muitos dispositivos que antes eram exclusivamente mecânicos, agora são controlados por software. Por exemplo, os termostatos já foram dispositivos eletromecânicos. No entanto, eles agora dependem muito de software para operação.
Contudo, bugs de software pode ser bastante problemático, especialmente com o aumento de nossa dependência deles para as atividades diárias. Na verdade, houve algumas ocasiões em que o software ficou aquém do seu propósito pretendido, levando a resultados desagradáveis.
Neste artigo, falamos sobre 4 ocasiões em que o desempenho do software errou o alvo e como evitar esses problemas de software.
1. Interrupção do 911 multiestado nos EUA
![Serviços de emergência](/f/d54bb4c13d8759fef7bc0a17d98247be.jpg)
911 é um serviço crítico, que permite que as pessoas entrem em contato com o pessoal de emergência sempre que necessário. Às vezes, entrar em contato com os despachantes de emergência via 911 pode literalmente fazer a diferença entre a vida e a morte.
Portanto, foi um desastre quando, em 9 de abril de 2014, Falha no encaminhamento de chamadas para o 911 em sete estados dos EUA, incluindo Califórnia, Flórida, Minnesota, Carolina do Norte, Pensilvânia, Carolina do Sul e Washington.
Essa interrupção foi causada por um erro de codificação evitável, que ocorreu em uma central de gerenciamento de chamadas de emergência no Colorado, de propriedade da Intrado.
2. Aterramento da frota da United Airlines
![companhias aéreas Unidos](/f/0808b947aa635e7e6b42e1797e3e7177.jpg)
Em julho de 2015, a United Airlines foi forçada a aterrou toda a sua frota de aeronaves devido a uma falha de software. Isso afetou mais de 4.900 voos em todo o mundo e deixou muitos passageiros presos em aeroportos e obviamente frustrados.
Provavelmente houve um impacto econômico também, uma vez que a companhia aérea teria que compensar muitos passageiros pelo inconveniente. Provavelmente também houve várias reuniões de negócios importantes que foram prejudicadas por causa do encalhe.
3. Mau funcionamento do pedal do acelerador Toyota Camry
![Bagunça emaranhada](/f/7d13843f69c8690504ba0c370b225cea.jpg)
Em setembro de 2007, Jean Bookout estava viajando na Interstate Highway 69 em Oklahoma com a passageira Barbara Schwarz, quando ela passou por dificuldades controlando seu Toyota Camry.
Ela tentou tirar os pés do acelerador, mas o carro continuou a acelerar. O pedal do freio não conseguiu parar o carro e ela foi forçada a usar o freio de mão.
Infelizmente, isso fez com que o carro tombasse em um aterro. Schwarz morreu como resultado e Bookout foi hospitalizado por cinco meses devido a ferimentos graves.
![Acidente de carro](/f/8175775ac7aafbafd8abd8e944c70441.jpg)
Especulou-se que o acidente ocorreu devido a várias inadequações de codificação que levaram ao travamento de uma tarefa na CPU do Camry. Esta CPU controlaria um número excessivamente grande de funções, incluindo ignição, controle do acelerador e controle de cruzeiro.
O código da Toyota se tornou uma bagunça emaranhada depois de vários anos de novos códigos sendo empilhados sobre os antigos. Isso geralmente é conhecido como 'código espaguete'.
No entanto, o acidente de Bookout trouxe esse problema à luz e destacou as falhas da Toyota em seu processo de software. Foi ainda descoberto que havia mais de 10 milhões de maneiras de aceleração indesejada para potencialmente ocorrer, com base na forma como o código da Toyota foi estruturado.
Falha no termostato Nest
![Nest_Thermostat_1](/f/11f4f07b8fa6e459de52cb78c8f7571e.jpg)
Nest é uma empresa, propriedade da Alphabet, isso faz termostatos inteligentes. Esses termostatos são bastante bacanas e permitem que os usuários controlem a temperatura em suas casas a partir de seus smartphones.
No inverno passado, termostatos Nest experimentou uma falha na forma de uma atualização de software defeituosa, que fazia com que as baterias descarregassem. Infelizmente, esse erro aconteceu no meio do inverno, deixando vários usuários sem aquecimento temporariamente. Isso é definitivamente algo que você não quer que aconteça nesta época do ano.
Uma breve análise dos problemas de software
Abordagens como design baseado em modelo e TLA + permitem que os desenvolvedores tenham uma visão geral de como seu software funciona.
Brett Victor, um proeminente pesquisador de computação, avalia que há uma desconexão entre os programadores e os problemas que eles estão tentando resolver com códigos.
Devido a essa desconexão, torna-se difícil para os programadores imaginar o que estão tentando inserir nos códigos. Victor acha que este é um dos fatores que contribuem para o software estar repleto de bugs.
No entanto, há esperança. Abordagens como design baseado em modelo e TLA + permitem que os desenvolvedores tenham uma visão geral de como seu software funciona.
![Teste de Bug](/f/611d0faaae40d1b08f82dd02d70b5361.jpg)
O design baseado em modelos, como o nome sugere, permite o desenvolvimento de software por meio de modelos visuais. TLA +, que significa Lógica Temporal de Ações, é uma linguagem projetada para escrever as especificações de um programa de computador. O que é ótimo sobre o TLA + é que ele permite testes exaustivos e verificação do software antes de ser publicado.
Tanto o design baseado em modelo quanto o TLA + já provaram seu sal. Tecnologias Esterel, uma empresa de desenvolvimento de software, usa design baseado em modelo para construir software crítico para a segurança, enquanto o TLA + tem sido usado por empresas como A Microsoft deve consertar um possível erro catastrófico do Xbox e, pela Agência Espacial Europeia, reescrever os códigos de uma sonda que pousou em um cometa.
O processo de escrever código é tido em alta conta pelos programadores. Muitos deles estão simplesmente intrigados com o processo de escrever códigos. É, portanto, um desafio fazer alguns programadores aceitarem abordagens como design baseado em modelo e TLA +. Essas abordagens são frequentemente percebidas como estritamente acadêmicas, sem viabilidade no mundo real. No entanto, uma mudança de opinião deve ocorrer o mais cedo possível.
Pensamentos finais
O software é cada vez mais usado em aplicativos que requerem precauções de segurança integradas. Métodos melhores de projeto de software devem ser introduzidos em todas as áreas, pois esses aplicativos são vitais em nossas vidas.
Processos como a automação dependem muito do software atualmente, mas um erro em uma linha de código pode nos levar a grandes contratempos, como mostram os exemplos acima.
![Codificação](/f/0e40b94bd4b6479685cfa47758b960ac.jpg)
Agora, imagine algo como Inteligência Artificial (IA) sendo incorporada a esses aplicativos. AI é assustador o suficiente por conta própria sem falhas de software. Adicione bugs à mistura e não há como dizer o que poderia acontecer.
No entanto, há uma fresta de esperança aqui. Com um pouco de trabalho e algumas ferramentas novas, podemos fazer software e IA melhores, projetando-os de maneira mais sólida e testando-os em seus suportes.
Esperemos que esta questão crítica seja levada a sério pelas autoridades competentes, para que possamos usar o software em todo o seu potencial, mas apenas para construir um futuro mais seguro e inteligente.