A la indústria del programari hi ha algunes tendències que fan que el panorama de la producció en aquesta indústria vagi canviant. D’una banda, la reutilització de components i artefactes, la qual cosa es persegueix des de sempre en l’enginyeria del programari, evolucioni de ser una reutilització oportunista i ad-hoc a una reutilització planificada. Gran part de les empreses madures planifiquen com reutilitzar els seus actius i, encara que el “còpia i pega” continua sent una de les formes més freqüents de reutilització, es planifiquen altres formes de reaprofitar la feina feta en altres projectes, definint (micro)serveis, paquets o altres artefactes. En segon lloc, la variabilitat dels sistemes informàtics està passant d’una manera accelerada del maquinari al programari fins al punt d’arribar a virtualitzar components de maquinari com sensors, actuadors o fins i tot xarxes. Un mateix producte (per exemple un cotxe) pot tenir exactament el mateix maquinari i una gran diferència de valor segons el programari que té configurat. Això porta de manera natural a la tercera tendència i és que el nombre de punts de variabilitat dels sistemes creix per milers. Si pensem en una part d’un sistema informàtic, per exemple, el kernel de Linux, hi ha reports que situen entre 10.000 i 16.000 els possibles valors de configuració d’aquesta part d’un sistema. Si aquests punts de configuració fossin només amb valors booleans, voldria dir que tindríem moltes més possibles configuracions del nucli de Linux que el nombre total d’àtoms estimats que hi ha a tot l’univers.
Tot això ens porta a una de les tasques més complexes dins de la producció de programari que és la gestió de la complexitat. Els sistemes continuen creixent en funcionalitat, mida, abast i també en complexitat. Una possible aproximació per abordar la complexitat, la reutilització i la variabilitat en enginyeria de programari són les línies de producte programari (software product lines). La idea és relativament simple, no tan així la posada en marxa de la idea.
A la revolució industrial es va passar d’un paradigma de producció artesanal al que s’anomena producció en massa (mass production). La idea era que es podia produir un mateix producte estandarditzat de manera repetida amb molta eficiència usant per a això cadenes de muntatge. L’aparició de les TIC i l’automatització va permetre avançar en el procés de producció cap al que es coneix com a personalització en massa (mass customization) que parteix de produir béns o serveis amb un alt grau de personalització però fent-ho amb gairebé la mateixa eficiència que la producció en massa. Un exemple podria ser la producció de rellotges. Al començament els rellotges es produïen de manera artesanal, després van passar a produir-se en massa en un nombre reduït de models i actualment es produeixen infinitat de models personalitzats amb capacitat d’emmagatzemar informació i executar una multitud d’aplicacions. L’enginyeria de línies de producte programari no seria altra cosa que la personalització en massa dels productes programari.
Per poder abordar una estratègia de línies de producte programari en una organització cal que hi hagi un canvi d’enfocament en l’àmbit organitzacional, cosa que és un repte i sol ser una barrera. Per això cal centrar-se en un domini o dominis d’aplicació. Ja no produiríem programari de manera genèrica per a qualsevol classe de projecte, sinó que ho faríem dins d’un determinat domini, per exemple, faríem programari per a botigues de comerç electrònic.
Un cop determinat el domini en què produeixes, has d’identificar quines són les teves parts comunes i quines són les parts variables que esperes tinguin els teus productes. Aquí és on els models de característiques (feature models) poden servir per determinar quins són els productes que entraran dins de l’abast (scope) de la línia de productes i quins no. Aquests models són útils tant per interactuar amb els participants com per aspectes més tècnics com generar configuradors interactius o permetre l’anàlisi o el raonament automàtic amb els models per a la producció o depuració d’errors.
Les línies de producte són una aproximació interessant si una organització produeix productes semblants dins d’un mateix domini. Des de la xarxa de recerca TASOVA PLUS, on participen fins a 13 universitats, hem detectat, a través d’una enquesta amb més de 100 participants de la indústria de l’estat, que hi ha més necessitat de gestió de la variabilitat que coneixement sobre línies de producte programari. Per tant, tenim un gran repte a la comunitat per donar a conèixer els avenços tecnològics en aquest camp i continuar investigant.