← Derniers articles
💻 computer science

Making Software Meaningful

L'article soutient que l'adoption d'un engagement envers un sens explicite — défini comme un vocabulaire partagé de phénomènes, d'actions et de faits du domaine — améliore l'utilisabilité, la modularité et la responsabilité des logiciels en alignant les parties prenantes et en faisant correspondre directement ces concepts au code et au comportement des agents.

Auteurs originaux : Eagon Meng, Abutalib Namazov, Carmel Schare, Alcino Cunha, Daniel Jackson

Publié 2026-06-10
📖 7 min de lecture🧠 Analyse approfondie

Auteurs originaux : Eagon Meng, Abutalib Namazov, Carmel Schare, Alcino Cunha, Daniel Jackson

Article original sous licence CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Ceci est une explication générée par l'IA de l'article ci-dessous. Elle n'a pas été rédigée ni approuvée par les auteurs. Pour une précision technique, consultez l'article original. Lire la clause de non-responsabilité complète

Imaginez que vous essayez de donner des indications à un ami, mais que vous parlez une langue différente de la sienne. Vous dites « tournez à gauche au grand bâtiment rouge », mais il ne voit qu'un mur de briques rouges et aucun bâtiment. Il se perd, non pas parce qu'il est mauvais pour suivre des instructions, mais parce que votre compréhension commune du monde est brisée.

Ce document, « Making Software Meaningful » (Rendre le logiciel significatif), soutient que le développement de logiciels souffre exactement du même problème. Les développeurs, les utilisateurs et même le logiciel lui-même parlent souvent des « langues » différentes concernant ce que le logiciel est réellement en train de faire. Les auteurs proposent une solution simple : créer un dictionnaire partagé et unique de la « signification » sur lequel tout le monde s'accorde avant d'écrire la moindre ligne de code.

Voici une décomposition de leurs idées en utilisant des analogies de la vie quotidienne :

1. Le Problème : Le logiciel « perdu dans la traduction »

Les auteurs soulignent que le logiciel est plein de confusion parce que la « signification » d'une action se perd au fur et à mesure qu'elle passe de l'esprit de l'utilisateur au code informatique.

  • Le bouton « Colère » de Facebook : Lorsque Facebook a ajouté une réaction « colère », les utilisateurs pensaient : « J'exprime que je suis en colère ». Mais le code informatique traitait cela comme : « Ce post est très engageant, montrez-le à plus de gens ! ». L'utilisateur et l'ordinateur faisaient deux choses différentes avec le même clic de bouton.
  • La chasse aux bugs : Un programmeur essaie de corriger un bug. Il voit un utilisateur cliquer sur un bouton, mais dans le code, ce simple clic se transforme en un enchevêtrement de 50 étapes cachées différentes. C'est comme essayer de retracer une seule goutte de pluie jusqu'au nuage spécifique dont elle est issue après qu'il a plu pendant une heure.
  • Le résultat : Les utilisateurs sont frustrés parce que le logiciel ne fait pas ce qu'ils pensent qu'il devrait faire. Les programmeurs sont frustrés parce qu'ils ne parviennent pas à trouver où le code casse.

2. La Solution : Un « Vocabulaire d'actions » partagé

Les auteurs suggèrent de cesser de penser au logiciel uniquement comme à du « code » et de commencer à le considérer comme une collection d'Actions, de Faits et d'Individus.

Voyez cela comme une pièce de théâtre ou un jeu de société :

  • Individus : Les joueurs (ex. : « Utilisateur Alice », « Utilisateur Bob »).
  • Actions : Les mouvements qu'ils effectuent (ex. : « Alice se connecte », « Bob publie une photo »).
  • Faits : L'état du plateau de jeu après le mouvement (ex. : « Alice est maintenant connectée », « La photo est maintenant visible »).

L'idée centrale est d'écrire un livre de règles simple (une « ontologie ») qui définit ces mouvements et ces faits avant de construire le logiciel. Ce livre de règles devient la « source de vérité » sur laquelle tout le monde — utilisateurs, concepteurs et codeurs — s'accorde.

3. Les trois grands avantages

A. Utilisabilité : Plus de « fossé d'exécution »

