Produktu-lerroak, softwarea garatzeko paradigma berria

Orain artean, softwaregintzan diharduten enpresetan banaka egin dituzte produktuak, eta sistema osoak zerotik hasita garatu dituzte, baina hori, noski, ez da errentagarria. Oraintxe ari da iristen industrializazioa software-mundura: teknologiaren, metodologiaren eta diseinu-tresnen aurrerapausoei esker, berrerabiltzea posible da. Produktu-lerroak dira gakoa.

Azken urteetan, softwarea etengabe handitu da tamainan eta konplexutasunean; produktu askoren balio erantsia bilakatu da, lehiatzeko abantaila. Garapena argi ikus daiteke produktu industrialak ekoizten dituzten enpresetan (adibidez, zenbakizko kontrolak, etxetresna elektrikoak…). Produktu horietan softwarea elementu periferiko bat izatetik elementu garrantzitsuena izatera pasatu da.

Alabaina, oro har softwarearen garatze-prozesua lehengo bera da enpresa horietan. Enpresa gehienek sistema bakarra garatzen dute aldi bakoitzeko. Gainera, produktua garaiz bukatzea jartzen da helburu nagusitzat, beste irizpide batzuk alde batera utziz, kalitatea, esate baterako. Eta produktua garaiz bukatzeko egiten dutenez lan, sistema garatzeko orduan ez dute kontuan hartzen sistema bera mantendu beharra dagoela; horrenbestez, sisteman egiten diren ondorengo aldaketak nekezak dira. Eta, hori gutxi balitz bezala, enpresa gehienek metodologia zaharrak erabiltzen jarraitzen dute.

Horrek arazo eta buruhauste asko sortzen ditu enpresetan. Poliki-poliki lehiakortasuna galtzen joatea da, beharbada, arazorik larriena. Softwarea garatzeko prozesua aldatu ez duten enpresetan, langile gehienen lana aurrez garatutako sistemak mantentzea da —sistemen kostu osoaren % 80 baino gehiago hartzen du mantentze-faseak— eta, beraz, baliabide gutxi daude sistema berriak garatzeko. Hori dela eta, berrikuntza-gaitasuna galtzen da.

Softwarea egunetik egunera beharrezkoagoa bilakatzen ari denez, enpresek garatze-prozesua aldatzeko beharra ikusten dute. Izan ere, software-produktu bakoitzaren kostua murriztea nahi dute, softwarearen kalitatea hobetzea, merkaturatze-denbora laburtzea eta, batez ere, mantentze-lanen kostua gutxitzea. Eta nola lortu hori? Berrerabiltzea eta produktu-lerroak dira horretarako bidea.

Betiko helburua

Softwarea berrerabiltzea betidanik izan da Software Ingeniaritzaren helburuetariko bat. 1960ko hamarkadaren bukaeran azpierrutinak erabiltzen hasi ziren; 70eko hamarkadan, berriz, moduluak, eta 80koan objektuei zuzendutako programazioa.

Hala ere, berrerabiltzea oportunista zen, hau da, planifikatu gabea, indibidualki egina eta maila baxukoa. 90eko hamarkadan, osagaietan oinarritutako garapenaren ideia sortu zen. Filosofia hark tamaina handiagoko unitateak edo osagaiak berrerabiltzea proposatzen zuen, eta aurrerapauso sendo bat eman zuen berrerabiltzean.

Produktu-lerroei buruzko lehendabiziko zantzuak 90eko hamarkadaren bukaeran agertu ziren, eta interesa izugarri handitu da 2000. urtetik aurrera. Aurreko filosofiek baino ikuspegi zabalagoa jorratzen dute, berrerabiltze planifikatu eta estrategikoa lantzen dutelako: ezaugarri teknikoak eta negozio-irizpideak kontuan hartzen dituzte, eta software-sektorearen industrializazioa dute helburu. Beste industria-sektore batzuetan, automobilgintzan eta makina-erremintan adibidez, askoz lehenago jo zuten bide horretatik: eskala-ekonomia erabiltzen dute egun.

