Tercer Milenio

En colaboración con ITA

Ingeniería ciberhumana: mi nuevo compañero de trabajo es un ‘software’

Los desarrolladores ya utilizan el ‘software’ como aliado para construir otros ‘softwares’. Es lo que se llama Cyber-Human Software Engineering.

El propio ‘software’ se convierte en compañero y aliado del desarrollador para crear de manera más eficaz
El propio ‘software’ se convierte en compañero y aliado del desarrollador para crear de manera más eficaz
Adobe Stock

¿Sabías que un dispositivo tan aparentemente sencillo como un marcapasos contiene 80.000 líneas de código de programación, un coche moderno, hasta 90 millones y, ya en 2015, se estimaba que Google y todos sus servicios y programas estaban formados por unos 2.000 millones de líneas de código?

Puede ser difícil entender la complejidad del ‘software’, pues, aparentemente, no se ve. Pero sí que es fácil asumir que escribir 90 millones de líneas en un documento implica, sobre todo, invertir tiempo. Y ahora imagina que, al terminarlo, aparece un error, que desencadena otros errores, y tienes que localizarlo entre los 90 millones de líneas. Este es el escenario en el que se trabaja en la actualidad. Estamos hablando de una ingeniería tan compleja que un ser humano por sí mismo no puede abarcar.

Y, al mismo tiempo, la sociedad no puede permitirse que esta complejidad escape a un equipo de ingenieros. Se han dado casos en que errores en el sistema han provocado pérdidas humanas y monetarias. Toyota fue condenada a pagar una multa de tres millones de dólares y a retirar millones vehículos, porque uno de sus modelos aceleraba involuntariamente y estuvo implicado en accidentes de tráfico. Airbus también se vio envuelta en una polémica cuando transcendió que algunos de sus aviones tenían que ser reiniciados cada cierto tiempo para evitar errores. Quizá podemos aceptar reiniciar nuestro ordenador o teléfono móvil cuando aparece un error que no sabemos solucionar, pero ¿viajaríamos tranquilamente sabiendo que esta misma ‘solución’ se aplica en el avión en el que vamos a volar?

Los ‘softwares’ nos rodean y forman parte de nuestra vida cotidiana. Y de ellos dependen desde los detalles más nimios hasta gran parte de la economía global.

En este contexto, aparece el Cyber-Human Software Engineering, es decir, cuando el humano utiliza el ‘software’ para construir otro ‘software’, convirtiéndose así en compañeros y aliados para crear de manera más eficaz. El ‘software’ deja de ser aquello que se quiere construir y pasa a ser una herramienta de trabajo que abarca áreas a las que las personas no llegamos.

El humano es muy bueno con creatividad y análisis del contexto, y la inteligencia computacional es fantástica explorando grandes espacios de búsqueda y encontrando patrones. Juntos, se pueden complementar para llegar más lejos.

Computación evolutiva y ‘machine learning’

Pero ¿de qué hablamos cuando decimos inteligencia computacional? Se trata de la suma entre computación evolutiva y ‘machine learning’. Esta última es una rama de la inteligencia artificial (IA) experta en encontrar patrones en bases de datos muy grandes que a nosotros, como humanos, nos costaría procesar y analizar. Por otra parte, la computación evolutiva surgió cuando los desarrolladores de ‘software’ se inspiraron en la biología para hacer computación: vieron que en el mundo biológico existían los cruces entre seres y las mutaciones, cogieron esta idea y la trasladaron al mundo del ‘software’ para cruzar y mutar algoritmos con el objetivo de evolucionar el desarrollo del ‘software’.

Así, somos capaces de crear programas, cruzarlos y mutarlos para mejorarlos, y, además, localizar los errores que surjan de manera prácticamente inmediata. ¿Te imaginas cómo sería nuestra vida diaria si pudiéramos crear ‘softwares’ ágilmente que solucionaran o ayudaran a realizar tareas personales, profesionales, administrativas, de ocio, etc.? Hacia este lugar nos dirigimos.

