La inteligencia artificial (IA) está revolucionando todos los sectores y procesos digitales con un impacto difícil de cuantificar. El software es un elemento clave en las innovaciones tecnológicas de nuestro día a día aportando ventajas competitivas en cada vez más industrias. Por tanto, ¿por qué la industria del software va a ser una excepción en la aplicación de la inteligencia artificial?
Actualmente hay un nuevo paradigma para aumentar la productividad del tradicional ciclo de vida de desarrollo de software y sistemas mediante técnicas de IA y tecnologías de aprendizaje automático. Según un estudio de IDC (International Data Corporation) la previsión de crecimiento del mercado global en el desarrollo de aplicaciones software crecerá de los 47 billones de dólares en 2018 a más de 61 billones en 2023. Este crecimiento se verá potenciado por un crecimiento en paralelo de la IA en el ciclo de vida de desarrollo de software.
Aunque este desarrollo no estará limitado únicamente a la generación automática de código y detección de errores, sino también a predecir estimaciones de plazos de entrega del software o sistema, así como asistentes para la realización de pruebas de seguridad, entre otros.
A continuación, analizo tres beneficios donde la IA ayuda a la reducción de costes, aumento de la seguridad y aumento de la calidad en el ciclo de vida de desarrollo de software y sistemas.
Precisión en las estimaciones
La precisión en las estimaciones es uno de los grandes problemas en el desarrollo de software debido a la gran cantidad de variables que se pueden considerar junto con la experiencia del juicio experto. Sin embargo, la IA puede ayudar a incrementar el grado de precisión a partir del análisis de datos de proyectos similares, evaluando una gran cantidad de datos del proyecto: funcionalidades, plazos estimados por funcionalidad, perfiles de los empleados junto con su historial de capacidades, cronogramas de proyectos similares, etc.
Optimización en la gestión de proyectos ágiles
Las prácticas ágiles y la gestión de documentación no se llevan muy bien, aunque sea necesario invertir tiempo en esta tarea tan tediosa para los equipos de desarrollo. Algoritmos de IA y tecnologías de aprendizaje automático pueden facilitar la búsqueda de información relevante en diseños técnicos e histórico de pruebas, por ejemplo, mejorando de este modo la colaboración entre equipos de diferentes departamentos o que están geográficamente dispersos. Además, la aplicación de IA puede ayudar a mejorar la estimación de costes, velocidad y volumen de los equipos ágiles de una organización.
Mejora en la toma de decisión
Las compañías de desarrollo toman decisiones continuamente para alcanzar hitos de negocio, tanto para sacar un nuevo producto o funcionalidad al mercado, como para cumplir con exigentes hitos de entrega de un cliente. Estas decisiones pueden repercutir en una elevada deuda técnica o deuda de seguridad comprometiendo un aumento de costes futuros de reingeniería. La IA puede acelerar y ayudar a tomar mejores decisiones tácticas que incrementen el ROI analizando el histórico de proyectos y versiones de producto en términos de funcionalidad y diseño.
Estos beneficios descritos son transversales al ciclo de vida, pero la IA también se puede aplicar a fases verticales del desarrollo.
Captura de requisitos
La definición de requisitos es una de las fases con mayor intervención de los equipos de desarrollo. Herramientas y técnicas como Google ML Kit o Infosys Nia ayudan a automatizar este proceso utilizando IA. También el uso de técnicas de procesado de lenguaje natural es un medio para su mejora y existen herramientas como la desarrollada por The Reuse Company.
Diseño de software
Un correcto diseño software necesita de experiencia para definir una solución viable que muchas veces es iterativa hasta que el cliente acepta la solución. El uso de asistentes de diseño que emplean IA (Artificial Intelligence Design Assistant, AIDA) facilita la combinación de diferentes diseños para la capa de la vista del software y así satisfacer las necesidades del cliente más rápido.
Codificación
La ayuda para la generación automática de código utilizando IA reduce tiempos de desarrollo y errores de codificación. Herramientas como Google bugspot tool w3C que utiliza algoritmos de aprendizaje automático y análisis estadístico profundo para detectar errores y líneas poco fiables de código o DeepCode que es capaz de aprender a partir de un gran número de reglas de programación (alrededor de 250.000) a las que accede a través de repositorios públicos y privados de GitHub, son ejemplos de utilización de IA.
Pruebas
La fase de pruebas es crucial para asegurar la calidad del producto. Actualmente hay herramientas en el mercado que utilizan IA para generar casos de prueba y realizar pruebas de regresión. Por ejemplo, Testim.io y Appvance.
La IA tiene un enorme potencial para cambiar el futuro del desarrollo del software y sistemas. Las herramientas que actualmente hay en el mercado solo cubren una pequeña parte de todo el ciclo de vida en algunas partes técnicas, pero no abordan retos transversales que impactan en la toma de decisión mediante el uso de un gran número de variables y datos históricos. Algunos de los retos de la IA en términos de investigación e innovación son:
- Introducción de características de trustworthiness (security, safety, privacy, reliability, resilience) a lo largo del ciclo de vida de desarrollo de software y sistemas para que la seguridad en su concepto más amplio sea inherente al desarrollo
- Considerar el ciclo de vida de adquisición de software y sistemas y no solo el de desarrollo para abordar la problemática de toda la cadena de valor del software y sistemas
- Control estadístico y de variabilidad relacionando los objetivos de negocio con los del equipo de desarrollo
Estamos ante un nuevo paradigma en la industria del software y sistemas donde nuevas técnicas, métodos y herramientas emplean la IA como solución para la reducción de costes; el aumento de la seguridad y la calidad en el ciclo de vida del desarrollo, integración y adquisición.