Investigadores del Laboratorio de Ciencias de la Computación e Inteligencia Artificial del MIT CSAIL han desarrollado un nuevo sistema que permite a los programadores trasplantar código de un programa a otro. El programador puede seleccionar el código de un programa y un punto de inserción en un segundo programa, yel sistema automáticamente hará las modificaciones necesarias, como cambiar los nombres de las variables, para integrar el código en su nuevo contexto.
Fundamentalmente, el sistema es capaz de traducir entre "representaciones de datos" utilizadas por los programas del donante y el destinatario. Un programa de procesamiento de imágenes, por ejemplo, debe poder manejar archivos en una variedad de formatos, como jpeg, tiff, o png. Pero internamente, representará todas esas imágenes utilizando un solo esquema estandarizado. Sin embargo, diferentes programas pueden usar diferentes esquemas internos. El sistema de investigadores de CSAIL asigna automáticamente el esquema del programa del donante al del receptor, para importar el códigosin problemas.
Los investigadores presentaron el nuevo sistema, denominado CodeCarbonCopy, en el Simposio de la Association for Computing Machinery sobre los fundamentos de la ingeniería de software.
"CodeCarbonCopy habilita uno de los santos griales de la ingeniería de software: la reutilización automática del código", dice Stelios Sidiroglou-Douskos, científico investigador de CSAIL y primer autor del artículo. "Es otro paso hacia la automatización del ser humano fuera del ciclo de desarrollo. Nuestra opinión es que quizás hemos escrito la mayor parte del software que alguna vez necesitaremos, ahora solo necesitamos reutilizarlo ".
Los investigadores realizaron ocho experimentos en los que utilizaron CodeCarbonCopy para trasplantar código entre seis programas populares de procesamiento de imágenes de código abierto. Siete de los ocho trasplantes tuvieron éxito, y el programa receptor ejecutó correctamente la nueva funcionalidad.
Junto a Sidiroglou-Douskos en el artículo están Martin Rinard, profesor de ingeniería eléctrica e informática; Fan Long, un estudiante graduado del MIT en ingeniería eléctrica e informática; y Eric Lahtinen y Anthony Eden, que eran programadores contratados en el MIT cuandoel trabajo estaba hecho.
Mutatis mutandis
Con CodeCarbonCopy, el primer paso para trasplantar el código de un programa a otro es alimentar a ambos con el mismo archivo de entrada. Luego, el sistema compara cómo los dos programas procesan el archivo.
Si, por ejemplo, el programa donante realiza una serie de operaciones en un dato en particular y carga el resultado en una variable llamada "mem_clip-> ancho", y el destinatario realiza las mismas operaciones en el mismo dato ycarga el resultado en una variable llamada "picture.width", el sistema deducirá que las variables están jugando los mismos roles en sus respectivos programas.
Una vez identificadas las correspondencias entre variables, CodeCarbonCopy las presenta al usuario. También presenta todas las variables en el donante para las cuales no pudo encontrar coincidencias en el receptor, junto con las definiciones iniciales de esas variables. Con frecuencia, esas variables sondesempeñando algún papel en el donante que es irrelevante para el destinatario. El usuario puede marcar esas variables como innecesarias, y CodeCarbonCopy eliminará automáticamente cualquier operación que haga uso de ellas del código trasplantado.
Nuevo pedido
Para asignar las representaciones de datos de un programa a las del otro, CodeCarbonCopy analiza los valores precisos que ambos programas almacenan en la memoria. Cada píxel de una imagen digital, por ejemplo, se rige por tres valores de color: rojo, verde,Sin embargo, algunos programas almacenan esos tripletes de valores en el orden rojo, verde, azul y otros los almacenan en el orden azul, verde, rojo.
Si CodeCarbonCopy encuentra una relación sistemática entre los valores almacenados por un programa y los almacenados por el otro, genera un conjunto de operaciones para traducir entre representaciones.
CodeCarbonCopy funciona bien con formatos de archivo, como imágenes, cuyos datos están organizados de manera rígida, y con programas, como procesadores de imágenes, que almacenan representaciones de datos en matrices, que son esencialmente filas de unidades de memoria de tamaño idéntico. En el trabajo en curso, ellos investigadores buscan generalizar su enfoque a los formatos de archivo que permiten una organización de datos más flexible y programas que utilizan estructuras de datos distintas de las matrices, como árboles o listas enlazadas.
Fuente de la historia :
Materiales proporcionado por Instituto de Tecnología de Massachusetts . Original escrito por Larry Hardesty. Nota: el contenido se puede editar por estilo y longitud.
Referencia de la revista :
cite esta página :