Keskustelu:Ohjelmistotekniikka

Wikipediasta
Siirry navigaatioon Siirry hakuun

"Ohjelmistotiede" ei ole hyvä termi: sillä ei ole vakiintunutta sisältöä. Nyt ristiviittaus vie artikkeliin Tietojenkäsittelytiede, joka kertoo että Ohjelmistotekniikka on sen osa-alue. Syntyy rekursiivinen rakenne, joka tietenkään ei häiritse alan väkeä, mutta saattaa hämmentää muita. Jos "ohjelmistotiede" tarkoittaa jotakin, ainakaan se ei ole koko tietojenkäsittelytiede. Kommentteja? --MarttiMantyla 22. lokakuuta 2006 kello 12.40 (UTC)

Käsittääkseni ohjelmistotieteen paras vastine on "computer science", mikä puolestaan on esitetty "tietojenkäsittelytieteenä". Ohjelmistotiede on sen verran laaja käsite, että siitä ei voida oikein jättää mitään pois loukkaamatta tieteen tekemisen peruslähtökohtia. Joka tapauksessa noiden kahden termin ymmärrän lähinnä siinä, että ohjelmistotieteen tavoitteet ovat lähempänä matematiikkaa, filosofiaa tai ns. perustutkimusta kun puolestaan ohjelmistotuotannon tavoitteet ovat enemmänkin käytännönläheisessä insinöörityössä, siis kyse on soveltavasta tieteestä.

Mandariini 16. tammikuuta 2007 kello 08.03 (UTC)

Tuo "ohjelmistotiede" pitäisi olla varmaankin linkitettynä "Tietojenkäsittelyteoriaan". Mandariini 20. tammikuuta 2007 kello 10.31 (UTC)

Tai sitten ei... onkohan kyseessä ihan uusi termi? Mandariini 20. tammikuuta 2007 kello 10.33 (UTC)

Tietojenkäsittelytieteessä käsitteitä sekoitetaan aina ja jatkuvasti, etenkin kun päädytään erilaisiin suomennoksiin. Tässä pari melko usein hyväksyttyä faktaa:

  • Ohjelmistotekniikka on tietojenkäsittelytieteen suuntautumisvaihtoehto (FM-koulutus)
  • Ohjelmistotekniikka on tietotekniikan suuntautumisvaihtoehto (DI-koulutus)
  • Tietojenkäsittelytieteen FM-koulutuksessa ohjelmistotekniikka käsittelee sitä, miten rakennetaan toimivia ohjelmistoja taloudellisesti ja systemaattisesti, ei lainkaan peruskysymyksiä (tietojenkäsittelyteoria). Engl. software engineering.
  • Tietotekniikan DI-koulutuksessa ohjelmistotekniikka on vähän kuin tietojenkäsittelytiede kokonaisuutena, ilman selkeää painotusta mihinkään. Eräänlainen ohjelmointi/ohjelmistosuunnittelulinja. TKK:n mukaan englanniksi software technology, TTY:n mukaan software systems! Kumpikaan englanninkielinen käsite ei ole yleisesti tunnettu.
  • Joskus tietotekniikan DI-koulutuksessa ohjelmistotekniikka jaetaan ”ohjelmistotieteeseen” ja ohjelmistotuotantoon.

Ohjelmistotekniikan ja ohjelmistotuotannon suhde on kyseenalainen. Mielestäni aiempi tapa uudelleenohjata ohjelmistotuotanto tekniikkaan oli fiksua. Jos niitä kahta täytyy erottaa, niin tuotanto lienee enemmänkin se talouspuoli (”tuottajan homma”, 20 % ajasta kuluu testaukseen) ja ohjelmistotekniikka enemmän ohjelmistosuunnittelua (”insinöörin homma”, suunnittelumallit, rajapinnat, testausmenetelmät, käytännön ohjelmointi). Joskus ohjelmistotekniikka halutaan mieltää kattotermiksi kaikelle soveltavalle tietojenkäsittelytieteelle, jolloin tuotanto on sen alla.

Ohjelmistotiede tarkoittaa ainakin TTY:llä tietojenkäsittelyteoriaa vastaavaa suuntautumisvaihtoehtoa. Toisaalta joskus se tarkoittaa jotain aivan muuta, kuten ohjelmistotuotantoa ja ohjelmistotekniikkaa. Se ei ainakaan ole suomennos sanasta computer science (tietojenkäsittelytiede).