Eta softwaregintzan? Zergatik ez da iritsi oraindik industrializazioa? Teknologia, metodologia eta diseinu-tresna egokiak falta ziren. Orain, ordea, eskura ditugu: CORBA, J2EE eta Microsoft-en .NET produktuak dira teknologia berrien adibide, eta metodologia eta diseinu-tresnak ere gero eta gehiago daude.

Zer dira software-produktuen lerroak?

Ezaugarri komun batzuk dituzten software-sistema intentsiboak dira, eta merkatuaren alor jakin baten beharrak asetzen dituzte. Sistema horiek oinarri aktibo komunetatik abiatuta garatzen dira, aurrez erabakitako prozesuari jarraituz.

Aktibo bat erakundeak erabiltzen eta berrerabiltzen duen lan-produktu bat da. Berrerabiltzeko diseinatzen da, domeinuaren parte komuna hartzen du bere baitan eta aldakortasuna ahalbidetzen du, hau da, egoera desberdinetara egokitzen da. Beraz, oinarri aktiboek produktu-lerroaren ardatza osatzen dute. Arkitektura, software-osagarri berrerabilgarriak, domeinu-ereduak, dokumentuak eta test-kasuak oinarri aktiboen adibideak dira.

Produktu-lerro baten arrakastaren gakoa planifikatutako aldakuntzen kudeaketa era sistematikoan egitean datza. Beraz, funtsezkoa da produktu-lerroaren aldakortasuna (familiako kideak elkarrengandik bereizten dituen ezaugarria) identifikatzea, kontrolatzea eta kudeatzea.

Produktu-lerro batek domeinu (terminologia komuna duen jakintza-arloa) batera zuzenduta egon behar du. Eta domeinu guztiak ez dira egokiak produktu-lerroak aplikatzeko, beharrezkoa da antzeko aplikazioen eskaera egotea. Domeinu horretako produktuen garapenean ezinbestekoa da barne-ezagutza eta esperientzia edukitzea.

Produktu-lerroek aldaketa dakarte produktuen bizitza-zikloan: proiektu-ikuspegitik domeinu-ikuspegira goaz. Domeinu-ikuspegian bi jarduera bereiz daitezke: domeinu-ingeniaritza eta aplikazio-ingeniaritza edo produktuen garapena.

Domeinu-ingeniaritzan, produktuen analisi sakona egin ondoren, aktibo berrerabilgarriak garatzen dira. Helburua produktuen parte komuna eta aldakorra identifikatu eta ahal den berrerabiltze-maila altuena lortzeko beharrezko azpiegitura edo oinarria sortzea da. Aktibo horiek enpresek produktuei buruz duten esperientzia eta ezagutza guztia biltzen dute. Aktibo nagusia produktuen arkitektura orokorra da, eta produktu-lerroak hori du oinarri. Produktu-lerro baten arkitekturak produktu guztiak hartzen ditu aintzat, modu orokor batean.

Aplikazio-ingeniaritzaren helburua, aldiz, aplikazioak sortzea da, baina ez zerotik hasita, baizik eta domeinu-ingeniaritzan sortutako oinarri aktiboak erabiliz.

Aktiboak garatzeko orduan, onuragarria da osagaitan oinarritutako garapenaren ikuspegia erabiltzea, hau da, osagaitan oinarritutako sistemak sortu eta osagai horiek garatu eta gordetzea.

Bestalde, ezinbestekoa da beste jarduera bat kontuan hartzea, kudeaketa hain zuzen ere. Produktu-lerroa kudeatzeko, bai maila teknikoan bai enpresaren antolaketan, produktu-lerroaren planteamendua bide egokitik eta arrakastaz doala bermatu beharra dago. Horrekin batera, produktu-lerroa egoera berrietara ongi egokitzen dela bermatu beharra dago.

Produktu-lerroen jarduerak.

Mota eta tamaina askotako enpresentzat

Produktu-lerroen estrategia mota eta tamaina askotako enpresetan aplika daiteke: Software-sistemak garatzen dituzten enpresetan, software-aholkularitzako enpresetan eta barne-softwarea garatzen duten departamentuetan.