Pero no solo necesitamos seguir evolucionando el ‘software’ y la tecnología. También necesitamos ingenieros que puedan desarrollarlos, utilizarlos, analizarlos y aplicarlos. Y, además, es necesario que estos profesionales estén especializados, porque la capacidad del ingeniero informático va a ser la misma dentro de 20 años. Lo que va a cambiar es el entorno, la tecnología y su uso. Ahora se trabaja, y se seguirá trabajando, con tecnologías de inteligencia artificial, pero la capacidad de abstracción del ingeniero y su especialización se mantendrán y será lo que lo diferencie.

Un ingeniero informático especializado, por ejemplo, en ciberseguridad, videojuegos o inteligencia artificial, tiene mucho ganado. Al final, las personas somos las mismas, pero si contamos con mejores herramientas y tenemos un conocimiento más especializado, somos capaces de construir proyectos más ambiciosos.

SVIT, un grupo de investigación de la USJ reconocido mundialmente

En la tarea de localizar errores y crear nuevos ‘softwares’, el grupo de investigación SVIT (Software Variability for Internet of Things) de la Universidad San Jorge ha conseguido posicionarse como un equipo reconocido a nivel mundial.

En 2021 se hicieron con la medalla de bronce en los premios Humies, los galardones de computación evolutiva más importantes del mundo, convirtiéndose en el primer equipo de españoles que logra una medalla en la historia de los premios y quedando tan solo un paso detrás de investigadores de Google y de la Universidad de Stanford, que alcanzaron la medalla de oro.

En 2022, también ganaron dos premios en la conferencia Model Driven Engineering Languages and Systems celebrada en Montreal (Canadá), dentro de las categorías 'Track de papers técnicos' y 'Track de journal first’. Se trata de uno de los eventos más prestigiosos en investigación de ingeniería del ‘software’ a nivel mundial, que reúne a expertos, investigadores, académicos, ingenieros y profesionales para compartir prácticas innovadoras y resultados de vanguardia en investigación.

El grupo SVIT utiliza ingeniería computacional para ayudar a los ingenieros a localizar errores en las líneas de código. Su investigación los ha llevado a desarrollar un ‘software’ que busca posibilidades que potencialmente darán error en futuros escenarios de uso. Así, a raíz de los resultados, el ingeniero puede determinar si son errores que realmente pueden suceder, y que tiene que solucionar, o si son errores que no van a ocurrir con el uso que se le va a dar al ‘software’.

El mundo de los videojuegos es un ejemplo de dónde se ha aplicado esta tecnología. En los juegos se suceden una serie de acciones encadenadas. Por ejemplo, caminar por un pasillo, interactuar con otro personaje y abrir una puerta. ¿Pero, y si esa puerta no se abre? Esto es lo que tradicionalmente se conoce como ‘bug’, un error en la programación que no permite realizar una acción que, en principio, debería poder realizarse.

El ‘software’ diseñado por SVIT explora y lanza simulaciones de jugadores, recreando potenciales experiencias en el videojuego, y, después, transmite posibles errores. Puede decir, por ejemplo: "Si un jugador realiza estas acciones, cuando después quiera abrir la puerta, no va a poder hacerlo". Entonces, el ingeniero prueba el desarrollo del videojuego y determina si hay que solucionar el error o no, porque cabe la posibilidad de que no sea necesario solventarlo si la sucesión de acciones que lleva al error no es razonable para un humano y, por lo tanto, no va a ocurrir nunca.

Precisamente esta tecnología fue la reconocida en la conferencia de Montreal, donde se destacó la novedosa forma de localizar errores, basada en técnicas de inteligencia artificial mediante algoritmos evolutivos. Con esta investigación se consiguió mejorar los resultados de trabajos relacionados con localización de ‘bugs’ en más de un 20%. También se galardonó el uso que hicieron de ‘machine learning’ para mantener el ‘software’, ya que el mantenimiento es una tarea compleja y costosa y el ‘machine learning’ proporciona una forma eficiente de automatizar esta tarea.

