IT-alan asiantuntijat ja tietotekniikka-alan ammattilaiset tuntevat eri ohjelmistot ja niiden toimintaperiaatteet perinpohjin, ja usein myös työskentelevät niiden työstämisen sekä kehittämisen parissa. Pääajatukseni tässä artikkelissa onkin kertoa helppolukuisesti ja maallikoille ymmärrettävissä olevin sanoin, ohjelmistotuotannosta ja sen vaiheista.
Tietokoneohjelmistoja tehdessä tietokoneohjelmistoja tuottaessa ohjelmistotuotanto-nimitystä käytetään kuvaamaan kaikenlaisen työnteon sekä johdon menetelmiä asian tiimoilta. Se käsittää myös kaiken prosessihallintaan sekä ohjelmistojen tarvitsemien tietokoneohjelmien valmistusmenetelmät. Siihen käytännössä siis kuuluu kaikki tietokoneohjelmiin ja -ohjelmistoihin liittyvä työ. Sen lomaan luetaan tutkimukset määrittely- ja tukiprosesseista sekä tuotannon laatua parantavista suunnittelu- ja toteutusmenetelmistä. Kaikenlainen kaupallinen ohjelmistotuotanto ja siihen kuuluva kehitys tehdään likipitäen aina projektityönä, vaikkei lopullista valmistumispistettä olisi olemassakaan. Suurta luotettavuutta ohjelmistoilta vaadittaessa kehityshankkeet saattavat olla erittäinkin vaativia ja raskaita, kun taas kustannustehokkuutta odotettaessa ne ovat kevyitä.
Ennen kuin ohjelmistotuotanto sai alkunsa, tietokoneiden tarvitsemat muutokset luotiin muuttamalla niiden sähköisiä, sisäisiä liitäntöjä. Aluksi koneisiin tehtävät ohjelmistomuutokset tehtiin yksityiskohtaisesti ja käsin yksittäisiin koneisiin, eikä niiden laaja levitys ollut mahdollista ennen 1980 ja -90 lukujen taitetta. Tällöin laajempi levitys mahdollistui, ja kehitys nykypäivän parempaan tilanteeseen sai kunnon sysäyksen. Kuitenkin, kun tulee hyvää, tulee myös pahaa: Koko ajan lukumäärällisesti kasvavien ohjelmistojen joukkoon lukeutuu myös viallisia, käytettävyydeltään huonoja ja virheitä sisältäviä yksilöitä. Jälleen niin tässä kuin muissakin tapauksissa, rahalla saa myös ohjelmistojen osalta parempaa laatua, jolloin ohjelmistojen kehitysprosessissa on ollut mukana laajaa tutkimustyötä ja kaikki viat ja ongelmakohdat on pyritty minimoimaan sekä poistamaan.
Kun kehitys etenee tuotanto- ja toteutusprosesseihin, on olemassa laajalti malleja joiden mukaan on mahdollista toimia. Esimerkiksi perinteisessä vesiputousmallissa prosessi soljuu jatkuvasti eteenpäin vain parempaan suuntaan, taholta toiselle, jolloin lopullinen toteutus ja toivottu määränpää saavutetaan kaikista kivuttomimmin ja nopeimmin. Tällöin mahdollisia vikoja seurataan koko ajan, ja ne ehkäistään välittömästi niiden ilmestyttyä. On kuitenkin niin, että harmillisen usein tämä malli jää vain teoreettiselle tasolle. Prototyyppimenetelmän mukaan taas käyttöliittymä suunnitellaan ja toteutetaan ensimmäiseksi, jonka jälkeen vasta aletaan toteuttaa liiketoiminnallisia kerroksia. Tässä tavassa työn määrä usein moninkertaistuu, kun prosessi laajenee suuntiin joita ei aluksi välttämättä ole tiedossa. Nämä kaksi mallia ovat kaikista varmimmat, vaikkakin ohjelmistoja kehitettäessä on olemassa nopeampia, joskaan ei niin varmoja menetelmiä.
Ohjelmistojen elinkaari koostuu kehityksestä ja ylläpidosta. Kehittelyssä määritellään vaatimukset, graafinen ja informaatioarkkitehtuuri, ohjelmiston toteutus, julkistaminen ja lopullisesti toimiva käyttöönotto. Ohjelmistoista julkistetaan usein ensimmäinen versio, jonka saaman palautteen ja korjausehdotusten perusteella tarvittavat toimet parantamisen kannalta tullaan toteuttamaan mahdollisimman laajalti ja pian. Ohjelmistojen toiminta ei koskaan varsinaisesti tule loppumaan, ellei käyttöympäristö muutu sen kannalta mahdottomaksi käyttää, tai sen tarve loppu täysin. Yksinkertaisin syy jonkin ohjelmiston kuvainnolliseen kuolemiseen onkin ohjelmiston kehittelyn sekä sen käytön lopettaminen.
Laadukkaat ohjelmat tuotetaan laadukkailla työkaluilla sekä vahvalla ammattitaidolla. Erilaisia ohjelmistojen prosessityöntekijöiden koulutusohjelmia on laajalti myös niinkin ”alhaisella” tasolla kuin ammattikoulussa. Usein kuitenkin lukion varmistama, hyvä lukupää on tarpeen ohjelmistosuunnittelussa. Prosessi kuitenkin koostuu niin monen eri työntekijän yhteisestä toiminnasta, että työ jakautuu pakostikin vaikeisiin ja hivenen helpompiin töihin. Tässäkin ammatissa tärkein ominaisuus on kuitenkin kokemus, ja erinäisiä työnkuvia on mahdollista toteuttaa myös ilman varsinaisia opintoja, jos taitoa löytyy omasta takaa ja itse harjoitettuna. Usein saattaa myös olla niinkin että hankkeen tilaaja vaatii erityistä osaamista ja koulutusta työntekijöiltään, mikäli se palkkaa prosessien eri osiin ihmisiä eri firmoista, vain yhden yrityksen palkkaamisen sijaan.