Lorsque le vocabulaire partagé existe, l'écart entre ce qu'un utilisateur entend faire et ce que le logiciel fait réellement disparaît.

  • Analogie : Imaginez un menu de restaurant. Si le menu indique « Poulet Épicé » et que la cuisine sert en réalité du « Poulet Doux avec un accompagnement de feu », le client est confus. Si le menu, la cuisine et le serveur s'accordent tous sur ce que signifie « Poulet Épicé », l'expérience est fluide.
  • La thèse du papier : En alignant le modèle mental de l'utilisateur avec le comportement réel du logiciel, nous empêchons les utilisateurs de deviner ce que font les boutons.

B. Modularité : Construire avec des LEGO, pas avec de la boue

Actuellement, le code est souvent comme une énorme masse de boue où tout est collé. Si vous voulez changer une partie, vous risquez d'en casser une autre par accident.

  • Analogie : Les auteurs proposent d'organiser le code comme des ensembles LEGO. Chaque « Concept » (comme « Se connecter » ou « Publier une photo ») est une brique LEGO distincte.
  • Comment ça marche : Vous ne mélangez pas la brique « Connexion » avec la brique « Photo ». Vous les emboîtez uniquement avec des connecteurs spécifiques (appelés « synchronisations »).
  • La thèse du papier : Cela rend le code plus facile à écrire, plus facile à réparer et plus facile à générer pour l'IA (les modèles de langage étendus/LLM) car l'IA n'a pas besoin de deviner comment les pièces s'assemblent ; les règles sont déjà claires.

C. Responsabilité : La « Boîte Noire » devient transparente

Avec les agents d'IA qui effectuent des tâches en notre nom (comme envoyer des e-mails ou éditer du code), nous ne savons souvent pas pourquoi ils l'ont fait.

  • Analogie : Imaginez une voiture autonome qui s'écrase. Si la voiture dit simplement « Je me suis écrasée », c'est inutile. Mais si la voiture possède un « Code de conduite » qui stipule « Je ne freine que si je vois un feu rouge », nous pouvons vérifier le journal. A-t-elle vu un feu rouge ? Non ? Alors elle a enfreint les règles.
  • La thèse du papier : En forçant les agents d'IA à suivre un ensemble strict d'actions et de règles nommées, nous pouvons les auditer. Nous pouvons examiner la « trace » (le journal) et dire : « Tu étais censé vérifier l'hypothèse avant de modifier le code. Tu ne l'as pas fait. C'est pourquoi tu as échoué. »

4. Exemples concrets du papier

  • Enseigner aux étudiants : Les auteurs ont enseigné cette méthode à des étudiants en utilisant un langage informatique simple (TypeScript). Les étudiants utilisaient l'IA pour écrire le code, mais comme les « règles » (concepts) étaient claires, l'IA ne s'est pas emmêlée les pinceaux. Les étudiants ont appris qu'un ensemble de règles claires fait de l'IA un meilleur assistant, et non un danger.
  • Agents de recherche : Ils ont testé cela sur des agents d'IA effectuant des recherches scientifiques. Au lieu que l'IA se contente de discuter et de deviner, elle devait suivre un « Code de conduite ». Elle devait énoncer son hypothèse, mener une expérience et enregistrer le résultat en tant que « Fait » spécifique. Cela a rendu le travail de l'IA lisible et digne de confiance, même lorsqu'elle commettait des erreurs.

L'essentiel

Le papier soutient que l'avenir du logiciel ne consiste pas seulement à écrire du code plus rapide ou une IA plus intelligente. Il s'agit de clarté.

Si nous nous accordons sur un langage simple et partagé pour ce que le logiciel fait (sa signification) avant de le construire, nous pouvons :

  1. Empêcher les utilisateurs de se perdre.
  2. Empêcher les développeurs de lutter contre un code enchevêtré.
  3. Empêcher les agents d'IA d'agir comme des boîtes noires mystérieuses.

Il s'agit de passer de « deviner ce que fait le code » à « savoir exactement ce que le logiciel signifie ».

Noyé(e) sous les articles dans votre domaine ?

Recevez des digests quotidiens des articles les plus récents correspondant à vos mots-clés de recherche — avec des résumés techniques, dans votre langue.

Essayer Digest →