Suositukseni:

  • Ohjelmistotiede -> Disambiguation: Tietojenkäsittelyteoria vai Ohjelmistotekniikka
  • Ohjelmistotuotanto -> Redirect: Ohjelmistotekniikka#Ohjelmistotuotanto

Hyvin perusteltuja vastalauseita?

-- Anurmi 10. huhtikuuta 2007 kello 01.40 (UTC)

Ja vielä diplomi-insinööreille tiedoksi: Käsittääkseni Wikipediassa tietotekniikka käsittää kaiken digitaalisen kulutustavaran ja teknologian. Jos puhutaan tietokoneohjelmiin liittyvästä tieteestä, niin tietojenkäsittelytiede on oikea luokka, vaikka kuinka opiskelisikin tietotekniikkaa teknillisessä. Tämä siksi, että tietotekniikasta ei tule ihmisille ensimmäisenä mieleen tieteenhaara.

-- Anurmi 10. huhtikuuta 2007 kello 01.46 (UTC)

Hyvä, että tästä puhutaan! Näiden alojen artikkelit ja luokat ovat nyt meillä aika sotkuinen ryteikkö. Mutta ovatkohan nämä suomenkieliset termit vakiintumassa johonkin suuntaan yliopistomaailmassa, vai onko meillä tasavahvoja kilpailevia koulukuntia? Minun sanastossani ohjelmistotuotannon määritelmä on laajempi ja sisältää sekä projektinhallinnan että teknisen puolen; termiä ohjelmistotekniikka en ole tarvinnut ollenkaan. (Termit ovat muuttuneet nopeasti viime aikoina: minun aktiiviopiskeluaikoinani puhuttiin vielä 70-lukulaiselta kalskahtavasta systeemityöstä.) --Silvonen 10. huhtikuuta 2007 kello 06.20 (UTC)
Kilpailevia koulukuntia riittää.
Helsingin yliopiston mukaan ohjelmistotekniikka on ”laadukkaiden ohjelmistojen systemaattista tuottamista” – tismalleen sama määritelmä kuin nykyisessä ohjelmistotuotannon artikkelissa! Tämä vaikuttaisi olevan yleisin määritelmä sanalle ohjelmistotekniikka, toisin sanoen yleensä ohjelmistotekniikka = ohjelmistotuotanto. Tällöin mukaan sisältyy myös se tekninen puoli. TTY:n suuntautumisvaihtoehtona tuo on periaatteessa sama, mutta sitä käytetään kattoterminä ohjelmistotieteelle (tekninen/matemaattinen puoli) ja ohjelmistotuotannolle (alennettu tarkoittamaan vain tuotantoprosessia, projektinhallintaa yms.). TTK:n suuntautumisvaihtoehtona ohjelmistotekniikka on puolestaan rinnakkainen tietojenkäsittelyteorian ja ohjelmistoliiketoiminnan (tjsp.) kanssa.
Helsingin yliopistossa on seuraavia kursseja:
  • Ohjelmistotuotanto (ohjelmistotekniikan historia, etiikka, sosiaaliset aspektit, riskit, prosessit, projektinhallinta, elinkaari...)
  • Ohjelmistotekniikan menetelmät (UML-kaavioiden, prosessien, työkalujen ym. esittely)
  • Java-ohjelmistotekniikka (Java-ohjelmointia peruskursseja kehittyneemmällä tasolla)
Mielestäni käsitteinä ohjelmistotekniikka ja ohjelmistotuotanto nivoutuvat niin tiukasti kiinni toisiinsa, että ne kuuluvat samaan artikkeliin, oli määritelmä kumpi tahansa. Aihepiiri huomioon ottaen vahva peruste on myös se, että näille ei ole erillisiä englanninkielisiä vastineita. Sanana ohjelmistotekniikka kuulostaa painottavan ohjelmointia sekä oliosuunnittelua, ja ohjelmistotuotanto taas tuo mieleen vesiputousmalleja ja riskianalyysejä.
Jos artikkelit yhdistetään, ohjelmistotekniikka lienee nykyään paremmin määritelty (tai ainakin riittävän ympäripyöreä...) sana ja kääntyy luonnollisesti englannin kielestä. Ohjelmistotuotanto on joko ohjelmistotekniikka sellaisenaan tai sen haara.
(Muuten, tällä hetkellä artikkeli Ohjelmistotuotanto käsittelee lähes yksinomaan ohjelmistotuotantoprosessia, mikä sekään ei ole hyvä asia.)
--Anurmi 11. huhtikuuta 2007 kello 17.32 (UTC)

