Ingeniería para una Familia de Producto

Las organizaciones actuales en este mercado del desarrollo de software tienen que privilegiar algunos factores claves para el desarrollo de soluciones de software donde el escenario arquitectónico juega un rol preponderante y crítico, desde mi punto de vista:

  • Analizar los cambios severos del mercado actual
  • Definir una estrategia con respecto al avance tecnológico
  • Privilegiar las necesidades del negocio

Esta realidad nos lleva a deducir que nuestra solución tiene que tener un balance en costo, calidad y debe salir al mercado en un tiempo aceptable.

El interrogante es, ¿Como preparamos este escenario de desarrollo de soluciones tecnológicas?

La propuesta es introducirnos en el concepto de Familia de Productos, veamos este gráfico:


Figura 1 - Managing the complexity of variability in software product families, Deelstra –Sinnema

El escenario propuesto supone una categorización para ubicarnos en qué tipo de sofisticación queremos lograr en el desarrollo de la solución, pero para lograr esto tenemos que tener claro que dentro del desarrollo de familias de producto debemos manejar dos conceptos radicalmente importantes, ingeniería de aplicación e ingeniería de dominio, veamos:


Figura 2 – Product derivation in software product families - A case study, Deelstra –Sinnema

Particularmente el desarrollo tradicional opera sobre la ingeniería de aplicación, entonces nuestro trabajo tiene que tender a evolucionar en la ingeniería de dominio.

La ingeniería de aplicación trata la tradicional derivación de la solución de software, pero el interrogante es:

¿Que trata la ingeniería de dominio?

"Básicamente centra su atención en identificar igualdades y diferencias entre productos de la misma familia implementados en artefactos compartidos"

Una vez definidos los marcos veamos la categorización propuesta por reuso:


Figura 3 - Product derivation in software product families - A case study, Deelstra –Sinnema

Si categorizamos nuestra familia desde el ámbito de reuso tendríamos una infraestructura estandarizada en el primer escalón, luego ya empezaríamos a definir una plataforma, seguiríamos con una familia de producto y el escalón mas alto sería lograr una familia configurable de producto.

Existe una complejidad inherente para el desarrollo de familias de producto, por este motivo la idea del trabajo radica en presentar metodologías que permitan este tipo de soluciones, existen muchas problemáticas para abordar dentro del tópico pero voy a dar una visión particular sobre la variabilidad y la gestión de la variabilidad dentro de una familia de producto:

Para este objetivo solo voy a presentar las metodologías analizadas y en entregas posteriores confeccionaré un análisis e incluso implementaciones sobre cada uno de las propuestas…

Dentro de las metodologías para el tratamiento de la variabilidad podemos encontrar:

  • COVAMOF
  • ConIPF (Configuration in industrial product Families)
  • Pure Variants
  • CBFM
  • VSL
  • Koalish

Particularmente el desarrollo lo voy a orientar a COVAMOF, donde el detalle del estudio se edifica en:


Figura 4 – Variability assessment in software product families, Deelstra –Sinnema

El proceso de derivación aplicando COVAMOF, el método de evaluación y la suite de trabajo con su lenguaje respectivo.

Este es el segmento inicial de una seria de trabajos,

Espero les sea de utilidad…

Entradas más populares de este blog

7 arquetipos #Polymer 1.0 puntos esenciales prácticos

El potencial de la nube en 5 pasos desde Buenos Aires y junto al ecosistema regional

Iniciando la representación de una mobile-web-page pensando en el rendimiento - Parte 1