Saltar al contenido

Desarrollo de software industrial de próxima generación: impulsando la eficiencia a través de la IA aplicada

Andrea Fontalvo Echávez
16 de julio de 2024
capgemini-engineering

El desarrollo de software para aplicaciones industriales se enfrenta a varios retos notables en el dinámico entorno tecnológico actual. Uno de ellos es la creciente complejidad e integración de los sistemas modernos.

Las aplicaciones industriales a menudo necesitan interactuar con una variedad de sistemas heredados, servicios de terceros y tecnologías emergentes como Internet de las Cosas (IoT en por las siglas en inglés), Inteligencia Artificial (IA) y Blockchain. Esta complejidad requiere amplios esfuerzos de integración y un diseño de arquitectura sofisticado para garantizar una interoperabilidad perfecta y mantener el rendimiento del sistema. Además, la necesidad de procesamiento de datos en tiempo real y alta fiabilidad en entornos industriales complica aún más el proceso de desarrollo. Garantizar que estos sistemas puedan manejar la carga requerida, mantener el tiempo de actividad y proporcionar análisis de datos precisos es crucial, aunque desafiante, debido a los estándares de rendimiento y fiabilidad exigidos por las aplicaciones industriales.

A la hora de analizar el impacto en los costes, según el Consorcio para la Calidad de la Información y el Software, el coste de solucionar un fallo encontrado después del lanzamiento del producto puede ser hasta 30 veces mayor que si se hubiera encontrado durante la fase de diseño. También indican que los desarrolladores dedican una media del 22% de su tiempo a solucionar problemas relacionados con errores y deuda técnica, que actualmente se está convirtiendo en uno de los factores más importantes que impiden a las empresas rentabilizar sus sistemas de software. Todo ello se traduce en un enorme impacto en los costes para las empresas. Prevenir los errores de software es mejor que solucionarlos, sobre todo si se hace durante las fases iniciales, por lo que disponer de herramientas para abordarlo es de gran interés.

Otro reto importante es mantener una seguridad y una conformidad sólidas en el ciclo de vida del desarrollo de software (SDLC) para aplicaciones industriales. Los sistemas industriales son a menudo infraestructuras críticas y pueden ser objetivos prioritarios de ciberataques. Garantizar unas buenas prácticas desde el diseño inicial hasta la implantación y el mantenimiento requiere un enfoque global que incluya prácticas de programación seguras, evaluaciones periódicas de vulnerabilidades y el cumplimiento de las normativas y estándares específicos de la industria. Además, el ritmo de los avances tecnológicos implica la aparición constante de nuevas vulnerabilidades y amenazas, con la consiguiente necesidad de supervisión y actualización continuas de las medidas de seguridad. Equilibrar estos requisitos de seguridad con la necesidad de un desarrollo e implantación rápidos puede resultar difícil, ya que unas medidas de seguridad estrictas pueden ralentizar el proceso de desarrollo, pero siguen siendo esenciales para proteger los datos sensibles y garantizar el funcionamiento.

Se puede observar que existe una clara necesidad de investigar e innovar en cómo la IA puede mejorar la fiabilidad y la eficiencia en el proceso de desarrollo de sistemas industriales, abordando el problema desde la fase de diseño.

El proyecto SOLSTICIA nos ha ayudado a resolver algunas de las cuestiones en torno al desarrollo de software industrial impulsado por la IA. SOLSTICIA es un proyecto de I+D dirigido a crear soluciones para la construcción de sistemas de software industriales, seguros e inteligentes desde el diseño, basadas en IA, que impulsen la productividad y crecimiento de una economía y sociedad ciberseguras. SOLSTICIA investiga para responder a la pregunta: ¿cómo podemos construir sistemas inteligentes para que sean robustos y seguros en contextos complejos y ambiguos como los del dominio industrial donde las posibles consecuencias de un ciberataque impactan en vidas o grandes pérdidas de negocio? Es por ello que en el proyecto SOLSTICIA se enfoca en nuevas técnicas, métodos y algoritmos para aumentar la ciberseguridad de los sistemas inteligentes en su ciclo de vida de desarrollo, utilizando técnicas de inteligencia artificial

La Inteligencia Artificial y el modelo V

Centrándonos en la aplicación de técnicas de IA para mejorar el ciclo de vida del desarrollo de software, se ha tenido en cuenta el modelo V (véase la Figura 1). En ingeniería de sistemas, el modelo V se utiliza mucho por su enfoque estructurado y disciplinado del desarrollo de software, sobre todo en sectores en los que la fiabilidad y la seguridad son fundamentales, como el aeroespacial, el automovilístico, el sanitario y el ferroviario. El énfasis del modelo en la validación y verificación tempranas ayuda a identificar y corregir defectos en una fase temprana, lo que reduce el coste y el tiempo de resolución de problemas en fases posteriores del proceso de desarrollo. En particular, las fases de ingeniería de requisitos, implementación y validación de proyectos en el sector ferroviario son de gran interés, ya que la aplicación de la IA en esta etapa puede ayudar a lograr una mayor eficiencia, mejor calidad y sistemas de software más fiables. El trabajo y los casos de uso presentados en este artículo ofrecen resultados experimentales en el uso de la IA en las fases de desarrollo de software:

  • Análisis de requisitos mediante modelos de IA generativa,
  • la fase de desarrollo del código mediante la detección de vulnerabilidades mediante el reconocimiento de patrones en commits basados ​​en git, y finalmente,
  • la fase de validación de las interfaces conductor-máquina aplicando algoritmos avanzados de visión por ordenador,

Todo ello en el ámbito de la industria ferroviaria, para arrojar luz en un campo a explorar por la comunidad científica.

Figura 1. Modelo V, fases consideradas para el análisis.

Ingeniería de requisitos

A partir de la definición de los requisitos, como se destaca en la Figura 1, esta fase inicial presenta varios desafíos, especialmente cuando los requisitos se expresan en lenguaje natural. Algunos de los principales desafíos son la presencia de ambigüedad, inconsistencia, complejidad y subjetividad. En este sentido, las tecnologías de IA generativa, como los LLM y las tecnologías de PNL, pueden mejorar significativamente la fase de recopilación de requisitos en el desarrollo de software al mejorar la claridad, la integridad y la coherencia. Pueden analizar y eliminar ambigüedades de los requisitos del lenguaje natural, reduciendo los malentendidos y garantizando una comunicación precisa. Para una prueba de concepto sobre el impacto de dichas tecnologías, se ha diseñado y probado una herramienta de análisis lingüístico para la revisión de requisitos con el uso de LLM, específicamente con GPT-4, para la detección de ambigüedad en los requisitos de la industria, lo que permitió encontrar cómo el proceso puede mejorar la calidad de los requisitos en proyectos industriales al identificar y abordar el lenguaje ambiguo. Con el uso de esta IA, los documentos de requisitos de implementación se pueden analizar para identificar términos y frases vagos o poco claros, ofreciendo sugerencias de aclaración para garantizar la precisión. Al identificar estas ambigüedades, el análisis de IA de los requisitos facilita una comunicación más precisa y completa entre las partes, lo que reduce el riesgo de malentendidos. Esto ayuda a garantizar que los requisitos estén claramente definidos y comprendidos, lo que lleva a una mejor alineación entre los resultados del proyecto y sistemas más confiables.

Desarrollo de código

En la fase de desarrollo del código, la IA puede ayudar a analizar las confirmaciones en un proyecto de software para detectar vulnerabilidades examinando automáticamente los cambios de código en busca de patrones y anomalías que puedan indicar problemas de seguridad. Los modelos de aprendizaje automático se pueden entrenar en grandes conjuntos de datos de vulnerabilidades conocidas y prácticas de código seguro para reconocer patrones similares en nuevas confirmaciones. Este análisis puede incluir la identificación de prácticas de programación inseguras y la detección de cambios sospechosos. Al monitorear y analizar continuamente las confirmaciones, una implementación de IA puede proporcionar alertas en tiempo real a los desarrolladores, permitiéndoles abordar vulnerabilidades potenciales en las primeras etapas del proceso de desarrollo, mejorando la seguridad general del proyecto de software. Para esta prueba de concepto en esta fase, se entrenó un modelo de ML conjunto para detectar vulnerabilidades en un repositorio de GIT y ayudó a encontrar un 30% más de defectos que el proceso de revisión de confirmación convencional. Los resultados obtenidos de la experimentación realizada para este desarrollo muestran que la implementación de una herramienta inteligente que soporte el proceso de revisión de commits permite detectar un mayor número de commits vulnerables o posiblemente vulnerables, en comparación con la metodología y el proceso tradicional. Esto refleja el impacto positivo de este desarrollo para una toma de decisiones más rápida respecto a commits que luego pueden impactar la seguridad y confiabilidad final de los desarrollos. Como se muestra en el siguiente gráfico (Figura 2), la experimentación revela cómo la predicción realizada con el enfoque de IA sobre los commits (azul) aumenta en comparación con la detección de vulnerabilidades mediante el proceso tradicional (naranja), que consiste en informes manuales de problemas.

Figura 2. Comparación de la revisión impulsada por IA (azul) y los informes manuales (naranja).

Este estudio también muestra un aspecto de interés que se destaca en los datos recopilados. Observando la tendencia creciente observada en la evolución de la predicción de defectos lleva a plantear la pregunta: ¿por qué la tasa de detección de vulnerabilidades impulsada por la IA es mayor con el tiempo? ¿Por qué parece que se encuentran más vulnerabilidades a medida que pasa el tiempo? Este enfoque de IA permitió notar que esto puede deberse a que los defectos son acumulativos, y al no corregir de manera efectiva las vulnerabilidades que no se conocen, estas se acumulan con el tiempo, y se reflejan precisamente en los siguientes commits que se reportan en los repositorios. Este comportamiento encontrado muestra el impacto de las vulnerabilidades en forma de deuda técnica. La deuda técnica es un concepto que se maneja en el desarrollo de software cuando, por razones de velocidad o reducción de costos a corto plazo, los proyectos resultan en código de baja calidad o vulnerabilidades que deben abordarse en el futuro. Estas deficiencias pueden incluir falta de documentación, código mal estructurado o vulnerabilidades de seguridad. En el contexto del desarrollo de software seguro y confiable, la acumulación de deuda técnica puede aumentar el riesgo de tales desarrollos. Además, según el CISQ [1], el coste de la mala calidad del software, sólo en Estados Unidos, es de al menos 2.41 billones de dólares, donde la deuda técnica representa sólo 1.52 billones de dólares, lo que supone alrededor del 63% de dichos costes. Por lo tanto, abordar de manera proactiva la deuda técnica a través de monitoreo y revisión impulsados ​​por IA es crucial para garantizar la solidez, eficiencia y seguridad del desarrollo de sistemas de software industrial y minimizar los costos.

Validación

Finalmente, la tercera fase del ciclo de vida del desarrollo de software es la etapa de validación. En este sentido, la IA puede mejorar significativamente el proceso de validación en el ciclo de desarrollo de software al automatizar la generación y ejecución de pruebas, predecir defectos potenciales a través del análisis de datos históricos y detectar y clasificar defectos de manera eficiente. Este enfoque ayuda a mantener desarrollos industriales sólidos, eficientes y seguros. En nuestra investigación, este desafío se aborda mediante técnicas de visión artificial para la validación automática de sistemas basados ​​en información visual. En este trabajo estamos centrados en el sector ferroviario y particularmente en la detección de defectos en la Interfaz Conductor-Máquina (DMI), según las normas que lo regulan. La visión por computadora mejora la validación de las interfaces de la máquina del conductor al automatizar las pruebas de usabilidad, analizar las interacciones del conductor y proporcionar comentarios en tiempo real sobre el rendimiento de la interfaz.

Conclusiones

Como se ha comentado, la aplicación de la IA para mejorar el ciclo de vida del desarrollo de software en las industrias lleva a varias conclusiones claves. Permite una mejor toma de decisiones al proporcionar información basada en datos y análisis predictivos, que ayudan a identificar problemas potenciales y optimizar los procesos. El uso de la IA ha permitido observar cómo mejora el rendimiento al automatizar tareas repetitivas, mejorar las prácticas de programación y garantizar una cobertura integral de las pruebas, reduciendo así la probabilidad de errores. Además, la IA reduce significativamente el tiempo y los costos al optimizar los flujos de trabajo, acelerar las pruebas y la depuración, y minimizar la necesidad de una intervención manual extensa. En general, la IA fomenta un desarrollo de software más eficiente, confiable y rentable, impulsando la innovación y la ventaja competitiva en entornos industriales.

Pero para tener un impacto efectivo, las industrias aún enfrentan varios desafíos a la hora de aprovechar la IA en su beneficio, incluida la integración de la IA con sistemas heredados, que a menudo carecen de la flexibilidad y compatibilidad necesarias para una implementación perfecta de la IA. Además, la adopción de tecnologías emergentes requiere una inversión significativa en recursos, lo que puede resultar desalentador para las partes interesadas. También existe el desafío de la calidad y disponibilidad de los datos, ya que los sistemas de IA requieren conjuntos de datos grandes y limpios para producir resultados valiosos. Además, las industrias deben abordar las preocupaciones relacionadas con la ciberseguridad, las consideraciones éticas y el cumplimiento normativo. Superar estos desafíos requiere un enfoque estratégico, una planificación sólida y un compromiso con el aprendizaje y la adaptación continuos.

Autora

Andrea Fontalvo Echávez

R&D Advanced Engineer, Capgemini Engineering Spain
Technical Leader en SOLSTICIA, Ingeniera Electrónica y Máster en Automática y Robótica por la Universidad Politécnica de Madrid. Cuenta con más de 5 años de experiencia en el campo de la I+D trabajando para proyectos en las áreas de Ciencias de la Salud, Industria y Energía, enfocándose en el diseño e implementación de soluciones con Machine Learning e IA para soluciones innovadoras, así como también de prototipado electrónico con un enfoque de design thinking.

    Proyecto SOLSTICIA

    Sistemas de software industrial ciberseguros e inteligentes desde el diseño.

    Capgemini Engineering

    Este proyecto ha sido subvencionado por el CDTI, cofinanciado con fondos Europeos del Mecanismo de Recuperación y Resiliencia y apoyado por el Ministerio de Ciencia e Innovación. Este proyecto tiene número de expediente MIG-20211006