Las líneas de productos de software ( SPL ), o desarrollo de líneas de productos de software, se refieren a métodos, herramientas y técnicas de ingeniería de software para crear una colección de sistemas de software similares a partir de un conjunto compartido de activos de software utilizando un medio de producción común . [1] [2]
El Instituto de Ingeniería de Software Carnegie Mellon define una línea de productos de software como "un conjunto de sistemas intensivos en software que comparten un conjunto común y administrado de características que satisfacen las necesidades específicas de un segmento de mercado o una misión en particular y que se desarrollan a partir de un conjunto común de activos básicos de una manera prescrita". [3]
Los fabricantes llevan mucho tiempo empleando técnicas de ingeniería análogas para crear una línea de productos similares utilizando una fábrica común que ensambla y configura piezas diseñadas para ser reutilizadas en toda la línea de productos. Por ejemplo, los fabricantes de automóviles pueden crear variaciones únicas de un modelo de coche utilizando un único conjunto de piezas cuidadosamente diseñadas y una fábrica diseñada específicamente para configurar y ensamblar esas piezas.
La característica que distingue a las líneas de productos de software de los esfuerzos anteriores es la reutilización predictiva versus la oportunista del software . En lugar de colocar componentes de software generales en una biblioteca con la esperanza de que surjan oportunidades de reutilización, las líneas de productos de software solo requieren que se creen artefactos de software cuando se predice la reutilización en uno o más productos de una línea de productos bien definida. [4]
Los avances recientes en el campo de las líneas de productos de software han demostrado que la aplicación estrecha y estratégica de estos conceptos puede producir mejoras de orden de magnitud en la capacidad de ingeniería de software. [ cita requerida ] El resultado es a menudo un salto discontinuo en la ventaja comercial competitiva [ cita requerida ] , similar al que se observa cuando los fabricantes adoptan paradigmas de producción en masa y personalización en masa .
Si bien los primeros métodos de línea de productos de software que se usaron en el origen de este campo proporcionaron las mejores métricas de mejora de la ingeniería de software que se han visto en cuatro décadas, la última generación de métodos y herramientas de línea de productos de software están mostrando mejoras aún mayores. Los métodos de nueva generación están ampliando los beneficios más allá de la creación de productos y abarcando el mantenimiento y la evolución , reduciendo la complejidad general del desarrollo de la línea de productos, aumentando la escalabilidad de las carteras de líneas de productos y permitiendo a las organizaciones realizar la transición a la práctica de la línea de productos de software con órdenes de magnitud menores de tiempo, costo y esfuerzo.
Recientemente, los conceptos de líneas de productos de software se han ampliado para abarcar los sistemas y la ingeniería de software de manera integral. Esto se refleja en el surgimiento de familias de estándares industriales como ISO 265xx sobre prácticas de ingeniería de sistemas y software para líneas de productos. [5]