Tietotekniikan ohjelmointityön ohje

Sisällysluettelo

Tässä ohjeessa kuvataan Jyväskylän yliopiston tietotekniikan laitoksella toteutettavia ohjelmointitöitä. Ohje antaa neuvoja liittyen ohjelmointitöiden aiheisiin, ohjaukseen ja dokumentointiin.

Ohjelmointityön aiheesta on sovittava mielellään ennakkoon ohjaajan kanssa. Annettu aihe on voimassa kuusi kuukautta antopäivästä lähtien. Jos ohjelmointityösi ei valmistu sovitussa ajassa, on sinun varmistettava sen voimassaolo ohjelmointityön ohjaajalta hyvissä ajoin ennen voimassaoloajan päättymistä!

Ohjelmointityötä tekevän suositellaan käyvän tämä ohje kunnolla läpi vähintään ohjelmointityön alussa ja dokumentteja laatiessaan!

1 Johdanto

Tietotekniikan ohjelmointityön tarkoituksena on totuttaa kurssien harjoitustöitä laajempi tietokoneohjelma tai -ohjelmisto. Ohjelmointitöissä perehdytään itse ohjelmoinnin lisäksi varsinaiseen ohjelmointityöhön – aiheen määrittelyyn ja rajaamiseen, suunnitteluun sekä dokumentointiin. Ohjelmointityöstä saatavat ohjelmointikokemukset ovat hyödynnettävissä myös työelämässä.

Tämä ohje antaa neuvoja ohjelmointitöiden toteuttamiseen sekä siihen liittyvien dokumenttien laatimiseen. Dokumenttien kirjoittamiseen löytyy erillinen ohje toiselta sivulta. Ohjelmointityön tekijän suositellaan tutustuvan lisäksi Sovellusprojektien ohjeeseen.

2 Ohjelmointitöiden aiheet ja ohjaus

Tietotekniikan ohjelmointityöt on tarkoitettu pääasiassa tietotekniikkaa vähintään kandiopintojen verran suorittaville tietotekniikan sivuaineopiskelijoille sekä tietotekniikan aineenopettajalinjan opiskelijoille.

Myös tietotekniikan pääaineopiskelijat voivat halutessaan toteuttaa ohjelmointityön pakollisen Sovellusprojekti opintojakson lisäksi. Pääaineopiskelija voi opinnoissaan hyödyntää ohjelmointityötä tietotekniikan kandidaatin opintojen valinnaisiin tai tutkinnon vapaasti valittaviin opintojaksoihin.

2.1 Laajuus

Kurssin laajuus on 5 op.

2.2 Aihe ja sen hankinta

Ohjelmointityön tulos on tietokoneohjalma, ohjelmisto tai ohjelmakirjasto. Työn aiheen voi hankkia myös yritykseltä tai pääainelaitokseltaan. Myös omaa aihetta voi esittää ohjelmointitöiden ohjaajalle. Ohjelmointityön tuloksen on hyvä olla opetuksessa vapaasti käytettävissä.

Ohjelmointityöstä tulee sopia mieluiten ennakkoon vastaavan ohjaajan kanssa sekä toimittaa hänelle työstä lyhyt esikuvaus (katso Ehdotus-luku).

2.3 Työn määrittely ja ohjaus

Tietotekniikan ohjelmointitöitä ohjavat lehtori Jonne Itkonen, sekä tutkijatohtori Ville Tirronen. Ohjaajat vastaavat mielellään ohjelmointitöiden suoritusta, mahdollista korvaamista ja aiheita koskeviin kysymyksiin.

Ohjelmointityön aihetta ehdottaneeseen henkilöön kannattaa erityisesti olla yhteydessä, koska hän osaa yleensä parhaiten määrittää ja rajata työn sisältöä sekä sovelluksen rakennetta ja siihen haluttuja ominaisuuksia. Sovelluksen rakennetta ja käyttöliittymää koskettavat oleelliset ratkaisut ja muutokset aiemmin sovittuun tulee hyväksyttää aihetta ehdottaneen henkilön lisäksi ohjaajalla. Tarvittaessa ongelmatilanteissa apua saa myös muilta tietotekniikan laitoksen henkilökunnasta.

