Logotipo de Zephyrnet

IBM AI ayuda a desglosar código masivo para facilitar la migración a la nube

Fecha:

Comparte este artículo:

La tecnología de la nube sin duda ha traído más conveniencia, permitiendo que cualquier persona acceda a sus fotos, correo electrónico y otras aplicaciones en cualquier lugar y en cualquier momento. Pero no todas las empresas han trasladado todo a la nube todavía. Aquellos que buscan migrar generalmente tienen que dividir sus aplicaciones en partes más pequeñas en un proceso denominado refactorización, o reestructurar su código de computadora sin cambiar sus funciones previstas.

Estos fragmentos, denominados clústeres o microservicios, reciben soporte de aplicaciones nativas de la nube y los desarrolladores pueden elegir el lenguaje de programación que deseen para administrarlos.

Pero hay un problema. Refactorizar una aplicación no es fácil: implica dividir el código e identificar sus límites funcionales para que el código general permanezca intacto.

Para abordar este problema, recurrimos a la IA para desglosar automáticamente la aplicación general al representar el código de la aplicación como gráficos. Nuestra IA se basa en el aprendizaje de representación gráfica, un método popular en el aprendizaje profundo. Los gráficos son una representación natural para el software y las aplicaciones. Traducimos la aplicación a un grafo donde los programas se convierten en nodos. Sus relaciones con otros programas se convierten en bordes y determinan el límite para separar los nodos de funcionalidad comercial común.

Aplicamos análisis de programa estático para traducir la estructura de implementación de la aplicación en una estructura gráfica y proponemos una nueva red neuronal gráfica (GNN) que conserva la representación gráfica y realiza la tarea de agrupación. Para analizar el código, para recorrer las líneas de código, utilizamos herramientas de análisis de programas estáticos. como el hollín. Nuestros resultados superan otros enfoques, los basados ​​en la ingeniería de software tradicional y también los métodos basados ​​en gráficos.

En nuestro artículo "Red neuronal gráfica para diluir valores atípicos para la aplicación de refactorización de monolitos" disponible aquí, y presentado en AAAI 2021, detallamos cómo los programas en una aplicación se convierten en nodos en el gráfico y sus relaciones con otros programas se convierten en bordes. De esta forma, la tarea de refactorización de aplicaciones se convierte en una tarea de agrupamiento, es decir, en una agrupación de nodos que tienden a contribuir a una funcionalidad comercial común. En general, el agrupamiento consiste en agrupar un conjunto de objetos de modo que los objetos del mismo grupo sean más similares entre sí que con los de otros grupos.

Figura 1: Comparación del enfoque propuesto: método CO-GCN con las líneas de base en las cuatro aplicaciones públicas en (a) modularidad estructural (b) modularidad (c) 1-NED y (d) métricas IFN. El método CO-GCN claramente supera las líneas de base consideradas.

 

¿Cómo funciona?

Asuma el sistema de comercio de acciones en línea. La aplicación permite a los usuarios iniciar sesión, ver su cartera, buscar cotizaciones de acciones y comprar o vender acciones. En el mundo tradicional, todas estas funcionalidades se agruparían en una sola aplicación, la llamada aplicación monolítica.

Muchas empresas, hasta ahora, han seguido este principio porque era fácil de implementar. Pero cuando varios desarrolladores contribuyen a las funcionalidades, es posible que los programas destinados a una sola funcionalidad se sobrecarguen con diferentes funciones comerciales. Digamos que los desarrolladores podrían mezclar la lógica para validar a los usuarios para la funcionalidad de inicio de sesión, y la funcionalidad de venta de acciones podría estar codificada en los mismos archivos de programa, lo que significa que un solo programa ahora está sobrecargado con dos funcionalidades comerciales. Además, a pesar de que existen buenas prácticas para los desarrolladores, como mantener un paquete dedicado para los archivos de programa por funcionalidad, estos podrían corromperse.

Con la GNN, es diferente.

Por ejemplo, si un programa A llama, o invoca, un programa B, podemos formar un gráfico con los nodos A y B y establecer un borde entre ellos según el tipo de relación de llamada. De manera similar, un programa C podría extender un programa D, por lo que luego agregamos los nodos C y D al gráfico y formamos un borde entre C y D con el tipo de relación conocido en el lenguaje de programación como una extensión.

Todos los programas de la aplicación se convierten en nodos. Las GNN tienen como objetivo aprender representaciones gráficas que conserven tanto la información atributiva como la estructural y se desempeñen bien en tareas como la respuesta a preguntas, y están mostrando resultados prometedores en muchas tareas de diferentes dominios.

Las redes sociales son un ejemplo familiar en el que los nodos pueden ser usuarios y sus conexiones pueden ser bordes, y los GNN se aplican para realizar muchas tareas, como detectar comunidades o recomendar conexiones en función de la similitud de los nodos.

Hemos confiado en GNN para poner aplicaciones en representación gráfica, unificando las tareas de representación de nodos que se ocupan de preservar la estructura semántica del gráfico, la detección y dilución de nodos atípicos para detectar nodos anómalos e ignorar su influencia para la agrupación y agrupación de nodos. Nuestra red pudo capturar información significativa sobre las funciones de los diferentes componentes de la aplicación.

Elegimos cuatro aplicaciones monolíticas públicas escritas en lenguajes de programación Java y .Net, y las dividimos en múltiples grupos de negocios. Cada grupo empresarial contenía principalmente programas pertenecientes a esa funcionalidad empresarial. Validamos el rendimiento de los clústeres utilizando métricas específicas y demostramos que la IA podía desglosar las aplicaciones de manera extremadamente efectiva.

En el documento, también recomendamos los mejores programas que necesitan la atención inmediata de los desarrolladores para desacoplar o aislar la funcionalidad empresarial. Creemos que nuestras recomendaciones podrían ahorrarles días de esfuerzo a los desarrolladores.

IA de investigación de IBM se enorgullece de patrocinar AAAI2021 como patrocinador platino. Presentaremos 40 documentos de seguimiento principal, además de al menos siete documentos de taller, 10 demostraciones, cuatro documentos de IAAI y un tutorial. IBM Research AI también está coorganizando tres talleres. Esperamos que pueda unirse a nosotros del 2 al 9 de febrero para obtener más información sobre nuestra investigación. Para ver nuestra presencia completa en AAAI 2021, visite esta página.

Inventando lo que sigue.

Manténgase actualizado con los últimos anuncios, investigaciones y eventos de IBM Research a través de nuestro boletín.

punto_img

Información más reciente

punto_img