José Miguel Horcas Aguilera

Tesis Doctoral

WeaFQAs: Un enfoque de Líneas de Productos de Software para la personalización y tejido de Atributos de Calidad Funcionales eficientes

🎓 Sobresaliente «Cum Laude» 🎓
🌍 Doctorado Internacional 🌍
🏆 Premio Extraordinario de Doctorado 🏆
🏆 Premio Nacional SISTEDES a la mejor Tesis Doctoral 2020 🏆


Información General

Título WeaFQAs: A Software Product Line approach for customizing and weaving efficient Functional Quality Attributes
Autor José Miguel Horcas
Directores Lidia Fuentes, Mónica Pinto
Grupo de investigación CAOSD
Departamento Departamento de Lenguajes y Ciencias de la Computación (LCC)
Universidad Universidad de Málaga
Financiación Beca de Formación de Personal Investigador (FPI) del Programa Excelencia EX14 79026815, proyecto P12-TIC-1814, financiado por la Consejería de Educación y Conocimiento de la Junta de Andalucía.
Fecha 10 de julio de 2018
Identificadores TESEO, RIUMA

Cómo citar

José Miguel Horcas. WeaFQAs: A Software Product Line approach for customizing and weaving efficient Functional Quality Attributes. PhD Thesis. 2018. URL: https://hdl.handle.net/10630/17231

📔 WeaFQAs en detalle

🛠️ Soporte de herramienta oficial: vEXgine

Resumen

WeaFQAs es un proceso de Líneas de Productos de Software (Software Product Line, SPL) para gestionar la operacionalización de atributos de calidad o Atributos de Calidad Funcionales (Functional Quality Attributes, FQAs). WeaFQAs promueve el modelado de variabilidad y la personalización de los FQAs de forma independiente a las aplicaciones, así como su incorporación (weaving o tejido) en sus arquitecturas de software siguiendo un enfoque orientado a aspectos.

En WeaFQAs, el arquitecto de software puede seleccionar manualmente la configuración de cada FQA que satisfaga los requisitos de la aplicación, o generar automáticamente una configuración que optimice las propiedades no funcionales (Non-Functional Properties, NFPs), como la eficiencia energética o el rendimiento del FQA, basándose en el contexto de uso de la aplicación.

El proceso WeaFQAs.


Atributos de Calidad Funcionales (FQAs)

Los atributos de calidad (Quality Attributes, QAs) tienen una influencia significativa en la arquitectura de software de una aplicación, sirviendo como criterio de selección entre diversos patrones de diseño e implementaciones alternativas. Para satisfacer los QAs de una aplicación, algunos de ellos (ej. seguridad, usabilidad) requieren introducir nuevos componentes funcionales en la arquitectura de software (ej. un componente de cifrado). Estas nuevas funcionalidades u operaciones (ej. el cifrado de un mensaje) que contribuyen a satisfacer QAs como la seguridad se denominan operacionalizaciones de QAs o Atributos de Calidad Funcionales (FQAs).

Ejemplos de FQAs

  • Cifrado para proporcionar confidencialidad.
  • Hashing para proporcionar integridad.
  • Autenticación para proporcionar control de acceso.
  • Registro de actividad (Logging) para proporcionar retroalimentación de transacciones.
  • Caché para mejorar el rendimiento.
  • Compresión para optimizar el uso de memoria.

Los procesos de ingeniería de WeaFQAs

WeaFQAs sigue el marco clásico de la ingeniería de SPL y lo extiende para tener en cuenta la problemática específica de los FQAs. En WeaFQAs se definen cuatro procesos de ingeniería:

Ingeniería del Dominio

Gestiona la complejidad y la variabilidad de los FQAs desde las fases tempranas del ciclo de vida del desarrollo. El objetivo es:

  • Caracterizar los QAs y FQAs.
  • Definir las variabilidades y puntos en común de los FQAs, incluyendo sus dependencias y componentes reutilizables.
  • Analizar la influencia de las variantes de FQA sobre las propiedades no funcionales (NFPs).

Ingeniería de la Aplicación

Genera configuraciones de FQA basándose en los requisitos específicos de la aplicación. El objetivo es vincular la variabilidad del FQA según las necesidades del proyecto, generando una configuración de producto de FQAs que cumpla dichos requisitos.

Ingeniería de Tejido (Weaving Engineering)