2.4 Neuvoja ongelmien välttämiseen

Sovelluksia toteutettaessa tulee pitää mielessä kursseilla opetetut hyvän ohjelmointitavan periaatteet. Ohjelmointityön hyväksyminen saattaa hyvinkin olla kiinni niiden noudattamisesta. Lisätietoa hyvistä ohjelmointitavoista voi kysyä ohjelmointityön ohjaajalta ja kurssien luennoitsijoilta.

Versiohallinnan käyttö on pakollista. Tällöin lähdekoodi muutoksineen pysyy tallessa, joten vanhaan versioon on helppo palata. Myös uusia vaihtoehtoja toteutuksille voi helpommin kokeilla, sillä paluu vanhaan onnistuu ongelmitta.

Ohjelmointityön ongelmia pystyy osin välttämään ja hallitsemaan suunnittelun avulla. Ohjelmointityön suunnitelmassa kannattaa kuvien ja tekstin avulla hahmotella toteutettavan ohjelman ja sen osien rakennetta sekä yhteyksiä muihin ohjelmiin, tiedoistoihin, tietokantoihin ja laitteisiin. Lisäksi suunnitelmassa on hyvä kriittisesti tarkastella käytettäviä työkaluja, sekä arvioida millaisia ongelmatilanteita työssä tullaan kohtaamaan. Jo pelkkä vapaalla kädellä paperille hahmoteltu suunnitelma auttaa työssä. Esitä suunnitelma ohjaajalle työn alkuvaiheessa.

Suunnitelmaa ei kuitenkaan aina kannata noudattaa liian orjallisesti, sillä se antaa lähinnä suuntaviivat työlle. Työn edetessä tekijä oppii tuntemaan paremmin aihetta ja työkaluja, jolloin sovelluksen toteuttamiseen saattaa löytyä suunnitelmaa parempia ratkaisuja.

Ongelmien välttämiseksi tulee tekijän ottaa jo ohjelmointia aloittaessaan tavakseen kommentoida tekemänsä ohjelma hyvin, sekä kirjoittaa muistiin perustelut tehdyille valinnoille. Tällöin tekijän on jälkeenpäin helppo palauttaa mieleensä kuhunkin ohjelmakohtaan alunperin suunniteltu toiminto. Lisäksi virheen jäljittäminen kommentoidusta koodista on paljon helpompaa ja nopeampaa. Apua pyydettäessä ohjaaja kieltäytyy jäljittämästä virhettä huonosti kommentoidusta lähdekoodista. Myöskään monimutkainen ja sätösmäinen ohjelmakoodi ei tarkoita sitä, että ohjelmointityö on onnistunut ja erinomainen. Yleensä tällöin on kyse täysin päinvastaisesta.

Ongelmien sattuessa kannattaa rohkeasti ottaa yhteyttä ohjelmointityön ohjaajaan. Usein paras neuvoja on aihetta ehdottanut henkilö.

3 Ohjelmointityön dokumentointi

Dokumentointia, erityisesti lähdekoodin, mutta myös työselosteen osalta, tulee tehdä koko ohjelmointityön ajan. Tällöin lähdekoodit säilyvät tekijälle ymmärrettävinä ja työselosteenkin teko on huomattavasti helpompaa ja nopeampaa.

3.1 Vaaditut dokumentit

Tietotekniikan cum laude -ohjelmointitöiden dokumentointiin kuuluvat

  • ohjelman tai ohjelmiston kuvaus,
  • sovelluksen käyttöohje (ellei se ole integroituna toteutukseen),
  • ohjelman lähdekoodi kommentteineen,
  • työn tilaajan lyhyt lausunto tietotekniikan laitoksen ulkopuolelle toteutetun ohjelmointityön tapauksessa, sekä
  • tekijän itsearviointi ja työn jälkiselvitys.

