Dar forma a la variabilidad
Para poder gestionar la variabilidad de forma ordenada, necesitamos modelos que nos ayuden a representar las opciones de un producto y sus combinaciones posibles.
Uno de los tipos de modelos más utilizados para este propósito son los modelos de características (feature models).
Un modelo de características describe:
- qué características tiene un producto,
- cuáles son obligatorias y cuáles opcionales,
- qué alternativas existen,
- y qué combinaciones son válidas o no.
Para representar estos modelos de forma clara y comprensible, utilizaremos UVL (Universal Variability Language), un lenguaje textual sencillo pensado para describir variabilidad de manera estructurada.
Un ejemplo sencillo: la paella
Volvamos al ejemplo de la paella.
Podemos pensar en la paella como el producto base, y en sus ingredientes y variantes como características.
Un ejemplo muy sencillo de modelo de características en UVL para modelar una paella podría ser el siguiente:
features
Paella
mandatory
Arroz
Caldo
IngredientePrincipal
alternative
Carne
Marisco
Verduras
Que podríamos visualizar de forma gráfica así:
En este modelo, que trata de dar forma a la variabilidad de la Paella:
- Arroz y Caldo son características comunes: siempre están presentes.
- IngredientePrincipal representa un punto de variabilidad, donde elegimos una opción entre varias alternativas (Carne, Marisco o Verduras).
Este modelo no describe una única paella concreta, sino todas las paellas posibles que cumplen estas reglas.
Así, cada vez que seleccionamos una opción concreta del modelo, obtenemos una configuración distinta. En total habría 3 posibles configuraciones:
- Paella con arroz, caldo y carne.
- Paella con arroz, caldo y marisco.
- Paella con arroz, caldo y verduras.
El modelo nos ayuda a razonar sobre las combinaciones, evitando mezclas que no tengan sentido y facilitando la reutilización.
Una paella algo más completa
¿Y si quisiéramos que nuestras paellas pudieran llevar alioli de manera opcional? Es decir, que en cada una de las configuraciones anteriores pudiéramos elegir si añadimos o no alioli.
Este se consigue incluyendo una característica opcional. Podría quedar así:
features
Paella
mandatory
Arroz
Caldo
IngredientePrincipal
alternative
Carne
Marisco
Verduras
optional
Alioli

Desafío mental
Completa el desafío.
¿Cuántas configuraciones de paellas posibles tendríamos al añadir la característica opcional 'alioli'?
¿Cuántas configuraciones de paellas posibles teníamos en la propuesta original, antes de añadir la característica opcional 'alioli'?
Si ahora añadimos la posibilidad de que se pueda incluir alioli en cada posible configuración, ¿el número de configuraciones posible aumenta o disminuye?
Si antes las posibilidades eran:
- Paella con arroz, caldo y carne
- Paella con arroz carne y marisco
- Paella con arroz, caldo y verdura
Ahora son:
- Paella con arroz, caldo y carne
- Paella con arroz, caldo, carne y alioli
- Paella con arroz carne y marisco
- Paella con arroz carne, marisco y alioli
- Paella con arroz, caldo y verdura
- Paella con arroz, caldo, verdura y alioli
Por tanto, ¿por qué número hemos multiplicado la cantidad de configuraciones posibles?
Reto 2: modelamos la variabilidad del configurador de relojes inteligentes
Ahora te toca a ti.
Queremos modelar un configurador de Smartwatch con estas reglas:
El producto raíz se llama Smartwatch. Todo smartwatch debe tener una pantalla, debe poder registrar al menos un deporte, y debe incluir un modo de gestión de energía.
- La pantalla puede ser exactamente una de estas opciones: LCD, OLED o EInk.
- Deportes (al menos uno debe estar incluido, pero puede incluir varios): Carrera, Natación y Ciclismo.
- Energía: Solar o Estándar
- Opciones extra: además, el smartwatch puede incluir (o no) GPS y PagoMóvil.
¿Podrías generar el modelo de características para este SmartWatch? Puedes hacerlo escribiendo su UVL o dibujando su representación gráfica. ¡O de los dos modos! Tú decides :-)
Una posible solución al Reto 2
Aquí te dejamos una posible solución a este segundo reto.
Este podría ser el modelo de características en UVL:
features
Smartwatch
mandatory
Pantalla
alternative
LCD
OLED
EInk
Deportes
optional
Carrera
Natacion
Ciclismo
Energia
alternative
Estandar
Solar
optional
GPS
PagoMovil
Y esta su representación gráfica: