MIT dévoile une nouvelle architecture logicielle pour un code plus clair, modulaire et compréhensible
Des chercheurs du MIT, au sein du Laboratoire d’informatique et d’intelligence artificielle (CSAIL), proposent une nouvelle approche pour concevoir un logiciel plus modulaire, lisible et compréhensible, en réponse aux limites croissantes du développement logiciel traditionnel, notamment avec l’essor des modèles de langage à grande échelle (LLM). Leur méthode repose sur deux concepts clés : les « concepts » et les « synchronisations ». Un concept regroupe une fonctionnalité cohérente — comme « partager », « aimer » ou « suivre » — avec son état et ses actions associées, en isolant chaque élément dans une unité autonome. Les synchronisations, quant à elles, définissent de manière explicite et déclarative comment ces concepts interagissent entre eux, à un niveau abstrait, plutôt que dans du code bas niveau difficile à suivre. Cette approche vise à résoudre un problème majeur appelé « fragmentation fonctionnelle », où une seule fonctionnalité, comme un bouton « partager » sur une plateforme sociale, est répartie sur plusieurs services distincts (authentification, notifications, gestion des publications, etc.). Cela rend le code difficile à comprendre, à tester et à modifier sans risque d’effets secondaires imprévus. En centralisant chaque fonctionnalité dans un concept et en déclarant leurs interactions via une petite langue spécifique au domaine (DSL), les développeurs peuvent désormais représenter les relations entre composants de manière claire et vérifiable. Daniel Jackson, professeur au MIT et directeur adjoint de CSAIL, et Eagon Meng, doctorante en informatique et créatrice du DSL des synchronisations, ont présenté cette méthode dans un article intitulé « What You See Is What It Does: A Structural Pattern for Legible Software », présenté à la conférence Splash à Singapour. Selon eux, cette structure permet de lire le code comme un livre : les concepts correspondent à des notions familières, et les synchronisations reflètent notre intuition sur les interactions entre ces éléments. Le cas d’étude réalisé montre que cette méthode permet de regrouper des fonctionnalités dispersées dans plusieurs services, en les centralisant dans des concepts uniques, tout en assurant une cohérence dans les interactions. De plus, les synchronisations peuvent encapsuler des préoccupations communes — comme la gestion des erreurs, le formatage des réponses ou le stockage persistant — évitant ainsi la redondance et assurant une uniformité à travers le système. Cette approche ouvre la voie à une automatisation plus sûre, car les synchronisations, étant explicites, peuvent être analysées, vérifiées et générées de manière fiable par des LLM. Des perspectives prometteuses émergent : création de catalogues de concepts partagés, développement logiciel basé sur la sélection de composants prêts à l’emploi, ou coordination de systèmes distribués avec une visibilité accrue des interactions. Jackson imagine même une nouvelle forme de langage de programmation, où les concepts deviennent des unités de base, et les synchronisations, les programmes eux-mêmes. Des experts externes saluent cette avancée. Kevin Sullivan, de l’Université de Virginie, souligne que ce travail remet en question l’approche traditionnelle, en construisant le logiciel sur des abstractions humaines plutôt que sur des machines, ce qui pourrait réduire les erreurs critiques, notamment dans des domaines sensibles comme la santé. Thomas Ball, de l’Université de Washington, estime que cette méthode offre un cadre idéal pour guider les LLM vers des résultats alignés sur l’intention du développeur, en combinant logique formelle et langage naturel. Cette approche marque une évolution fondamentale vers un logiciel plus humain, plus transparent et plus fiable.
