tainanfidelis' blogby Tainan Fidelis

Como a Inteligência Artificial vai reinventar a Engenharia de Software?

September 14, 2024

Você já se perguntou como a Engenharia de Software pode se reinventar com a IA?

A Engenharia é uma Arte

Para falar sobre o futuro da engenharia de software, é preciso compreender um pouco de sua história. Para isso, existe uma simples frase que resume bem o conceito que precisamos entender:

“O mapa não é o território.” Alfred Korzybski

Descrição da imagem Imagem: Gerada por IA, Modelo Dall-E OpenAI.

Como é possível ver, há uma clara diferença entre o mapa e o território.

Segundo a ideia de Korzybski, o autor do mapa descreve o território de acordo com suas crenças e interpretações. E, se esse mapa é desenhado de acordo com a abordagem e conceitos do autor, podemos concluir que cada autor criará o próprio mapa. Ou seja, um mapa único.

Transpondo essa metáfora para a engenharia de software, o mapa se equivale ao software, enquanto o território é a realidade. Então, podemos concluir que cada engenheiro, arquiteto ou designer de software criará uma solução distinta a partir de um mesmo problema. Em geral, o software busca atender a uma necessidade. Porém, é preciso determinar o domínio dela (o pedaço da realidade que o software se propõe a resolver).

Por isso, a engenharia de software funciona como um trabalho artístico.

A arte é a baseada na criatividade humana. Cada ser humano é capaz de criar uma peça única, que leva consigo todas as experiências que compõem a assinatura daquele artista. Também é interessante ressaltar que a arte não necessariamente se constrói por metodologias, frameworks e processos. Ela é livre e libertadora, assim como a IA foi feita para ser.

Durante o artigo, veremos um breve resumo da história e evolução da engenharia de software, passando pela ascensão da IA Generativa e Sistemas Multiagentes neste mesmo campo e, por fim, entender quais seriam os “papéis” futuros do engenheiro de software, ou no que ele poderá se transformar.

Do Físico ao Meta

Por muito tempo, nós buscamos meios de comunicação para expressar nossas necessidades às máquinas. Esse fascínio nos levou a criar as mais diversas linguagens de programação, desde cartões perfurados, passando pela linguagem binária de baixo nível, até chegar em desenvolvimentos orientados a objetos, eventos e modelos, já em alto nível. O que chamamos de Meta.

Descrição da imagem Fonte: https://medium.com/@ajuatahcodingarena

O objetivo sempre foi o de estreitar o entendimento entre nós e as máquinas, de uma maneira cada vez menos brusca, e cada vez mais suave.

Porém, e se eu te dissesse que vivemos o momento mais ousado para alcançar esse objetivo? Sim, nós aprendemos a nos comunicar com os softwares de inúmeras maneiras, mas vivemos em uma era em que finalmente encontramos um meio de ensiná-los o nosso próprio idioma. Agora, são as máquinas que buscam meios de se comunicarem conosco, através da tão comentada inteligência artificial. Podemos dizer que, hoje, é o software que aprende a nossa linguagem natural.

Mas antes, precisamos entender o caminho que percorremos para chegar nesse momento histórico.

Evolução da Engenharia de Software

Pensando no conceito de software, podemos compará-lo à complexidade de uma cidade. Algo como um organismo vivo e independente, mas que funciona graças a cada um dos objetos que compõem a sua grande estrutura.

Mas como se cria algo dessa dimensão?

Antes de tudo, o engenheiro de software precisa construir modelos mentais dos problemas e interpretações, mas de uma maneira abstrata, já que o fará através de uma linguagem de programação. Só então, esse profissional conseguirá criar um organismo vivo e visível para todos, como só uma arte consegue comunicar, ou como só uma cidade é capaz de sustentar. Não é uma tarefa fácil.

Para cumprir esse objetivo, foram criadas diversas metodologias.

# Uma breve linha do tempo da Engenharia de Software
1. `Antes de 1980`: Poucas Metodologias Formalizadas
2. `1990 - 2000`: Cascata e Metodologias Ágeis
3. `2000 - 2020`: Automação, DevOps, Cloud
4. `Após 2020`: IA, IAG e Sistemas Multi-Agentes?

Por muitos anos, projetos de desenvolvimento de software foram realizados a partir do modelo Cascata (Waterfall). Entretanto, o aumento da responsividade de um projeto, a cadência de validação e até a comunicação do time de desenvolvimento com as frentes interessadas, fez com que o Ágil (Agile) se fortalecesse cada vez mais no mercado. Diferentemente do modelo Waterfall, o Agile busca aproximar a comunicação de todas as partes envolvidas no projeto em ciclos curtos.

É importante ressaltar que essa simples linha de raciocínio humana é a base para toda a engenharia de software até hoje. Conceitos como Back-end, Front-end, DevOps, Cloud, entre tantos outros, se aperfeiçoaram por um objetivo em comum: o de criar softwares. Todos eles são igualmente importantes para o que pavimentou o caminho até a inteligência artificial.