¿La tecnología llegará a reemplazarnos?

En este punto de constante desarrollo que, además, cada vez parece ir más rápido, la pregunta más repetida es clara: ¿la tecnología terminará quitándonos nuestros puestos de trabajo? La realidad es que, a lo largo de la historia de la humanidad, los empleos han ido evolucionando.

La máquina de vapor fue una revolución, al mismo nivel que lo está siendo la inteligencia artificial, porque cambió la vida de la humanidad. En ese momento, la sociedad tenía miedo porque iba a reemplazar muchos trabajos, pero, actualmente, nadie está preocupado porque esos empleos no existan, pues son actividades que requieren un esfuerzo físico que ahora realizan las máquinas de manera más segura y rápida.

En estos momentos ocurre lo mismo. Los trabajos que van a cambiar serán aquellos más rudimentarios y menos creativos. Tendríamos que ser optimistas, pues la tecnología nos va a permitir ser más ambiciosos y llegar a otro tipo de empleos.

El mundo de los videojuegos, de nuevo, es un claro ejemplo. En los años ochenta, los juegos eran sencillos, en los noventa empezaron a ser más sofisticados, y cada década que pasa se crean videojuegos con un realismo, una profundidad y una complejidad cada vez más alta.

Las personas que desarrollan los juegos, en muchos casos, son las mismas, pero las tecnologías con las que cuentan han cambiado considerablemente, permitiéndoles concentrarse en su visión del juego y dinámica, en lugar de dedicarse a construir pequeños detalles que puede realizar la tecnología.

De hecho, en los años ochenta las personas que hacían videojuegos no perdieron sus trabajos porque un ‘software’ lo hacía mejor que ellos, sino que continuaron desarrollando y lograron crear juegos más ambiciosos. Además, aunque la tecnología evolucione, seguiremos necesitando a personas que revisen los resultados, pues las máquinas no cuentan con razonamiento humano.

¿Hacia dónde nos dirigimos? De reconocer caras a crear caras

Hasta ahora, la inteligencia artificial se ha usado especialmente para clasificar, identificar y recomendar, tal como ha realizado el grupo SVIT y su ‘software’ de detección de ‘bugs’ (errores de programación) en los videojuegos.

Ahora, el camino va hacia la creación. Los últimos trabajos de la inteligencia artificial crean nuevo contenido desde cero. Por ejemplo, hasta el momento, la IA era muy buena reconociendo matrículas de coches o caras en las fotos. Pero ahora ha cogido fuerza la tecnología generativa, es decir, aquella que crea imágenes de matrículas de coche o caras de personas que nunca han existido.

Además, las inteligencias están cada vez más especializadas. Hay algunas genéricas, como el famoso Chat GPT, que arroja respuestas de prácticamente cualquier tipo, pero también están surgiendo aquellas muy específicas de un nicho concreto. Por ejemplo, los procedimientos internos de una empresa no los va a transmitir Chat GPT, pero si la entidad cuenta con una inteligencia interna, quizá sí podría ser útil para los trabajadores y el día a día de la empresa.

Conforme la tecnología siga evolucionando, el futuro pasa por la colaboración entre diferentes inteligencias y con las personas. La siguiente frontera será que el ser humano se dedique, como profesión, a organizar y dirigir a un equipo de inteligencias computaciones que colaboren entre ellas para generar resultados.

Carlos Cetina Doctor en Ingeniería Informática. Investigador principal del grupo de investigación SVIT de la Universidad San Jorge

-Ir al suplemento Tercer Milenio

Apúntate y recibe cada semana en tu correo la newsletter de ciencia

Comentarios
Debes estar registrado para poder visualizar los comentarios Regístrate gratis Iniciar sesión