image

Acesse bootcamps ilimitados e +650 cursos pra sempre

60
%OFF
Article image
Samuel Santos
Samuel Santos10/09/2024 13:05
Compartilhe

Mais do que código: entendendo a importância da engenharia de software

  • #Arquitetura de Sistemas
  • #Arquitetura

Sobre o que irei discorrer?

Neste artigo, irei retratar a importância da engenharia de software no contexto da atual requisição de desenvolvimento de projetos complexos e com uma volatilidade intensa de tecnologias em constante evolução, que por vezes dificultam a viabilidade da utilização de aspectos padronizados e, por muitos, considerados desatualizados da engenharia de software. Irei discorrer sobre o assunto citado utilizando de referências de estudos de casos e autores renomados na área, além de definir essa área de forma básica, para os iniciantes no assunto.

Um desastre de milhões 💸

Antes de definir e adentrar o tema proposto, gostaria de citar um relato pertinente sobre um dos vários desastres que podem ocorrer com a má implementação da engenharia de software em um projeto.

Em 11 de dezembro de 1998, a NASA lançou o "Mars Climate Orbiter" (MCO), uma sonda espacial que tinha como objetivo estudar o clima do planeta Marte. Contudo, em 23 de setembro de 1999, quando a sonda realizava a entrada na órbita de Marte, a comunicação com a sonda foi perdida.

Um dos relatórios produzidos posteriormente, para entender os motivos do acidente, determinou que a causa principal foi o uso de sistemas de unidades conflitantes. Os softwares utilizados pela equipe de controle na Terra forneciam dados no sistema de unidades usuais dos EUA, enquanto que a sonda utilizava unidades do SI.

Como resultado, instruções erradas foram enviadas para a sonda, fazendo-a se aproximar demais do planeta. Acredita-se que ela foi destruída com o atrito ao entrar na atmosfera, mas o fato é que esse erro, que poderia ter sido resolvido com boas práticas de engenharia de software, padronização e gerenciamento de requisitos, acarretou um enorme prejuízo de $ 327,6 milhões de dólares.

Afinal, o que é engenharia de software?

De acordo com Ian Sommerville, um destacado professor de engenharia de software da University_of_St_Andrews, engenharia de software é uma disciplina/área de engenharia que se preocupa com todos os aspectos de produção de software, que lida, além da programação dele, com sua documentação, análise de requesitos e visão abrangente sobre o que de fato se está desenvolvendo.

As ideias fundamentais de engenharia de software são aplicáveis para todos os tipos de desenvolvimento de sistemas (principalmente os de densenvolvimento profissional de software). Esses fundamentos incluem processos de software, confiança, proteção, requisitos e software em si, se categorizando em produtos genéricos ou sob encomenda (mais customizáveis, com especificidades refinadas).

Por que eu deveria me importar?

De forma forma direta, o mundo moderno, sustentado por infraestruturas tecnológicas e serviços diversos que variam desde mídias sociais e entretenimemnto, até sistemas de nível crítico, não seria possível sem uma correta abordagem de desenvolvimento de software.

Essa abordagem de desenvolvimento de engenharia de software, além disso, reforça reúsos de sistemas, modularização e prevenção de erros com fases de testabilidade (estima-se que cerca de 40% dos custos de um projeto se deem com os testes). Isso, por sua vez, acarreta uma lucratividade considerável à longo prazo, além de uma segurança maior no desenvolvimento.

Mais um ponto que deve ser considerado é o destaque profissional para os desenvolvedores que dominam aspectos da engenharia de software, pois atualmente as ferramentas da engenharia de software, que trazem confiança e desenvolvimento seguro do projeto são visados em diversas empresas.

Por que é tão criticada?

Sabendo dos benefícios que, por sinal, transcendem os citados nesse artigo, cabe lidar com questão da crítica constante de desenvolvedores à utilização da engenharia de software para o desenvolvimento moderno de problemas. Essas críticas são pertinentes e cabem ser mencionadas, portanto listarei dois fatores destaques acerca das recorrentes críticas às áreas.

1. Demanda por projetos maiores e complexos:

  • A demanda por projetos de software mais complexos, que precisam ser entregues rapidamente usando tecnologias que evoluem freneticamente, ocorrendo de forma que a engenharia de software não possa “acompanhar o ritmo” em certos momentos, fazendo-a parecer desatualizada.

2. Falta de educação/treinamento em engenharia de software:

  • Muitas empresas e desenvolvedores, devido à facilidade e variedade atual de uso de ferramentas, técnicas e métosos de desenvolvimento de softwares, acabam por dar prosseguimentos aos seus projetos/serviços à medida em que eles mesmos evoluem. Isso acarreta, por muitos casos, em softwares mais caros e menos confiáveis do que o previsto.

Concluindo…

Após a introdução, breve relato de estudo de casos, definição, discorrimento sobre benefícios e pontos problemáticos da engenharia de software, conclui-se que, assim como qualquer outra área do universo da tecnologia, esta se encontra em constante evolução e ainda apresenta muito potencial a ser explorado. Convido os caros leitores a explorarem mais desta rica área da engenharia de software, que certamente trará maior destaque para quem buscar se aprofundar e começar a implementá-la em seus projetos.

Sobre mim:

Sou um estudante de ciência da computação (2º período atualmente) e me interesso principalmente pelas áreas de desenvolvimento de IA/machine learning e banco de dados. Entretanto, busco não restringir meus interesses e desenvolvimento pessoal/profissional, portanto estou aprimorando minhas habilidades também em outras áreas que utilizem programação (front end e back end).

Considerações:

Deixo aqui a sugestão de interação nos comentários da DIO, destacando recomendações de materiais de estudo referentes à engenharia de software e relatos sobre algum caso interessante envolvendo essa área. Espero que esse artigo tenha contribuído de alguma forma :)

Referências:

Livro: Engenharia de software - Ian Sommerville;

https://kodus.io/incidentes-envolvendo-problemas-de-software/

https://engenhariae.com.br/colunas/guia-de-engenharia/engenharia-de-software-formacao-areas-de-atuacao-e-salario

https://cienciaprogramada.com.br

https://www.dio.me/articles/roadmap-engenheiro-de-software

Compartilhe
Comentários (0)