Líneas de producto software

Moving to English this page is a hard work for me. It will be done, but, in the meantime, use Google for a basic tranlation.

Lineas de Producto Software en el SEI

La serie de conferencias promovidas por SEI

Historial de las conferencias

ESI (European Software Institute) y SPL

Desde la década de los 70 del siglo veinte, y tan pronto como el desarrollo de la producción de software alcanzó gran escala y mejoró sus herramientas, distintos teóricos y participantes de la industria se orientaron hacia la construcción del software con técnicas, métodos y recursos que asemejaran a las usuales en la industria de manufacturas. Bob Bemer muy tempranamente, pero ya en un ambiente que tendía hacia estos objetivos, habló de Software Factories. David Parnas agrega unos años después (1976) la idea de familia de programas. Casi dos décadas de intentos (Hitachi, NEC, Toshiba, Fujitsu, en los 70) afinaron los conceptos, que se consolidan en los años 90 con la discusión del desarrollo de software como líneas de producto, con la activa participación de The Software Engineering Institute (SEI), e investigadores provinientes del mundo académico y las empresas. El SEI promueve las conferencias SPLC que coordinan estos esfuerzos junto a otras iniciativas.

Qué es una Línea de producto software

El SEI define brevemente el concepto de esta manera:

A software product line is a set of software-intensive systems that share a common, managed set of features satisfying the specific needs of a particular market segment or mission and that are developed from a common set of core assets in a prescribed way.
(Una línea de producto software es un conjunto de sistemas que comparten un común grupo de características que satisfacen las necesidades específicas de un segmento particular de mercado o misión, y que son desarrolladas a partir de un conjunto común de activos , de una manera prescripta).

En palabras de C.W.Krueger, Lineas de Producto Software refiere a técnicas de ingeniería para la creación de una cartera de sistemas similares a partir de un conjunto base de activos de software mediante un esquema común de producción, siguiendo técnicas bien conocidas en la industria de manufacturas: Los fabricantes han utilizado técnicas de ingeniería análogas para crear una línea de productos de productos similares utilizando una fábrica que monta y configura las partes destinadas a volver a ser utilizadas en los diferentes productos de la línea. Por ejemplo, los fabricantes de automóviles hoy pueden crear decenas de miles de variaciones de un único modelo de coche utilizando un único conjunto de piezas cuidadosamente pensadas, en una fábrica específicamente diseñada para configurar y ensamblar las partes.

Características de las Líneas de Producto Software

Como se ha dicho, el objetivo de una línea de producto es obtener economías importantes en la construcción del software, logrando confiabilidad, repetitividad, reusabilidad, para producir distintos productos con mínimos cambios, a partir de un patrimonio común de software. En esta definición se enumeran varias de las características buscadas de las líneas de producto:

Dos elementos básicos caracterizan una línea de producto: la comunidad de propiedades, lo que determina una familia de productos, y la variabilidad, el planemamiento de las variaciones entre sus componentes. Una diferencia propia de los objetivos de SPL, es que cuando se diseña el software la comunidad de propiedades de los productos se buscan deliberadamente, y la variabilidad se planea: los puntos de variación son analizados para explotar la organización de familias de productos. Con estos elementos, se puede interpretar más ampliamente esta definición de SPL en el SEI:

This definition is consistent with the definition traditionally given for any product line. But it adds more: it puts constraints on the way in which the systems in a software product line are developed. Why? Because substantial production economies can be achieved when the systems in a software product line are developed from a common set of assets in a prescribed way, in contrast to being developed separately, from scratch, or in an arbitrary fashion. It is exactly these production economies that make the software product line approach attractive.
(...) The common set of assets and the plan for how they are used to build products don't just materialize without planning, and they certainly don't come free. They require organizational foresight, investment, planning, and direction. They require strategic thinking that looks beyond a single product. The disciplined use of the common assets to build products doesn't just happen either. Management must direct, track, and enforce the use of the assets. Software product lines are as much about business practices as they are about technical practices. Software product lines give economies of scope, which means that you take economic advantage of the fact that many of your products are very similar–not by accident, but because you planned it that way. You make deliberate, strategic decisions and are systematic in effecting those decisions.

Se puede decir que el concepto de SPL sólo es posible aplicando las técnicas más avanzadas desarrolladas en la última década tanto en la planificación del ciclo de construcción del software, como en las técnicas de diseño, modelado y generación. En éstas páginas se conversará sobre los distintos métodos y concepciones actuales para contruír líneas de producto.