Erikoistyöohje
JOENSUUN YLIOPISTO OHJE
Tietojenkäsittelytiede 09.10.1997
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TIETOJENKÄSITTELYTIETEEN ERIKOISTYÖ (173314, 10 ov)
Tietojenkäsittelytieteen syventäviin opintoihin kuuluu eri-
koistyö, jonka laajuus on 10 opintoviikkoa. Erikoistyön tar-
koituksena on perehdyttää opiskelija tietojärjestelmien laa-
timiseen approbatur ja cum laude -tason kursseihin liittyviä
harjoitustöitä laajemman tehtävän puitteissa.
Erikoistyö on käytännönläheisempi kuin tutkielma, joka on
useimmiten johonkin aiheeseen perehtymistä kirjallisuuden
avulla. Eräissä tapauksissa erikoistyö voi olla tutkielman
kokeellinen vaihe.
Työskentelystä
Erikoistyön tekeminen vaatii keskittynyttä työskentelyä ja
sen tekemiseen on varattava aikaa viikoittain vähintään 20
tuntia. Usein työ liittyy kiinteästi laitoksen tutkimuspro-
jekteihin. Tällöin työn mahdollinen viivästyminen haittaa
ryhmän muiden jäsenten töiden etenemistä. Erikoistyö on saa-
tava valmiiksi yhdessä vuodessa ellei työtä aloitettaessa ole
toisin sovittu.
Erikoistyön luonne edellyttää jatkuvaa yhteydenpitoa opiske-
lijan ja työn ohjaajan välillä. Opiskelijan on annettava oh-
jaajalle kerran kuussa (tai ohjaajan hyväksymän muun aikatau-
lun mukaisesti) kirjallinen ja suullinen raportti, jossa hän
selvittää raportointikaudella suorittamansa tehtävät ja nii-
hin käyttämänsä ajan sekä seuraavalla kaudella suoritettavik-
si suunnittelemansa tehtävät. Liitteenä on malli kirjallisen
raportin muodoksi. Raportointitilaisuuksien lisäksi opiskeli-
ja ja ohjaaja pitävät työn kuluessa yhteisiä neuvotteluja,
joissa voidaan sopia työn määrittelyyn mahdollisesti tarvit-
tavista muutoksista.
Työtä aloitettaessa on opiskelijan laadittava ohjaajalta saa-
mansa kuvauksen perusteella vaatimusmäärittely ja annettava
se ohjaajalle hyväksyttäväksi. Vaatimusmäärittelyn ei tarvit-
se olla kaikilta osiltaan testattavissa. Esimerkiksi tehok-
kuuskysymysten osalta siinä voidaan todeta täsmällisten aika-
vaatimusten sijasta vain se, mitkä asiat ovat kriittisiä ts.
mihin asioihin on kiinnitettävä erityistä huomiota työtä teh-
täessä. Joissakin erikoistöissä työn tarkempi sisältö muotou-
tuu vasta työn kuluessa, mutta tällöinkin on syytä kirjoittaa
vaatimusmäärittely, jotta työn tekijällä ja ohjaajalla olisi
varmasti sama käsitys työn sisällöstä.
Arvostelu
Erikoistyöstä annettava arvosana riippuu työn ja sen dokumen-
toinnin laadullisesta tasosta sekä opiskelijan työskentelyta-
vasta ja aktiivisuudesta työn suorituksen aikana.
Ohjelmien ulkoasusta
Ohjelmien ulkoasussa on syytä noudattaa jotain yhtenäistä
käytäntöä.
Muuttujien nimet ja kommentit kirjoitetaan suomeksi ellei oh-
jaajan kanssa erikseen toisin sovita.
Kommentteja on syytä käyttää runsaasti. Jokaisen muuttujan
esittelyn yhteydessä on oltava selitys muuttujan merkitykses-
tä. Funktioiden ja proseduurien kuvaukset on oltava kunkin
funktion ja proseduurin alussa itse ohjelmatekstissä liittenä
olevan esimerkin mukaisesti.
Dokumentointi
Dokumentoinnissa ovat tärkeintä asiasisältö ja selkeä esittä-
minen. Vähemmän tärkeää ovat ulkoasuun liittyvät kysymykset.
Dokumenttien viimeistelty ulkonäkö ei tietenkään ole haitak-
si, mutta sille ei anneta arvostelussa keskeistä sijaa. Työn
tuloksena syntyvä ohjelmisto on tarkoitettu ylläpidettäväksi,
joten myös sen dokumentaatiota joudutaan myöhemmin muutta-
maan. Siten ei ole mitään mieltä tuottaa dokumentteja esimer-
kiksi sellaisella järjestelmällä, joka ei ole ylläpitäjien
käytettävissä. Dokumenttien laatimisväline onkin aina erik-
seen sovittava ohjaajan kanssa.
Erikoistyön dokumentti koostuu normaalisti kolmesta osasta,
jotka ovat toisistaan täysin erillisiä:
- mainos
- käyttöohje
- ohjelmaselostus
Se, että osat ovat täysin erillisiä tarkoittaa, että sekä
käyttöohjeella että ohjelmaselostuksella on oma kansilehten-
sä, oma sisällysluettelonsa jne. Näillä kolmella osalla on
eri lukijakunnat, joten ne eivät saa viitata toisiinsa. Oh-
jelmaselostuksen lukijalla voidaan olettaa olevan käytössään
käyttöohje, joten käyttöohjetta ei tarvitse toistaa ohjelma-
selostuksessa. Muuten yleiskuvausten toistaminen tarvittavis-
sa määrin on sallittua ja jopa suositeltavaa.
Kaikki kolme dokumenttia on toimitettava paperimuodossa.
Vaikka ohjelman käyttöohjeesta olisi olemassa täydellinen
tietokoneella luettavissa oleva versio, niin siitä on tehtävä
myös paperilla oleva kunnollinen versio (ts. ei pelkkä nippu
erillisten sivujen listauksia) tai ainakin erillinen paperil-
la oleva alkeisopas, jonka voisi ajatella annettavaksi ohjel-
miston käyttöä aloittelevalle henkilölle. Lisäksi koneella
oleva versio on tulostettava kokonaisuudessaan paperille
(työn tarkastamisen ja arvostelemisen helpottamiseksi).
Mainos
Mainos on yhden sivun mittainen kuvaus ohjelmistosta, jonka
voisi sijoittaa (ulkoasun muotoilemisen jälkeen) johonkin
atk-alan lehteen. Mainoksessa tulee kuvata lyhyesti ohjelmis-
ton tarkoitus, sen olennaisimmat piirteet, kilpaileviin tuot-
teisiin nähden hyvät asiat, käyttöympäristö ja laite- sekä
ohjelmistovaatimukset. Mainoksen tulee olla myyvä mutta kui-
tenkin totuudenmukainen. Mainosta laatiessa on syytä muistaa,
että sen lukijalla ei ole mitään ennakkokuvaa esiteltävän oh-
jelmiston käyttötarkoituksesta.
Käyttöohje
Käyttöohje on tarkoitettu ohjelmiston normaalille käyttäjäl-
le, jonka tulee sen avulla pystyä käyttämään ohjelmistoon
kuuluvia osia sekä ymmärtämään ohjelmiston ja omien varsi-
naisten työtehtäviensä välinen yhteys. Käyttöohje voidaan ra-
kentaa periaatteessa kahdella tavalla: kädestä pitäen johdat-
televaksi alkeisoppikirjaksi tai kaikki yksityiskohdat tar-
kasti luettelevaksi käsikirjaksi.
Käyttöohjeessa tulee olla hyvät apuneuvot tietojen hakemisek-
si. Esimerkiksi sisällysluettelon tulee olla kuvaava. Se voi
matkia järjestelmän päävalikkoja tai olla käyttäjän työnkulun
mukainen. Pitkä käyttöohje ei välttämättä ole helppokäyttöi-
nen. Toisinaan onkin syytä jättää alimman tason otsikot pois
sisällysluettelosta. Lisäksi olisi hyvä, jos käyttöohjeen lo-
pussa olisi aakkosjärjestyksessä oleva hakusanaluettelo, jon-
ka avulla käyttäjä löytää kaikki ne sivut, joilla hakusana
esiintyy.
Käyttöohjeen alussa on oltava kunnollinen kuvaus ohjelmiston
käyttöalueesta ja -tarkoituksesta. Tämän perässä on varsinai-
nen käyttöohjeosuus. Lopussa on vielä oltava ohjelmiston
asennusohje. Asennusohje on kirjoitettava ajatellen henkilöä,
joka saa tarvittavat lähdekieliset ohjelmatiedostot ja muut
tarvittavat tiedostot nauhalla tai levykkeellä, jonka hän
osaa lukea johonkin omaan hakemistoonsa. Siten asennusohjees-
sa ei saa viitata tietyn koneen tiettyyn hakemistoon, josta
ohjelmisto on haettava.
Käyttöohjeen tulee sisältää (aakkos)järjestyksessä oleva
luettelo virheilmoituksista. Siinä on oltava itse virheilmoi-
tustekstin lisäksi ne toimenpiteet, jotka järjestelmä on il-
moituksen antamisen lisäksi tehnyt. Ilmoituksen syistä on
kerrottava paitsi välitön syy (joka normaalisti selviää jo
itse ilmoitustekstistä) myös tavanomaiset välilliset syyt,
joista johtuen virhetilanteeseen on päädytty. Lisäksi on ker-
rottava, millä eri toimenpiteillä käyttäjä voi jatkaa virhe-
tilanteen jälkeen.
Käyttöohjeessa on varottava passiivin käyttöä. Ilmaisu
"näytölle kirjoitetaan uudet tiedot" ei anna lukijalle min-
käänlaista vihjettä siitä, tekeekö kyseisen työn tietokone
vaiko käyttäjä itse. Käyttäjään voi hyvin viitata sinuttele-
malla ("anna vastauksena tiedoston nimi, jonka jälkeen ohjel-
ma tuo tiedoston sisällön näytölle").
Ohjelmaselostus
Ohjelmaselostus on kirjoitettava ikäänkuin lukijana olisi sa-
mantasoinen opiskelija, joka joutuu tekemään ohjelmistoon
jonkin muutoksen. Siten tärkeintä on kuvata ohjelmiston
yleisrakenne ja tärkeimmät ratkaisuperiaatteet, jotta muutok-
sen tekemiseksi tarvittavat seikat olisi mahdollista keksiä
ja lisäksi halutut kohdat olisi helppo löytää. Sen sijaan yk-
sinkertaisia yksityiskohtia on turha käsitellä. Jos työssä on
käytetty jotain tavanomaisesta poikkeavaa toteutusvälinettä,
niin selostuksen on oltava tavanomaista tarkempi.
Vaatimusmäärittely sekä työskentelyn aikana mahdollisesti
tehdyt suunnitteludokumentit, joiden sisältö ei luontevasti
sulaudu osaksi ohjelmaselostusta, laitetaan ohjelmaselostuk-
sen liitteiksi.
Ohjelmaselostuksessa on kuvattava ainakin seuraavat asiat:
- Ohjelmiston tarkoitus: mihin asiakokonaisuuteen ohjelmisto
liittyy; millaisissa tehtävissä ohjelmistosta on apua; mitä
ohjelmistolla on tarkoitus tehdä
- Ohjelmiston toimintaperiaate: ojelmiston toiminnan yleiset
periaatteet; käytettävien erikoisalgoritmien nimet tai
yleisen tason kuvaukset; tiedostojen tavanomaisesta poik-
keavat käyttöperiaatteet; muut ohjelmat, joihin laadittu
ohjelmisto liittyy; muualta valmiina (tai osittain valmii-
na) saadut osat
- Ohjelmiston jako pääosiinsa: erilliset ohjelmat ja niiden
liittyminen toisiinsa; yksittäisten ohjelmien tärkeimmät
komponentit; tässä kohdassa on syytä esittää kaavio, jossa
on 5-10 osaa ja niiden väliset yhteydet
- Tietorakenteet: tärkeimmät tietorakenteet ja niiden käyttö-
periaatteet; tärkeimmät muuttujat ja niiden merkitys; esi-
merkki tietorakenteiden sisällöstä mielellään kuvana
- Moduulien kuvaukset: moduulin tarkoitus ja toimintaperiaat-
teet; luettelo funktioista ja niiden kuvaus niiden kutsu-
suhteista; yksittäisten funktioiden ja proseduurien kuvauk-
set on oltava kunkin funktion ja proseduurin alussa itse
ohjelmatekstissä, jonka johdosta näitä asioita ei tarvitse
toistaa enää ohjelmaselostuksessa
- Ohjelmiston muuttaminen: helposti muutettavissa olevat
piirteet ja ohjeet näiden muutosten tekemiseen (esimerkiksi
muutettavissa olevien vakioiden kelvollisten arvojen
rajat); luettelot kohtuutyöllä muuttettavissa olevista omi-
naisuuksista sekä ominaisuuksista, joiden muuttaminen vaa-
tii koko ohjelmiston uudelleentekoa
- Ohjelmiston käsittelyohjeet: jako hakemistoihin ja tiedos-
toihin; versiohallintamenetelmä; kääntämisohjeet
- Testaus: yksikkötestin haluttu kattavuus; testitapaushake-
miston kuvaus; ohjeet testitapausten suorittamiselle; pe-
rustelut kattavuuden toteutumiselle; vastaavat asiat integ-
rointitestaukselle
Testitapauksien suunnittelun on pohjauduttava jollekin katta-
vuusperiaattelle (esim. 98 % kattavuus ohjelmakoodille ja li-
säksi jokainen testi saa vähintään kerran kunkin yksittäisen
tulosmahdollisuutensa). Tältä pohjalta on muodostettava jouk-
ko testitapauksia, jotka täyttävät vaaditun kattavuuden. Oh-
jelmaselostuksessa on kuvattava kattavuuden täyttyminen niin
tarkaan, että lukija vakuuttuu testitapausten riittävyydestä.
Testien suoritus ja tulosten vertailu odotettuihin tuloksiin
on automatisoitava mahdollisimman pitkälle.
ESIMERKKI FUNKTION DOKUMENTOINNISTA OHJELMAKOODISSA
/****************************************************************
Funktio: aika_ero
Viitteet: Vaatimusmäärittely 5.4.7.12
Kuvaus: Kahden kellonajan erotus
Kutsu: ero = aika_ero(alku,loppu,yksikko);
Syöteparametrit:
char *alku Alkuajankohta date-komennon
palautamassa muodossa, esim.
Tue Feb 11 10:09:30 EET 1992
char *loppu Loppuajankohta samassa muodossa
int yksikko Tulokselle haluttu yksikkö: SEKUNTI
tai SADASOSASEKUNTI
Tulosparametrit: Ei ole
Palautusarvo: long Syöteparametreina annettujen ajankoh-
tien erotus pyydetyissä yksiköissä; 0
jos parametrit eivät ole vaadittua
muotoa
Esimerkki: char *aika;
long kesto;
...
kesto = aika_ero("Tue Feb 11 10:09:30 EET 1992",aika,
SEKUNTI);
Toiminta: Funktio palauttaa parametreina annettujen ajankohtien
erotuksen sekunneissa (jos yksikko on SEKUNTI) tai
sekunnin sadasosissa (jos yksikkö on
SADASOSASEKUNTI).
Rajoitukset: Alkuajankohta ei saa olla loppuajankohdan jälkeen.
Jos on, niin funktio palauttaa arvon 0.
Ulkoiset vaikutukset: Ei ole << Tähän syöttö ja tulostus >>
Sivuvaikutukset: Ei ole
Globaali ohjaus: Ei ole
Katso myös: ero_minuuteissa
Historia: 11.02.1992 Heikki Heikäläinen
12.02.1992 Matti Meikäläinen
- palautusarvo int:istä longiksi
****************************************************************/
ERIKOISTYÖN KUUKAUSIRAPORTTI
Nimi: ___________________________________________
Raportointikausi: ___.___.200__ - ___.___.200__
Ajankäyttö raportointikaudella:
: Määrittely : Suunnittelu : Toteutus : Testaus : Muu : Yht.
: : : : : :
: _ _ _ _ _ _: _ _ _ _ _ _ : _ _ _ _ _: _ _ _ _ : _ _ : _ _ _
Raportointikaudella tehty:
Seuraavan raportointikauden tehtävät:
Työn etenemistä mahdollisesti haittaavat seikat:
Allekirjoitus: __________________________________________
AJANKÄYTÖN KERUULOMAKE
Nimi: ___________________________________________
Raportointikausi: ___.___.200__ - ___.___.200__
Merkitse ajankäyttö päivittäin puolen tunnin tarkkuudella. Dokumen-
tointi merkitään siihen sarakkeeseen, johon kuuluvaa työtä dokumen-
toidaan. Käyttöohjeen kirjoittaminen merkitään kohtaan "Määrittely".
Käytä lomaketta syklisesti: jos raportointikausi alkaa kuun 20.
päivä, niin aloita 20. päivän kohdalta ja jatka seuraavan kuun alussa
ensimmäiseltä riviltä.
Päivä : Määrittely : Suunnittelu : Toteutus : Testaus : Muu : Yht.
: : : : : :
1 : _ _ _ _ _ _: _ _ _ _ _ _ : _ _ _ _ _: _ _ _ _ : _ _ : _ _ _
2 : _ _ _ _ _ _: _ _ _ _ _ _ : _ _ _ _ _: _ _ _ _ : _ _ : _ _ _
3 : _ _ _ _ _ _: _ _ _ _ _ _ : _ _ _ _ _: _ _ _ _ : _ _ : _ _ _
4 : _ _ _ _ _ _: _ _ _ _ _ _ : _ _ _ _ _: _ _ _ _ : _ _ : _ _ _
5 : _ _ _ _ _ _: _ _ _ _ _ _ : _ _ _ _ _: _ _ _ _ : _ _ : _ _ _
6 : _ _ _ _ _ _: _ _ _ _ _ _ : _ _ _ _ _: _ _ _ _ : _ _ : _ _ _
7 : _ _ _ _ _ _: _ _ _ _ _ _ : _ _ _ _ _: _ _ _ _ : _ _ : _ _ _
8 : _ _ _ _ _ _: _ _ _ _ _ _ : _ _ _ _ _: _ _ _ _ : _ _ : _ _ _
9 : _ _ _ _ _ _: _ _ _ _ _ _ : _ _ _ _ _: _ _ _ _ : _ _ : _ _ _
10 : _ _ _ _ _ _: _ _ _ _ _ _ : _ _ _ _ _: _ _ _ _ : _ _ : _ _ _
11 : _ _ _ _ _ _: _ _ _ _ _ _ : _ _ _ _ _: _ _ _ _ : _ _ : _ _ _
12 : _ _ _ _ _ _: _ _ _ _ _ _ : _ _ _ _ _: _ _ _ _ : _ _ : _ _ _
13 : _ _ _ _ _ _: _ _ _ _ _ _ : _ _ _ _ _: _ _ _ _ : _ _ : _ _ _
14 : _ _ _ _ _ _: _ _ _ _ _ _ : _ _ _ _ _: _ _ _ _ : _ _ : _ _ _
15 : _ _ _ _ _ _: _ _ _ _ _ _ : _ _ _ _ _: _ _ _ _ : _ _ : _ _ _
16 : _ _ _ _ _ _: _ _ _ _ _ _ : _ _ _ _ _: _ _ _ _ : _ _ : _ _ _
17 : _ _ _ _ _ _: _ _ _ _ _ _ : _ _ _ _ _: _ _ _ _ : _ _ : _ _ _
18 : _ _ _ _ _ _: _ _ _ _ _ _ : _ _ _ _ _: _ _ _ _ : _ _ : _ _ _
19 : _ _ _ _ _ _: _ _ _ _ _ _ : _ _ _ _ _: _ _ _ _ : _ _ : _ _ _
20 : _ _ _ _ _ _: _ _ _ _ _ _ : _ _ _ _ _: _ _ _ _ : _ _ : _ _ _
21 : _ _ _ _ _ _: _ _ _ _ _ _ : _ _ _ _ _: _ _ _ _ : _ _ : _ _ _
22 : _ _ _ _ _ _: _ _ _ _ _ _ : _ _ _ _ _: _ _ _ _ : _ _ : _ _ _
23 : _ _ _ _ _ _: _ _ _ _ _ _ : _ _ _ _ _: _ _ _ _ : _ _ : _ _ _
24 : _ _ _ _ _ _: _ _ _ _ _ _ : _ _ _ _ _: _ _ _ _ : _ _ : _ _ _
25 : _ _ _ _ _ _: _ _ _ _ _ _ : _ _ _ _ _: _ _ _ _ : _ _ : _ _ _
26 : _ _ _ _ _ _: _ _ _ _ _ _ : _ _ _ _ _: _ _ _ _ : _ _ : _ _ _
27 : _ _ _ _ _ _: _ _ _ _ _ _ : _ _ _ _ _: _ _ _ _ : _ _ : _ _ _
28 : _ _ _ _ _ _: _ _ _ _ _ _ : _ _ _ _ _: _ _ _ _ : _ _ : _ _ _
29 : _ _ _ _ _ _: _ _ _ _ _ _ : _ _ _ _ _: _ _ _ _ : _ _ : _ _ _
30 : _ _ _ _ _ _: _ _ _ _ _ _ : _ _ _ _ _: _ _ _ _ : _ _ : _ _ _
31 : _ _ _ _ _ _: _ _ _ _ _ _ : _ _ _ _ _: _ _ _ _ : _ _ : _ _ _
: : : : : :
Yht. : _ _ _ _ _ _: _ _ _ _ _ _ : _ _ _ _ _: _ _ _ _ : _ _ : _ _ _

Last updated: October 9, 1997
saja@cs.joensuu.fi