1.2 A "crise do software"

A "crise do software” refere-se ao período em que a complexidade dos sistemas de computador superou a capacidade dos desenvolvedores de criá-los com qualidade, prazos e custos controlados. Nessa época, projetos ultrapassavam orçamentos, softwares eram instáveis, cheios de bugs e difíceis de manter.

Vários foram os casos, exemplos:

- Denver International Airport: erros no sistema automático de transporte de bagagens causaram atraso na abertura do aeroporto, causando um prejuízo de US$360 milhões de dólares e um custo estimado de US$86 milhões para corrigir;

- Foguete Ariane V: um run time error causou o shut-down dos computadores principal e de backup ao mesmo tempo, causando a queda do foguete e um prejuízo de US$500 milhões;

Muitos outros casos envolvendo pontos críticos como sistemas governamentais, militares e espaciais, levaram ao debate da importância do desenvolvimento de software com método e organização. A crise forçou a transição de uma programação artesanal para uma disciplina mais estruturada.

A Conferência da OTAN de 1968, realizada em Garmisch, Alemanha, foi um marco fundamental na história da computação, estabelecendo boas práticas no desenvolvimento de software. Nessa conferência, o termo “Engenharia de Software” surgiu pela primeira vez, como resposta à "crise do software”. Nessa época, eram comuns problemas como: projetos atrasados, alto custo de desenvolvimento, sistemas com muitos erros, dificuldade de manutenção, etc. Portanto, nessa conferência da OTAN firmou-se a “necessidade de que software fosse construído com base em princípios práticos e teóricos, tal como ocorre em ramos tradicionais e bem estabelecidos da Engenharia.” (VALENTE, 2019)

“Engenharia de Software é a área da Computação que se preocupa em propor e aplicar princípios de engenharia na construção de software.” (VALENTE, 2019)

Mesmo assim, a crise do software persiste até nos dias de hoje, porque a complexidade dos sistemas continua a crescer mais rápido do que nossa capacidade de gerenciá-los. Novos desafios como a alta complexidade, necessidade de segurança, gestão de sistemas legados e prazos apertados exige dos profissionais de engenharia de software novas habilidades técnicas, soft skills, colaboração e constante atualização tecnológica.

O maior desafio na engenharia de software moderna é gerenciar a complexidade em grande escala. À medida que os sistemas se tornam mais distribuídos, integram-se com IA e dependem de sistemas legados, torna-se cada vez mais difícil manter a confiabilidade, a escalabilidade e um design de sistema claro. Além disso, fatores humanos como comunicação, requisitos pouco claros e decisões arquitetônicas inadequadas continuam a amplificar esses desafios.

“Conforme novas técnicas de engenharia de software nos auxiliam a construir sistemas maiores e mais complexos, as demandas mudam. Os sistemas têm de ser construídos e entregues mais rapidamente; sistemas maiores e até mais complexos são requeridos; sistemas devem ter novas capacidades que antes eram consideradas impossíveis. Como os métodos de engenharia de software existentes não conseguem lidam com isso, novas técnicas de engenharias de software precisam ser desenvolvidas para atender a essas novas demandas.” (SOMMERVILLE, 2011)

Bibliografia:

Marco Tulio Valente. Engenharia de Software Moderna: Princípios e Práticas para Desenvolvimento de Software com Produtividade, Editora: Independente, 2020.

SOMMERVILLE, Ian. Engenharia de software. 9. ed. São Paulo: Pearson Prentice Hall, 2011.