Työ ja dokumentit palautetaan käyttämällä versionhallintapalvelua, esimerkiksi yliopiston YouSource-versiohallintapalvelua, tai jotain muuta julkista ja avointa palvelua. Suosimme git-pohjaisia versiohallintajärjestelmiä, mutta muutkin vastaavasti saatavilla ja käytettävissä olevat kelpaavat.

Huomaathan myös, että hyvä ohjelmointitapa edellyttää versionhallinnan käyttöä myös työn aikana. Jos näin ei ole tehty, työ hylätään välittömästi.

3.2 Ehdotus ja kuvaus

Aiheen hyväksyminen Tietotekniikan ohjelmointityöksi edellyttää lyhyen esikuvauksen toimittamista ohjelmointitöiden ohjaajalle. Kyseinen lyhyt ohjelmointityön aiheen kuvaus tulee sisältää

  • ohjelmointityön nimen,
  • tekijän nimen, yhteystiedot ja pääaineen,
  • tiedon siitä, että kyseessä on Tietotekniikan ohjelmointityö,
  • päivämäärän,
  • ohjelmointityön sisällön lyhyen kuvauksen,
  • kuvauksen ohjelman oletetusta rakenteesta ja käytetyistä työkaluista,
  • arvion työssä esiintyvistä ongelmakohdista, sekä
  • työn arvioidun aikataulun.

Esikuvaus on ohjelmointityön tekijälle eduksi, sillä se toimii ''sopimuksena'' ohjelmointityön tekijän ja ohjaajan välillä. Lisäksi se varmistaa tiedon kulun ohjelmointitöiden ohjaajan mahdollisen vaihtumisen yhteydessä.

Jos tarjoat ohjelmointityöksi jo aiemmin valmistunutta ohjelmaa varmista, että siitä on saatavilla esikuvaus, tai että vastaavat asiat löytyvät muusta dokumentaatiosta. Toivomme myös, että ohjelma lähdekoodeineen on opetuksessa vapaasti käytettävissä.

Esikuvaus täydennetään lopulliseksi kuvaukseksi työn aikana.

3.3 Itsearviointi ja jälkiselvitys

Tekijän itsearvion tulee sisältää seuraavat kohdat.

  • Tiivistelmä ohjelmointityöstä.
  • Sisällysluettelo.
  • Tehtävän kuvaus, tausta ja tavoitteet.
  • Käytännön toteutus.
  • Oman työn arviointi.
  • Työssä käytetyt lähteet, kuten kirjat, artikkelit ja WWW-sivut.
  • Ylläpitäjän tarvitsemat tiedot ja ohjeet.
  • Sovelluksen mahdollinen jatkokehitys sekä ohjeet jatkokehittäjälle.
  • Yhteenveto.

3.3.1 Käytännön toteutus

Tässä kappaleessa tulee kuvata sovelluksen kokonaisrakenne, mielellään myös graafisesti. Kuvauksen tulee kattaa vähintään ohjelman osien suhteet sekä ohjelman yhteydet muihin sovelluksiin, tiedostoihin, tietokantoihin ja laitteisiin. Kiinnitä huomiota myös ohjelman sisäisiin ja ulkoisiin rajapintoihin, mitä syöttötietoja kukin ohjelman osa tarvitsee ja millä formaatilla ne esitetään? Millaiset tiedot kustakin ohjelman osasta saadaan ulos? Muista myös kuvata ohjelman tietorakenteet.

Jälkiselvityksessä tulee selkeästi erotella tekijän itse toteuttamat ohjelman osat sekä muualta saadut ja muokatut osat kera niiden tekijöiden nimien.

3.4 Käyttöohje

