image

Acesse bootcamps ilimitados e +650 cursos

50
%OFF
Article image
Jéssica Barros
Jéssica Barros29/08/2023 01:57
Compartilhe

A Jornada da "Crise do Software": Desafios, Aprendizados e Evolução

    A Jornada da "Crise do Software": Desafios, Aprendizados e Evolução

    Da Era Inicial às Lições Atuais - Explorando os Desafios e Progressos na Engenharia de Software

    “A crise do software” é uma denominação para o contexto geral que englobou principalmente desde o princípio do desenvolvimento de softwares até meados da década de 1970, apesar de alguns exemplos relativamente recentes. Essa crise foi caracterizada essencialmente por atrasos no cumprimento de demandas; custos exorbitantes e que, em geral, estouravam orçamentos; baixa qualidade e/ou presença de bugs e problemas generalizados nos projetos de desenvolvimento.

    Podemos, em uma analogia, compreender que o desenvolvimento de softwares foi, por muito tempo, como um território desconhecido: tudo era extremamente novo e estava em processo de descoberta e construção. De fato, um terreno a ser desbravado. Linguagens de programação surgindo e sendo gradativamente construídas, hardwares sendo produzidos e buscando ficar a par de todas as ambições tecnológicas almejadas, diversas tecnologias aflorando desenfreadamente. Tal qual um território desconhecido, os caminhos a serem percorridos eram totalmente novos e desconhecidos. Os mapas e guias de “melhores rotas” eram quebra-cabeças a serem montados. Desse modo, os perigos e erros ao longo dessa jornada eram parte inevitável do processo.

    As principais causas associadas estão intrinsicamente conectadas entre si, conforme poderemos perceber. Novas e crescentes demandas tornaram os softwares e seus processos muito mais complexos, o que por si só, induz a uma maior probabilidade de bugs. Toda essa novidade e crescente da área anda em concílio com uma mão de obra de desenvolvedores em construção (em processo de absorção/aprendizado), ou seja, havia uma demanda maior do que a oferta real de profissionais qualificados e, principalmente, experientes, visto que tudo era novidade. Por consequência, o déficit na oferta e a inexperiência geral são razões diretas da ausência e imaturidade na abordagem e desenvolvimento desses softwares: a construção de métodos e metodologias é uma consequência direta de experiências construtivas que norteiem os melhores e piores caminhos e as formas de percorrê-los. Além desse anteriormente citado processo de experimentação pressupor uma série de tentativa-erros afim de um aprimoramento, tecnologias novas surgiam e mudavam em escalas nunca antes vistas: assim sendo, requisitos, metodologias etc. sofriam alterações constantes, o que tornava o processo demorado, burocrático e repleto de remendos e reajustes. As tecnologias, por sua vez, ou eram muito recentes ou ainda buscavam se alinharem às demandas de desenvolvimento cada vez mais complexas: as ferramentas que lidassem essas demandas e anseios eram algo, em muitos casos, a ser elaborado ou aprimorado ainda.

    Toda essa problemática era um grande novelo a ser desembaraçado: um processo que demandou tempo e a concepção de processos mais sistemáticos e consolidados que fossem capazes de lidar com a questão do desenvolvimento de software de forma eficiente e eficaz: mais do que atingir o objetivo final, atingi-lo com qualidade. Como tal, houve percalços no meio do caminho. Um exemplo que podemos citar é a construção do mainframe System/360 pela IBM (década de 1960): o sistema operacional foi revolucionário, mas houve orçamentos estourados, atrasos nos prazos e prejuízos financeiros.

    (saiba mais em: https://spectrum.ieee.org/building-the-system360-mainframe-nearly-destroyed-ibm).

    Figura 1 - IBM System/360

    image

    Fonte: http://personal.garrettfuller.org/blog/2017/10/28/ibm-system360/

    Apesar do termo “crise do software” ser relacionado majoritariamente ao período que se estende até meados da década de 1970, entende-se o desenvolvimento de tecnologias e softwares é algo que não deixou de acontecer e que está sujeito a mudanças de paradigmas, reajustes, falhas etc. Assim sendo, podemos citar exemplos mais recentes.

    O caso do foguete Ariane 5 (4 de junho de 1996 – Agência Espacial Europeia): o foguete, em seu primeiro voo não tripulado, explodiu apenas 39 segundos após sua decolagem, causando um prejuízo estimado de US$370 milhões. A causa: um bug no software implicou em um erro de cálculos que gerou sobrecarga no sistema.

    (Saiba mais em: https://www.bbc.com/portuguese/noticias/2015/05/150513_vert_fut_bug_digital_ml).

    Figura 2 - Ariane 5

    image

    Fonte: https://livreeaberto.com/um-erro-de-ponto-flutuante-que-causou-prejuizo-meio-bilhao

    Um exemplo muito atual e que ainda está tendo os seus desdobramentos é o ChatGPT, chatbot online de inteligência artificial desenvolvido e lançado pela OpenAI em 2022. Durante um certo período após seu lançamento, devido a um despreparo, a plataforma enfrentou problemas para lidar com o volume de acessos de usuários. Além disso, alimentação de dados para a inteligência artificial é um processo complexo e demorado, que enfrenta diversos problemas como questões autorais, confiabilidade dos dados, atualidade (os dados da base em questão são de até 2021), presença de vieses que são uma reprodução da sociedade (racismo, machismo etc.). Aprender a lidar e aprimorar a inteligência artificial são questões de um novo paradigma da famigerada “crise do software”.

    (Saiba mais em: https://olhardigital.com.br/2023/01/30/internet-e-redes-sociais/o-chatgpt-e-surpreendente-mas-possui-alguns-problemas-confira/).

    Figura 3 - Screenshot usuário acusando ChatGPT de racismo

    image

    Fonte: https://twitter.com/spiantado/status/1599462375887114240?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1599462375887114240%7Ctwgr%5Ea28ddca8684bba30566205405cea9a3b9dd0471b%7Ctwcon%5Es1_&ref_url=https%3A%2F%2Folhardigital.com.br%2F2023%2F01%2F30%2Finternet-e-redes-sociais%2Fo-chatgpt-e-surpreendente-mas-possui-alguns-problemas-confira%2F

    Por fim, a “crise do software”, em seus inúmeros exemplares, é uma recordação de falhas que, em muitos casos, possivelmente poderiam ter sido evitadas, entretanto, também uma parte crucial da “história de vida” da engenharia de software que trouxe aprendizados e evoluções como, por exemplo: a concepção e adoção de processos mais estruturados por meio de metodologias de desenvolvimento; um melhor gerenciamento de requisitos que minimiza atrasos, alterações e insatisfações; a construção e aplicação de testes e controles de qualidade que buscam identificar e corrigir erros previamente; o aprimoramento do gerenciamento de projetos, permitindo melhor alocação de recursos e evitando atrasos e problemas com orçamentos; e maior atenção à formação de profissionais que sejam tanto capazes de lidar com as demandas atuais como estar prontos para possíveis e futuras demandas. Com as constantes mudanças de paradigmas na tecnologia, haveremos ainda de viver e adaptarmo-nos a diferentes “crises do software”.

    Compartilhe
    Comentários (6)
    Jéssica Barros
    Jéssica Barros - 02/09/2023 17:58

    Muito obrigada a todos que comentaram! <3 Fico feliz que tenham gostado! Essa foi uma atividade da faculdade da qual gostei muito e achei que poderia ser legal compartilhar a discussão <3

    João Guilherme
    João Guilherme - 29/08/2023 11:28

    Ótimo!

    Kevin Souza
    Kevin Souza - 29/08/2023 08:18

    Mano kkkkk, Jessie tu elevou muito o nível dessa atividade kkkk.

    Parabéns pelo artigo incrível!

    Gabriel Gregorio
    Gabriel Gregorio - 29/08/2023 06:50

    Parabéns pelo artigo Jéssica! Foi um conteúdo muito enriquecedor, comecei a ler e não consegui parar.

    Eduarda Leal
    Eduarda Leal - 29/08/2023 06:16

    Parabéns pelo artigo, muito bom

    Thales Cardoso
    Thales Cardoso - 29/08/2023 04:16

    Artigo muito bom.