O que devemos fazer para impedir que os softwares falhem?
As empresas e a sociedade usam softwares cada vez mais complexos. Por isso, está na hora de termos uma licença para a escrita de código crítico.
É preciso um exército de profissionais treinados, licenciados e credenciados para construir um arranha-céu na maioria das cidades ao redor do mundo. Mas e as plataformas de software e ferramentas de aprendizado de máquina que se tornaram componentes cruciais dos ecossistemas financeiro, militar, médico e de comunicações do mundo?
Os softwares críticos e os sistemas técnicos nos quais confiamos diariamente são como arranha-céus invisíveis ao nosso redor - mas muitas vezes não sabemos quem os projetou, como eles foram construídos ou se eles escondem defeitos que poderiam levar a enormes inconveniências, caos financeiro ou falhas catastróficas.
As falhas de design são introduzidas nos sistemas de software em todo o mundo todos os dias, mas os erros mais graves podem ter efeitos generalizados e custosos. Mesmo as indústrias que exigem níveis mais altos de regulamentação e certificação podem enfrentar consequências catastróficas de falhas de design de software.
Em outubro de 2018, por exemplo, o Government Accountability Office dos EUA alertou que muitos sistemas sofisticados de armas são vulneráveis ao ataque cibernético depois que profissionais realizaram testes através do exercício do papel de adversários e hackearam vários sistemas de controle de armas. No mesmo mês, a Food and Drug Administration emitiu um alerta sobre dois dispositivos médicos devido a vulnerabilidades de software que poderiam permitir que um hacker sequestrasse o dispositivo e mudasse sua função, potencialmente com consequências letais para o usuário do dispositivo.
Tais consequências têm estado em evidência nos últimos meses, uma vez que a Boeing tem enfrentado um escrutínio agudo sobre se as falhas de design de software foram um fator em duas colisões fatais consecutivas dos jatos 737 Max - e se esses erros eram evitáveis.
O que fazer para evitar erros graves nos softwares?
Para ajudar a evitar outras catástrofes, as indústrias que fornecem produtos e serviços críticos construídos com hardware e software em rápida evolução precisam considerar como podem garantir que seus negócios tenham um nível de resiliência digital que justifique a confiança que a sociedade depositou neles. Isso exigirá - por parte dos arquitetos técnicos, desenvolvedores de software e projetistas de hardware - a criação de um conjunto comum de requisitos aceitos que os profissionais de software, hardware e rede devem satisfazer para praticar seu ofício. Se eles não o fizerem, apenas o governo poderá.
Considere a indústria da construção, que tem padrões formais em vigor há décadas. Um arquiteto licenciado deve criar o projeto para um edifício e um exército de engenheiros profissionais deve aprovar a estrutura, bem como os sistemas elétricos e mecânicos para garantir que o projeto atenda ou exceda todos os códigos de construção e padrões de segurança. Todos esses profissionais têm anos de escolaridade e experiência profissional relevante e passaram em exames de certificação rigorosos.
Prédios altos raramente entram em colapso e quando eles caem - ou até mesmo exibem fraquezas estruturais - recursos extensivos são empregados para descobrir quais erros foram cometidos para que os procedimentos possam ser modificados. Em alguns casos, os profissionais que cometeram erros perdem suas licenças.
Quando se trata de projeto e desenvolvimento de software e hardware, os requisitos são bem menos formalizados. Embora muitos dos bilhões de linhas de código de software que administram grandes partes da infra-estrutura da sociedade sejam escritos por engenheiros altamente qualificados e cientistas da computação, não há exigência para garantir que isso aconteça. Existem padrões de mercado para alguns elementos do desenvolvimento de infra-estrutura técnica, mas, como não há mecanismo de aplicação, os padrões raramente são seguidos.
Exceto em casos raros, como as plataformas usadas no setor de transporte aéreo e no programa espacial, nenhum engenheiro ou arquiteto profissional assina os planos para programas críticos de computador e plataformas de hardware, e nenhum inspetor do governo os certifica para uso. Nem todo aplicativo de software ou projeto de codificação carrega o mesmo nível de risco potencial; portanto, com esse foco na qualidade e na resiliência, é provável que seja necessária uma abordagem em camadas.
O que o setor privado pode fazer?
Para mitigar os enormes riscos de falhas críticas do sistema, o setor privado deve se unir para profissionalizar ainda mais o projeto e a implementação do software. Para começar, os codificadores que trabalham em infraestrutura crítica devem ter uma estrutura de credenciamento profissional que emita licenças. Uma abordagem pode ser algo como a Financial Industry Regulatory Authority, uma organização não-governamental que testa, certifica e monitora aqueles que trabalham na indústria de corretagem dos EUA para garantir que eles tenham as habilidades necessárias para realizar seus trabalhos.
É claro que o licenciamento e o registro não resolveriam todos os problemas, como qualquer um que já tenha experimentado um mau consultor financeiro, arquiteto ou médico pode atestar. Mas é um passo na direção certa. Um potencial resultado positivo de tal abordagem seria o nivelamento adicional do campo de jogo de uma perspectiva de diversidade. Afinal, seria difícil argumentar que um programador ou designer individual não era tão qualificado como outro se ambos tivessem o mesmo nível de certificação do setor.
O que os governos podem fazer?
Se a indústria não se auto-regula, os governos podem aproveitar a oportunidade. Os reguladores financeiros nos EUA já estão se aventurando nesse caminho em esforços como várias agências se unindo para propor a estrutura de padrões avançados de gerenciamento de riscos cibernéticos, voltada para a resiliência cibernética, e a lei de privacidade do consumidor da Califórnia, voltada para a privacidade de dados aprimorada. Problemas em ambas as áreas geralmente resultam de código mal escrito ou hardware mal projetado.
O futuro será claramente executado em software cada vez mais complexo. No entanto, é apenas uma questão de tempo até que outro erro em uma peça crítica de softwares ou hardwares resulte em uma violação de dados sigilosos, instabilidade financeira ou perda adicional de vida. É hora de reconhecer todos os arranha-céus invisíveis que existem ao nosso redor e tomar as medidas para evitar que eles caiam.