Kopioi artikkelin PDF-versio
Ohjelmistokomponentteja osataan jo hyödyntää teollisuudessa. Toistaiseksi se tosin tapahtuu kehittämällä niitä itse omaan käyttöön ja vain harvoin ostamalla valmiina komponenttitoimittajilta. Yhtenä syynä kaupallisten ohjelmistokomponenttien vähyydelle on alihankintaan perustuva liiketoimintatapa. Yrityksillä on kuitenkin intoa komponenttiliiketoiminnan kehittämiseen myös ohjelmistoalueella.
Elektroniikka- ja tietoliikenneteollisuuden toiveet kohdistuvat erityisesti komponenttipohjaisiin ohjelmistoarkkitehtuureihin ja komponenttiteknologioihin. Niiden lisäksi tarvitaan konfigurointi- ja testausmenettelyt, jotta ohjelmistokomponenttien hyödyntäminen onnistuisi toivotulla tavalla.
Ohjelmistokehitys uusiksi
Ohjelmistokomponenttien hyödyntäminen perustuu siihen, että tuoteohjelmisto kootaan integroimalla toisiinsa kaupallisilta markkinoilta hankittuja ohjelmistokomponentteja. Tuotteen valmistajalta tämä edellyttää oman ohjelmistokehityksen muuttamista komponenttiperustaiseksi (komponentointi), mikä vaatii yrityksen sisäisen ohjelmistokehityksen strategista uudistamista.
Teollisuuden tavoitteena on ohjelmistokehitysstrategian uudistaminen lisäämällä kaupallisten ohjelmistokomponenttien hyödyntämistä. Muiden muassa tietoverkkoteknologiat ja entistä avoimemmat tuoterajapinnat tarjoavat ohjelmistoja niihin kehittäville yrityksille mahdollisuuden ryhtyä markkinoimaan tuotteitaan ohjelmistokomponentteina. Vastaavasti hyödyntäjäyritykset saavat mahdollisuuden hankkia paketoitua osaamista.
Teollisuuden halukkuutta ja valmiutta lisätä komponenttiohjelmistojen hyödyntämistä selvitettiin vastikään Tekesin ETX-ohjelmaan kuuluvassa Teolliset komponenttiohjelmistot -projektissa. Seuraavassa esitellään projektista saatuja tärkeimpiä tuloksia.
Teknologiset esteet väistymässä
Teollisuuden mielestä ohjelmistokomponenttien kehittämistä ja käyttöä hidastavat ensisijaisesti tarvittava ajattelutavan muutos sekä osaamisen ja tiedon puute - ei niinkään komponenttiteknologioiden kehittymättömyys. Komponenttien yhteensopimattomuutta, tunnistettavuutta ja ymmärrettävyyttä koskevien ongelmien selvittäminen vaatii silti myös teknologioiden kehittämistä.
Elektroniikka- ja tietoliikenneteollisuuden tuotteet ovat pääasiassa sulautettuja järjestelmiä. Vaikka kaupallisten komponenttien tarjonta niihin on niukkaa eikä komponenttien laatu aina vastaa asetettuja vaatimuksia, uskotaan komponentointiosaamisen kehittämisen ja sovellusaluekohtaisiin komponentteihin perustuvien ohjelmistojen rakentamisen poistavan monia komponenttien hyödyntämisen esteitä.
Laatu ja kustannustehokkuus ovat ensi sijaiset hyödyt, joita yritykset odottavat komponentointiin perustuvalta teknologialta. Komponentoinnin odotetaan tehostavan ohjelmistojen tuotteistusta sekä tuovan selviä aikataulu- ja kustannussäästöjä. Samalla toivotaan parannusta ohjelmistokehityksen ennustettavuuteen, jolloin aikataulut ja työmääräarviot saadaan paikkansa pitäviksi. Hyötyjen saavuttamiseksi tarvitaan valmiskomponenttien lisäksi toki myös itse kehitettyjä komponentteja.
Yrityksillä on selvä pyrkimys kehittää omaan liiketoimintaan liittyviä ohjelmistokomponentteja ja uudistaa tuotteidensa rakennetta komponenttipohjaiseksi. Komponenttipohjaista tuoterakennetta tarvitaan myös kaupallisten komponenttien hyödyntämisessä.
Kaupallisesti odotetaan tarjottavaksi sekä yleiskäyttöisiä että toimiala- tai tuotekohtaisia komponentteja ja sovelluskehyksiä. Tuotekohtaisten ohjelmistokomponenttien tarpeen arvellaan olevan noin kaksinkertainen yleiskäyttöisiin komponentteihin verrattuna. Sovellusaluetietämyksen pakkaaminen yleiskäyttöiseen muotoon vaatii suuremman kehityspanoksen, mutta vastaavasti kyseisten komponenttien potentiaaliset käyttökohteet ovat laajemmat.
Laatu, palvelu ja liitettävyys kuntoon
Suurimmiksi ongelmiksi nykyisissä kaupallisissa ohjelmistokomponenteissa koetaan puutteet laadussa. Eniten haittaa aiheutuu yritysten mielestä siitä, että haluttu ominaisuus puuttuu kokonaan komponentista tai että ominaisuudet on määritelty, toteutettu tai dokumentoitu huonosti. Puutteellinen dokumentointi aiheuttaa ongelmia komponentin toiminnallisten ominaisuuksien ja rajoitusten määrittelyssä.
Ongelmia esiintyy myös komponentin kehittäjän tarjoamissa palveluissa, esimerkiksi komponentin käytön tukea ei ole saatavissa tai se on liian hidasta. Varsinkin komponentin käyttöönotossa tuen saanti on tärkeää, koska komponenttien sovittaminen vaatii sekä aikaa että resursseja. Komponenttien hyödyntämiseen pyrkivä yritys kohdistaisi tämän ajan mieluummin oman ydinosaamisensa kehittämiseen.
Riskien välttämiseksi komponentin käytöstä luovutaan yhä varsin usein tai komponentit kehitetään itse. Vaihtoehtoina ovat kehittää komponentteja läheisessä yhteistyössä avaintoimittajien kanssa tai mukauttaa yleiskäyttöisiä valmiskomponentteja omaan ohjelmistoarkkitehtuuriin sopiviksi.
Massamarkkinoille tarjottavan yleiskäyttöisen ohjelmistokomponentin tärkein ominaisuus on sen helppo liittäminen järjestelmään. Käytännössä tämä tarkoittaa komponentin yhdenmukaisuutta yleisen standardin tai sovellusaluestandardin komponenttimallin ja sen määrittelemän rajapintakuvauksen kanssa.
Komponentin tekninen ylivoimaisuus kuten luotettavuus ja mukautuvuus ovat myös tärkeitä. Jos teknisesti korkealuokkainen komponentti on kuitenkin liitäntöjensä vuoksi vaikeasti hyödynnettävissä, sille ei todennäköisesti löydy kysyntää ohjelmistomarkkinoilla. Ohjelmiston komponentoinnissa tarvittava erityisosaaminen koetaan siis erityisen tärkeäksi juuri yleiskäyttöisten komponenttien kehittämisessä.
Tuotelinja antaa jatkuvuutta
Yhteiseen ohjelmistoarkkitehtuuriin perustuvat tuotelinjat ovat vielä varsin harvinaisia. Arkkitehtuurikeskeinen ohjelmistojen uudelleenkäyttö on kuitenkin jo aloitettu joissakin yrityksissä ja siitä on saatu hyviä kokemuksia. Tuotelinja-arkkitehtuurilla tarkoitetaan samaan tuoteperheeseen kuuluvien tuotteiden yhteistä ohjelmistoarkkitehtuuria eli rakennetta.
Tuotelinja-arkkitehtuuri määrittelee rakenteen, joka mahdollistaa yhteisten komponenttien hyödyntämisen tuotelinjaan kuuluvissa tuotteissa. Toisaalta se helpottaa ohjelmiston erilaistamista eri markkinasegmenttien tarpeisiin. Se voidaan toteuttaa joko komponenttivarianttien tai komponenttien konfiguroitavien ominaisuuksien avulla. Koska tuotelinja tarvitsee mekanismit, joiden turvin tuotteiden luontaista elinkaarta voidaan jatkaa, tuotelinjan kehittäminen vaatii uuden teknisen lähestymistavan ja toimintaperiaatteet.
Ohjelmistotuotelinjan kehittäminen asettaa organisaatiolle ja henkilöstölle erilaisia vaatimuksia riippuen siitä, missä kehitysvaiheessa tuotelinja on ja millaisille markkinoille tuotteet on suunnattu. Luokittelun lähtökohdaksi voidaan ottaa esimerkiksi kohdemarkkinat. Tuotteen elinkaaren vaiheet ohjaavat kehittämiskohteiden valintaa ja kehittämisen aikataulua, suhteessa tuotteen saavuttamiin markkinoihin. Organisatoriset avaintekijät määritellään päätösvallan ja vastuiden perusteella, kun taas koulutus, kokemus ja taitojen karttuminen ovat henkilöstön avaintekijöitä.
Tuotelinjan kehittämisessä on osa-alueita, jotka vaativat oman suunnittelunsa. Esivaiheessa tarvitaan tuoteidea, teknologiaratkaisu ja osaaminen, joilla yritys markkinoi tuotteitaan. Linjan rakentamisvaiheessa keskitytään yhteisen ohjelmistoarkkitehtuurin ja komponenttien kehittämiseen linjaan valituille tuotteille. Rutiinikäyttö saavutetaan vasta, kun tuoteperheellä on yhteinen teknologia ja sen kehittämistä tukeva infrastruktuuri.
Tuotelinjan jatkuvassa hyödyntämisessä keskitytään puolestaan uusiin asiakasryhmiin ja niiden tarvitsemiin tuotteisiin. Kehittämisstrategiana voi olla monta kapean markkinaraon tuotelinjaa tai yksi tuotelinja, jota laajennetaan koskemaan useita eri asiakasryhmiä tai tuotevariantteja tai niitä molempia.
Ohjelmistoarkkitehtuuri tuotelinjan ytimenä
Ohjelmistokomponenttien kehittäminen, hankinta ja hyödyntäminen voidaan jakaa omiksi prosesseikseen yleisellä tasolla. Prosesseille yhteisiä ja siksi kriittisiä tekijöitä ovat komponenttien ominaisuuksien ja vaatimusten määritteleminen, arkkitehtuurin ja komponenttien testaustekniikat, arkkitehtuurin ja komponenttien dokumentointi sekä komponenttien muutosten hallinta.
Komponenttien ominaisuuksien määrämuotoinen kuvaustapa on ehdoton edellytys, jotta komponenttien kaupallistaminen ylipäänsä lähtisi merkittävässä määrin käyntiin. Ominaisuuksien määrittelyyn liittyy läheisesti, kuinka helposti hyödyntäjä pystyy todentamaan ominaisuuksien olemassaolon ennen päätöksentekoa komponentin käyttöönotosta.
Arkkitehtuurin ja komponenttien testaustekniikat muodostavat vielä merkittävän pullonkaulan ohjelmistokomponenttien kaupallistamiselle. Komponenttien kehittämisessä kaivataan ennen muuta tehokkaita arkkitehtuurin analysointimenetelmiä. Ohjelmiston laatuominaisuuksiin perustuvat skenaariopohjaiset menetelmät vaikuttavat lupaavilta, mutta vaativat vielä kehittämistä. Kaupallisten komponenttien valinnassa kaivataan yksinkertaisia, helposti toistettavissa olevia toimintatapoja ja päätöksentekoa helpottavia työkaluja, jotta komponentin valinta voitaisiin suorittaa kustannustehokkaasti.
Komponenttien laatukriteerien määrittely ja ulkopuolinen arviointi voisivat soveltua ongelman ratkaisuun. Hyödyntämisprosessin tulisi tukea komponenttien käyttöä muun muassa arkkitehtuurin ylläpitoa ja katselmointia tukevilla testausmenettelyillä ja käytännöillä. Henkilökohtaisen opastuksen ja integrointitestausta tukevien menetelmien ja työkalujen kehittäminen estävät arkkitehtuurin rämettymisen ja opastavat samalla käyttämään komponentteja oikein ja tehokkaasti.
Uudet versiot hallitusti
Tuotelinja-arkkitehtuurien ja siihen liittyvien komponenttien elinkaari suunnitellaan huomattavasti pidemmäksi kuin normaalin ohjelmiston arkkitehtuuri ja sen komponentit. Tästä syystä tavanomainen dokumentointitapa ei ole riittävä. Arkkitehtuuri ja komponentit myös kehittyvät elinkaarensa aikana. Tämä evoluutio on pystyttävä hallitsemaan, jotta tuotelinjalähestymistavalla saavutettaisiin tavoitellut hyödyt. Sekä itse kehitettyjen että kaupallisten komponenttien evoluution hallinta vaatii vielä panostusta.
Normaalisti kaupallisten komponenttien evoluutiota ei oteta huomioon ohjelmiston kehittämisprosessissa, vaan asiat käsitellään tapauskohtaisesti arvioimalla uusien ohjelmistoversioiden vaikutukset. Uusi versio otetaan käyttöön, jos sitä ei voida välttää. Tähän käytäntöön on olemassa kaksi syytä: muutoksen vaatimien ongelmien tunnistaminen ja ylläpidon hitaus.
Vaikka komponentin toimittaja tarjoaa ylläpidon komponentin tunnistettujen ongelmien poistamiseksi, eniten kustannuksia aiheutuu komponentin vaihtamiseen mahdollisesti liittyvien ongelmien etsimisestä ja tunnistamisesta. Tämä työ jää useimmiten komponentin käyttäjän vastuulle. Toinen merkittävä seikka on toimittajan tarjoaman ylläpidon hitaus, joka voi olla todella merkittävä laajoissa järjestelmissä. Molempien pulmien ratkaiseminen olisi tärkeää, koska kaupallisten komponenttien päivitykset voivat usein tarjota hyödyntäjäyritykselle keinon tuotteiden modernisoimiseksi tai kokonaan uusien tuotteiden kehittämiseksi.
Ohjelmistoalihankkijan muuttuva rooli
Niillä sovellusalueilla, joissa uudelleenkäyttöpotentiaalia on olemassa ja ohjelmistojen samankaltaiset ominaisuudet voidaan eristää ja hallita, tuotelinjaperusteisesta toiminnasta on strategista kilpailuetua. Tuotelinjan omistajan liiketoiminta muuttuu komponenttien kehittäjästä ohjelmistointegraattoriksi. Myös ohjelmistoalihankkijoille tuotelinjat tarjoavat uusia liiketoimintamahdollisuuksia.
Alihankkijayritys voi toimia yhdessä tai useammassa roolissa tuotelinjan kehittämisessä. Yhteistyö voi olla pitkäjänteistä tuotteen elinkaareen tai lyhyempää tuoteversioon tai toimitukseen sidottua toimintaa. Pitkäaikaisessa yhteistyössä alihankkija toimii tuotelinjan hovihankkijana. Alihankkija voi toisaalta niin halutessaan sitoutua vain kulloinkin tarvittavien komponenttien toimittajaksi tai ohjelmistotuotteen kehittäjäksi tiettyyn tuoteversioon tai projektiin. Sitoutumisvaihtoehto riippuu muun muassa siitä, haluaako alihankkija paneutua tiettyjen asiakkaiden sovelluksiin vai toimia yleiskäyttöisten komponenttien parissa.
Ehkä kaikkein merkittävintä on, että komponenttitoimittajana alihankkijayritys voi kehittää myös omaa tuotelinjaansa komponenttitoimitusten ytimeksi. Se toimii tällöin integraattorina, joka rakentaa oman tuotteistonsa yhdistämällä omia ja kaupallisia komponentteja toisiinsa. Integraattorin ja järjestelmäkehittäjän toiminta voi myös olla yrityksen asiakkaiden tuoteversio- tai projektisidonnaista.
Projektisidonnainen yhteistyökumppanuus on huomattavasti löysempää kuin komponenttien toimitus tiettyyn tuotelinjaan, jolloin alihankkijalta vaaditaan pitkäaikaista sitoutumista ja yhteistyötä tuotelinjan omistajayrityksen kanssa. Tilaajayrityksen ohjelmistosovellusten osaaminen on tärkeää. Tiedonkulun ongelmat tilaajan ja toimittajan välillä voivat aiheuttaa suuria ongelmia, ja siksi tiedonkulkuun tulisi kiinnittää erityistä huomiota tuotelinjaperusteisessa ohjelmistokomponenttien hankinnassa.
Muuttuvat roolit tarjoavat erilaisia hyötyjä ja riskejä ohjelmistokomponenttiyritykselle. Alihankkijana toimiessaan yritys toimii pienimmällä riskillä. Komponenttien kehittäjänä riski on suurempi, mutta toiminnan onnistuessa myös saavutettava hyöty on suurempi. Integraattorina toimiminen liittyy yrityksen liiketoiminnan kehittymiseen komponenttivalmistajasta osatuote- tai tuotevalmistajaksi. Yhteistyösopimukseen perustuva toiminta vähentää integraattorin riskiä kaupallisen komponentin valintatilanteessa, koska valintaan vaikuttavat avainasiakkaiden strategiset tarpeet.
Tuotelinjaperusteinen ohjelmistokehitys edellyttää joka tapauksessa muodossa tai toisessa jaettua sitoutumista. Onnistuakseen tuotelinjan kehittämiseen osallistuvien yritysten, myös alihankkijoiden, tulee jakaa yhdessä vastuu tuotelinjasta ja sitoutua lisäämään linjan tehokkuutta ohjelmistokomponenttien ja -arkkitehtuurin systemaattisen uudelleenkäytön avulla.
Malleista raamit ohjelmistokomponenteille
Ohjelmistoliiketoiminta muuttuu entistä nopeatempoisemmaksi ja globaaliksi. Markkinoiden voi ajatella olevan yhä enemmän horisontaalisia kuin vertikaalisia. Monet nykyiset ohjelmistokehityksen tilaaja-alihankkijaketjut saattavat purkautua, koska kokonaistuotteen kehitykseen käytettyä aikaa on lyhennettävä valmiiden osaratkaisujen avulla. Sellaisia ratkaisuja on kehitettävä komponentteihin perustuen, riippumatta tietyistä tuoteprojekteista. Yhteisen ohjelmistoarkkitehtuurin rakentaminen ja ylläpito tuoteperheelle vaativat toisaalta komponentteja yhdistävien ratkaisujen vaalimista.
Ohjelmistokomponenttien ja tuotelinjojen hyödyntäminen on vasta alkuvaiheessa. Suurin ero uusien komponenttiteknologioiden tutkijoiden ja komponentteja hyödyntämään pyrkivien yritysten välillä on ehkä arkkitehtuuri- ja suunnittelumallien käytössä. Teollisuudessa ei ole vielä täysin tiedostettu näiden mallien merkitystä komponenttien kehittämisessä ja hyödyntämisessä. Tätä varten tarvittaisiin lisäpanostusta muun muassa koulutukseen.
Arkkitehtuuri- ja suunnittelumallien osaamisen lisääntyminen tulee johtamaan myös mallien avulla kehitettävien komponenttikehysten yleistymiseen. Kehysten merkitys lisääntyy johtuen lähinnä tuotelinjapohjaisten ohjelmistojen muunneltavuus- ja uudelleenkäyttötarpeista.
Komponenttiteknologiat edistävät kehysten yleistymistä, koska komponenttikehykset muodostavat selkeän infrastruktuurin komponenteille. Laajasti käyttöön otettuina ne samalla standardoivat komponenttien rajapintoja. Komponenttikehysten käyttö johtanee entistä pienempiin ja spesifisempiin komponentteihin, mikä tarjoaa liiketoimintamahdollisuuksia myös pienille ja erikoistuneille ohjelmistoyrityksille.
Sovellus- ja toimialakohtaisten komponenttien koko pysynee suhteellisen pienenä niiden erilaistamistarpeesta johtuen. Sitä vastoin laajojen järjestelmätyyppisten tuotteiden välitasoilla ja järjestelmien infrastruktuurissa komponenttien suurempi koko on perusteltua, koska tavoitteena ovat yleiskäyttöiset, massamarkkinoille soveltuvat komponentit.
Aiheesta enemmän
Niemelä, Kuikka, Vilkuna, Lampola, Ahonen, Forsell, Korhonen, Seppänen, Ventä: Teolliset komponenttiohjelmistot Kehittämistarpeet ja toimenpide-ehdotukset, Teknologiakatsaus 89/2000, Tekes.
COTS-Based Systems (CBS) Initiative: http://www.sei.cmu.edu/cbs/cbs_description.html
Object Management Group: www.omg.org/
Microsoft COM+:www.microsoft.com/com/tech/COMPlus.asp
JavaBeans: http://java.sun.com/products/javabeans/
The Finnish electronics and telecommunications industry prefers subcontractor-based business, commercial software components and fixed-price software deliveries are still rather rarely used. However, industry is readjusting its strategy in software development. New types of products based on product lines and open interfaces provide subcontractors possibilities to start software component business and byuing companies a new way to exploit suppliers' know-how.
According to a survey conducted on industrial software components in Finland, some of the most important development targets proved to be methods for improving the development and exploitation of software components, and the development of specification and integration techniques.
Enabling technologies such as component models, architectural and design models and languages, are key technologies in software component production. Design, validation and maintenance of product-line architectures, component frameworks, as well as testing of software components and architectures, were identified as important to be studied, too.
The keys to success for software component business are the latest know-how, familiarity with the application domain, the development of cost-effective business models, effective and well-managed software development, and an ability to meet the growing demand for comprehensive solutions and rapid technological changes. The development of software component technologies should focus on integration of product-line architectures and software components. Infrastructure and middleware frameworks with product-line support and solutions to manage the line's evolution are important for the maintenance of a product-line.
Improving of the usage support processes could especially facilitate the establishment of new software component businesses. In the near future, application components will stay quite small due to differentiation needs, whilst the middleware and infrastructure components are generic medium- or large-grained components for mass-markets.
The survey was made by VTT Electronics, VTT Automation and University of Jyväskylä in the ETX programme of the Finnish National Technology Agency Tekes. Contact: Eila Niemela@vtt.fi.
Sovellusalueen erityisosaaminen voidaan paketoida ohjelmistokomponentiksi, joka useimmiten suunnataan kapealle markkinasegmentille. Kilpailuvaltteina ovat markkina- ja sovellusaluetuntemus sekä laadukkaan ohjelmistokomponentin saanti nopeasti markkinoille. Käyttöliittymäkomponentit ovat esimerkkejä täsmämarkkinoille soveltuvista komponenteista.
Teknologiatietämys voidaan paketoida yleiskäyttöisiin komponentteihin tai yrityksen omaan ohjelmistoarkkitehtuuriin, -kehyksiin ja -komponentteihin. Uudelleenkäyttö tehostaa muun muassa patentein suojatun teknologian valmistamista massamarkkinoille. Protokollat ja algoritmit ovat esimerkkejä tällaisista geneerisistä komponenteista. Ohjelmiston muotoon paketoitu teknologiaosaaminen on kuitenkin vain osa markkinoille menevää tuotetta. Sulautetut ohjelmistot kuuluvat tähän luokkaan.
Sovellusalue- ja teknologiatietämys voidaan yhdessä paketoida yrityksen omaan käyttöön muunneltavien ohjelmistotuotteiden kehittämistä varten. Kilpailuvaltteina ovat markkina- ja sovellusaluetuntemus yhdistettynä tunnettuun teknologiaan. Ohjelmistotuotteina markkinoitavat komponenttiperusteiset ratkaisut, joissa yhdistyvät geneeristen ja muunneltavien komponenttien tunnuspiirteet, ovat tarpeen laajoissa hajautetuissa ohjelmistoissa.
COM(+)-komponentit, jotka kilpailevat johtoasemasta komponenttiteknologioiden markkinoilla. COM (Component Object Model) on suosituin käyttöliittymien sovellusalueella.
CORBA-komponentit (Common Object Request Broker Architecture), jotka ovat suositumpia ohjelmisto- ja tietoliikennealueella, kilpailevat tasavertaisina tulevaisuuden teollisuussovelluksissa. Kiinnostavuutta lisää CORBA 3.0:n mukaisten kaupallisten palvelujen saatavuuden lisääntyminen sekä CORBA:n ja EJB:n yhteiskäyttömahdollisuus.
EJB:n (Enterprise JavaBeans) osuus kasvaa palvelusovellusten piirissä, mutta muutoin Java-pohjaisia sovelluksia on suhteellisen niukasti tarjolla.
Omat komponenttimallit pitävät pintansa erityisesti sulautettujen reaaliaikaohjelmistojen alueella.
Alihankkija tarjoaa ohjelmisto-osaamistaan työnä, joka on osa tilaajan hallinnoimaa ohjelmistokehitystä. Hinta määräytyy useimmiten tehdyn työmäärän ja kiinteän tuntihinnan perusteella. Elektroniikka- ja tietoliikenneteollisuudessa keskimäärin 30 prosenttia ohjelmistotoimituksista perustuu alihankintatoimituksiin, kun taas tilaajan puolella alihankinnan osuus vaihtelee 15-40 prosentin välillä.
Kokonaistoimituksissa ohjelmistokomponentti toteuttaa tuotepiirteen, alijärjestelmän tai muun osan järjestelmän toimituksesta. Hinta on etukäteen määritelty ja kiinteä, ja aikataulun viivästymisestä tai ominaisuuksien puutteellisuuksista voi seurata sanktioita toimittajalle. Vastaavasti tilaaja voi tarjota komponentin käytön määrään sidottuja palkkioita toimittajalle. Vaikka kokonaistoimituksille olisi kysyntää, ohjelmistoja kehitetään erittäin vähän tällä periaatteella. Kokonaistoimitukset kohdistuvat käyttöliittymä- tai erityiskomponenttien kehittämiseen tai ohjelmiston asennus- ja käyttöönottotoimituksiin.
Hyllytavarana myytävien komponenttien (COTS, commercial off-the-shelf) tilaajat hyödyntävät etupäässä tietoliikenneprotokollia, käyttöjärjestelmiä, käyttöliittymäkomponentteja ja -kehyksiä sekä simulointikomponentteja ja koodigeneraattoreita. COTS-toimittajien ja -tilaajien osuus elektroniikka- ja tietoliikenneteollisuudessa on hyvin pieni: kaupallisia komponentteja ei käytetä ollenkaan tai niiden osuus on vain 15 prosenttia koko ohjelmistosta.
Yhteistyökumppanuuteen perustuvassa komponenttien kehittämisessä tilaajan ja toimittajan roolit ovat tavallisuudesta poikkeavat. Kumppanuus tähtää kokonaisuutena markkinoitavaan tuotteeseen, johon kaksi tai useampi yritys toimittaa ohjelmistokomponentteja ennalta määriteltyjen sopimusten ja vastuiden mukaisesti. Tämä toimintatapa on vielä varsin harvoin käytetty.
Kirjoittajat: Eila Niemelä työskentelee Ohjelmistoarkkitehtuurit -ryhmän vetäjänä VTT Elektroniikassa. Veikko Seppänen toimii osa-aikaisena johtavana tutkijana VTT Elektroniikassa ja professorina Oulun yliopistossa. Yhteystieto: Eila.Niemela@vtt.fi Tutkimus: Teolliset komponenttiohjelmistot -projekti Yhteistyössä: VTT Elektroniikka, VTT Automaatio, Jyväskylän yliopiston Tietotekniikan Tutkimusinstituutti ja joukko suomalaisia teollisuusyrityksiä
Teknologiaohjelma: ETX