__

Ohjelmistotekniikka on alunperin suomennos termille software engineering, sillä engineering on yleensä käännetty tekniikaksi. Tämän jälkeen termi on suomennettu uudestaan, tällä kertaa ohjelmistotuotannoksi. Siinä mielessä havainto ohjelmistotekniikka = ohjelmistotuotanto on oikea.

Olennaista on kuitenkin huomata, että myös englanninkieliset termit ovat vaihtaneet merkitystä. ACM:n "Computing curriculan" mukaan yleistermi on "computing", jolle ei ole hyvää suomenkielistä käännöstä, lähinnä tietotekniikka (joka ikävästi tarkoittaakin hieman muuta, kuten jatkosta voitte huomata). Tämä alue jakaantuu seuraaviin osa-alueisiin:

  • IS (information systems), joka käsittelee computing-aluetta lähinnä organisaation toimintojen näkökulmasta (suomenkielisistä termeistä lähellä ovat ainakin tietojärjestelmätiede ja tiedonhallinta).
  • IT (information technology), joka tarkoittaa lähinnä computing-alan sovelluskäyttöä - eikä sisällä laitteistoa. Näin kuvattuna ei ole yliopistotasoinen alue, vaan sovelluslähtöinen (tulee mieleen alan harrastelehdet). Puhekielessä tietotekniikka tuntuu tarkoittavan juuri tätä. ACM mainitsee, että termi voi tarkoittaa myös koko computing-alaa.
  • SE (software engineering), joka keskittyy ohjelmistoprosessiin hyödyntäen vähän kaikkea alueella olevaa teknistä perusosaamista. Pääpaino luotettavien sovellusten tehokkaalla tekemisellä. Suomeksi lähinnä ohjelmistotuotanto.
  • CS (computer science), joka keskittyy teoreettiseen tutkimukseen (algoritmit, ohjelmointikielet, verifiointi). Merkitys on ACM:n mukaan selvästi kaventunut aiemmasta. Tätä vastaa termi ohjelmistotiede tai tietojenkäsittelyteoria.
  • CE (computer engineering), joka sisältää perinteisesti digitaalisen laitteistopuolen kokonaan (akselilla tutkimus-sovellus), mutta on laajentunut käsittämään ohjelmoinnista tietyt laitteistoa lähellä olevat osat, jotka aiemmin on laskettu lähinnä CS:n piiriin (kääntäjätekniikan koodingenerointi, käyttöjärjestelmät yms.). Sananmukaisesti tämä olisi tietokonetekniikkaa, mutta sisältää nyt sellaisia asioita, että termi sulautetut järjestelmät kattaisi alueen aika pitkälle. ACM ei kuitenkaan käytä termiä embedded systems. Lähinnä sopivin alueesta käytetty termi olisi tietojenkäsittelytekniikka.

Vaikuttaa siltä, että suomenkielisessä tekstissä yleistermi olisi tietotekniikka (computing), joka jakautuu osa-alueisiin, jotka voisivat olla ohjelmistotuotanto (SE), ohjelmistotiede / tietojenkäsittelyteoria (CS), tietojärjestelmätiede (IS) ja tietojenkäsittelytekniikka (CE). Pieneksi ongelmaksi jää tietotekniikka (IT) merkityksessä alan soveltaminen. Tietojenkäsittelytiede voisi olla SE:n ja CS:n yhdistelmä, niin kuin se kaiketi monissa paikoissa käytännössä onkin. Vaikka ohjelmistotekniikan alkuperäinen merkitys onkin sama kuin ohjelmistotuotannon, sen merkitys on asettunut tekniikan puolella lähes samaksi kuin tietojenkäsittelytieteen, mutta näkökulmassa on ehkä vivahdus CE:n suuntaan. Sanakirjan kannalta ongelma, mutta voitaneen ratkaista pienellä selittämisellä siten, että ohjelmistotuotanto ja -tekniikka ovat samalla sivulla. Hannumatti 19. kesäkuuta 2007 kello 22.29 (UTC)