Inteligencia Artificial Generativa (IAG) y su impacto en la Ingeniería de Software

En esta entrada del blog hablaré sobre la IA Generativa y su impacto en la Ingeniería del Software, explicaré lo que es y como afecta de forma positiva a la construcción de software.
 
    La Inteligencia Artificial Generativa (IA generativa, IAG) es una rama de la inteligencia artificial que se centra en la creación de contenido nuevo a partir de datos existentes. A diferencia de la IA clásica, que ejecuta tareas siguiendo reglas o instrucciones predefinidas, los modelos de IA generativa generan resultados originales que replican los patrones y propiedades de los datos con los que fueron entrenados. Estos modelos combinan técnicas avanzadas como el aprendizaje profundo con arquitecturas populares como los transformadores y las redes generativas antagónicas (GANs, por sus siglas en inglés). La IA generativa puede producir una amplia variedad de contenidos, incluidos código fuente, texto, imágenes, música y videos. Por ejemplo, puede desarrollar software complejo, redactar ensayos, crear imágenes realistas y componer música. En el ámbito de la ingeniería de software, la IA generativa puede automatizar la producción de código, pruebas y diseño, lo que incrementa significativamente la productividad y reduce las tareas repetitivas [1]. 

    La IAG está transformando el campo de la Ingeniería de Software (IS) al permitir que las máquinas creen, refinen e incluso automaticen aspectos clave del proceso de desarrollo de manera autónoma. A diferencia de los modelos de IA convencionales, que dependen de reglas o patrones predefinidos, la IA generativa emplea técnicas avanzadas de aprendizaje automático, particularmente arquitecturas de aprendizaje profundo como las GANs y los transformadores (ChatGPT). Estos modelos son capaces de generar resultados novedosos, incluyendo código, diseños de sistemas e incluso soluciones de software completas, introduciendo así un cambio de paradigma en las prácticas de la IS. Una contribución significativa de la IA generativa radica en su capacidad para automatizar tareas de programación. Puede generar código repetitivo, scripts de pruebas o incluso algoritmos completos, con lo cual reduce el tiempo y esfuerzo necesario para la codificación de código fuente tedioso en el día a día. Lo anterior, permite a los programadores destinar más recursos a tareas complejas y creativas de resolución de problemas, en teoría, enfocarse en creatividad o como mejorar la calidad del trabajo dejando un poco de lado la codificación del código fuente, pero obviamente, una cosa es el deber ser y otra muy distinta lo que en realidad es. Además, la IAG mejora los procesos de diseño al producir rápidamente múltiples prototipos alineados con estándares predefinidos. Esta capacidad permite a los desarrolladores explorar soluciones arquitectónicas alternativas y optimizar diseños, asegurando una evaluación más exhaustiva de las opciones potenciales desde las etapas iniciales del ciclo de desarrollo. Pero claro, depende como utilicen el prompt, por ejemplo, ChatGPT puede generarte código PHP para una conexión a base de datos, incluso para un CRUD (Create, Read, Update, Delete), pero sucede que si no especificas detalles, el código te lo puede generar con una versión deprecada de PHP, por ejemplo (caso real) generar conexión con mysql y no con PDO (PHP-Data Object) o incluso, al menos con mysqli (MySQL Improved). 

    La IAG también desempeña un papel muy importante en la identificación y mitigación de problemas potenciales durante el desarrollo. Esto se debe a que puede ser capas de crear pruebas y simulaciones que evalúan el rendimiento del software bajo diversas condiciones, con lo cual ayuda a detectar vulnerabilidades y cuellos de botella antes de la implementación final, antes de que salga a producción. Un aspecto que destaca es que la IAG, mediante técnicas de aprendizaje por refuerzo y ajuste fino, puede refinar iterativamente soluciones de software, mejorando su calidad, particularmente en aspectos como la escalabilidad, seguridad y eficiencia. Aprovechando datos históricos extensos de proyectos anteriores, la IA generativa aprende patrones y mejores prácticas, aplicando estos conocimientos a nuevos desafíos. Esta habilidad para “aprender” de éxitos y fracasos previos reduce significativamente la carga de trabajo manual de los programadores, permitiéndoles enfocarse en la resolución innovadora de problemas en lugar de tareas repetitivas, repito, es lo ideal, que así suceda es algo muy diferente, en algunos casos. 

    Por otra parte, es bien sabido que a medida que los sistemas software crecen se vuelven más grandes y complejos, con lo cual su mantenimiento y actualización se vuelve cada vez más difícil. La IAg puede analizar bases de código existentes para sugerir mejoras, refactorizar código ineficiente y garantizar que el software sea sostenible a lo largo del tiempo. Esto sin duda alguna es un gran avance, porque permite incrementar la la calidad y mantenibilidad del software a largo plazo. A continuación te menciono algunos aspectos en que la IAG puede y favorece a la IS (que no difiere mucho de las ventajas de la tecnología que surge para la IS, por ejemplo el Model-Driven Development o low-code y no-code software generation tools): 
  • Generación automática de código fuente. 
  • Tiempo de desarrollo más rápido. 
  • Mejorar la calidad del producto software. 
  • Automatizar pruebas. 
  • Automatización de tareas repetitivas. 
  • Reducción de error humano. 
  • Optimización de tiempo para desarrolladores y el equipo en general. 
    Ahora bien, a pesar de su inmenso potencial, la IAG no está exenta de las limitaciones, problemas o gaps que existen en IS, por ejemplo el clásico problema de la seguridad, así como cumplir con estándares rigurosos de aseguramiento de la calidad del software. El código generado por IA debe cumplir con especificaciones estrictas equivalentes al software escrito por humanos, lo que requiere pruebas y supervisión minuciosas, que sin duda, pueden llevar consumo de tiempo y recurso. Asimismo, es importante no dejar de lado aquellos aspectos éticos, por ejemplo el uso indebido del código generado por IA o su impacto en el empleo en la IS. A pesar de estos problemas que hoy en día se vuelven como un clásico de la IAG, está mejor posicionada como una herramienta complementaria que potencia las capacidades humanas, por lo que, como le digo a mis estudiantes, más que reemplazar la experiencia humana, simplemente será una competencia (habilidad) con la que el estudiante debe de salir al ámbito profesional hoy en día. 

    Si quieres algo más de información te recomiendo una CONFERENCIA EN MI CANAL DE YOTUEB ANOVALAB MX que recientemente impartí en el 2do Congreso Nacional en Computación e Innovación Educativa (CoNaCIE'24) el pasado mes de noviembre, en la Ciudad de Los Mochis, Sinaloa. Congreso organizado por la Universidad Autónoma Indígena de México (UAIM) y la Universidad Autónoma de Sinaloa (UAS). Ahí charlamos sobre algunas herramientas de IAG que se pueden incorporar ya al la práctica profesional en el desarrollo de software enfocado en aplicaciones web (si te interesa tener la presentación en PDF, envíame un correo electrónico o un comentario en el artículo del blog).


    Para finalizar esta entrada del blog, podemos concluir que la IAG es algo que ya esta transformando la ingeniería de software, que en teoría y en el deber ser impulsa la creatividad del equipo de desarrollo, y a su vez optimiza los flujos de trabajo, con lo cual propicia bastante la reducción de errores. En el futuro cercano, si no es que ya esta sucediendo, la IAG se perfila para redefinir las actuales prácticas de la IS, desde las metodologías que se conocen hasta los aspectos técnicos en el análisis, diseño, codificación, pruebas y despliegue del software como aún lo conocemos hoy en día, la recomendación es no quedarse atrás y adquirir las competencias necesarias para integrar la IAG en nuestra práctica profesional en el desarrollo de software, pero claro, mi recomendación será siempre aprender a hacer las cosas "a mano" antes que usar herramientas que lo hagan solo, esto porque es importante conocer como se hace antes de solo hacerlo por cumplir. 

Es cuánto.

Si quieres citar este artículo en tu texto, documento, etc. puedes hacerlo de la siguiente forma:

Aguilar-Calderón, J. A. (12 de diciembre de 2024). Inteligencia Artificial Generativa (IAG) y su impacto en la Ingeniería de Software. ANOVA LAB MX. https://anovalabmx.blogspot.com/2024/12/inteligencia-artificial-generativa-iag.html


Referencias: 

Brown, T., Mann, B., Ryder, N., Subbiah, M., Kaplan, J., Dhariwal, P., … & Amodei, D. (2020). Language models are few-shot learners. Advances in Neural Information Processing Systems, 33, 1877-1901. x

Comentarios

Mi foto
José Alfonso Aguilar
Mazatlán, Sinaloa, Mexico
Me gusta aprender y escribir sobre tecnología y desarrollo. Soy Ingeniero en Sistemas Computacionales, trabajo como Profesor-Investigador en la Facultad de Informática Mazatlán, de la Universidad Autónoma de Sinaloa. México. Me gusta combinar la docencia-investigación con el giro profesional del desarrollo de software y gestión de proyectos de innovación.

Entradas más populares de este blog

Historia y versiones de HTML (HyperText Markup Language)

Todo lo que debes saber sobre el Model-View Controller (MVC) para Aplicaciones Web

Font Awesome, como utilizarlo para mejorar el diseño de nuestro sitio o aplicación web