Orain arte, produktu-lerroen ideia enpresa handiekin lotzen zen, baliabide eta ahalegin gehiago bidera zezaketelako produktu-lerroa garatzeko. Hala ere, enpresa txikiek ere aplika dezakete, eta etekin ekonomikoak lortu, erabiltzen diren praktiken bertsio ‘arinagoak‘
erabiliz gero. Gainera, produktu-lerro bat aplikatzeko beharrezkoak diren egitura- eta rol-aldaketak errazagoak izan daitezke enpresa txikietan.

Beraz, produktu-lerroen filosofiak eskaintzen duen estrategiarekin, softwaregintzan diharduten enpresek posible izango dute berrerabiltze sistematikoa egitea beren produktuetan, eta lehiakortasun-abantailak lortzea.

Ez dira hasiko sistema berri bat zerotik garatzen, baizik eta aurretik eginak dauden oinarri aktiboak erabiliz garatuko dute, eta, hala, denbora aurreztuko dute. Merkatu-kuota handitzea, kostuak gutxitzea, sistema fidagarriagoak, bezeroa gustura geratzea eta merkaturatze-denbora laburragoa dira softwarea garatzeko metodologia horrek eskaintzen dituen abantailak.

Merezi duen inbertsioa

Produktu-lerro bat abiarazteko, inbertsio eta ahalegin handiak egin behar dira. Beharrezkoa da kostua-onura analisi bat egitea, eta, besteak beste, arriskuak kontuan hartzea eta kontrolatzea. Produktu-lerroek inbertitzea eskatzen dute hasieran, baina gero etekinak lortzen dira produktuak merkeagoak direlako.


Metodologiak

Produktu-lerroak garatzeko hainbat metodologia daude. Produktu-lerro batean jorratu beharreko jarduerak –domeinu-ingeniaritza, aplikazio-ingeniaritza, kudeaketa eta eboluzioa– aztertuz gero, metodologia batzuek esparru guztietarako laguntza eskaintzen dute, eta beste batzuk, aldiz, esparru zehatz batera mugatzen dira. Jarduera guztietarako laguntza eskaintzen duten metodologien artean, hauek aurki ditzakegu: PuLSE (Product Line Software Engineering), KobrA, COPA (Component-Oriented Platform Architecting), FAST (Family-Oriented Abstraction, Specification and Translation). Bestalde, FORM, SREB + FODA eta abar domeinu-ingeniaritzara eta aplikazio-ingeniaritzara mugatzen dira, kudeaketa eta eboluzioa kontuan hartu gabe. Badaude jarduera zehatzagoetara mugatzen diren metodologiak ere: FODA (Feature-Oriented Domain Analysis) domeinuak aztertzeko metodologia da, eta ADD (Attribute Driven Design) zein FBAD (Functionality-Based Architectural Desing) produktu-lerro baten diseinu arkitektonikorako metodologiak dira.


Berrerabiltzea: hainbat aukera

Ezaugarri komunak dituzten software-produktuak garatzeko, berrerabiltze-maila ezberdinetako hainbat aukera dituzte erakundeek. Aukera horietako bakoitzak inbertsio handiagoa eskatzen du, baina berrerabiltze-maila ere handiagoa da.

Produktuz produktu: betiko ikuspegia da. Produktu bakoitza zerotik hasita garatzean datza.

Azpiegitura estandarizatua: produktuen azpiegitura estandarizatzean datza (azpiegiturak sistema eragilea eta ohiko osagai komertzialak ditu).

Plataforma: Produktuak plataforma bat oinarritzat hartuz garatzen dira; plataforma horrek azpiegitura estandarizatua izan ohi du, eta produktu guztien funtzio komunak ere biltzen ditu.

Software-produktuen lerroa: Plataformaz gainera, produktu gehientsuenentzat komunak diren funtzioak hartzen dira produktu oinarritzat; produktu baten edo gutxi batzuen funtzio zehatzak produktua oinarri horretatik eratortzen denean garatzen dira.

Produktu-oinarri konfiguragarria: Produktuak sortzeko
oinarri bat garatzea da. Oinarri hori konfiguratu egin daiteke produktua sortzeko. Domeinu egonkorretan erabiltzen da batez ere.

Babesleak
Eusko Jaurlaritzako Industria, Merkataritza eta Turismo Saila