Liñas de produto, novo paradigma de desenvolvemento de software

Até o momento, as empresas dedicadas á elaboración de software fabricaron os seus produtos de forma individual e desenvolveron sistemas completos a partir de cero, pero iso non é rendible. A industrialización chega agora ao mundo do software, onde os avances en tecnoloxía, metodoloxía e ferramentas de deseño permiten a súa reutilización. As liñas de produto son a clave.

Nos últimos anos o software creceu de forma continua en tamaño e complexidade, converténdose nun valor engadido de moitos produtos, una vantaxe competitiva. O desenvolvemento pódese ver claramente en empresas produtoras de produtos industriais como controis numéricos, electrodomésticos, etc. Nestes produtos o software pasou de ser un elemento periférico a ser o elemento máis importante.

Con todo, en xeral, o desenvolvemento do software segue sendo o mesmo nestas empresas. A maioría das empresas desenvolven un único sistema por período. Ademais, establécese como obxectivo principal a finalización temperá do produto, deixando de lado outros criterios como a calidade. E ao traballar para que o produto termine a tempo, non teñen en conta a necesidade de manter o mesmo sistema á hora de desenvolver o sistema, polo que os cambios posteriores que se producen no sistema son difíciles. E coma se fose pouco, a maioría das empresas seguen utilizando metodoloxías antigas.

Isto xera moitos problemas e quebradizos de cabeza nas empresas. O maior problema pode ser a progresiva perda de competitividade. Nas empresas que non alteraron o proceso de desenvolvemento do software, o labor da maioría dos empregados é o mantemento de sistemas desenvolvidos previamente, cuxa fase de mantemento supón máis do 80% do custo total dos sistemas, polo que existen poucos recursos paira o desenvolvemento de novos sistemas. Isto supón una perda de capacidade de innovación.

Como o software está a facerse cada día máis necesario, as empresas ven a necesidade de cambiar o proceso de desenvolvemento. Trátase de reducir o custo de cada produto software, mellorar a calidade do software, reducir o tempo de comercialización e, sobre todo, reducir o custo de mantemento. E como conseguilo? A reutilización e as liñas de produto son a vía.

Obxectivo de sempre

A reutilización do software sempre foi un dos obxectivos da Enxeñaría do Software. A finais da década de 1960 empezáronse a utilizar as subrutinas, mentres que na década dos 70 empezáronse a utilizar os módulos e na de 80 a programación orientada a obxectos.

Con todo, a reutilización era oportunista, é dicir, non planificada, realizada individualmente e de baixo nivel. Na década dos 90 xorde a idea de desenvolvemento baseado en compoñentes. Esta filosofía propuña a reutilización de unidades ou compoñentes de maior tamaño, dando un paso firme na súa reutilización.

Os primeiros indicios sobre as liñas de produto apareceron a finais da década dos 90 e o interese disparouse a partir do ano 2000. Abordan una visión máis ampla que outras filosofías, xa que traballan na reutilización planificada e estratéxica, tendo en conta as súas características técnicas e criterios de negocio, buscando a industrialización do sector software. Noutros sectores industriais, como o de automoción ou a máquina ferramenta, avanzouse moito antes por esta vía, utilizando na actualidade a economía de escala.

E en software? Por que aínda non chegou a industrialización? Falta de tecnoloxía, metodoloxía e ferramentas de deseño adecuadas. Agora temos a man: Os produtos .NET de CORBA, J2EE e Microsoft son o exemplo das novas tecnoloxías e cada vez hai máis metodoloxía e ferramentas de deseño.

Que son as liñas de produtos software?

Son sistemas software intensivos cunhas características comúns que satisfán as necesidades dunha determinada área do mercado. Estes sistemas desenvólvense a partir de bases activas comúns seguindo un proceso previamente establecido.

Un activo é un produto de traballo que a organización utiliza e reutiliza. Deséñase paira a súa reutilización, integra a parte común do dominio e permite a versatilidade, é dicir, adáptase a diferentes situacións. Por tanto, as bases activas constitúen o eixo da liña de produto. Arquitectura, compoñentes software reutilizables, modelos de dominio, documentos e casos de test son exemplos de bases activas.

A clave do éxito dunha liña de produto baséase na xestión sistemática dos cambios planificados. Por tanto, é fundamental identificar, controlar e xestionar a variabilidade da liña de produto, característica que separa aos membros da familia.

Una liña de produto debe estar dirixida a un dominio (área de coñecemento con terminología común). E non todos os dominios son adecuados paira a aplicación das liñas de produto, é necesario que haxa solicitude de aplicacións similares. No desenvolvemento dos produtos deste dominio é imprescindible dispor de coñecementos e experiencia interna.

As liñas de produto supoñen un cambio no ciclo de vida dos produtos: desde a perspectiva de proxecto imos á vista de dominio. Na vista de dominio pódense distinguir dúas actividades: enxeñaría de dominio e enxeñaría de aplicacións ou desenvolvemento de produtos.

