GISUM

Grupo de Ingeniería del Software de la Universidad de Málaga

Investigación

La complejidad intrínseca de las pruebas de los sistemas actuales, tanto software como físicos, presenta grandes retos a las empresas y organizaciones que han de desarrollarlos, garantizando las características de calidad requeridas por los usuarios (corrección, prestaciones, fiabilidad, etc.). En ATENEA proponemos el uso de modelos, notaciones y métodos formales para abordar dichas labores, centrándonos en las pruebas de sistemas complejos, tanto formales como empíricas, por ejemplo, mediante simulaciones. Para ello definimos lenguajes y desarrollamos herramientas que permitan el análisis y las pruebas de dichos sistemas en el nivel de abstracción adecuado, y con los niveles de cobertura y precisión necesarios.

Uno de los objetivos principales del desarrollo de software dirigido por modelos es el de permitir la especificación, diseño, implementación y pruebas de sistemas software de forma sistemática, disciplinada y cuantificable, utilizando el nivel de abstracción adecuado, y usando los lenguajes, notaciones y herramientas más apropiadas para ello. En Atenea trabajamos en la definición de lenguajes de especificación de sistemas que permitan su representación y análisis de forma precisa y rigurosa, así como en el desarrollo de herramientas que permitan a los ingenieros de software utilizar dichos lenguajes y mecanismos de análisis en entornos reales. En la actualidad trabajamos en varios temas dentro de esta línea, como son el modelado y tratamiento de la incertidumbre inherente en los sistemas físicos, y en las notaciones y herramientas para modelar y analizar grandes volúmenes de datos de forma aproximada. También estudiamos la corrección y precisión de los modelos de grandes sistemas y de las transformaciones entre ellos, de forma que proporcionen representaciones lo más fidedignas posibles de los sistemas que queremos especificar.

La computación memética proporciona un enfoque holístico para abordar problemas de búsqueda, optimización y aprendizaje en la confluencia entre las áreas de la computación bioinspirada, aprendizaje automático, e investigación operativa. Este enfoque se basa en el empleo de estructuras complejas denominadas memes, entendidos estos como representaciones computacionales de estrategias de resolución de problemas, cuyas interacciones evolutivas dan lugar a complejos inteligentes capaces de resolver problemas. El pilar de esta disciplina son los algoritmos meméticos, una clase de algoritmos de optimización cuya estructura puede caracterizarse a nivel básico por un armazón evolutivo y una colección de estrategias de búsqueda local, pero que en general puede abarcar también métodos exactos, técnicas constructivas y heurísticas de diferente tipo. El componente metodológico esencial de estas técnicas es la adaptación al problema objetivo, y la incorporación de conocimiento específico del mismo. Esta línea de investigación se adentra en los aspectos de diseño algorítmico de un algoritmo memético, y en cómo estas técnicas pueden desplegarse sobre entornos complejos mediante el empleo de arquitecturas profundas cuyas capas y/o componentes permitan encapsular diferentes perspectivas y herramientas para abordar aspectos particulares del problema o dominio de problemas considerado.

La necesidad de optimización permea la mayor parte de las actividades humanas, y una de las características prevalentes en estos escenarios que requieren optimización es su complejidad, entendida tanto como la intrincada relación entre los elementos del sistema que se optimiza (a menudo situada en un régimen intermedio entre la regularidad y la absoluta aleatoriedad), como a la vasta dificultad de lidiar con el sistema debido a su tamaño o a su naturaleza dinámica por mencionar un par de ejemplos. Esta línea de investigación se centra en uso de técnicas de computación bioinspirada para resolver problemas de optimización en dominios del mundo real afectados por una gran complejidad, gestionando de manera adecuada recursos computacionales heterogéneos cuando sea preciso por las necesidades de almacenar, procesar o aprender de grandes cantidades de datos. Esto conlleva el diseño de técnicas flexibles, resilientes y auto-adaptativas, capaces de lidiar con irregularidades en el entorno de cómputo, así como de tratar con la complejidad del problema en sus diferentes variantes.

Los videojuegos constituyen uno de los sectores más rentables de la industria del entretenimiento. Uno de los aspectos fundamentales en el desarrollo de un videojuego es la generación de contenidos, esto es, todo tipo de elementos gráficos, musicales, o relacionados con la IA del juego. La generación procedural de contenidos intenta aliviar la complejidad de esta etapa del desarrollo mediante el empleo de técnicas algorítmicas para generar de manera automatizada parte de estos contenidos. Esta línea de investigación se centra en el uso de computación natural para abordar desde la generación de contenidos hasta el diseño holístico del propio juego. En este contexto es también de relevancia el área de los juegos afectivos, esto es, el diseño de juegos que son capaces de reaccionar a las emociones del jugador o provocar emociones específicas en el mismo. Un aspecto de particular interés en este sentido son los enfoques de ludificación, en los que el juego no es el fin sino el medio mediante el que se consigue alcanzar un cierto objetivo (aprender una tarea, mejorar una destreza, evaluar una habilidad, por citar algunos ejemplos).

