Mikä on ohjelmistotuotanto

Ohjelmistotuotanto on yhteisnimitys niille työnteon ja työnjohdon menetelmille, joita käytetään, kun tuotetaan tietokoneohjelmia sekä monista tietokoneohjelmista koostuvia tietokoneohjelmistoja. Laajasti ymmärrettynä ohjelmistotuotanto kattaa kaiken tietokoneohjelmistojen valmistukseen liittyvän prosessinhallinnan sekä kaikki erilaiset tietokoneohjelmien valmistamisen menetelmät. Ohjelmistotuotantoon kuuluu siis periaatteessa mikä tahansa aktiviteetti, joka tähtää tietokoneohjelmien tai -ohjelmistojen valmistukseen. Tarve valmistukseen tulee asiakkaalta tai ohjelman tuottaja tekee markkinointitutkimuksen ja päättelee tarpeen ohjelmistolle.

Jotta ohjelmistojen valmistusta voitaisiin käsitellä systemaattisesti, ohjelmistotuotannossa on pyritty mallintamaan ohjelmistojen valmistusprosessia ns. elinkaarimallin mukaisesti. Elinkaarimallissa ohjelmiston valmistus pyritään näkemään mahdollisimman laajana, aikaan sidottuna prosessina, jossa ohjelmiston varsinainen tekninen valmistus on vain pieni - joskin äärimmäisen tärkeä osa - kokonaisketjua.

Ohjelmistotuotannossa tieteenhaarana tutkitaan myös ohjelmien rakenteellisia ominaisuuksia kuten dokumentointia, versionhallintaa, sekä jäljitettävyyttä. Tutkimuksen kohteena ovat myös erilaiset ohjelmistojen tukiprosessit, kuten määrittelyprosessi, ylläpitoprosessi ja projektinhallinta. Myös erilaisia toteutus- ja suunnittelumenetelmiä, joilla itse tuotannon laatua voidaan tehostaa, tutkitaan.

Ohjelmistotuotantoon kuuluvat myös erilaiset laatujärjestelmät, joita käytetään erityisesti yrityksissä dokumentoimaan yrityksen toimintatapoja. Laatujärjestelmän tavoitteena on dokumentoida ja ottaa käyttöön hyväksi havaitut toimintatavat, jotka parantavat yrityksen toimintaprosessin laatua.

Kaupallista ohjelmistokehitystä tehdään yleensä projektityönä. Toisaalta useiden ohjelmistojen kehitys ja ylläpito jatkuvat koko niiden elinkaaren ajan ilman ennakoitavaa päätepistettä. Ylläpitotyökin voidaan jakaa määrämittaisiksi toisiaan seuraaviksi projekteiksi. Projektin toteuttamista ohjaavat ohjelmistoprosessit, jotka kuvaavat toistuvan tavan toteuttaa ohjelmistoprojekteja. Prosessit vaihtelevat suuresti laajuudeltaan ja sen suhteen, millaisia menettelytapaohjeita ne antavat. Noudatettava prosessimalli voi olla kevyt, jos kehityshankkeet ovat pieniä ja niiltä odotetaan suurta kustannustehokkuutta. Raskaita prosesseja käytetään toimialoilla, joissa ohjelmistoilta odotetaan poikkeuksellisen suurta luotettavuutta.

Ohjelmistotuotannon historia

Ensimmäiset digitaaliset tietokoneet tulivat käyttöön 1940-luvulla. Näiden koneiden suorittamat tehtävät määriteltiin muuttamalla koneiden sähköisiä kytkentöjä. von Neumann-arkkitehtuurin mukaiset ohjelmoitavat tietokoneet kehitettiin 40-luvun lopulla, jolloin myös ensimmäiset tietojärjestelmä- ja ohjelmistokehityshankkeet käynnistettiin. Ennen ensimmäisten ohjelmointikielten saapumista 50-luvun puolivälissä ohjelmat kehitettiin konekielellä ja ne olivat sidottuja laitteisiin, joille ne oli kehitetty.

Ohjelmistotuotanto on kohdannut 1960-luvun loppupuolella ns. ohjelmistokriisi. Sillä tarkoitettiin tilannetta, jossa pula ohjelmoijista ja selkeiden systeemityömenetelmien puuttuminen johti heikkoon tuottavuuteen, paljon ohjelmointivirheitä sisältäviin ohjelmiin ja kustannusten karkaamiseen käsistä. 1900-luvun loppupuolella alkanut tietokoneohjelmien merkityksen ja lukumäärän kasvu ovat tuoneet julkisuuteen lukuisia tietokoneiden aiheuttamia virheitä, jotka ovat lähes aina olleet seurausta inhimillisistä erehdyksistä: tietokoneohjelmien lähdekoodeissa on ollut virheitä tai ohjelmien käytettävyys on ollut huono. Ohjelmistotuotanto tutkimusalueena on kehitetty vastaamaan kysymykseen, miten ohjelmistoja tulisi valmistaa niin, että niiden laatu olisi mahdollisimman korkea. Ohjelmiston laatu pitää tässä yhteydessä käsittää ohjelmiston tavoiteltavana toimintana, mikä ei ole sama asia kuin lähdekoodin tai käyttöliittymän täydellinen virheettömyys.