← Últimos artigos
💻 computer science

Making Software Meaningful

O artigo argumenta que adotar um compromisso com o significado explícito — definido como um vocabulário compartilhado de fenômenos, ações e fatos do domínio — aumenta a usabilidade, a modularidade e a responsabilidade do software ao alinhar as partes interessadas e mapear esses conceitos diretamente para o código e o comportamento do agente.

Autores originais: Eagon Meng, Abutalib Namazov, Carmel Schare, Alcino Cunha, Daniel Jackson

Publicado 2026-06-10
📖 6 min de leitura🧠 Leitura aprofundada

Autores originais: Eagon Meng, Abutalib Namazov, Carmel Schare, Alcino Cunha, Daniel Jackson

Artigo original sob licença CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta é uma explicação gerada por IA do artigo abaixo. Não foi escrita nem endossada pelos autores. Para precisão técnica, consulte o artigo original. Ler aviso legal completo

Imagine que você está tentando dar direções a um amigo, mas você fala uma língua diferente da dele. Você diz "vire à esquerda no prédio vermelho grande", mas ele vê apenas uma parede de tijolos vermelhos e nenhum prédio. Ele se perde, não porque seja ruim em seguir instruções, mas porque o entendimento compartilhado que vocês têm do mundo está quebrado.

Este artigo, "Making Software Meaningful" (Tornando o Software Significativo), argumenta que o desenvolvimento de software sofre exatamente com o mesmo problema. Desenvolvedores, usuários e até o próprio software frequentemente falam "línguas" diferentes sobre o que o software está realmente fazendo. Os autores propõem uma solução simples: criar um dicionário único e compartilhado de "significado" com o qual todos concordem antes de escrever uma única linha de código.

Aqui está uma decomposição de suas ideias usando analogias do cotidiano:

1. O Problema: O Software "Perdido na Tradução"

Os autores apontam que o software é cheio de confusão porque o "significado" de uma ação se perde conforme se move da mente do usuário para o código do computador.

  • O Botão de "Raiva" do Facebook: Quando o Facebook adicionou uma reação de "raiva", os usuários pensaram: "Estou expressando que estou bravo". Mas o código do computador tratou isso como: "Este post é muito envolvente, mostre-o para mais pessoas!". O usuário e o computador estavam fazendo duas coisas diferentes com o mesmo clique de botão.
  • A Caça ao Bug: Um programador tenta corrigir um bug. Ele vê um usuário clicar em um botão, mas no código, esse único clique se transforma em uma confusão de 50 etapas ocultas. É como tentar rastrear uma única gota de chuva de volta à nuvem específica de onde ela veio após ter chovido por uma hora.
  • O Resultado: Usuários ficam frustrados porque o software não faz o que eles pensam que deveria fazer. Programadores ficam frustrados porque não conseguem encontrar onde o código está quebrando.

2. A Solução: Um "Vocabulário de Ações" Compartilhado

Os autores sugerem que paremos de pensar no software apenas como "código" e passemos a pensar nele como uma coleção de Ações, Fatos e Indivíduos.

Pense nisso como uma peça de teatro ou um jogo de tabuleiro:

  • Indivíduos: Os jogadores (ex: "Usuário Alice", "Usuário Bob").
  • Ações: Os movimentos que eles fazem (ex: "Alice faz login", "Bob posta uma foto").
  • Fatos: O estado do tabuleiro do jogo após o movimento (ex: "Alice agora está logada", "A foto agora está visível").

A ideia central é escrever um livro de regras simples (uma "ontologia") que defina esses movimentos e fatos antes de construir o software. Este livro de regras torna-se a "fonte da verdade" com a qual todos — usuários, designers e codificadores — concordam.

3. Os Três Grandes Benefícios

A. Usabilidade: Sem mais "Hiato de Execução"

Quando o vocabulário compartilhado existe, a lacuna entre o que um usuário pretende fazer e o que o software faz desaparece.

  • Analogia: Imagine um menu de restaurante. Se o menu diz "Frango Picante" e a cozinha realmente serve "Frango Suave com um acompanhamento de fogo", o cliente fica confuso. Se o menu, a cozinha e o garçom concordam sobre o que "Frango Picante" significa, a experiência é fluida.
  • A Alegação do Artigo: Ao alinhar o modelo mental do usuário com o comportamento real do software, paramos de fazer os usuários adivinharem o que os botões fazem.

B. Modularidade: Construindo com LEGO, não com Lama

Atualmente, o código é frequentemente como um grande bloco de lama onde tudo está grudado. Se você quiser mudar uma parte, pode acidentalmente quebrar outra.

  • Analogia: Os autores propõem organizar o código como conjuntos de LEGO. Cada "Conceito" (como "Fazer Login" ou "Postar uma Foto") é um bloco de LEGO distinto.
  • Como funciona: Você não mistura o bloco de "Login" com o bloco de "Foto". Você apenas os encaixa com conectores específicos (chamados de "sincronizações").
  • A Alegação do Artigo: Isso torna o código mais fácil de escrever, mais fácil de consertar e mais fácil para a IA (Modelos de Linguagem de Grande Escala) gerar, porque a IA não precisa adivinhar como as peças se encaixam; as regras já estão claras.

C. Responsabilidade: A "Caixa Preta" Torna-se Transparente

Com agentes de IA fazendo coisas em nosso nome (como enviar e-mails ou editar código), muitas vezes não sabemos por que eles fizeram algo.

  • Analogia: Imagine um carro autônomo que bate. Se o carro apenas disser "Eu bati", isso é inútil. Mas se o carro tiver um "Código de Conduta" que diz: "Eu só freio se eu vir uma luz vermelha", podemos verificar o registro. Ele viu uma luz vermelha? Não? Então ele quebrou as regras.
  • A Alegação do Artigo: Ao forçar os agentes de IA a seguir um conjunto estrito de ações e regras nomeadas, podemos auditá-los. Podemos olhar o "trace" (o registro/log) e dizer: "Você deveria ter verificado a hipótese antes de alterar o código. Você não verificou. Foi por isso que você falhou".

4. Exemplos do Mundo Real do Artigo

  • Ensinando Estudantes: Os autores ensinaram este método a estudantes usando uma linguagem de computador simples (TypeScript). Os estudantes usaram IA para escrever o código, mas como as "regras" (conceitos) eram claras, a IA não ficou confusa. Os estudantes aprenderam que regras claras tornam a IA um ajudante melhor, não um perigo.
  • Agentes de Pesquisa: Eles testaram isso em agentes de IA que realizam pesquisas científicas. Em vez de a IA apenas conversar e adivinhar, ela tinha que seguir um "Código de Conduta". Ela tinha que declarar sua hipótese, realizar um experimento e registrar o resultado como um "Fato" específico. Isso tornou o trabalho da IA legível e confiável, mesmo quando ela cometia erros.

A Conclusão

O artigo argumenta que o futuro do software não é apenas sobre escrever código mais rápido ou IAs mais inteligentes. É sobre clareza.

Se concordarmos em uma linguagem simples e compartilhada para o que o software faz (seu significado) antes de construí-lo, podemos:

  1. Impedir que os usuários se percam.
  2. Impedir que os desenvolvedores lutem contra códigos emaranhados.
  3. Impedir que os agentes de IA ajam como caixas pretas misteriosas.

Trata-se de passar de "adivinhar o que o código faz" para "saber exatamente o que o software significa".

Afogado em artigos na sua área?

Receba digests diários dos artigos mais recentes que correspondam às suas palavras-chave de pesquisa — com resumos técnicos, no seu idioma.

Experimentar Digest →