Recientes avances y mejoras en la conectividad a Internet, como las tecnologías 5G, están facilitando el desarrollo de aplicaciones cada vez más sofisticadas. Las aplicaciones inteligentes requieren cada vez más recursos computacionales y conexión con una gran variedad de dispositivos de la IoT (ej: prendas/dispositivos inteligentes, de salud, sensores, etc.). Como contrapartida el uso masivo de estas aplicaciones implica un aumento de tráfico en la red que transporta los datos producidos por los dispositivos finales que no podrían ser asumidos por la nube. La Computación Edge (Edge Computing – EC) propone mejorar la eficiencia de la infraestructura trasladando los servicios móviles y las tareas computacionalmente más intensas a cualquier dispositivo próximo en el borde de la red con suficiente capacidad de computación y almacenamiento. Uno de los grandes retos que esto plantea es conseguir desplegar aplicaciones en entornos IoT/Edge/Cloud distribuyendo y descargando tareas de forma óptima. En ITIS trabajamos en nuevos métodos y herramientas software que ayuden a los desarrolladores de aplicaciones a gestionar la heterogeneidad del hardware, la complejidad de las infraestructuras de acceso a la red, la distribución de los datos y la decisión de dónde ubicar las diferentes tareas computacionales de un sistema (proyectos LEIA y MEDEA). Estos métodos y herramientas ayudan a configurar y a desplegar las aplicaciones intentando conseguir unos determinados requisitos de calidad (latencia, seguridad, …) y sostenibilidad.