Integra la configuración de la arquitectura de FQAs generada en el proceso anterior dentro de la arquitectura base de la aplicación. El objetivo es incorporar el modelo de arquitectura personalizado de los FQAs en la aplicación mediante la aplicación de los patrones de tejido adecuados.

Ingeniería de Evolución

Gestiona los FQAs cuando los requisitos de la aplicación cambian o la tecnología de los FQAs evoluciona. El objetivo es actualizar los artefactos de los diferentes procesos de ingeniería en WeaFQAs y propagar los cambios a la aplicación final ya desplegada.


WeaFQAs en detalle a través de sus publicaciones

Un total de 23 publicaciones científicas a lo largo de los 5 años de doctorado (2013-2018) respaldan la tesis WeaFQAs. A continuación se muestra un resumen de las principales publicaciones para ayudar a comprender cada contribución en el contexto de WeaFQAs:

  • ◼️ El enfoque WeaFQAs
    Define el enfoque de SPL orientado a aspectos de WeaFQAs, y compara y analiza dos implementaciones diferentes de WeaFQAs: (1) utilizando modelos CVL y UML; y (2) utilizando modelos de características tradicionales y un lenguaje de descripción arquitectónica orientado a aspectos (AO-ADL) específico.

  • ◼️ Extensión de WeaFQAs para optimizar Propiedades No Funcionales (NFPs)
    Extiende WeaFQAs para dar soporte al análisis de NFPs (ej. consumo energético, rendimiento) y ayudar a los desarrolladores a generar configuraciones óptimas de los FQAs de acuerdo con dichas propiedades.

  • ◼️ vEXgine: el soporte de herramienta oficial
    Presenta vEXgine, una implementación personalizable y extensible del motor de ejecución para el Lenguaje Común de Variabilidad (Common Variability Language, CVL), proporcionando soporte de herramientas para el enfoque WeaFQAs. Reconocido con el premio Best Paper Award en la sección de Data, Demonstrations and Tools de la conferencia SPLC’17.

  • ◼️ Implementación de WeaFQAs con CVL y UML
    Detalla la implementación principal de WeaFQAs utilizando el lenguaje CVL para especificar la variabilidad de los FQAs, UML para modelar la arquitectura de software de los FQAs, y CVL en combinación con ATL para tejer (weave) las configuraciones de los FQAs.

  • ◼️ Implementación de WeaFQAs con modelos de características y AO-ADL
    Detalla la primera implementación de WeaFQAs que utiliza modelos de características tradicionales para especificar la variabilidad de los FQAs, y el lenguaje AO-ADL para modelar las arquitecturas de software de los FQAs y tejer sus configuraciones.

  • ◼️ El proceso de tejido (weaving) en detalle
    Profundiza en los detalles de tejido de WeaFQAs, donde el proceso se implementa como transformaciones de modelos en ATL e integrado con el lenguaje CVL, ilustrándolo en el contexto del FQA de seguridad.

  • ◼️ Uso de WeaFQAs en tiempo de ejecución
    Una adaptación de WeaFQAs para dar soporte al tejido de FQAs en tiempo de ejecución (runtime). Los FQAs de seguridad como cifrado, hashing o autenticación se implementan como aspectos. Se presenta el diseño e implementación de los módulos Aspect Generation y Aspect Weaver en el marco del proyecto internacional INTER-TRUST.

  • ◼️ WeaFQAs para sistemas multiagente y el Internet de las Cosas (IoT)
    Una adaptación de la Línea de Productos de Software Dinámica (Dynamic Software Product Line, DSPL) de WeaFQAs para adaptar dinámicamente los objetivos y el comportamiento de agentes inteligentes en el contexto de IoT. Recibió el premio Best Paper Award en la conferencia MATES’16.

  • ◼️ WeaFQAs en el dominio automotriz
    Una adaptación de WeaFQAs para dar soporte a la reconfiguración de vehículos autónomos según el contexto del tráfico, mejorando los QAs del tráfico (ej. tiempo de viaje, tasa de cambio de carril, tiempo hasta la colisión).

  • ◼️ Evolución de configuraciones de FQAs
    Presenta algoritmos formales para automatizar la evolución de los modelos CVL, la actualización de los modelos de configuración y la propagación de cambios a las configuraciones de FQAs desplegadas en las aplicaciones.

  • ◼️ Configuraciones de FQAs ecológicas (Green FQAs)
    Optimización de las configuraciones de FQAs basada en el equilibrio (trade-offs) entre NFPs como la eficiencia energética y el rendimiento.