Selkeä käyttöohje ottaa huomioon eri käyttäjäryhmät, joille ohjelma on tarkoitettu. Vaikka käyttöohje on lähinnä suunnattu sovelluksen käyttäjille, tulee työselosteeseen sisällyttää ohjeet myös sovelluksen ylläpitäjiä ja muokkaajia varten. Älä unohda esimerkkejä ja varoituksia tilanteista, joissa ohjelma saattaa kaatua. Käyttöohje voidaan, kuten nykyisin on usein tapana, liittää myös ohjelmaan itseensä.

Jos emme saa ohjelmaa käännettyä, koottua ja käytettyä, hylätään ohjelmointityö välittömästi.

3.5 Oman työn arviointi

Jotta ohjelmointityöllä olisi myös opettavaista sisältöä, arvioi omaa toimintaasi työn aikana. Pohdi mm. seuraavia kysymyksiä:

  • Kuinka alkuperäinen tavoite toteutui (muutokset)?
  • Mikä oli vaikeaa ja mitä opit? Mitä tekisit toisin, jos aloittaisit alusta?
  • Olivatko kohtaamasi ongelmakohdat samat kuin esikuvauksessa olettamasi?
  • Saako ohjelman jotenkin kaatumaan? Miksi ohjelma tällöin kaatuu?
  • Miten valitsemasi työkalut vaikuttivat tulokseen?
  • Pitikö aikataulusi? Millä tavalla olisit voinut parantaa arviotasi.
  • Vastasiko kokemuksesi sitä, mitä luennoilla ja kirjallisuudessa on on aiheesta esitetty? Miten? Miksi ei?

3.6 Lähdekoodi ja ohjelmalistaus

Kunkin lähdekooditiedoston alussa tulee esitellä tiedoston yleinen käyttötarkoitus sekä mainita tekijät ja päiväys.

Jos hyödynnät työssäsi olemassaolevaa lähdekoodia (esim. kurssien luentomateriaalin ja ohjelmointiten esimerkkikoodeja), sen tekijä on aina mainittava kyseisen lähdekooditiedoston alussa. Lisäksi kyseiseltä tekijältä tulee pyytää lupa koodin käyttöön, ettei työssään rikkoisi hänen tekijänoikeuksiaan. Joissain tapauksissa tekijä on koodinsa alussa maininnut oikeuksistaan ja koodin hyödyntämisen ehdoista. Epäselvissä tapauksissa kannattaa kysyä neuvoa ohjelmointityön ohjaajalta.

Ohjelmalistaukset kommentteineen tulee toimittaa tarkastettavaksi yousource-versionhallintapalvelun tai vastaavan julkisen ja avoimen palvelun kautta. Jos et ole käyttänyt versiohallintaa, emme tarkasta työtäsi.

Toivomme, että ohjelma on opetuksessa vapaasti käytettävissä.

4 Yhteenveto

Ohjelmointityö tulee tehdä hyvien ohjelmointikäytänteiden mukaisesti. Työ palautetaan versiohallintajärjestelmän kautta. Työ tulee dokumentoida niin, että sen käyttö onnistuu myös meiltä. Työn tulee olla niin julkinen ja avoin, että sitä voidaan halutessa käyttää apuna opetuksessa alkuperäinen tekijä tunnustaen.

Ohjelmointitöistä voi kysyä lisätietoa ohjaajilta Jonne Itkonen ja Ville Tirronen. Myös kritiikki, positiiviset ja negatiiviset kokemukset sekä kommentit otetaan mielellään vastaan. Niitä hyödynnetään kurssin kehittämisessä. Ohjelmointitöiden aiheita otetaan myös erittäin mielellään vastaan.

Hauskoja ja antoisia hetkiä ohjelmointityön parissa!


Ville Tirronen 2015-09-14 Jonne Itkonen 2015-09-14 Kari Kärkkäinen 2003-08-05

Validate