Aunque el software no consume energía directamente, sí que incide enormemente en el gasto energético del hardware donde se ejecuta (ej: centro de datos, dispositivos móviles, accesorios inteligentes, etc.). Este impacto del software en el consumo de energía no es precisamente despreciable, especialmente si pensamos en los millones de dispositivos y de veces que se ejecuta cierto código. Con la idea de contribuir a generar productos más sostenibles, recientemente ha surgido un interés por concienciar al desarrollador de software sobre el gasto energético que generan sus productos. Las tecnologías de la información “verdes” (Green IT) tienen como objetivo procurar el uso de recursos hardware de forma sostenible para minimizar el impacto medioambiental y alargar la vida útil de las baterías de los dispositivos inteligentes. Esto significa que las metodologías de desarrollo de software actuales deben revisarse para centrarse en producir software más sostenible. En este contexto el rol del Ingeniero del Software es fundamental, ya que debe ser consciente de las implicaciones que cada decisión de diseño e implementación tienen en el consumo de energía del sistema final. En ITIS somos expertos en la medición del consumo de energía de código, identificamos aquellos elementos del sistema que son devoradores de energía y desarrollamos mecanismos que le proporcionan al programador información sobre el consumo de energía de su aplicación según el dispositivo donde se ejecute un determinado código. En el proyecto HADAS definimos metodologías y herramientas que permiten hacer un análisis de la sostenibilidad de las diferentes opciones de diseño e implementación de un software (https://hadas.caosd.lcc.uma.es/) y también plug-ins que se instalan en IDEs tipo IntelliJ y que le muestran al desarrollador los diferentes consumos del uso de una API, para diferentes parámetros. En los proyectos LEIA y MEDEA se considera la minimización del consumo de energía como un criterio de calidad de primer orden, y por ello calculamos cuál es el despliegue más sostenible de una aplicación en entornos IoT/Edge/Cloud.

El enfoque de desarrollo de software basado en una Línea de Productos Software (LPS) propone una metodología y técnicas para la gestión y reutilización de artefactos software que forman parte de una familia de productos. Esta metodología cubre las distintas etapas del desarrollo del software y proporciona lenguajes para el modelado de la variabilidad de una familia de productos, operadores de análisis de la variabilidad, procesos de materialización en productos concretos y la posibilidad de generar de forma automática configuraciones óptimas de un producto de la familia en base a distintos atributos de calidad (seguridad, tiempo de computación, latencia de las comunicaciones, consumo energético, etc.). Las LPS permiten realizar un análisis a nivel de arquitectura software, para evaluar los atributos de un sistema antes de su construcción, y una vez elegida la configuración de un producto se procede a la generación automática de los artefactos de implementación. El trabajo del ITIS en esta línea de investigación se centra, en la definición de nuevos metamodelos, modelos, lenguajes y herramientas que permitan especificar la variabilidad en sistemas complejos como los sistemas ciber-físicos de forma modular, derivar configuraciones óptimas y generar productos que cumplan con los requisitos no funcionales de calidad a lo largo de la vida del sistema (proyecto RHEA). También aplicamos las LPS para generar despliegues de aplicaciones en entornos de IoT/Edge/Cloud teniendo en cuenta medidas de calidad como la minimización de la latencia o el consumo de energía (MEDEA). Los dominios de aplicación que se benefician de esta tecnología son aquellos con una variabilidad intensiva como aplicaciones de realidad aumentada y aplicaciones de eHealth (proyectos MEDEA y LEILA).

Los sistemas auto-adaptativos son aquellos capaces de modificar su comportamiento en tiempo de ejecución con el objetivo de conseguir mantener una cierta calidad de servicio (ej: minimizar la latencia, el consumo de energía o maximizar la usabilidad del sistema). Algunas de las circunstancias externas que pueden desencadenar la reconfiguración de un sistema auto-adaptativo pueden ser, cambios en el entorno de ejecución, fallos del sistema, nuevos requisitos o nueva priorización de los objetivos del sistema. Los sistemas auto-adaptables están preparados para reaccionar ante cambios de contexto mediante la monitorización continua de su estado y la recolección de datos del entorno. La información recogida es analizada y el sistema decide si se debe adaptar o no. Diseñar este tipo de sistemas es una tarea muy compleja, que requiere por un lado mecanismos que decidan en tiempo de ejecución cuál es la configuración óptima que cumple con los requisitos actuales del sistema, como también, la preparación de la propia aplicación para ser modificada en tiempo de ejecución. Algunos enfoques utilizados en ITIS para abordar el desarrollo de los sistemas auto-adaptables son las Líneas de Producto Software Dinámicas (DSPL, Dynamic Software Product Lines), los modelos en tiempo de ejecución (models@runtime) o los modelos de control predictivos (Predictive models). En el proyecto MEDEA se define un marco de trabajo para la reconfiguración dinámica de despliegues de aplicaciones en entornos IoT/Edge/Cloud, teniendo en cuenta la latencia, el consumo de energía y la seguridad entre otros requisitos. Las aplicaciones desarrolladas con este enfoque serán capaces de decidir en tiempo de ejecución descargar parte de su código a aquellos dispositivos más cercanos a la localización actual y así minimizar la latencia y el consumo de energía, sin descuidar la seguridad.

La aplicación de nuestra labor investigadora es uno de los pilares fundamentales del grupo de investigación ERTIS. Esta investigación ha sido financiada y aplicada a través de proyectos de ámbito autonómico, nacional y europeo en las siguientes áreas:

  • Monitorización de la salud estructural de infraestructuras civiles. La continua monitorización y protección de estas infraestructuras es una prioridad para múltiples instituciones gubernamentales y la seguridad de la población.
  • Smart grids. La mejora de la flexibilidad y la resistencia en las redes de distribución eléctrica mediante el balanceo de energía y el IoT son fundamentales para dar cabida a nuevos factores de demanda de energía como los coches eléctricos.

Blockchain se basa en el concepto de cadena de bloques, en el que la información contenida se agrupa en conjuntos (bloques), que están entrelazados entre sí a través de una línea temporal y de manera que, gracias a técnicas criptográficas, únicamente esta información puede ser editada o repudiada si se modifica toda la línea temporal. Los mecanismos de consenso que soportan la creación de estos bloques hacen que su edición sea sumamente costosa en términos computacionales, lo que permite proveer confiabilidad y seguridad al sistema y a su información contenida. Además, su carácter descentralizado reduce los problemas de confiabilidad y seguridad de entornos centralizados, a la vez de mejorar su adaptación a otros sistemas meramente distribuidos como el IoT. ERTIS investiga a través de la integración de IoT y Blockchain cómo mejorar la identificación y la seguridad de dispositivos embebidos, y el registro inmutable de información de IoT de carácter crítico para que pueda ser auditada de forma confiable cuando sea requerida. 

Fog Computing es un paradigma que tiene cabida entre Cloud Computing y el IoT y tiene como objetivo desplazar la capacidad de cómputo lo más cerca posible de dónde la información sea producida, con el fin de reducir el tiempo de respuesta y el ancho de banda a la vez de incrementar la seguridad en aplicaciones críticas y distribuidas. Este paradigma tiene especial aplicación en entornos que generan una gran cantidad de información y cuyos requisitos de latencia y/o las limitaciones existentes de red no permiten que esta información sea procesada en entornos cloud. En esta línea de investigación, ERTIS se centra en el desarrollo de middleware y plataformas que permitan gestionar y desplegar el ciclo de vida de estas aplicaciones para cumplir con los requisitos establecidos y su perfecta adaptación con el IoT, además de la adaptación de soluciones actuales a este tipo de entornos para optimizar su ciclo de cómputo.

Las redes neuronales profundas han sido ampliamente utilizadas en aplicaciones como el reconocimiento y clasificación de imágenes y videos y la detección de anomalías, generalmente diseñadas para ser utilizadas en grandes sistemas de procesamiento como soluciones Cloud. Actualmente, hay una tendencia para implementar y distribuir estas redes en la línea de cómputo que va desde el IoT hasta el Cloud con el fin de facilitar la generación de acciones críticas, la reducción del ancho de banda, y la mejora de su precisión, entre otros aspectos. ERTIS investiga cómo integrar estas redes con sistemas de distribución de mensajes para habilitar su distribución en Edge, Fog y Cloud Computing, en marcos de trabajo para gestionar su despliegue sobre estos paradigmas, y en su aplicación para la Salud Estructural de Infraestructuras Criticas.

A diferencia de los microprocesadores, la ley de Moore trae consigo dispositivos cada vez más embebidos y con un menor consumo en el IoT, que permiten una amplia gama de oportunidades como implantes de microchips y dispositivos con una larga esperanza de vida sin necesidad de una conexión eléctrica. Aplicaciones que requieren el uso de estos dispositivos IoT como fuentes de datos o actuadores no pueden tolerar una interrupción de servicio en los dispositivos, especialmente aquellas cuya misión es crítica, como la monitorización de la salud estructural de infraestructuras. Sin embargo, debido a la naturaleza y las limitaciones existentes de los dispositivos IoT, técnicas y algoritmos tradicionales de replicación y tolerancia a fallos están limitados en este campo. ERTIS centra sus esfuerzos de investigación en proveer mecanismos de replicación y tolerancia a fallos que tengan la mínima repercusión para dispositivos embebidos para que estos puedan ser utilizados por aplicaciones de carácter crítico.

La agricultura de precisión o la agricultura inteligente tiene como objetivo el tratamiento optimizado de cultivos agroforestales y explotaciones ganaderas, de manera que su producción sea eficiente, beneficiosa y sostenible en términos económicos y medioambientales. La gran diferencia con respecto a la agricultura tradicional es que, en lugar de determinar la acción necesaria para cada parcela o finca, la agricultura de precisión permite determinar acciones por metro cuadrado o incluso por planta. Todo esto no se concibe sin la utilización de las tecnologías de la información y las comunicaciones de manera integral, a lo largo de todo el ciclo de vida del dato, desde su captación, curado y consolidación, hasta su análisis, visualización y la recomendación automática, para dar soporte a la toma de decisiones.

Las múltiples y novedosas tecnologías disponibles hoy día para de captación de datos en agricultura de precisión y para su posterior tratamiento, hacen de esta línea de investigación un reto en sí misma, con una fuerte componente en el entrenamiento de datos mediante técnicas de aprendizaje máquina, orientadas a la análisis descriptivo, predictivo y prescriptivo. Se conjuga por tanto el uso de las tecnologías de teledetección, sensores remotos, sensores próximos, procesamiento de imagen, fusión de datos, geolocalización, estándares de datos, visualización, generación de recomendadores y actuadores. La agricultura de precisión nace con un enfoque especial centrado en el humano, por lo que persigue facilitar su interacción con la máquina y la extracción de conocimiento.

Uno de los retos emergentes en la heterogénea área que constituye el Big Data es construir aplicaciones inteligentes dirigidas por datos que sean capaces de capturar e inyectar el conocimiento del dominio (o contexto) en el proceso de análisis, formalizando dicho conocimiento, incluyéndolo y poniéndolo disponible en el proceso de análisis. El uso de la semántica de dominio y de otra información sobre el contexto mejorará, sin duda, el resultado de los algoritmos de análisis. Esta línea de investigación incluye el desarrollo de ontologías de dominio y de aplicaciones dirigidas por ontologías para resolver tareas concretas dentro de los procesos de ingeniería del software y de análisis de datos. Por ejemplo, una de las líneas de investigación específicas se plantea estudiar cómo capturar, formalizar, armonizar y consolidar conocimiento del dominio proveniente de distintas fuentes de conocimiento con la finalidad de inyectar dicho conocimiento en los algoritmos de análisis de datos (Aprendizaje Computacional, Minería de Datos).

El desarrollo de aplicaciones Bioinformáticas ha proporcionado (y lo sigue haciendo) herramientas de utilidad para la comunidad científica, lo que ha permitido alcanzar grandes avances que de otra forma no habrían sido posibles. Por ejemplo, el desarrollo de los proyectos de genoma humano no hubieran sido posibles sin la intervención de aplicaciones software que dieran soporte a la recolección y homogeneización de los datos. En esta línea se ha trabajado en el desarrollo de soluciones ad hoc para resolver problemas concretos aprovechando diferentes conocimientos y tecnologías: integración de datos, optimización multiobjetivo, Web semántica, minería de textos, etc. También se han desarrollado ontologías de dominio basadas en estándares médicos como ICD-10 y SNOMED-CT y ontologías para aplicaciones de regulación génica basadas en Gene Ontology o Sequence ontology.

Actualmente, esta línea se centra en el desarrollo de soluciones en el ámbito de la salud. Debido a la gran cantidad de datos que se generan tanto en el ámbito sanitario como en los dispositivos de los pacientes, el desarrollo de soluciones software avanzadas permitirá aproximarse a la medicina de precisión. En este ámbito, aunque las soluciones ad hoc permitirán obtener resultados de utilidad en estudios clínicos, el desarrollo de herramientas que puedan aplicarse en diferentes contextos será de especial utilidad. Para ello, el aprovechamiento de las tecnologías semánticas junto con las del Big Data ofrecen un abanico de soluciones sensibles al contexto y adaptables a las necesidades de cada caso específico.

Ciencia e Ingeniería de Datos son dos aspectos del proceso del Big Data Analytics. El trabajo de un científico de datos es hacer las preguntas correctas en cualquier conjunto de datos dado (ya sea grande o pequeño). El ingeniero de datos recopila y recoge los datos, los almacena, procesa por lotes o procesa en tiempo real, y los sirve a través de una API a un científico de datos que puede consultarlo fácilmente. Dependiendo del problema de análisis de datos, es necesario decidir que tecnología se adapta mejor entre las disponibles: bases de datos relacionales (MySQL, Oracle, PostGreSQL, mariaDB, …), bases de datos NoSQL (mongoDB, Cassandra, Hive, HBASE, Neo4j, …), bases de datos RDF (D2R Server, OpenLink Virtuoso), etc.

El uso masivo de las tecnologías del Big Data y la alta tasa de cancelación de proyectos como consecuencia de no haber considerado de forma realista la disponibilidad de los datos implicados en el análisis y los costes de adquisición y preparación de estos datos y de almacenamiento, gestión y tratamiento después (en su conjunto mucho más del 80% de los costes del proyecto) ha puesto en valor este perfil.

Entre las capacidades de ingeniería de datos se deben incluir no sólo la gestión de los datos, sino también la integración de datos procedentes de fuentes dispersas. Con el término datos vinculados (Linked Data en inglés) nos referimos a conjuntos de datos estructurados, interconectados y semánticamente integrados que se distribuyen en diferentes repositorios y que están descritos en un formato común (RDF). Estas tecnologías son la base para la integración de datos, con especial relevancia en dominios complejos como las e-Ciencia. Disponemos de amplia experiencia en la integración de datos (con muy alta calidad) tanto a partir de bases de datos como integrando datos de fuentes heterogéneas.

Los grafos de conocimiento permiten a las aplicaciones acceder a información relevante. Se trata de un conocimiento organizado de tal manera que una máquina puede entenderlo y extraer información fácilmente. Desde el punto de vista técnico, se trata de teoría de grafos: vértices, aristas y atributos. Por lo que RDF/OWL2 se plantean como el principal modelo de datos en este contexto.

Las ontologías o grafos de conocimiento, normalmente definidas mediante el lenguaje OWL2, ofrecen vocabularios para estructurar el conocimiento del dominio de dichos datos RDF. El éxito de los datos vinculados se refleja en la inmensa cantidad de datos disponibles en la web de los datos como conjuntos de datos RDF, que constituyen la mayor fuente de datos estructurados que ha construido jamás la humanidad. Además, este entorno constituye un área muy prometedora para el razonamiento formal. Nuestro objetivo es desarrollar técnicas de razonamiento altamente escalable, basadas en algoritmos paralelos y distribuidos que permitan razonar sobre datos vinculados en la práctica. Estas técnicas deben ser incrementales para permitir el razonamiento en tiempo real. Se estudiará por tanto el uso de tecnologías del Big Data para la implementación de dichas técnicas.

El alineamiento de ontologías consiste en descubrir el conjunto de correspondencias semánticas (mappings) entre las entidades de dos o más grafos de conocimiento que, aunque pertenecen a un mismo dominio, se ha desarrollado de manera separada. En este sentido, mantenemos abierta una línea se centra en el desarrollo de técnicas y herramientas que den soporte al descubrimiento de relaciones semánticas entre ontologías.

Muchos problemas de optimización del mundo real se formulan en base a dos o más funciones contrapuestas que han de optimizarse a la vez. Resolver estos problemas con métodos exactos suele ser inviable, por lo que técnicas no exactas como las metaheurísticas son ampliamente usadas en este contexto. En esta línea se abordan temas de investigación abiertos que tienen una gran incidencia en la aplicación práctica de las técnicas de optimización multiobjetivo, como son la configuración automática de algoritmos, el diseño automático de metaheurísticas, el soporte para toma de decisiones y el uso de tecnologías modernas de procesamiento distribuido en clúster para acelerar la ejecución de los algoritmos.

Una parte importante de nuestro trabajo en optimización multiobjetivo es el desarrollo de herramientas software de código abierto en las que integramos los resultados obtenidos en nuestra investigación, de forma que éstos están libremente disponibles para ser usados por cualquier usuario interesado en ellos.

Las comunicaciones de baja latencia y alta fiabilidad sobre redes móviles, como las que se requieren en áreas como Internet táctil, industria 4.0, coche conectado, entre otras requieren el avance y coordinación en varios niveles. Por una parte es necesario profundizar en las configuraciones precisas de los enlaces radio, red de transporte y ubicación de los servicios para asegurar latencias bajas e incluso comunicaciones deterministas. Por otra parte, puesto que los protocolos habituales de la familia TCP/IP no son adecuados para las aplicaciones críticas, es necesario reemplazarlos por otras soluciones. En esta línea se trabaja en soluciones conjuntas para tecnologías de capas bajas, nuevos protocolos de transporte y APIs que exploten la información de estado de la red y de las aplicaciones para garantizar latencia y fiabilidad. Como soporte del diseño se emplean las técnicas automáticas para el análisis y mejora de la fiabilidad y del rendimiento.

Las redes móviles están asistiendo a un proceso de transformación software sin precedentes. La adopción de soluciones virtualizadas y adaptativas ha revelado una flexibilidad y apertura nunca antes experimentada. En este contexto, se requieren de  metodologías de prueba sistemáticas para garantizar el rendimiento, la fiabilidad y la estabilidad de la red en todas su posibles dimensiones de operación. A este cambio se le une el incremento del número de casos de uso y verticales que, potencialmente, pueden aprovechar las ventajas ofrecidas por las redes móviles. En este escenario de transformación las aplicaciones que explotarán las nuevas características especificadas por el 3GPP son aún una incógnita. Para poder abordar la prueba de la próxima generación de aplicaciones, casos de uso y redes móviles, en esta línea del grupo de investigación MORSE, estamos trabajando en la definición de metodologías de prueba orientadas a la especificación de nuevos casos de prueba, la definición de nuevos escenarios de red y configuraciones de red para nuevos casos de usos y verticales. El grupo también tiene una gran experiencia en al implementación de dichas metodologías y colabora en proyectos software de código abierto como OpenTAP. Las metodologías de experimentación implementadas tienen por objetivo la obtención de  resultados repetibles para permitir comparar el rendimiento de servicios, aplicaciones y soluciones en general.

El software es el elemento clave en las futuras redes de comunicaciones móviles inteligentes, en las que convergen las tecnologías y protocolos de comunicaciones con técnicas como la virtualización, despliegue automático de servicios,  autocofiguración de la red con información en tiempo real, computación en los extremos, y en general las redes definidas por software. En esta línea se trabaja en el diseño y construcción de  redes  5G realistas   para demostrar y validar aplicaciones críticas como el coche conectado, la industria 4.0, o la seguridad pública.  Actualmente, las redes del ITIS ya se exponen a nivel internacional en varios proyectos Europeos.

La construcción software crítico y complejo puede beneficiarse del uso de técnicas formales que proporcionan lenguajes y herramientas para su modelado y las posteriores tareas de análisis. Por un lado, la construcción de modelos del software crítico y complejo puede realizarse de forma manual, pero es mucho más apropiado utilizar métodos semi-automáticos o, preferiblemente, automáticos basados, por ejemplo, en técnicas de machine learning. En este último caso, el artefacto producido disfruta, por construcción, de propiedades deseables relacionadas con la corrección y/o el rendimiento. Por otro lado, la disponibilidad de modelos operacionales de sistemas complejos permite utilizar técnicas formales maduras como son el model checking, los SAT-solvers o la interpretación abstracta como motores para analizar propiedades funcionales (corrección) y no funcionales (como es el uso de recursos computacionales, consumo de energía, las necesidades de ancho de banda, la calidad de servicio ofrecida, etc) del software crítico y complejo. Por ejemplo, es posible utilizarlas para analizar casos de tests frente estas propiedades usando la metodología que propone la técnica del testing basado en modelos (model-based testing).

En el desarrollo y mantenimiento de software inteligente y de las nuevas redes 5G es imprescindible asegurar su sostenibilidad reduciendo su impacto climático, manteniendo la eficiencia e incluyendo objetivos típicos de la economía y sociedad digitales actuales. En esta línea de investigación trabajamos en proponer nuevas técnicas basadas en optimización compleja y aprendizaje máquina para conseguir dichos objetivos de sostenibilidad sin descuidar la eficiencia resultante, produciendo software avanzado para realizar computación y comunicaciones de baja huella de carbono. Analizamos el consumo de energía de técnicas IA y construimos algoritmos sensibles a su consumo.

We here implement and run Artificial Intelligence (AI) techniques on Quantum Computers (QC’s) like IBM QE, DWAVE, Fujitsu DA2, and also on simulators of these computers running on classical machines. In addition to solving NP-hard problems in QC’s we address software testing, debugging and other software quality assessment tasks especially targeted to the software developed for QC’s themselves.

En esta línea de investigación usamos la Inteligencia Artificial (IA) al servicio de la Ingeniería del Software (IS). Usamos conceptos complejos de optimización junto con aprendizaje máquina y ciencia de datos para resolver problemas en Ingeniería del Software: pruebas, reparación de software, líneas de productos software, herramientas de programación inteligentes, etc. Se incluye aquí la línea de investigación de Ingeniería del Software Guiada por Búsqueda (Search-Based Software Engineering, SBSE), de gran relevancia a nivel internacional, empleando algoritmos exactos y aproximados.

En este línea de investigación se definen métodos de inteligencia artificial (optimización, ciencia de datos, aprendizaje máquina y profundo) para medir y evaluar la calidad del software en diferentes ejes: funcionalidad, rendimiento, seguridad, confiabilidad, usabilidad, mantenibilidad, compatibilidad y portabilidad. También proveemos de nuevas técnicas, prototipos y herramientas para el análisis estático de software, así como el desarrollo de nuevos estudios sobre calidad del software en entornos dinámicos. Esta línea de investigación se centra así en sistemas software en general y en sistemas ciber-físicos en particular, pero también en software para la Internet de las Cosas y las Ciudades Inteligentes.

En esta línea de investigación se usa hardware especializado para la construcción de sistemas inteligentes que posteriormente puedan ser utilizados en aplicaciones del mundo real que trabajan en entornos cambiantes y con incertidumbre, que utilizan grandes cantidades de datos y que tienen restricciones temporales muy importantes. Para resolver estas tareas complejas de optimización y aprendizaje empleamos diferentes tipos de plataformas: multiprocesadores, clústeres de equipos, GPUs e incluso smartphones y raspberry-pi. Trabajamos tanto en el procesamiento centralizado donde los datos fluyen hacia los recursos computacionales como con computación en el Borde/Niebla (Edge/Fog computing), que es donde se obtiene la información o donde el usuario final espera los resultados. Proporcionamos herramientas para la computación cooperativa (crowd-computing) en navegadores web, resolviendo problemas de impacto social de forma voluntaria en los dispositivos del usuario final. También nos enfocamos en nuevas técnicas para el aprendizaje altamente eficiente en laboratorio de cálculo. En esta línea también abordamos aspectos relacionados con vehículos inteligentes, comunicaciones entre vehículos (V2V) y el uso de microsimulaciones para sistemas de cómputo o comunicaciones.

Abordamos las Ciudades Inteligentes desde una aproximación holística, produciendo I+D+i para mejorar el nivel de desarrollo y gestión de la ciudad en un amplio rango de servicios usando tecnologías de la información y las comunicaciones. Trabajamos en el estándar de seis ejes de las ciudades inteligentes: Economía Inteligente, Ciudadanía Inteligente, Gobernanza Inteligente, Movilidad Inteligente, Medioambiente Inteligente y Estilo de Vida Inteligente. Usamos técnicas bio-inspiradas, aprendizaje profundo y desarrollamos nuevas técnicas de Inteligencia Artificial para movilidad inteligente: baja contaminación, programación óptima de semáforos, predicción de plazas de aparcamiento subterráneo, prevención de atascos de tráfico, comunicaciones y servicios vehículo a vehículo (V2V), planificación de carreteras, seguridad de los pasajeros, movilidad multimodal y mucho más. También investigamos y desarrollamos sistemas inteligentes para energía (por ejemplo, luz adaptativa para las calles), aplicaciones medioambientales (como sensores móviles para contaminación del aire y ruido), edificios inteligentes (diseño inteligente), y otras aplicaciones ligadas al estilo de vida inteligente, el turismo y la gobernanza municipal inteligente.

La Informática Forense cubre el análisis de los nuevos escenarios digitales para permitir la persecución de cibercriminales, y el proyecto IoTest está centrado precisamente en este área, definiendo el concepto de “testigo digital” como una solución que aprovecha las soluciones anti-támpering embebidas con capacidades criptográficas que están presentes en múltiples dispositivos, junto con los requisitos para la gestión de las evidencias electrónicas ya contempladas en múltiples estándares. Este concepto ha sido implementado en una prueba de concepto usando Google Pixel 3 y, de forma más específica, el chip seguro Titan M como elemento seguro. Asimismo, como parte del proyecto CyberSec4EU, se están desarrollando soluciones para aprovechar los servicios OSINT y de Threat Intelligence durante una investigación digital.

Esto resulta crítico para el análisis de malware, una disciplina que emergió como una evolución de la informática forense pero con suficiente entidad para requerir nuevas metodologías y criterios para el análisis. La integración de técnicas existentes y servicios para la informática forense con nuevas metodologías para dichos escenarios desafiantes es crucial para entender el contexto de la investigación digital y también para mejorar las soluciones de seguridad, desalentando el uso malintencionado e inadecuado de las tecnologías.

A través de los proyectos CyberSec4Eu y SealedGrid, esta línea de investigación cubre diversos temas relacionados con la consciencia situacional, la resiliencia y la interconexión segura de infraestructuras críticas (IC), teniendo en cuenta la actual confluencia y el acoplamiento actual de las nuevas tecnologías de información (IT) con las tecnologías operacionales (OT). Como parte de esta convergencia tecnológica, aquellos sistemas basados en CPS (Cyber-Physical Systems), IIoT  (Industrial Internet of Things), el Digital Twins y el Blockchain, entre otros.

Como parte de la consciencia situacional y la resiliencia se abarcan tanto medidas proactivas como medidas reactivas capaces de prevenir, detectar y responder en tiempo real a amenazas sofisticadas de tipo APT (Advanced Persistent Threats), trazando dichas amenazas en base a indicadores de salud y niveles de criticidad por área y, en el peor de los casos, restaurando estados para proveer resiliencia frente a potenciales amenazas. De la misma forma, la seguridad en las Infraestructuras Críticas e Industria 4.0 también comprende los servicios básicos de protección para preservar el acceso legítimo a los diferentes recursos operacionales del sistema con garantía del cumplimiento de las políticas de seguridad y marcos regulatorios, sin impactar con ello en el rendimiento y la continuidad de negocio.

La Internet de los Vehículos (IoV) es un nuevo paradigma que nace de la confluencia de nuevas tecnologías, entre las que se encuentran la Computación Edge y la quinta generación de redes, 5G. Debido a la característica intrínsecamente dinámica de la IoV, el gran número de vehículos no siempre distribuidos de forma uniforme, la heterogeneidad de tecnologías de conectividad y sensorización, la movilidad, etc., los requisitos de seguridad y privacidad de estos escenarios superan con creces a los de otros contextos tecnológicos. De este modo, la IoV puede recibir ataques relacionados con la identificación de los vehículos y la autenticación de los datos, ataques a la disponibilidad de los servicios proporcionados por la infraestructura, suplantación de elementos del entorno para acceder a servicios críticos sin autorización o bien para confundir al resto de dispositivos de control y afectar a la toma de decisiones. Dentro de este nuevo paradigma aparecen dos escenarios predominantes. Por un lado, los sistemas de gestión de tráfico inteligentes (ITS) de nueva generación buscan integrar nuevos elementos, tecnologías y servicios de seguridad a los escenarios ITS tradicionales. Por otro lado, surge el concepto de Movilidad como Servicio (Mobility-as-a-Service, MaaS) que cubre aplicaciones como el carsharing donde la privacidad del usuario toma un papel relevante.

La computación en el borde (Edge Computing) es un nuevo paradigma que trata de descentralizar las actuales capacidades del Cloud para así permitir el despliegue de servicios virtualizados en el entorno del usuario. Este cambio de paradigma permite satisfacer las crecientes necesidades de computación y comunicación en tiempo real de escenarios de la Internet de las cosas (IoT) que, entre otros, incluyen las redes vehiculares, sistemas industriales y sistemas de realidad aumentada. Al mismo tiempo, la escentralización de recursos y la necesidad de una menor latencia, así como la co-existencia de múltiples usuarios y proveedores, generan nuevos desafíos de seguridad que hacen necesario revisar los servicios de seguridad ya existentes.

En el ámbito del proyecto SMOG, hemos diseñado una plataforma de detección de anomalías que se comporta como un sistema inmune, atravesando el edge de la infraestructura para encontrar anomalías y vulnerabilidades de configuración, así como recursos atacados. Además, también hemos prestado atención a los servicios básicos de seguridad, como los problemas de autenticación y revocación en redes vehiculares (VN). En particular, hemos analizado los desafíos en VN y hemos diseñado tres modelos para las VNs que no precisan usar comunicaciones vehículo a vehículo. Los resultados que hemos obtenido muestran que la carga impuesta a los vehículos en la autenticación y revocación se reduce considerablemente sin tener que sacrificar las características de seguridad y características funcionales esperadas en los escenarios vehiculares.

La Computación Social (CS) se ocupa de las interrelaciones entre el comportamiento social y los sistemas informáticos. Aunque en sus inicios la CS se centró principalmente en el procesamiento y análisis de información social (la huella digital que las personas generan al realizar sus actividades diarias), la CS ha ido evolucionando progresivamente hacia un campo más amplio que incluye el uso de sistemas informáticos para dar soporte a cualquier forma de comportamiento social, y en el que los seres humanos son los principales protagonistas. Sin embargo, una gran parte de las actividades de CS se llevan a cabo hoy en día en servidores en la nube, lejos de las personas que generan los datos y contenidos procesados.

En esta línea de investigación exploramos alternativas a las tradicionales arquitecturas cliente/servidor para sistemas de CS. En particular, abogamos por la adopción de modelos colaborativos basados en dispositivos móviles (p.ej. smartphones o tabletas) como elementos de primera clase del sistema. Esos modelos de computación colaborativa fomentan el empoderamiento de los usuarios, al permitirles tomar control de la información y contenidos que generan, y de cómo esa información es accedida y explotada de forma segura por terceros.

Las diferentes propuestas de despliegue automatizado sobre cloud responden a la necesidad de tratar con la heterogeneidad de los proveedores y los diferentes niveles de servicio, lo que exige encarar problemas de portabilidad e interoperabilidad. En el contexto de la Nube existen dos niveles de heterogeneidad, por un lado las diferencias que imponen las características de negocio y de infraestructuras de los distintos proveedores, y por otro lado, la diferencia en los niveles de servicio ofertados (básicamente, IaaS o PaaS).

En esta línea de Investigación se proponen metodologías de despliegue que, a partir de la definición arquitectónica de una aplicación (componentes, relación entre ellas y especificación de restricciones) puedan generar, de forma (semi-)automática, el despliegue sobre distintos proveedores y a distinto nivel de servicios. También se plantea la capacidad de modificar dinámicamente la topología de la aplicación, de forma que la migración de componentes entre proveedores y entre niveles de servicio sea también factible, y se pueda realizar en ejecución.

Las soluciones IoT son específicas del dominio de aplicación, así como dependientes de un hardware muy heterogéneo, de protocolos de comunicación con características cambiantes y de modelos de datos que presentan una amplia diversidad. En estas circunstancias, el despliegue de las aplicaciones IoT presentan características muy distintas a las que se encuentran en sistemas cloud. Además, dependiendo del contexto, es posible que el rendimiento de un sistema varíe según se desplieguen sus componentes en la Nube o en los dispositivos conectados a la red.

Esta línea de Investigación persigue establecer soluciones que permitan el despliegue de aplicaciones de forma indistinta en diferentes niveles (cloud, fog y edge), de forma que la interoperabilidad entre las distintas componentes no sea una limitación. Estas soluciones también deben responder dinámicamente a cambios en las condiciones de contorno, permitiendo redespliegues automáticos que optimicen el rendimiento global del sistema.