Thomas Gustafsson, Henrik Heikkilä Software product lines Metropolia Ammattikorkeakoulu Insinööri (AMK) Tietotekniikan koulutusohjelma Asiantuntijateksti 17.11.2013
Sisällys 1 Johdanto 1 2 Software product lines 1 3 Kehitystavan hyödyt 2 4 Kehitystavan haitat 3 Lähteet 4
1 1 Johdanto Tämä on kirjallinen katsaus software product lines:iin eli ohjelmistotuotelinjan käsitteeseen ja toimintaan, sekä sen hyötyihin ja haittoihin ohjelmistotuotannossa. Kyseisestä aiheesta oli yllättävän vaikea löytää tietoa, sillä esimerkiksi määritelmänä lähestulkoon kaikissa artikkeleissa ja dokumenteissa oli suora lainaus lähteestä numero 1. Myöskään yleispätevää, vain asiasta kertovaa kirjaa ei löytynyt. 2 Software product lines Software product lines:lla (SPL) eli ohjelmistotuotelinjalla tarkoitetaan erilaisia metodeja ja työkaluja jotta saataisiin muodostettua yhteiskäytettävää koodia eri sovelluksissa. [1] Ideana on, että samankaltaisissa ohjelmistoissa käytettäisiin samankaltaista perusrakennetta eli pyrittäisiin mahdollisimman laajamittaiseen uudelleenkäyttöön. Tavoitteena on vähentää suunnittelun ja toteutuksen vaatimaa työtä sekä tehostaa uusien ohjelmistojen kokoamista. [5, s. 14] Varsinaisesti kloonaamisesta ei silti ole kyse, koodia on kuitenkin tarkoitus soveltaa käyttökohteeseensa. Ohjelmistotuotelinjoilla ei myöskään tarkoiteta vain uudelleenkäytettäviä kirjastoja kuten algoritmejä, moduuleja, objekteja tai komponentteja [4, s. 24], vaan tarkoituksena on käyttää strategisesti ja suunnitellusti hyödyksi uudelleen koodia ennakoitavilla tuloksilla. Ohjelmistotuotelinjoja käytetään laajamittaisesti esimerkiksi matkapuhelimien, erilaisten taloussovelluksien, monien samankaltaisten oheislaitteiden kuten tulostimien, lääketieteellisten laitteiden ja niin edelleen kanssa. [4, s. 25-26] Ohjelmistotuotelinjalla saadaan aikaan koodia, jota voidaan käyttää monissa tuotteissa ja tuoteversioissa. Tällaisen toimintamallin käyttöönotto on kuitenkin alkuun työläämpää ja kalliimpaa, jolloin ensimmäisten tuotteiden valmistuskustannukset ovat korkeammat. Pidemmän päälle se kuitenkin maksaa itsensä takaisin, sillä seuraavilla tuotteilla, tai rinnakkaisesti kehitetyillä tuotteilla voidaan käyttää samoja koodin osia sen sijaan että tehtäisi ne kokonaan uudelleen, jolloin säästetään aikaa, vaivaa ja rahaa. [3, s. 25]
2 Esimerkiksi jollakin käyttöjärjestelmällä tai ohjelmistolla voi olla monia eri versioita, joilla on eri ominaisuuksia, mutta perusrakenne on niissä sama. Jollakin käyttöjärjestelmällä voi olla vaikka kaksi versiota, toinen tarkoitettu perus kotikäyttöön, ja toinen yrityskäyttöön. Luonnollisesti näillä on eri käyttötarkoitukset, jolloin niiden sisältö eroaa suuresti, mutta niillä on silti monia yhteisiä piirteitä, joissa voidaan käyttää samoja koodin osia. [4, s. 7] 3 Kehitystavan hyödyt Useille ohjelmistoyrityksille ohjelmistotuotelinjan käyttöönotto on kannattava ratkaisu ja siitä voidaan saada muun muassa seuraavanlaiset hyödyt: [4, s. 31] Aikaansaadaan ohjelmiston osia, joita voidaan käyttää uudelleen muissa tuotteissa. Pidemmän päälle halvempi ratkaisu. Samankaltaisten kokonaisuuksien tuottaminen nopeampaa ja helpompaa. Pienemmällä työmäärällä ja/tai henkilöstöllä saadaan enemmän tuotteita. Useasti tuottaa laadukkaampaa koodia. Mahdollisuus siirtyä nopeasti uusille markkina-alueille. Yleisin syy ohjelmistotuotelinjan käyttöönottoon ovat säästöt [1], mutta kuten yllä nähdään, on ohjelmistotuotelinjasta muitakin hyötyjä.
3 4 Kehitystavan haitat Vaikka ohjelmistotuotelinja olisikin yleensä kannattava, ei sekään ole ilman haittojansa. Haittoja ovat muun muassa: [4, s. 32] Ensimmäisten tuotteiden valmistuskustannukset korkeampia. Jos tuotantoa on vähän tai sovellukset ovat hyvin erilaisia kehittäminen voi tulla kalliimmaksi. Vaatii enemmän koulutusta. Suunnitelmien täytyy olla geneerisempiä tai niihin pitää jättää elämisvaraa. Ohjelmiston testauksessa otettava huomioon mahdolliset variaatiot ja uudelleenkäytettävyys
4 Lähteet 1 Carnegie Mellon University. 2010. Software Product Lines. Verkkodokumentti. http://www.sei.cmu.edu/productlines/ 2 Charles W. Krueger. 2006. Introduction to the Emerging Practice of Software Product Line Development. Verkkodokumentti. http://www.methodsandtools.com/archive/archive.php?id=45 3 John D. McGregor, Linda M. Northrop, Salah Jarrad, Klaus Pohl. 2002. Initiating software product lines. Verkkodokumentti. http://search.proquest.com.ezproxy.metropolia.fi/docview/215828194/fulltextpd F/1418766814B2F80704C/11?accountid=11363 4 Linda M. Northrop. 2008. Software Product Line Essentials. Verkkodokumentti. http://resources.sei.cmu.edu/library/asset-view.cfm?assetid=21564 5 Ville Heikkinen. 2006. Ohjelmistokehistyprosessin kuvaus. Verkkodokumentti. https://publications.theseus.fi/bitstream/handle/10024/815/heikkinen_ville.pdf?s equence=1
(Liitteiden poistaminen tällä kertaa taas olisi rikkonut koko tyylipohjan vaikka kuinka ohjeita olisi noudattanut joten siksi yksi tyhjä sivu.)