Cubos del programa FOSD


En el desarrollo de software orientado en características , software cubos de programas de desarrollo orientado en características ( cubos de programa FOSD ) son matrices n-dimensionales de las funciones (transformaciones de programas) que representan las líneas de productos n-dimensionales. Un programa es una composición de características: un programa base se aumenta con incrementos en la funcionalidad del programa, llamados características , para producir un programa complejo. Una línea de productos de software (SPL) es una familia de programas relacionados. Una línea de productos típica tiene F 0 como programa base y F 1 .. F n como características que podrían agregarse a F 0. Diferentes composiciones de funciones producen diferentes programas. Sea + la operación de composición de características. Un programa P en SPL puede tener la siguiente expresión:

Podemos reformular P en términos de proyección y contracción de una matriz unidimensional. Sea F i = [F 0 .. F n ] la matriz de características utilizadas por una línea de productos. Una proyección de F i elimina las características innecesarias, lo que produce una matriz más corta (llámela) G i . Una contracción de G i suma cada G i en un orden específico, para producir una expresión escalar. La expresión de P se convierte en:

donde los valores del índice logran la proyección y la suma es la contracción de la matriz. Esta idea se generaliza a matrices n-dimensionales que modelan líneas de productos multidimensionales.

Una línea de productos multidimensional se describe mediante múltiples conjuntos de características que interactúan. [1] [2] [3] [4]Como ejemplo 2D elemental, es fácil crear una línea de productos de calculadoras, donde las variantes ofrecen diferentes conjuntos de operaciones. Otra variación podría ofrecer diferentes interfaces de presentación para calculadoras, una sin GUI, otra con una GUI de Java, una tercera con una GUI web. Estas variaciones interactúan: cada representación de la GUI hace referencia a una operación de calculadora específica, por lo que cada función de la GUI no se puede diseñar independientemente de su función de calculadora. Tal diseño conduce a una matriz: las columnas representan incrementos en la funcionalidad de la calculadora y las filas representan diferentes interfaces de presentación. Esta matriz M se muestra a la derecha: las columnas permiten emparejar la funcionalidad básica de la calculadora (base) con características opcionales de logarítmica / exponenciación (lx) y trigonométricas (td). Las filas permiten emparejar la funcionalidad principal sin front-end (núcleo),con interfaz gráfica de usuario (gui) opcional y front-end basados ​​en web (web).

Un elemento M ij implementa la interacción de la característica de columna i y la característica de fila j. Por ejemplo, el elemento etiquetado cb es un programa básico que implementa la funcionalidad principal de una calculadora. Element gb agrega código que muestra la funcionalidad principal como una GUI; element wb agrega código que muestra la funcionalidad principal a través de la web. De manera similar, el elemento ct agrega código trigonométrico a la funcionalidad central de la calculadora; Los elementos GT y WT agregan código para mostrar la funcionalidad trigonométrica como interfaz gráfica de usuario y interfaces web.

Una calculadora está especificada de forma única por dos secuencias de características: una secuencia define la funcionalidad de la calculadora, la otra la interfaz. Por ejemplo, la calculadora C que ofrece funcionalidad básica y trigonométrica en un formato web se define mediante la expresión:


Una línea de productos 2-D (o cubo)