En enxeñaría de dominio, tras unha exhaustiva análise de produtos, desenvólvense activos reutilizables. O obxectivo é identificar a parte común e variable dos produtos e crear a infraestrutura ou base necesaria paira alcanzar o maior grao de reutilización posible. Estes activos recollen toda a experiencia e coñecemento das empresas sobre os produtos. O principal activo é a arquitectura xeral dos produtos, baseada na liña de produto. A arquitectura dunha liña de produto abarca de forma global todos os produtos.

Con todo, a enxeñaría de aplicacións ten como obxectivo crear aplicacións, pero non empezando a cero, senón utilizando bases activas xeradas en enxeñaría de dominio.

Á hora de desenvolver os activos é beneficioso utilizar un enfoque de desenvolvemento baseado nos compoñentes, é dicir, crear sistemas baseados nos compoñentes, desenvolver e almacenar devanditos compoñentes.

Doutra banda, é imprescindible ter en conta outra actuación, a xestión. Paira xestionar a liña de produto, tanto a nivel técnico como organizativo da empresa, é necesario garantir que a formulación da liña de produto vai polo camiño correcto e con éxito. Así mesmo, deberase garantir a adecuación da liña de produto ás novas circunstancias.

Actividades de liñas de produto.

Paira empresas de todo tipo e tamaño

A estratexia das liñas de produto é aplicable a empresas de moi variado tipo e tamaño: Empresas de desenvolvemento de sistemas software, consultoras de software e departamentos de desenvolvemento de software interno.

Até agora, a idea das liñas de produto vinculábase ás grandes empresas, que podían dedicar máis recursos e esforzos ao desenvolvemento da liña de produto. No entanto, as pequenas empresas tamén poden aplicalo e obter beneficios económicos si utilízanse versións ‘máis lixeiras’
das prácticas utilizadas. Ademais, os cambios de estrutura e rol necesarios paira aplicar una liña de produto poden ser máis fáciles nas pequenas empresas.

Por tanto, coa estratexia que ofrece a filosofía das liñas de produto, as empresas dedicadas á elaboración de software poderán realizar una reutilización sistemática dos seus produtos e obter vantaxes competitivas.

Non se empezará a desenvolver un novo sistema desde cero, senón que o desenvolverán utilizando bases activas xa existentes, o que permitirá aforrar tempo. Aumentar a cota de mercado, reducir custos, sistemas máis fiables, satisfacción do cliente e menor tempo de comercialización son as vantaxes que ofrece esta metodoloxía de desenvolvemento de software.

Investimento que merece

A posta en marcha dunha liña de produto require grandes investimentos e esforzos. É necesario realizar unha análise custo-beneficio que contemple e controle os riscos entre outros. As liñas de produto requiren una investimento inicial, pero logo obtéñense beneficios ao abaratar os produtos.


Metodoloxías

Existen diferentes metodoloxías paira o desenvolvemento de liñas de produto. Se se analizan as actividades a desenvolver nunha liña de produto: enxeñaría de dominio, enxeñaría de aplicacións, xestión e evolución, algunhas metodoloxías ofrecen apoio a todos os ámbitos, mentres que outras se limitan a un ámbito concreto. Entre as metodoloxías de apoio a todas as actividades atópanse: PULSE (Product Line Software Engineering), Cobre, COPA (Component-Oriented Platform Architecting), FAST (Family-Oriented Abstraction, Specification and Translation). Por outra banda, FORM, SREB + FODA, etc. limítanse a enxeñaría de dominio e enxeñaría de aplicacións, sen ter en conta a xestión e evolución. Existen metodoloxías que se limitan a actuacións máis concretas: FODA (Feature-Oriented Domain Analysis) é una metodoloxía de análise de dominios paira o deseño arquitectónico dunha liña de produto ADD (Attribute Driven Design) e FBAD (Functionality-Based Architectural Desing).


Reutilización: varias opcións

Paira o desenvolvemento de produtos software con características comúns, as organizacións dispoñen de varias opcións de diferentes niveis de reutilización. Cada una destas opcións supón una maior investimento, pero tamén un maior grao de reutilización.

• Produto a produto: é a visión de sempre. Consiste en desenvolver cada produto desde cero.

Infraestrutura estandarizada: consiste na estandarización da infraestrutura de produtos (con sistema operativo e compoñentes comerciais habituais).

Plataforma: Os produtos desenvólvense a partir de una plataforma de infraestrutura estandarizada que inclúe as funcións comúns de todos os produtos.

• Liña de produtos software: Ademais da plataforma, o produto baséase en funcións comúns á maioría dos produtos; as funcións específicas dun ou varios produtos desenvólvense cando o produto procede de devandita base.

• Base de produto configurable: É desenvolver una
base paira a creación de produtos. Esta base pódese configurar paira crear o produto. Utilízase principalmente en dominios estables.

Babesleak
Eusko Jaurlaritzako Industria, Merkataritza eta Turismo Saila