Descrição da imagem

Além disso, também padronizou-se o ciclo de desenvolvimento de software, que trata de uma forma macro todo o processo, desde a ideia de um ser humano, até a transformação dessa ideia em uma série de requisitos. Isso compõe o design da interface do usuário, passando pela escolha de tecnologias que serão utilizadas, implementação, teste, resultando na entrega de todo esse produto para o cliente final. Periodicamente, ocorrem manutenções para que ele continue funcionando adequadamente, somando às mudanças que certamente acontecerão no mundo externo. Esse ciclo, dentro do mundo de engenharia de software, é algo infindável.

Descrição da imagem

É importante ressaltar que essa simples linha de raciocínio humana é a base para toda a engenharia de software até hoje. Conceitos como Back-end, Front-end, DevOps, Cloud, entre tantos outros, se aperfeiçoaram por um objetivo em comum: o de criar softwares. Todos eles são igualmente importantes para o que pavimentou o caminho até a inteligência artificial.

Como é possível ver no quadro abaixo, a IA se apoia em todos esses conceitos já existentes.

Descrição da imagem Fonte: Blog Sequoia

Nota-se que empresas e ferramentas de IA irão, em um curto período de tempo, preencher todas as etapas que ocorrem no ciclo de desenvolvimento de software, no intuito de mitigar suas falhas e lacunas. Esse é um fator que a tornará altamente necessária em um futuro próximo.

Mas por que a inteligência artificial já é praticamente inevitável nessas frentes?

Sistemas Multiagentes

Para sabermos como ambientes de multiagente podem ser impactados por IAs, primeiro, é necessário entendermos o que significa “multiagente”.

Utilizando o exemplo de uma equipe de software, diferentes agentes poderiam ser representados pelos diferentes papéis existentes. Por exemplo: designers, gestores de projeto, desenvolvedores, arquitetos, testadores, clientes, analistas de negócio, entre outros. Cada um desses papéis é um agente que, em conjunto, forma um sistema multiagente.

Assim, para alcançar seus objetivos, o fluxo do sistema funciona como uma orquestração de agentes. Imagine que seu funcionamento é como um enxame de abelhas, que precisa, dentro de cada papel, sustentar a colmeia. Da mesma forma que uma cidade precisa de diferentes papéis e entidades para que formem, assim, um equilibrado ecossistema.

Descrição da imagem Imagem: Sim City 2000

Agora, vamos transcrever isso para um Sistema Multiagentes de IA.

Hoje, já existem inteligências artificiais que escrevem histórias de usuário, assim como realizam mock-ups de interfaces, diagramas, modelagem de dados e até testes funcionais.

Veja alguns exemplos de Ferramentas que podem funcionar como parte de Sistemas Multiagentes:

Descrição da imagem

A lista de ferramentas já é um indício da criação de ambientes multiagente entre inteligências artificiais. Com isso, é uma questão de tempo para que haja infraestrutura de interações dos agentes IA, buscando o objetivo de facilitar a comunicação e visão de todas as fases de um projeto.

Além disso, não podemos ignorar a velocidade de aprendizado e cognição de uma inteligência artificial. Segundo um estudo da Sequoia Capital, a projeção de aperfeiçoamento da IA avançará a níveis muito avançados em um curto espaço de tempo.

Descrição da imagem Fonte: Blog Sequoia

No caso, esses agentes serão IAs interligando funções e ferramentas entre si, criando inteligências artificiais multiagentes dentro do mesmo cenário de engenharia de software. Sim, isso já uma realidade.

Isso nos leva à fatídica questão: seremos substituídos por IAs?

Transformação do Engenheiro de Software

Descrição da imagem

Como foi dito anteriormente, o papel do engenheiro de software se dividiu em ramificações ao decorrer da evolução tecnológica. Assim, novas funções surgiram. Funções que trouxeram novas interpretações e habilidades dentro de um projeto de desenvolvimento. Portanto, profissionais com perfis diferentes passaram a olhar o mesmo cenário, todos lidando com as mesmas tecnologias, justamente pelos alto níveis de abstração que a programação alcançou. Isso trouxe oportunidade e acessibilidade para diferentes agentes enxergarem a mesma solução e unificarem suas visões.

O que isso quer dizer? Que, ao contrário do que é dito sobre a IA substituir pessoas, ela dará acesso para que os mais diversos profissionais façam parte da área de tecnologia, como as linguagens de programação de alto nível permitem. Consequentemente, novas profissões aparecerão em prol da necessidade evolutiva, como o engenheiro de IA.

Dentre todas as metamorfoses que o engenheiro de software pode passar com a evolução da IA, existem três que se mostram mais possíveis:

Desenvolvedor Designer

A partir do momento em que a linguagem natural mostra uma capacidade estrondosa, quem for capaz de entender melhor o mapa do domínio do problema, terá ampla vantagem em relação aos profissionais puramente técnicos e que conhecem apenas as linguagens de mais baixo nível. Essa diferença de conhecimento mais técnico pode perder seu valor com o tempo.

