¿De qué tratan los Sistemas de Software Emergentes?

Compartir por correo electrónico

Hoy en día, debido a la constante evolución del entorno operativo de los sistemas de software, los sistemas de software modernos son cada vez más complejos y grandes, lo que dificulta su gestión y evolución para un equipo de desarrollo. Estos desafíos empujaron a la comunidad de TI (Tecnologías de la Información) a desarrollar soluciones que pretenden asignar las responsabilidades de adaptación y toma de decisiones al propio software. Estas soluciones se denominan sistemas autoadaptativos. Además, los sistemas de software modernos requieren un elevado nivel de escalabilidad, fiabilidad y seguridad para dar servicio a millones de usuarios en todo el mundo. En un entorno dinámico, algunos atributos pueden evolucionar continuamente. Esto hace que un sistema de software sea más difícil de gestionar, por lo que esta cuestión se convierte en un importante reto que hay que superar. Sobre la base de esta limitación identificada, Sistemas de Software Emergentes (SSE) tienen como objetivo de reducir el esfuerzo inicial para crear soluciones autónomas y dar soporte a sistemas totalmente adaptativos que puedan aprender de forma autónoma la estructura del sistema y el entorno operativo sin conocimientos o predicciones predefinidas. La función principal de estos modelos es eliminar o reducir el papel de un programador en los procesos de composición, mantenimiento y evolución de un sistema de software.
Berger Levrault, a través del programa de investigación "Arquitecturas de software orgánicas y adaptables", nos gustaría invertir las ventajas de los ESS explorando cómo desarrollar sistemas inteligentes que sean capaces de adaptarse (es decir, sus microservicios) siguiendo los cambios en las necesidades de los usuarios y los entornos operativos, minimizando el coste de esta adaptación. Como primer paso en esta inversión, pretendemos comprender los ESS existentes analizando el estado del arte de los sistemas de software emergentes y probando algunos de sus enfoques. Analizamos 35 artículos publicados recogidos en las principales conferencias y revistas. A partir de este análisis, construimos un árbol de taxonomía para clasificar los enfoques de los SEE existentes, principalmente en función de sus objetivos, el proceso aplicado y la usabilidad de estos enfoques.

Nuestro estudio de los SSE

El análisis de las múltiples definiciones de SSE nos permitió identificar sus principales características. Además, la aplicación de estas diferentes características en los enfoques de los SSE nos permitió crear una taxonomía de clasificación.

Definición de SSE

El SSE puede definirse como un software compuesto por unidades de software reutilizables (por ejemplo, componentes, servicios) que son capaces de organizarse de forma autónoma para adaptarse mejor a su entorno de uso.

Una taxonomía de los enfoques de los Sistemas de Software Emergentes

Los enfoques pueden clasificarse en tres ejes principales:

  • el objetivo de utilizar los SSE,
  • el proceso aplicado para realizar los SSE,
  • y la facilidad de uso de las SSE.
Una taxonomía del software emergente.
Figura 1: Taxonomía del software emergente

Objetivos de los SSE

El objetivo principal de un SSE es lograr la adaptación. La adaptación puede adoptar diferentes formas (requisitos funcionales o no funcionales). En ingeniería de software, un requisito no funcional es un requisito que especifica criterios que pueden utilizarse para juzgar el funcionamiento de un sistema, en lugar de comportamientos específicos. Se contraponen a los requisitos funcionales que definen comportamientos o funciones específicas.

Proceso de los SSE

El proceso de los SSE corresponde al conjunto de actividades que permiten la creación de los SSE. Se compone principalmente de tres aspectos. Se trata de cómo supervisar los sistemas y los entornos, cómo componer bloques de construcción de software y cómo aprender información que facilite la adaptación.
Entendemos que para adaptarse a un entorno, un software debe ser capaz de evaluar el estado del entorno y cómo reacciona ante él. Identificamos 3 enfoques de supervisión diferentes utilizados por los enfoques existentes de los SSE, a saber Proxy approachEl Sensor factory pattern combinado con Observer design patterny Prometheus.
La definición de SSE se basa en la composición de una aplicación totalmente funcional a partir de pequeñas unidades de software. Así, identificamos los métodos utilizados para componer una aplicación en SSE. Encontramos 4 métodos principales, a saber Component based language, Service oriented architecture, Dependency injection y Goal driven composition.
Para hacer frente a la creciente variabilidad de los entornos operativos modernos, el ser humano no puede generalizar a todas las situaciones. Esto no sólo requiere mucha experiencia, sino que deja de lado las situaciones inesperadas. Por ello, el proceso de aprendizaje es esencial para la realización de los SSE. La mayoría de los enfoques de aprendizaje se basan en Reinforcement Learning (RL). La RL es amplia, y en los artículos estudiados se utilizan muchas técnicas diferentes. Clasificamos los enfoques de aprendizaje en dos categorías, aprendizaje basado en RL y aprendizaje basado en otros tipos de algoritmos. También identificamos si el aprendizaje se realiza en línea o fuera de línea.

Utilidad de los SSE

En esta rama, identificamos qué dominios de aplicación son adecuados para aplicar los SSE, qué lenguajes de programación se utilizan para la implementación de los SSE y cómo evalúan los investigadores sus enfoques. Los principales dominios de aplicación de los SSE son el Internet de las Cosas (IoT), los sistemas ciberfísicos, la informática de servicios web y algunas soluciones genéricas. No hemos realizado una evaluación cualitativa de los diferentes enfoques descubiertos en términos de implementación, pero hemos evaluado la accesibilidad y la capacidad de mantenimiento de algunos de ellos.

Conclusión

Los SSE pretenden reducir el esfuerzo inicial para crear soluciones autónomas, y apoyar a los sistemas totalmente adaptativos que pueden aprender de forma autónoma la estructura y el entorno operativo del sistema sin conocimientos o predicciones predefinidas. El objetivo era comprender la problemática de los SSE realizando un estado del arte sobre este tema y una taxonomía. Para ello, hemos recopilado 35 artículos de las principales conferencias y revistas en el ámbito de los SSE. Estos 35 artículos han sido analizados en profundidad para construir un árbol de taxonomía que permita clasificar los enfoques existentes de los SSE. El árbol de taxonomía se basa en los objetivos de los SSE, los procesos aplicados por ellos y su usabilidad. Esperamos que este estudio ofrezca una oportunidad para revisar y reflexionar sobre el estado actual de la investigación de los sistemas de software emergentes y su progreso, y que permitirá a Berger Levrault aplicar los sistemas de software emergentes.

por Elie Faye y Anas Shatnawi

Más ...

Ir arriba