robot

Puedes usar la inteligencia artificial para arreglar tu código roto

La IA puede convertirse en un colega que permite ganancias de productividad, ayuda a los desarrolladores a ampliar sus talentos y habilidades, reduce el tiempo de consulta de código y, en última instancia, mitiga el riesgo.

Si bien las organizaciones de todas las industrias continúan confiando en sistemas y aplicaciones heredados, los sistemas mainframe pueden ser difíciles de mantener, mejorar y expandir. Dado que estos sistemas obsoletos pero confiables son el núcleo de muchas empresas, cualquier tiempo de inactividad o defecto puede tener consecuencias desastrosas, desde pérdidas financieras hasta vergüenza en el mercado. Desafortunadamente, a menudo debido a la falta de una comprensión detallada del sistema, realizar cambios en estos sistemas puede ser costoso, arriesgado y puede empañar la reputación de una organización. ¿Por qué? Porque las herramientas de búsqueda de código, los linters y las herramientas de análisis de programas de hoy en día no logran mitigar los riesgos asociados con el mantenimiento y la mejora de las aplicaciones.

Lea mas sobre inteligencia artificial: El futuro de la IA: cómo la inteligencia artificial cambiará el mundo

Las empresas heredadas están atrapadas en el pasado

El mercado empresarial en constante evolución exige que estos sistemas y aplicaciones se mantengan al día con el rápido ritmo de cambio, pero demasiadas organizaciones dicen que sus aplicaciones heredadas luchan por evolucionar lo suficientemente rápido como para soportar esas demandas cambiantes.

Con 10 000 mainframes en uso activo en todo el mundo, incluidos 96 de los 100 bancos más grandes del mundo, nueve de cada diez de las compañías de seguros más grandes del mundo, 23 de los 25 minoristas más grandes de EE. UU. y el 71 % de las compañías Fortune 500. , la organización típica, independientemente de la industria, gasta entre el 60 y el 80 por ciento de su presupuesto de TI simplemente en mantener los sistemas y aplicaciones de mainframe existentes.

Cuando los ingenieros que escribieron el código original ya no están en la empresa, y los desarrolladores nuevos en el sistema no pueden obtener un conocimiento completo de la funcionalidad del sistema con la suficiente rapidez, pero estas aplicaciones críticas deben seguir ejecutándose, la administración de aplicaciones obsoletas en el mainframe se vuelve aún más difícil. complejo.

Las herramientas actuales pueden ayudar, pero no lo suficiente

Hoy en día, aproximadamente el 75 por ciento del tiempo de un desarrollador se dedica a consultar y comprender el código para corregir un error o realizar un cambio necesario en lugar de escribir código nuevo. Si bien las herramientas de búsqueda de código, los linters y las herramientas de análisis estático y dinámico pueden ayudar a los desarrolladores a mejorar su eficiencia y eficacia, la mayoría de estas herramientas son insuficientes para identificar realmente las líneas de código específicas que requieren atención, especialmente considerando la naturaleza entrelazada de las instrucciones del programa en una base de código con millones de líneas. Con los repositorios de software creciendo a tamaños sin precedentes, los desarrolladores responsables de mantener y preservar la funcionalidad de un sistema dicen que cada vez es más difícil encontrar errores en el código sin la ayuda de la máquina. Peor aún, corregir y luego validar la solución de un solo error puede llevar días, semanas o incluso más.

Las herramientas de búsqueda semántica como Sourcegraph ayudan a buscar palabras y frases complejas, acelerando la velocidad a la que los desarrolladores pueden construir un modelo mental del código, pero los programadores humanos todavía tienen que confiar en su propia capacidad para juntar todas las piezas porque las herramientas de búsqueda de código son conocido por los falsos positivos. Eso deja al desarrollador para eliminar esos falsos positivos solo para encontrar el código para hacer el cambio. Pero incluso con toda su capacitación, incluso los desarrolladores experimentados a veces cometen errores, y cambiar el código aún podría romperlo en lugar de arreglarlo. Peor aún, las herramientas de finalización de código como GitHub Copilot tampoco mitigan el riesgo. De hecho, en realidad pueden introducir riesgos porque las sugerencias que hacen no son precisas (el código que ofrece solo es correcto el 29 por ciento de las veces) y puede que los desarrolladores menos experimentados confíen en él de forma desproporcionada. Además, las herramientas de análisis estático y dinámico más avanzadas simplemente no encuentran el comportamiento en el código, simplemente reflejan el código en formas que los desarrolladores todavía tienen que interpretar (posiblemente incorrectamente).

