En els últims anys el programari ha crescut de manera contínua en grandària i complexitat, convertint-se en un valor afegit de molts productes, un avantatge competitiu. El desenvolupament es pot veure clarament en empreses productores de productes industrials com a controls numèrics, electrodomèstics, etc. En aquests productes el programari ha passat de ser un element perifèric a ser l'element més important.
No obstant això, en general, el desenvolupament del programari continua sent el mateix en aquestes empreses. La majoria de les empreses desenvolupen un únic sistema per període. A més, s'estableix com a objectiu principal la finalització primerenca del producte, deixant de costat altres criteris com la qualitat. I en treballar perquè el producte acabi a temps, no tenen en compte la necessitat de mantenir el mateix sistema a l'hora de desenvolupar el sistema, per la qual cosa els canvis posteriors que es produeixen en el sistema són difícils. I com si fos poc, la majoria de les empreses continuen utilitzant metodologies antigues.
Això genera molts problemes i maldecaps en les empreses. El major problema pot ser la progressiva pèrdua de competitivitat. En les empreses que no han alterat el procés de desenvolupament del programari, la labor de la majoria dels empleats és el manteniment de sistemes desenvolupats prèviament, la fase de manteniment dels quals suposa més del 80% del cost total dels sistemes, per la qual cosa existeixen pocs recursos per al desenvolupament de nous sistemes. Això suposa una pèrdua de capacitat d'innovació.
Com el programari s'està fent cada dia més necessari, les empreses veuen la necessitat de canviar el procés de desenvolupament. Es tracta de reduir el cost de cada producte programari, millorar la qualitat del programari, reduir el temps de comercialització i, sobretot, reduir el cost de manteniment. I com aconseguir-ho? La reutilització i les línies de producte són la via.
La reutilització del programari sempre ha estat un dels objectius de l'Enginyeria del Programari. A la fi de la dècada de 1960 es van començar a utilitzar les subrutines, mentre que en la dècada dels 70 es van començar a utilitzar els mòduls i en la de 80 la programació orientada a objectes.
No obstant això, la reutilització era oportunista, és a dir, no planificada, realitzada individualment i de baix nivell. En la dècada dels 90 sorgeix la idea de desenvolupament basat en components. Aquesta filosofia proposava la reutilització d'unitats o components de major grandària, fent un pas ferma en la seva reutilització.
Els primers indicis sobre les línies de producte van aparèixer a la fi de la dècada dels 90 i l'interès s'ha disparat a partir de l'any 2000. Aborden una visió més àmplia que altres filosofies, ja que treballen en la reutilització planificada i estratègica, tenint en compte les seves característiques tècniques i criteris de negoci, buscant la industrialització del sector programari. En altres sectors industrials, com el d'automoció o la màquina eina, es va avançar molt abans per aquesta via, utilitzant en l'actualitat l'economia d'escala.
I en programari? Per què encara no ha arribat la industrialització? Falta de tecnologia, metodologia i eines de disseny adequades. Ara tenim a mà: Els productes .NET de CORBA, J2EE i Microsoft són l'exemple de les noves tecnologies i cada vegada hi ha més metodologia i eines de disseny.
Són sistemes programari intensiu amb unes característiques comunes que satisfan les necessitats d'una determinada àrea del mercat. Aquests sistemes es desenvolupen a partir de bases actives comunes seguint un procés prèviament establert.
Un actiu és un producte de treball que l'organització utilitza i reutilitza. Es dissenya per a la seva reutilització, integra la part comuna del domini i permet la versatilitat, és a dir, s'adapta a diferents situacions. Per tant, les bases actives constitueixen l'eix de la línia de producte. Arquitectura, component programari reutilitzable, models de domini, documents i casos de test són exemples de bases actives.
La clau de l'èxit d'una línia de producte es basa en la gestió sistemàtica dels canvis planificats. Per tant, és fonamental identificar, controlar i gestionar la variabilitat de la línia de producte, característica que separa als membres de la família.
Una línia de producte ha d'estar dirigida a un domini (àrea de coneixement amb terminologia comuna). I no tots els dominis són adequats per a l'aplicació de les línies de producte, és necessari que hi hagi sol·licitud d'aplicacions similars. En el desenvolupament dels productes d'aquest domini és imprescindible disposar de coneixements i experiència interna.
Les línies de producte suposen un canvi en el cicle de vida dels productes: des de la perspectiva de projecte anem a la vista de domini. En la vista de domini es poden distingir dues activitats: enginyeria de domini i enginyeria d'aplicacions o desenvolupament de productes.
En enginyeria de domini, després d'una exhaustiva anàlisi de productes, es desenvolupen actius reutilitzables. L'objectiu és identificar la part comuna i variable dels productes i crear la infraestructura o base necessària per a aconseguir el major grau de reutilització possible. Aquests actius recullen tota l'experiència i coneixement de les empreses sobre els productes. El principal actiu és l'arquitectura general dels productes, basada en la línia de producte. L'arquitectura d'una línia de producte abasta de manera global tots els productes.
No obstant això, l'enginyeria d'aplicacions té com a objectiu crear aplicacions, però no començant a zero, sinó utilitzant bases actives generades en enginyeria de domini.
A l'hora de desenvolupar els actius és beneficiós utilitzar un enfocament de desenvolupament basat en els components, és a dir, crear sistemes basats en els components, desenvolupar i emmagatzemar aquests components.
D'altra banda, és imprescindible tenir en compte una altra actuació, la gestió. Per a gestionar la línia de producte, tant a nivell tècnic com organitzatiu de l'empresa, és necessari garantir que el plantejament de la línia de producte va pel camí correcte i amb èxit. Així mateix, s'haurà de garantir l'adequació de la línia de producte a les noves circumstàncies.
L'estratègia de les línies de producte és aplicable a empreses de molt variat tipus i grandària: Empreses de desenvolupament de sistemes programari, consultores de programari i departaments de desenvolupament de programari intern.
Fins ara, la idea de les línies de producte es vinculava a les grans empreses, que podien dedicar més recursos i esforços al desenvolupament de la línia de producte. No obstant això, les petites empreses també poden aplicar-ho i obtenir beneficis econòmics si s'utilitzen versions ‘més lleugeres’
de les pràctiques utilitzades. A més, els canvis d'estructura i rol necessaris per a aplicar una línia de producte poden ser més fàcils en les petites empreses.
Per tant, amb l'estratègia que ofereix la filosofia de les línies de producte, les empreses dedicades a l'elaboració de programari podran realitzar una reutilització sistemàtica dels seus productes i obtenir avantatges competitius.
No es començarà a desenvolupar un nou sistema des de zero, sinó que ho desenvoluparan utilitzant bases actives ja existents, la qual cosa permetrà estalviar temps. Augmentar la quota de mercat, reduir costos, sistemes més fiables, satisfacció del client i menor temps de comercialització són els avantatges que ofereix aquesta metodologia de desenvolupament de programari.
Inversió que mereixLa posada en marxa d'una línia de producte requereix grans inversions i esforços. És necessari realitzar una anàlisi cost-benefici que contempli i controli els riscos entre altres. Les línies de producte requereixen una inversió inicial, però després s'obtenen beneficis en abaratir els productes. |
Metodologies
Existeixen diferents metodologies per al desenvolupament de línies de producte. Si s'analitzen les activitats a desenvolupar en una línia de producte: enginyeria de domini, enginyeria d'aplicacions, gestió i evolució, algunes metodologies ofereixen suport a tots els àmbits, mentre que unes altres es limiten a un àmbit concret. Entre les metodologies de suport a totes les activitats es troben: Premi (Product Line Programari Engineering), Coure, COPA (Component-Oriented Platform Architecting), FAST (Family-Oriented Abstraction, Specification and Translation). D'altra banda, FORM, SREB + FODA, etc. es limiten a enginyeria de domini i enginyeria d'aplicacions, sense tenir en compte la gestió i evolució. Existeixen metodologies que es limiten a actuacions més concretes: FODA (Feature-Oriented Domain Analysis) és una metodologia d'anàlisi de dominis per al disseny arquitectònic d'una línia de producte ADD (Attribute Driven Design) i FBAD (Functionality-Based Architectural Desing).
Reutilització: diverses opcions
Per al desenvolupament de productes programari amb característiques comunes, les organitzacions disposen de diverses opcions de diferents nivells de reutilització. Cadascuna d'aquestes opcions suposa una major inversió, però també un major grau de reutilització.
• Producte a producte: és la visió de sempre. Consisteix a desenvolupar cada producte des de zero.
• Infraestructura estandarditzada: consisteix en l'estandardització de la infraestructura de productes (amb sistema operatiu i components comercials habituals).
• Plataforma: Els productes es desenvolupen a partir d'una plataforma d'infraestructura estandarditzada que inclou les funcions comunes de tots els productes.
• Línia de productes programari: A més de la plataforma, el producte es basa en funcions comunes a la majoria dels productes; les funcions específiques d'un o diversos productes es desenvolupen quan el producte procedeix d'aquesta base.
• Base de producte configurable: És desenvolupar una
base per a la creació de productes. Aquesta base es pot configurar per a crear el producte. S'utilitza principalment en dominis estables.