
Crédito: CC0 Dominio público
Codificar con modelos de lenguajes grandes (LLM) es muy prometedor, pero también expone algunas fallas de larga data en el software: código confuso, difícil de cambiar de manera segura y, a menudo, opaco sobre lo que realmente sucede bajo el capó. Los investigadores del Laboratorio de Ciencias de la Computación e Inteligencia Artificial (CSAIL) del MIT están trazando un camino más «modular» a seguir.
Su nuevo enfoque divide los sistemas en «conceptos», partes separadas de un sistema, cada una diseñada para hacer bien un trabajo, y «sincronizaciones», reglas explícitas que describen exactamente cómo encajan esas piezas. El resultado es un software más modular, transparente y más fácil de entender.
Un pequeño lenguaje específico de dominio (DSL) permite expresar sincronizaciones de manera simple, en una forma que los LLM pueden generar de manera confiable. En un estudio de caso del mundo real, el equipo demostró cómo este método puede reunir características que de otro modo estarían dispersas en múltiples servicios. el papel es publicado en el Actas del Simposio internacional ACM SIGPLAN 2025 sobre nuevas ideas, nuevos paradigmas y reflexiones sobre programación y software.
El equipo, que incluye a Daniel Jackson, profesor de ingeniería eléctrica e informática (EECS) del MIT y director asociado de CSAIL, y Eagon Meng, Ph.D. estudiante, afiliado de CSAIL y diseñador del nuevo DSL de sincronización, explora este enfoque en su artículo «Lo que ves es lo que hace: un patrón estructural para software legible», que presentaron en la Conferencia Splash en Singapur en octubre.
El desafío, explican, es que en la mayoría de los sistemas modernos, una sola característica nunca es completamente autónoma. Agregar un botón «compartir» a una plataforma social como Instagram, por ejemplo, no se encuentra en un solo servicio. Su funcionalidad se divide en código que maneja publicaciones, notificaciones, autenticación de usuarios y más. Todas estas piezas, a pesar de estar dispersas por el código, deben alinearse cuidadosamente y cualquier cambio corre el riesgo de efectos secundarios no deseados en otros lugares.
Jackson llama a esto «fragmentación de características», un obstáculo central para la confiabilidad del software. «De la manera en que construimos software hoy en día, la funcionalidad no está localizada. Quieres entender cómo funciona ‘compartir’, pero tienes que buscarlo en tres o cuatro lugares diferentes, y cuando lo encuentras, las conexiones están enterradas en código de bajo nivel», dice Jackson.
Los conceptos y las sincronizaciones están destinados a abordar este problema. Un concepto agrupa una funcionalidad única y coherente, como compartir, dar me gusta o seguir, junto con su estado y las acciones que puede realizar. Las sincronizaciones, por otro lado, describen a un nivel superior cómo interactúan esos conceptos.
En lugar de escribir código de integración desordenado de bajo nivel, los desarrolladores pueden usar un pequeño lenguaje específico de dominio para explicar estas conexiones directamente. En este DSL, las reglas son simples y claras: la acción de un concepto puede desencadenar otra, de modo que un cambio en un estado puede mantenerse sincronizado con otro.
«Piense en los conceptos como módulos que son completamente limpios e independientes. Las sincronizaciones actúan entonces como contratos: dicen exactamente cómo se supone que deben interactuar los conceptos. Eso es poderoso porque hace que el sistema sea más fácil de entender para los humanos y más fácil de generar correctamente para herramientas como los LLM», dice Jackson.
«¿Por qué no podemos leer el código como un libro? Creemos que el software debe ser legible y escrito en términos de nuestra comprensión: nuestra esperanza es que los conceptos se correspondan con fenómenos familiares, y las sincronizaciones representen nuestra intuición sobre lo que sucede cuando se unen», dice Meng.
Los beneficios van más allá de la claridad. Debido a que las sincronizaciones son explícitas y declarativas, un LLM puede analizarlas, verificarlas y, por supuesto, generarlas. Esto abre la puerta a un desarrollo de software más seguro y automatizado, donde los asistentes de IA pueden proponer nuevas funciones sin introducir efectos secundarios ocultos.
En su estudio de caso, los investigadores asignaron funciones como dar me gusta, comentar y compartir a un solo concepto, como una arquitectura de microservicios, pero más modular. Sin este patrón, estas funciones se distribuían en muchos servicios, lo que dificultaba su localización y prueba. Utilizando el enfoque de conceptos y sincronizaciones, cada característica se volvió centralizada y legible, mientras que las sincronizaciones detallaban exactamente cómo interactuaban los conceptos.
El estudio también mostró cómo las sincronizaciones pueden tener en cuenta preocupaciones comunes como el manejo de errores, el formato de respuesta o el almacenamiento persistente. En lugar de incorporar estos detalles en cada servicio, la sincronización puede manejarlos una vez, lo que garantiza la coherencia en todo el sistema.
También son posibles direcciones más avanzadas. Las sincronizaciones podrían coordinar sistemas distribuidos, mantener al mismo tiempo las réplicas en diferentes servidores o permitir que las bases de datos compartidas interactúen limpiamente. Debilitar la semántica de sincronización podría permitir una eventual coherencia y al mismo tiempo preservar la claridad a nivel arquitectónico.
Jackson ve potencial para un cambio cultural más amplio en el desarrollo de software. Una idea es la creación de «catálogos de conceptos», bibliotecas compartidas de conceptos bien probados y de dominios específicos. Entonces, el desarrollo de aplicaciones podría centrarse menos en unir código desde cero y más en seleccionar los conceptos correctos y escribir las sincronizaciones entre ellos.
«Los conceptos podrían convertirse en un nuevo tipo de lenguaje de programación de alto nivel, con sincronizaciones como programas escritos en ese lenguaje. Es una forma de hacer visibles las conexiones en el software», dice Jackson. «Hoy ocultamos esas conexiones en el código. Pero si puedes verlas explícitamente, puedes razonar sobre el software a un nivel mucho más alto. Aún tienes que lidiar con la complejidad inherente de las características que interactúan. Pero ahora está a la vista, no dispersa ni oscurecida».
«La creación de software para uso humano a partir de abstracciones de máquinas informáticas subyacentes ha cargado al mundo con software que con demasiada frecuencia es costoso, frustrante e incluso peligroso de comprender y utilizar», dice el profesor asociado de la Universidad de Virginia Kevin Sullivan, que no participó en la investigación.
«Los impactos (como en el cuidado de la salud) han sido devastadores. Meng y Jackson cambian el guión e insisten en construir software interactivo sobre abstracciones de la comprensión humana, a las que llaman ‘conceptos’. Combinan lógica matemática expresiva y lenguaje natural para especificar tales abstracciones con propósito, proporcionando una base para verificar sus significados, componerlos en sistemas y refinarlos en programas aptos para el uso humano. Es una dirección nueva e importante en la teoría y la práctica del diseño de software que vale la pena observar».
«Durante muchos años ha quedado claro que necesitamos mejores formas de describir y especificar lo que queremos que haga el software», añade Thomas Ball, profesor honorario de la Universidad de Lancaster y profesorado afiliado de la Universidad de Washington, que tampoco participó en la investigación. «La capacidad de los LLM para generar código solo ha añadido más leña al fuego de las especificaciones. El trabajo de Meng y Jackson en el diseño conceptual proporciona una manera prometedora de describir lo que queremos del software de manera modular. Sus conceptos y especificaciones son muy adecuados para combinarse con los LLM para lograr la intención del diseñador».
De cara al futuro, los investigadores esperan que su trabajo pueda influir en la forma en que tanto la industria como el mundo académico piensan sobre la arquitectura de software en la era de la IA. «Si queremos que el software sea más confiable, necesitamos formas de escribirlo que hagan transparentes sus intenciones», dice Jackson. «Los conceptos y las sincronizaciones son un paso hacia ese objetivo».
Más información:
Eagon Meng et al, Lo que ves es lo que hace: un patrón estructural para software legible, Actas del Simposio internacional ACM SIGPLAN 2025 sobre nuevas ideas, nuevos paradigmas y reflexiones sobre programación y software (2025). DOI: 10.1145/3759429.3762628
Citación: Los investigadores proponen un nuevo modelo para software modular legible (2025, 6 de noviembre) recuperado el 6 de noviembre de 2025 de https://techxplore.com/news/2025-11-legible-modular-software.html
Este documento está sujeto a derechos de autor. Aparte de cualquier trato justo con fines de estudio o investigación privados, ninguna parte puede reproducirse sin el permiso por escrito. El contenido se proporciona únicamente con fines informativos.

