![Page 1: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/1.jpg)
Líneas de Producto de
Software – Resolución de
variabilidad Material preparado por Rubby Casallas
Departamento de Sistemas y Computación
Universidad de los Andes, Bogotá
![Page 2: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/2.jpg)
Referencias
Systems and Software Variability Management:
Concepts, Tools and Experiences. Editores: Rafael
Capilla, Jan Bosch, Kyo-Chul Kang. Springer. 2013
Disponible en línea a traves de los servicios electrónicos
de biblioteca.uniandes.edu.co
Mikael Svahnberg, Jilles van Gurp, and Jan Bosch.
2005. A taxonomy of variability realization
techniques: Research Articles. Softw. Pract. Exper. 35,
8 (July 2005), 705-754.
![Page 3: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/3.jpg)
Vocabulario
Variabilidad
Feature
Obligatorio, Opcional, Variable, Externo
Variante
Colección de variantes
Punto de variación
“Binding Time”
Técnica de implementación de la variabilidad
![Page 4: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/4.jpg)
Pasos para introducir variabilidad en una
SPL
1. Identificación de la variabilidad
2. Restricción de la variabilidad
3. Implementación de la variabilidad
4. Administración de la variabilidad
![Page 5: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/5.jpg)
Identificación de la variabilidad
Por ejemplo utilizando el
modelo de variabilidad
ortogonal en cada paso
del ciclo de vida
Identificación de la
variabilidad de manera
incremental
Clasificandola
externa/interna
![Page 6: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/6.jpg)
![Page 7: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/7.jpg)
Restricción de la variabilidad
Restringir una variante:
Decidir cuándo la variante será introducida en
el diseño y la implementación en la línea o en
el producto específico
Decir cuándo y cómo las variantes serán
agregadas al sistema
Escoger un “binding time” para cada punto de
variación
![Page 8: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/8.jpg)
Implementación de la variabilidad
Seleccionar una técnica de implementación
de los puntos de variación relacionados con
una determinada característica variante.
![Page 9: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/9.jpg)
Administración de la variabilidad
Implica el mantenimiento (Extensiones,
correcciones, adaptaciones):
Las características variantes pueden cambiar a
medida que cambian los requerimientos
También implica la distribución de las nuevas
variantes de la base de clientes ya instalada
![Page 10: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/10.jpg)
Restricción e Implementación de la
variabilidad Binding Time o Momento de la selección
Punto de variación
V1 V2 Vn …
Sistema
Variantes
![Page 11: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/11.jpg)
Binding Time o Momento de la
selección
Se define un punto de variación y se
pospone la decisión de cuál variante va a ser
seleccionada.
La elección de una variante particular es el
“binding” o la selección de la variante
Se puede hacer en las distintas etapas del
ciclo de vida de un sistema
![Page 12: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/12.jpg)
Binding Time o Momento de la
selección
Figura tomada de [1] Capítulo 4 “Binding Time and Evolution”
Rafael Capilla and Jan Bosch
![Page 13: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/13.jpg)
En Diseño
Todas las variantes y puntos variaciones se
definen en la arquitectura de software o en
un árbol de características complementario
![Page 14: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/14.jpg)
Antes de la compilación
Desarrollo basado en modelos:
Antes de tiempo de compilación, variantes y
puntos de variación pueden describirse en un
perfil UML o en un lenguaje de dominio específico
Proceso de
generación de
código Modelos
Modelos Código
/ artefactos Código
/ artefactos
![Page 15: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/15.jpg)
Antes de la compilación
Desarrollo basado en aspectos:
Antes de tiempo de compilación, variantes y
puntos de variación pueden describirse en
aspectos
Proceso de
entretejido de
código
Código
principal
Aspecto 1 Código
/ artefactos Código
Final
Aspecto 2
Aspecto n
![Page 16: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/16.jpg)
En Compilación
La finalización del código fuente se hace
durante la compilación.
Esto incluye:
Quitar código de acuerdo con directivas al
compilador en el código fuente, #IFDEF
Extender el código al superponer comportamiento
adicional (por ejemplo, anotaciones, macros).
![Page 17: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/17.jpg)
En Construcción
Cargar, encadenar, ensamblar
Identificación de dependencias entre los
módulos que implementan puntos de
variación y/o variantes
Herramientas:
Make (makefile)
Maven
![Page 18: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/18.jpg)
En configuración y despliegue
Configurar las variantes después de la
compilación y del empaquetamiento puede ser
realizado en el lado desarrollador (antes o
durante el despliegue) o en el lado del cliente.
Las variables, opciones del sistema, se
configuran antes de la ejecución, durante la
primera puesta en marcha o en cada arranque.
Un programa puede leer un archivo de texto
de configuración con los valores
![Page 19: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/19.jpg)
En ejecución
Es la forma más flexible para configurar las
variantes y puntos de variación.
Archivos dinámicos o librerías donde una o varias
variantes implementan una interface.
Ejemplos:
Apache que carga módulos dinámicamente
Eclipse que carga plugins
Reconfiguración dinámica
autonomic computing, self-adaptive, self-healing
systems, etc.).
![Page 20: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/20.jpg)
Niveles de abstracción para
implementar la variabilidad Arquitectura.
el principal mecanismo para la variabilidad es la
sustitución de componentes de primer nivel con
otras implementaciones de estos componentes o
la unión de componentes opcionales,
dependiendo del contexto en el que se despliega
el sistema.
![Page 21: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/21.jpg)
Niveles de abstracción para
implementar la variabilidad Componente.
A nivel de componentes, la variabilidad es a
menudo más compleja porque un concepto
variable puede ser transversal a varios
componentes
![Page 22: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/22.jpg)
Niveles de abstracción para
implementar la variabilidad Código.
A nivel de código, hay un gran conjunto de
mecanismos de variabilidad disponibles.
La principal preocupación, sin embargo, es que
los mecanismos a nivel de código se pueden
aplicar para la implementación algorítmica
normal, así como para la gestión de puntos de
variación.
![Page 23: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/23.jpg)
Mikael Svahnberg, Jilles van Gurp, and Jan Bosch. 2005. A taxonomy of
variability realization techniques: Research Articles. Softw. Pract. Exper. 35, 8
(July 2005), 705-754
![Page 24: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/24.jpg)
Técnicas de implementación
(1) Architecture Reorganization
(2) Variant Architecture Component
(3) Optional Architecture Component
(4) Binary Replacement - Linker Directives
(5) Binary Replacement – Physical
(6) Infrastructure-Centered Architecture
(7) Variant Component Specializations
(8) Optional Component Specializations
(9) Runtime Variant Component Specializations
(10) Variant Component Implementations
(11) Condition on Constant
(12) Condition on variable
(13) Code Fragment Superimposition
![Page 25: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/25.jpg)
Condition on constant
Intención.
Dar soporte a varias formas de realizar una
operación.
Sólo una forma será usada
Motivación.
La variante no es lo suficientemente grande para
ser una clase en su propio derecho.
Se usa por razones de rendimiento, y para ayudar
a eliminar, antes de compilar, código no utilizado.
![Page 26: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/26.jpg)
Condition on constant
#include <stdio.h>
int main(void) {
#ifdef MACRO1
printf("\nMACRO1 Defined\n");
#endif
#ifdef MACRO2
printf("\nMACRO2 Defined\n");
#endif
return 0;
}
$ gcc -Wall -DMACRO2 macro.c -o macro
Preprocesador
#include <stdio.h>
int main(void) {
printf("\nMACRO2 Defined\n");
return 0;
}
![Page 27: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/27.jpg)
Condition on constant
Representación de la
variabilidad
Implícita
Binding Externo
Momento de introducción Implementación
Se resuelve Pre-compilación
Agregar más variantes Implementación
![Page 28: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/28.jpg)
Consecuencias
Usar IFDEFs o similares es riesgoso, ya que
el número de rutas de ejecución posibles
tiende a explotar haciendo el mantenimiento
y corrección de errores difíciles.
Los puntos de variación sueles estar
dispersos por todo el sistema, por lo cual se
hace difícil hacer un seguimiento de cuáles
partes de un sistema pertenecen realmente a
una variante.
![Page 29: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/29.jpg)
#ifdef Considered Harmful, or
Portability Experience With C News. Henry Spencer. 1992
https://www.usenix.org/legacy/publications/library/proceedings/sa92/spencer.pdf
![Page 30: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/30.jpg)
Linux
Ofrece más de 10.000 funciones, un número
que tiene duplicado en los últimos cinco años.
Configuración a través de #ifdef
Incluye 80.000 bloques de código condicionales
Leviathan: Taming the #ifdef Beast in Linux et al.* Wanja Hofer, Christoph Elsner, Frank
Blendinger, Wolfgang Schröder-Preikschat, Daniel Lohmann. Friedrich–Alexander
University Erlangen–Nuremberg. 2010
![Page 31: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/31.jpg)
Condition on variable
if (a == 1) {
…
}
else if (a == 2) {
…
}
…
else if (a == n) {
…
} else {
…
}
PV
V1 V2 … Vn
a == 1
![Page 32: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/32.jpg)
Condition on variable
Representación de la
variabilidad
Implícita o Explícita
Momento de introducción Implementación
Se resuelve Ejecución
Agregar más variantes Implementación
![Page 33: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/33.jpg)
Condition on variable
Consecuencias
Es parte de los lenguajes d eprogramación para
manejar el flujo de control
Cuando se utiliza para resolver variantes se corre
el mismo riesgo que en el caso de los #IFDEFS
![Page 34: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/34.jpg)
Variant Component Implementations
Varias implementaciones simultaneas y
coexistentes de un componente
arquitectónico.
![Page 35: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/35.jpg)
Variant Component Implementations
Tener varias implementaciones de la misma
interfaz
Patrones de diseño [Gamma et al. 1995]:
Strategy
Broker
Abstract Factory
Builder
![Page 36: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/36.jpg)
Variant Component Implementations
Esta técnica se introduce durante el diseño
arquitectónico
El binding se hace en tiempo de ejecución:
Inyección de dependencias
Parámetro de arranque
![Page 37: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/37.jpg)
Colección de las variantes Explícita
Momento de introducción Architecture Design
Se resuelve Ejecución
Agregar más variantes Detailed Design
Variant Component Implementations
![Page 38: Líneas de Producto de Software Resolución de variabilidadmiso4204/dokuwiki/lib/ex… · Referencias Systems and Software Variability Management: Concepts, Tools and Experiences](https://reader035.vdocument.in/reader035/viewer/2022070711/5ec9d9bf19d4756e1547e345/html5/thumbnails/38.jpg)
Code Fragment Superimposition
Ver material Aspectos