En estos ejemplos, la identificación de problemas es bastante simple, pero limitarse a todo el código relevante esparcido por todo el sistema para remediar el problema es difícil y requiere mucho tiempo. Incluso con las mejores herramientas de búsqueda de código, linters y herramientas de análisis de programas, los desarrolladores aún tienen que simular simultáneamente varios aspectos de la ruta de ejecución detallada de un programa para mejorar por completo cualquier problema, lo cual es cognitivamente exigente, incluso para desarrolladores con mucha experiencia.

Quizás lo peor de todo es que las herramientas actuales no tienen forma de validar de manera efectiva el alcance y la precisión de un cambio propuesto. La influencia del cambio propuesto puede ser difícil de identificar y los datos necesarios para una cobertura completa de la prueba son amorfos. Tal es la naturaleza del código. Si bien incluso las herramientas más avanzadas pueden ayudar a los desarrolladores a identificar el código relevante, los desarrolladores aún tienen que conceptualizar la funcionalidad que representa el código para sacar a la luz la intención y exponer el error que buscan corregir.

Cuando un programador no logra comprender cómo el cambio de código en un área afecta al sistema en su conjunto, incluso una pequeña modificación puede ser catastrófica. En consecuencia, los desarrolladores de software todavía tienen que someterse al esfuerzo que consume mucho tiempo, es mentalmente desafiante y potencialmente inductor de errores que consiste en construir un modelo mental de lo que hace el código para que puedan hacer los ajustes necesarios.

Entonces, ¿cómo pueden los desarrolladores mitigar mejor el riesgo mientras administran aplicaciones heredadas? Mediante el empleo de un enfoque novedoso de la inteligencia artificial. Con AI, los desarrolladores pueden mejorar su capacidad para identificar de manera eficiente las líneas de código específicas relevantes para las tareas en cuestión.

La inteligencia artificial puede ayudar a reparar el código roto

En toda la esfera de TI, la tecnología de IA se está convirtiendo en una estrategia clave para organizar y optimizar los procesos, y el mantenimiento de aplicaciones de software es solo otra área en la que la IA ayuda.

Al mantener las aplicaciones ejecutándose en el mainframe, las herramientas de IA pueden mejorar el mantenimiento al ayudar a los desarrolladores a comprender mejor la base de código. Los desarrolladores pueden «preguntar» a la herramienta de IA de dónde proviene un comportamiento específico y ser guiados al código asociado con ese comportamiento mediante el uso de un enfoque colaborativo conocido como inteligencia aumentada. Al reinterpretar lo que representa el cómputo y convertirlo en conceptos, la tecnología de IA garantiza que los desarrolladores de software ya no tengan que estudiar detenidamente millones de líneas de código para descubrir la intención de los desarrolladores anteriores porque el comportamiento (como un error) se revela a la velocidad de la máquina.

AI puede identificar de antemano todos los comportamientos posibles sin buscar repetidamente en el código para llegar a las líneas específicas en cuestión (como lo hace un humano). Eso significa que tales herramientas pueden colaborar con los desarrolladores para reducir el código específico que debe cambiar. Luego, los desarrolladores pueden proponer cualquier cambio mientras codifican, sin volver a compilar ni verificar el código, por lo que la IA mitiga el riesgo al verificar si el cambio está aislado del comportamiento específico. El uso de enfoques de IA neoclásicos permite que la IA simule el cambio propuesto, tal como lo haría un humano mentalmente, pero con precisión de máquina y sin tener que implementar el código para ver qué sucede. Es más,

Implementar IA de esta manera para ver el código es casi como contratar a un programador humano capacitado. Si bien las herramientas de IA aún no realizarán cambios en el código por sí solas, dirigirán a los desarrolladores precisamente a donde se necesitan los cambios. Luego, los programadores expertos en el lenguaje de programación específico, incluso si no están totalmente familiarizados con el sistema o la aplicación en particular, pueden realizar las correcciones necesarias con un riesgo mínimo.