Análisis de variabilidad de líneas de productos de software especificadas en Kconfig - González, Rocío Pilar (2017)
Una tendencia creciente en el desarrollo de software es la necesidad de desarrollar múltiples productos de software similares en conjunto en vez de varios productos individuales. Hay varias razones para esto: los productos pueden estar enfocados a distintos sectores del mercado, estar sujetos a distintas restricciones legales o culturales, o deben satisfacer necesidades específicas de diferentes stakeholders. Debido a las restricciones de costo y tiempo, no es posible desarrollar un nuevo producto desde cero para cada cliente, y el reuso de software debe ser incrementado. Frente a este desafío, la ingeniería de líneas de productos de software (SPLE: Software Product Line Engineering) surge como un paradigma viable e importante que permite a las empresas desarrollar familias de productos, disminuyendo costos y tiempos, basándose en el reuso de componentes. Una línea de productos de software (SPL: Software Product Line) es una familia de sistemas de software desarrollados a partir de un conjunto de características comunes, que apunta a satisfacer necesidades específicas de un segmento de mercado. Una SPL está constituida por un núcleo que contiene los componentes presentes en todos los productos o aplicaciones derivadas, y un conjunto de elementos variables, variabilidad, que incluye aquellas características optativas de la aplicación. Muchos proyectos de desarrollo de software deben administrar una variabilidad muy grande. Los modelos de variabilidad representan las características, o “features”, comunes y variables de productos en una SPL. Sistemas altamente configurables pueden llegar a tener un gran número de características. Las características en un sistema configurable interactúan de una manera no trivial, y su interacción puede introducir errores en los productos derivados. El número de configuraciones (productos derivados) es exponencial en el número de características, por lo que no es posible analizar cada configuración en forma separada. Debido al incremento en tamaño y complejidad de los modelos, surge el desafío de proporcionar un soporte automático para llevar adelante estas funciones. Muchas de estas funcionalidades están disponibles en el ambiente SPLOT (www.splotresearch.org), sin embargo los ejemplos disponibles son casos de estudios pequeños y no reflejan modelos del mundo real como los expresados mediante Kconfig. Kconfig fue creado para describir la variabilidad del kernel de Linux y ha sido adoptado por diversos proyectos de desarrollo de código abierto para definir su variabilidad. El modelo de variabilidad especificado en Kconfig puede ser interpretado como un modelo de características. A partir del escenario planteado, en este proyecto se plantea el análisis de la variabilidad de modelos especificado en Kconfig. Para lo cual, se propone la construcción de una herramienta para el análisis de la variabilidad en Líneas de Producto de Software. Para esto, a grandes rasgos, se traduce de un modelo de variabilidad especificado en Kconfig a un modelo de características. El resultado es integrado a herramientas de análisis de modelos de características para poder finalmente obtener información con respecto a su variabilidad.