En el desarrollo de software, un modelo de características es una representación compacta de todos los productos de la línea de productos de software (SPL) en términos de "características". Los modelos de características se representan visualmente mediante diagramas de características. Los modelos de características se utilizan ampliamente durante todo el proceso de desarrollo de la línea de productos y se utilizan comúnmente como entrada para producir otros activos, como documentos, definición de arquitectura o fragmentos de código. [ cita requerida ]
Una SPL es una familia de programas relacionados. Cuando las unidades de construcción del programa son características (incrementos en la funcionalidad o el desarrollo del programa), cada programa de una SPL se identifica mediante una combinación única y legal de características, y viceversa.
Los modelos de características fueron introducidos por primera vez en el método de Análisis de Dominio Orientado a Características (FODA) por Kang en 1990. [1] Desde entonces, el modelado de características ha sido ampliamente adoptado por la comunidad de líneas de productos de software y se han propuesto varias extensiones.
Una "característica" se define como un "aspecto, cualidad o característica prominente o distintiva visible para el usuario de un sistema o sistema de software". [1] El desarrollo de SPL se centra en la creación sistemática y eficiente de programas similares. FODA es un análisis dedicado a la identificación de características en un dominio que se cubrirá con un SPL en particular. [1]
Un modelo de características es un modelo que define las características y sus dependencias, generalmente en forma de un diagrama de características + restricciones sobrantes (también conocido como árbol cruzado). Pero también podría ser una tabla de combinaciones posibles. [ cita requerida ]
Un diagrama de características es una notación visual de un modelo de características, que es básicamente un árbol de funciones y/o. Existen otras extensiones: cardinalidades , clonación de características, atributos de características, que se analizan a continuación.
Una configuración de características es un conjunto de características que describe un miembro de un SPL: el miembro contiene una característica si y solo si la característica está en su configuración. Un modelo de características permite una configuración de características si y solo si no viola las restricciones impuestas por el modelo...
Un árbol de características (a veces también conocido como modelo de características o diagrama de características) es un diagrama jerárquico que representa visualmente las características de una solución en grupos con niveles de detalle cada vez mayores. Los árboles de características son excelentes formas de resumir las características que se incluirán en una solución y cómo se relacionan de una manera visual simple. [2]
Las notaciones de modelado de características actuales se pueden dividir en tres grupos principales, a saber:
Las relaciones entre una característica principal y sus características secundarias (o subcaracterísticas) se clasifican de la siguiente manera:
Además de las relaciones parentales entre características, se permiten restricciones entre árboles. Las más comunes son:
Como ejemplo, la figura de la derecha ilustra cómo se pueden utilizar los modelos de características para especificar y crear sistemas de compra en línea configurables. El software de cada aplicación está determinado por las características que proporciona. La característica raíz (es decir, la tienda electrónica) identifica el SPL. Cada sistema de compra implementa un catálogo, módulos de pago, políticas de seguridad y, opcionalmente, una herramienta de búsqueda. Las tiendas electrónicas deben implementar una política de seguridad alta o estándar (elija una) y pueden proporcionar diferentes módulos de pago: transferencia bancaria, tarjeta de crédito o ambos. Además, una restricción de árbol cruzado obliga a los sistemas de compra que incluyen el módulo de pago con tarjeta de crédito a implementar una política de alta seguridad.
Algunos autores proponen extender los modelos de características básicas con multiplicidades similares a las de UML de la forma [n,m] , donde n es el límite inferior y m el límite superior. Estas se utilizan para limitar la cantidad de subcaracterísticas que pueden formar parte de un producto cuando se selecciona el padre. [3]
Si el límite superior es *, la característica se puede clonar tantas veces como queramos (siempre que se respeten las demás restricciones). Esta notación es útil para productos extensibles con una cantidad arbitraria de componentes.
Otros sugieren agregar información extrafuncional a las características mediante “atributos”, que se componen principalmente de un nombre, un dominio y un valor. [4]
La semántica de un modelo de características es el conjunto de configuraciones de características que permite el modelo de características. El enfoque más común es utilizar la lógica matemática para capturar la semántica de un diagrama de características. [5] Cada característica corresponde a una variable booleana y la semántica se captura como una fórmula proposicional . Las valoraciones satisfactorias de esta fórmula corresponden a las configuraciones de características permitidas por el diagrama de características. Por ejemplo, si es una subcaracterística obligatoria de , la fórmula contendrá la restricción . [6]
La siguiente tabla proporciona una traducción de los primitivos básicos. Suponemos que el diagrama es un árbol con raíz con raíz . La semántica de un diagrama completo es un conjunto de las traducciones de los elementos contenidos en el diagrama. Por lo tanto, en caso de que todos los elementos estén escritos en forma normal conjuntiva (CNF), entonces los términos se pueden combinar fácilmente con AND lógico y toda la expresión lógica permanecerá en CNF.
Un producto de la SPL se especifica de manera declarativa seleccionando o deseleccionando características según las preferencias del usuario. Tales decisiones deben respetar las restricciones impuestas por el modelo de características. Un "configurador" es una herramienta que asiste al usuario durante un proceso de configuración. Por ejemplo, seleccionando o deseleccionando automáticamente las características que deben o no deben seleccionarse, respectivamente, para que la configuración se complete con éxito. Los enfoques actuales utilizan propagación de unidades [7] y solucionadores CSP [4] .
Un análisis de un modelo de características se centra en determinadas propiedades del modelo que son importantes para las estrategias de marketing o las decisiones técnicas. En la literatura se han identificado varios análisis. [8] [9] Los análisis típicos determinan si un modelo de características es nulo (no representa ningún producto), si contiene características inactivas (características que no pueden formar parte de ningún producto) o el número de productos de la línea de productos de software representados por el modelo. Otros análisis se centran en comparar varios modelos de características (por ejemplo, para comprobar si un modelo es una especialización , una refactorización o una generalización de otro). [10]