Desenvolvedor Cientista de Dados

Um profissional que seria responsável não só por fazer a curadoria e tratamento da imensidão de dados criados, mas que também será capaz de ajustar os modelos de inteligência artificial para que seus resultados sejam melhorados de maneira geral ou até para determinados nichos de problemas.

Desenvolvedor Engenheiro De Prompt

Este será um profissional que sabe utilizar a linguagem natural para conversar com as máquinas, como um português ou inglês paralelo, para que tenha maior eficácia de resultados nos modelos de inteligência artificial baseados na ideia humana. Ou seja, conectando as mentes dos seres humanos e das máquinas utilizando linguagem puramente natural.

Posto isso, é importante dizer que nenhuma dessas transformações é diferente de todas que o ser humano já passou ao longo de toda a sua história. O ponto é que a inteligência artificial será uma ferramenta importantíssima na criação de novas funções, tanto no setor de tecnologia quanto em qualquer outro. Isso porque sua acessibilidade é tão, ou até mais intuitiva que a de qualquer linguagem criada anteriormente.

Muito se fala da geração que nasceu conectada à internet. Mas também devemos olhar para uma nova geração que irá nascer em um mundo integrado com a IA.

Lembrando que o avanço não anulará o passado, pois jamais o anulou.

“Se vi mais longe, foi por estar de pé sobre os ombros de gigantes.” Isaac Newton

Desafios e Oportunidades

Mas, afinal, por que devemos aprender sobre IA?

É inegável que o mercado vem se adaptado cada vez mais a essa realidade. Empresas buscam otimizar tempo e produtividade. A demanda avassaladora de consumo aumenta cada vez mais. E devemos entender que a IA é o caminho para suportarmos esse momento. Não é opcional. Além disso, com a inteligência artificial se tornando parte fundamental na vida dos profissionais, sejam eles líderes, desenvolvedores ou até mesmo usuários, todos os processos serão dependentes de IA, pois os construiremos para que sejam.

Já existiu um mundo sem internet, mas hoje, tudo se adaptou a ela de um modo irreversível. Não temos mais como realizar necessidades básicas sem ela. O que impede que a IA se encaminhe para esse mesmo cenário?

Contudo, ainda existe um “abismo” entre aqueles que aceitam essa realidade e os que relutam. A resistência à mudança é algo natural do ser humano. Mudar o pensamento exige esforço, incômodo e até persistência, mas nós não chegaríamos ao mundo de hoje se não fosse por aqueles que saíram da zona de conforto em busca do avanço tecnológico na vida das pessoas. Ainda assim, é impossível ignorar que existem esferas diferentes em torno desse abismo:

Descrição da imagem Fonte: Livro ‘Crossing The Chasm’ de Geoffrey A. Moore.

Também devemos entender tudo isso não passa de um “hype” direcionado à inteligência artificial, muito pelo fator novidade. No entanto, sua longevidade vai se provar através de resultados práticos diretamente ligados ao ser humano comum. Você pode não acreditar, mas já está acontecendo. Possivelmente, a IA já faz parte do que você consome como entretenimento, ou sua performance no trabalho, ou mesmo nas tarefas básicas, como uma simples pesquisa em um buscador.

A IA não é só um hype. Ela já faz parte da nossa realidade.

O fato é que as tecnologias estão cada vez mais próximas do público comum, sem a necessidade do intermédio de um profissional. A IA permite, literalmente, que qualquer um possa conversar com uma máquina. Assim como nós aprendemos o “idioma” dos softwares, eles aprenderam o nosso, e estão aprendendo mais a cada segundo. A verdade é que os seres humanos e as máquinas já “falam a mesma língua”.

Conclusão

A Engenharia de Software pode se reinventar com a IA ao automatizar processos complexos, como a geração de código, testes e otimização de sistemas, tornando o desenvolvimento mais ágil e eficiente. Ferramentas de IA podem sugerir soluções, identificar bugs de forma mais rápida e aprender com grandes volumes de dados para melhorar a experiência do usuário. Além disso, o uso da IA facilita a criação de sistemas mais inteligentes e adaptativos, permitindo que os engenheiros se concentrem em tarefas mais criativas e estratégicas.

Caso você duvide, saiba que o parágrafo acima, especificamente, foi a resposta de uma IA à pergunta inicial deste artigo, sem contextualizá-la do que um ser humano escreveu ao longo do texto, mas que reforça exatamente a mesma ideia.

#EngenhariaDeSoftware #EngenheiroDeIA #EngenheiroDeSoftware #ArquitetoDeSoftware #DesenvolvimentoDeSoftware #Programação #DesenvolvimentoÁgil #DevOps #ArquiteturaDeSoftware #TecnologiaDaInformação #InteligênciaArtificial #IA #AprendizadoDeMáquina #CienciaDeDados #RedesNeurais #Tecnologia #InteligênciaArtificial #Metafísica #FuturoDaIA

Thanks,
Tainan Fidelis.


Edit on GitHub