`"























Kiuru-projekti









Toni Hilpinen
Marko Koivuniemi
Jussi Mäkinen
Miika Nurminen















Projektisuunnitelma 16.10.2002

Jyväskylän yliopisto
Tietotekniikan laitos

Contents

1  Johdanto
2  Termejä
    2.1  Aihepiirin yleisiä termejä
    2.2  Teknisiä termejä
3  Projektin taustaa ja tavoitteita
    3.1  Salivarausohjelmistojen taustaa
    3.2  Korppi-järjestelmän taustaa
    3.3  Projektin tavoitteet liittyen Korpin varausmoduuliin
    3.4  Tietojen synkronointi
    3.5  Aihepiiriin liittyviä tulevaisuuden ideoita
4  Projektin resurssit ja organisaatio
5  Projektin tehtävät ja niiden jakautuminen
6  Projektin aikataulu
7  Riskien arviointi ja hallinta
8  Yhteenveto

Kiuru-projektin tietoja



Tekijät: Toni Hilpinen (hilpinen@cc.jyu.fi)
Marko Koivuniemi (koimark@cc.jyu.fi)
Jussi Mäkinen (jusmaki@cc.jyu.fi)
Miika Nurminen (minurmin@cc.jyu.fi)

Yhteystiedot: huone AgC222.2, puh.nro. 014-260 4963, sähköpostilistan osoite on kiuru@korppi.jyu.fi.

Työn nimi: Kiuru-projekti, projektisuunnitelma

Työ: Projektisuunnitelma tietotekniikan sovellusprojektiin

Tiivistelmä: Kiuru-projekti toteuttaa Jyväskylän yliopiston tietotekniikan laitoksella toteutettuun Korppi-järjestelmään WWW-pohjaisen tilanvaraus- ja varausvahvistusosion. Projektisuunnitelmassa kuvataan projektin taustoja ja projektille asetettuja tavoitteita, projektiorganisaatiota sekä suunniteltua työnjakoa ja aikataulua.

Avainsanat: Tilanvaraus,kurssien opetustapahtumat, resurssivaraus, WWW-sovellus, Kotka-järjestelmä, Timmi-järjestelmä

Versionhallinta



VersioPäiväysTehnytMuutokset
0.125.9.2002Jussi Mäkinen
0.1127.9.2002Jussi MäkinenPieniä muutoksia
0.22.10.2002Jussi MäkinenKorjauksia J-P Santasen kommenttien pohjalta.
0.33.10.2002Jussi MäkinenLisätty aikataulusuunnitelma ja korjattu tekstiä
0.416.10.2002Jussi MäkinenKorjauksia ja täydennyksiä
0.4118.10.2002Jussi MäkinenDokumentti käännetty LaTeX-muotoon

1  Johdanto

Kiuru-niminen tietotekniikan sovellusprojekti on jatkoa Kotka-, Korppi-, Kolibri- ja Koppelo"-projekteille. Kiuru toteuttaa Kotka"-järjestelmään tilanvarausmoduulin.

Syksyn 2002 Kiuru-projektiryhmään kuuluvat tietotekniikan opiskelijat Toni Hilpinen, Marko Koivuniemi, Jussi Mäkinen ja Miika Nurminen. Tilaajana toimii Jyväskylän yliopistolta hallintovirasto ja tietotekniikan laitos. Projektiorganisaatioon kuuluvat henkilöt esitellään luvussa 4.

Tässä projektisuunnitelmassa käsitellään projektin kulkuun liittyviä suunnitelmia. Projektisuunnitelmaan kuuluu aikataulusuunnitelma, projektin tavoitteiden määritteleminen, projektiorganisaation kuvaus, projektin tehtävien ja niiden jakautumisen suunnittelu sekä pieni riskianalyysi.

Projektiryhmä laatii myös sovellussuunnitelman, jossa käsitellään tarkemmin sovelluksen rakennetta ja ominaisuuksia. Projektiraportti laaditaan projektin loppuvaiheessa ja siinä tarkastellaan projektin kulkua ja onnistumista. Sovellusraportti kuuluu myös projektin loppuvaiheen tuloksiin ja siinä käsitellään lopullisen sovelluksen onnistumista ja toimivuutta. Lisäksi ryhmä laatii sovelluksen käyttö- ja asennusohjeet. Projektiryhmä muokkaa myös aiemmin tehtyä Kotka-tietokantaraporttia.

Luvussa 2 esitellään aiheeseen oleellisesti liittyviä termejä sekä luvussa 3 projektin taustoja ja tavoitteita. Luku 4 esittelee projektin organisaation ja resurssit. Luvussa 5 käsitellään projektin tehtäviä ja niiden jakautumista projektin jäsenten kesken. Luku 6 kuvaa projektin suunnitellun aikataulun. Luvussa 7 arvioidaan projektiin liittyviä riskejä.

2  Termejä

Tässä luvussa on kuvattu joitakin termejä, jotka tulee kaikkien projektiorganisaatioon kuuluvien henkilöiden ainakin jossain määrin sisäistää. Tekniset termit on pääosin listattu niitä henkilöitä varten, joilla ei ole ohjelmointitaustaa. Tällöin he voivat helpommin seurata keskustelua ja projektin laatimia dokumentteja.

2.1  Aihepiirin yleisiä termejä

Seuraavat termit liittyvät salinvarausprosessiin:
Kotkaon henkilötietojen hallintaosio ja tietokantarakenne.
Korppion Kotka-järjestelmän kurssikirjanpitomoduuli.
Maksajaon henkilö/organisaatio, joka maksaa varauksen.
Oheisvarattavaon liikuteltava esine, jonka vahtimestarit toimittavat tilaisuuden järjestäjän toiveiden mukaisesti haluttuun tilaan haluttuna ajankohtana.
Resurssion johonkin tilaan liittyvä ominaisuus tai kiinteästi tilaan asennettu laite tai esine. Esimerkiksi salin paikkamäärä tai piirtoheittimen olemassaolo voivat olla resursseja.
Salion tällä hetkellä käytössä oleva tekstipohjainen salienvarausjärjestelmä.
Tilaon varattavissa oleva paikka, johon ihmiset voivat kokoontua (esimerkiksi luentosali tai kokoustila).
Timmion Yomi Applications Oy:n kehittämä tilanvaraussovellus
Vakiovarauson sarja varauksia, jotka liittyvät toisiinsa ja toistuvat esimerkiksi viikoittain samana viikonpäivänä.
Varauksen pyytäjäon henkilö, joka ehdottaa varattavaksi jotakin tilaa jonakin ajankohtana.
Varauksen vahvistajaon henkilö, jolla on oikeus vahvistaa varaus tiettyyn tilaan.
Varauson käyttöoikeus tiettyyn tilaan tiettynä ajankohtana.

2.2  Teknisiä termejä

Seuraavat ohjelmointitekniset termit esiintyvät, kun puhutaan sovelluksen taustalla olevasta järjestelmästä:
Apacheon ilmainen HTTP-palvelinohjelmisto.
CSSeli Cascading Style Sheets on WWW-sivujen ulkoasua kuvaava kieli.
HTMLon WWW-sivujen sisältöä kuvaava kieli.
HTTPon WWW-arkkitehtuurin käyttämä tiedonsiirtoprotokolla.
Jakarta-Tomcaton ilmainen servletti- ja JSP-moottori.
Javaon Sunin kehittämä laitteistoriippumaton olio- ohjelmointikieli.
Java-pavut(engl. JavaBeans) ovat Java-ohjelmointikielellä luotuja komponentteja, joita voidaan kutsua JSP- sivuilla.
JDBCeli Java Database Connectivity on Java-teknologian käyttämä rajapinta erilaisiin tietokantoihin.
JSPeli Java Server Pages on skriptaustyylinen ohjelmointikieli.
Keksi(engl. cookie) on menetelmä saada tallennettua tietoja WWW-sivuilta käyttäjien koneille. Palvelin lähettää pieniä tietopaketteja selaimelle, jotka tallennetaan käyttäjän koneelle. Myöhemmin selain lähettää tiedot palvelimelle ja palvelin voi käyttää niitä esimerkiksi istuntojen tallentamiseen.
Käyttötapaus(engl. use case) on käyttäjän tai sovelluksen toimintoa tietyn tehtävän suorittamiseksi kuvaava dokumentti.
Moduuli on tarkkaan rajattu toiminnallinen ohjelmakokonaisuus.
Poolman on ohjelma, joka kontrolloi tietokantayhteyksiä.
PostgreSQLon ilmainen tietokannanhallintajärjestelmä.
Skripti on yksinkertainen ohjelmanpätkä, joka useimmiten on tehty tulkattavalla kielellä.
Selain on ohjelma, joka käyttäjän koneella tulkkaa HTML- kieliset sivut esitettävään muotoon.
Servlettion palvelimella sijaitseva ohjelma (engl. servlet), joka toteuttaa HTTP-palvelimen pyynnöstä tietyn toiminnon.
SQL eli Structured Query Language on tietokantojen hallintaan kehitetty standardi kieli.

3  Projektin taustaa ja tavoitteita

Luvussa esitellään projektin taustoja ja projektille asetettuja tavoitteita.

3.1  Salivarausohjelmistojen taustaa

Jyväskylän Yliopistossa on tällä hetkellä käytössä keskitetty Sali"-niminen tekstipohjainen varaussovellus. Järjestelmällä hoidetaan periaatteessa kaikkien yliopiston tilojen varaus. Yomi Oyj:n Timmi"-järjestelmä otetaan käyttöön 23.10.2002 ja se korvaa tähän asti käytössä olleen Sali"-järjestelmän. Timmi"-järjestelmän merkittävin etu on automaattinen salien laskutuksesta huolehtiminen, jota nykyinen Sali"-järjestelmä ei tue. Timmi on Windows"-sovellus, johon on nykyään saatavilla myös Web"-käyttöliittymä.

Jyväskylän Yliopiston hallintovirastossa on tarkoitus hankkia Timmin rinnalle myös yleiskäyttöisempi tilahallintasovellus, jolla hallittaisiin kaikkien yliopiston tilojen (rakennukset, osastot ja huoneet) vuokrausta ja laskutusta. Tulevalla järjestelmällä ei kuitenkaan todettu olevan suoraa vaikutusta Timmi- tai Kotka-järjestelmiin.

3.2  Korppi-järjestelmän taustaa

Tietotekniikan laitoksella on ollut käytössä Kurki-järjestelmä vuosina 1998-2002. Järjestelmän avulla opiskelijat pystyivät ilmoittautumaan kurssille ja selaamaan tietojaan eri kursseilta. Opettajat pystyivät hallinnoimaan kursseja, pääteohjauksia ja demotilaisuuksia.

Syksyllä 2000 Kotka-projekti kehitti tietokantarakenteen ja henkilötietohallintamoduulin uuden opetus- ja tutkimushallintajärjestelmän pohjaksi. Keväällä 2001 Korppi-projekti kehitti järjestelmään kurssikirjanpito-osion, jolloin vanha Kurki-järjestelmä alkoi käydä tarpeettomaksi. Korppi-projektin kanssa yhteistyötä teki Halko-projekti, joka teki kansalaisopistoille opetuksenhallintajärjestelmän. Yhdessä nämä projektit tekivät Kotka-tietokantaan ryhmien toteuttamien sovellusten tarvitsemia muutoksia [1].

Vuonna 2001 järjestelmän kehitystyötä jatkoi Kolibri-projekti, joka kehitti Korppi"-järjestelmään kalenteriosion. Kalenteriosio tukee mm. henkilöryhmiä, joille voi määritellä yhteisiä tapahtumia. Vuonna 2002 Koppelo-projekti toteutti Korppi-järjestelmään opinnäytetyömoduulin.

3.3  Projektin tavoitteet liittyen Korpin varausmoduuliin

Projekti toteuttaa järjestelmän, jonka avulla salien varaus kurssien opetustapahtumille voidaan hoitaa alusta loppuun asti Korppi-järjestelmällä. Varaukset tulisi pystyä hoitamaan keskitetysti kaikkien laitoksen kurssien osalta (yleensä ennen lukukauden alkua, kun päätetään järjestettävistä kursseista) tai yksittäisten opetustapahtumien tarkkuudella (muutokset kurssin järjestelyissä lukukauden aikana tai järjestettäessä uutta kurssia kesken vuoden).

Opetustapahtumien lisäksi saleja ja tiloja voidaan varata muuhunkin käyttöön. Tällaisia tapahtumia ovat esimerkiksi kokoukset, konferenssit ja maksulliset tapahtumat. Näitä tapahtumia varattaneen jatkossa Timmi-järjestelmällä, poikkeuksena laitoksien omassa käytössään olevat tilat. Tällaisia tiloja ovat mm. kokoustilat. Tällaisia tiloja ei oteta Timmi-järjestelmän piiriin. Näiden tilojen varaus on mahdollista liittää Korppi-järjestelmään.

Kotka-tietokantaan ja opettajan käyttöliittymään lisätään mahdollisuus tilatarpeiden merkitsemiseen. Tilatarpeiden merkitseminen hoidetaan tällä hetkellä siten, että kurssin opettaja toimittaa tilatarpeet henkilölle (esim. amanuenssi), joka suunnittelee kootusti laitoksen kurssien opetustapahtumien sijoittamisen käytössä oleviin saleihin. Tilatarpeet sisältävät vaatimuksia salin paikkamäärään ja tarvittaviin resursseihin (esim. videoprojektori, liitutaulu). Resurssit voivat liittyä saliin kiinteästi tai ne voivat olla erikseen varattavia. Tietokannassa huomioidaan tilatarpeiden suunnittelu ja muokkaus, mutta varsinaista suunnitteluohjelmaa projektin resurssien puitteissa ei ehditä toteuttamaan.

Tilatarpeiden merkitsemisen lisäksi Kotka-järjestelmään lisätään mahdollisuus varata yksittäisiä saleja tiettyä tapahtumaa varten. Tällöin opettaja voi ehdottaa varausta ja varauksista vastaava vahvistaa sen, jolloin tiedot siirtyvät automaattisesti Timmiin.

3.4  Tietojen synkronointi

Projektiryhmä toteuttaa Korppi-järjestelmään Kiuru-osion lisäksi synkronoinnin Timmi"-järjestelmän kanssa. Tällöin Korppi-järjestelmän kautta tiedot varauksista välittyvät Timmiin ja Timmiin tehdyt salivaraukset myös välittyvät Kotkan tietokantaan.

Käytännössä synkronointi hoidetaan HTTP-protokollaa käyttäen XML-tiedostoilla. Jokaisesta Timmiin tehdystä lisäys-, muokkaus- tai poistotietokantatapahtumasta laaditaan uusi tiedosto. Tiedostot numeroidaan juoksevasti, tietokantatapahtumien keskinäisen järjestyksen varmistamiseksi. Tiedoston sisällä kuvataan tapahtumaan liittyvät tiedot (tarkempi formaatti toimitetaan Yomi Oyj:n taholta myöhemmin ilmoitettavana ajankohtana). Myös kyselyt ja tietojen päivitykset Kotka-järjestelmästä Timmiiin suoritetaan vastaavan muotoisilla tiedostoilla.

Yksittäisten tapahtumailmoitusten lisäksi Timmistä tarkastetaan varausten nykytilanne säännöllisin väliajoin. Tilannetiedot saadaan muuten samalla tiedostoformaatilla kuin tapahtumailmoitukset, mutta nyt tiedoston sisällä voi olla useampia tapahtumia.

Synkronoinnissa on mahdollisena ongelmana on Kotkan ja Timmin välillä siirrettävien tietojoukkojen yhtenäisyys, erityisesti varaavien henkilöiden tunnistamisen osalta. Kotka"-järjestelmään on määritelty henkilöille yksilölliset tunnukset, mutta Timmissä niitä ei ole. Yhtenäisyysongelman ratkaisusta päätetään tarkemmin ennen kuin tiedostoformaatti lyödään lukkoon ko. järjestelmien välillä.

3.5  Aihepiiriin liittyviä tulevaisuuden ideoita

Kurssien sijoittumisen suunnittelusta vastaavat henkilöt tarvitsisivat ohjelmaa, jonka avulla voisi sijoittaa kurssien ajankohdat siten, että opiskelijoilla olisi mahdollisimman vähän päällekkäisyyksiä. Ohjelman tulisi ainakin ilmoittaa, jos on esimerkiksi 2. vuositason kursseja menossa samaan aikaan, mutta ihanteellinen tilanne olisi, jos ohjelma esimerkiksi sovellettua versiota ßtable marriage"-algoritmista käyttäen voisi sijoitella kurssit valmiiksi lukujärjestykseen.

4  Projektin resurssit ja organisaatio

Projektiryhmän muodostavat Toni Hilpinen, Marko Koivuniemi, Jussi Mäkinen ja Miika Nurminen. Tilaajan edustajina toimivat Pauli Kujala ja Vesa Lappalainen tietotekniikan laitokselta sekä Esko Korhonen ja Pekka Lampinen yliopiston hallinnosta. Jani Asikainen ja Jukka Valkonen ovat Timmi-järjestelmän kehittäneen Yomi Oyj:n edustajia. Jukka-Pekka Santanen on projektin vastaava ohjaaja. Teknisiä ohjaajia ovat Markku Vire (vastuualueenaan tietokannat) ja Kirsi Koponen (vastuualueenaan Java Server Pages). Projektiryhmä sai käyttöönsä Tietotekniikan laitokselta Agorasta huoneen C222.2, jossa on asennettuina kolme Linux-työasemaa ja yksi Windows 2000 -työasema. Käyttöjärjestelmäksi Linux-työasemille on asennettuna Redhat 7.3 -levitysversio. Käyttöjärjestelmään kuuluu useita erilaisia sovelluspaketteja.

Lisäksi sovelluspalvelimeksi asennetaan Jakarta Tomcat. Sovelluskehittimenä toimii Borland Jbuilder 6. Näitä ohjelmia ei ole vielä asennettu projektin koneille. Windows-työasemaan on asennettu mm. WinTimmi, Microsoft Visio 2000 ja MS Project.

Projektin dokumentointi on luettavissa projektin kotisivuilta
http://kotka.it.jyu.fi/kiuru. Projektilla on käytössä sähköpostilistat
kiuru@korppi.jyu.fi ja kiurulaaja@korppi.jyu.fi. Sähköpostilistojen keskustelua voi lukea www-selaimella osoitteesta http://korppi.it.jyu.fi/list-archive/kiuru/ ja
http://korppi.it.jyu.fi/list-archive/kiurulaaja.

5  Projektin tehtävät ja niiden jakautuminen

Ryhmä jakaa tehtäviä melko monipuolisesti siten, että kaikki tekevät (ainakin jossain vaiheessa projektia) kutakin eri tehtävätyyppiä : suunnittelua, toteutusta ja testausta. Näin toimien kukin projektiryhmän jäsen saa kokemusta kaikista ohjelmistoprosessin vaiheista.

Kuitenkin alustavasti ryhmän jäsenet ovat sopineet keskenään kunkin päävastuualueesta. Koska ryhmän JSP-osaaminen on projektin alussa lähinnä Jussi Mäkisellä, hän on ryhmän JSP-vastuuhenkilö. Jussi on myös (ainakin projektin alussa) projektipäällikkö. Miika Nurminen vastaa pääosin tietokannan suunnittelusta.

Muilta osin (mm. käyttöliittymän sunnittelu) vastuualueet jaetaan myöhemmin. Dokumentointi hoidetaan koko ryhmän voimin, jotta kukaan ei kyllästyisi dokumentointityöhön. Dokumentointia toteutetaan koko projektin ajan tasaisesti, jotta kaikki oleellinen saadaan kirjattua. Toisaalta tällöin projektin loppuvaiheessa ei tule paniikkia raporttien loppuunhiomisen kanssa.

6  Projektin aikataulu

Projekti kestää 14 viikkoa ja kyseinen aikajänne on jaettu kolmeen päävaiheeseen: analyysiin ja suunnitteluun, toteutukseen sekä testaukseen. Analyysi ja suunnittelu -vaihe kestää 5 viikkoa. Toteutusvaihe kestää 5 viikkoa. Testaukselle ja loppuhiomiselle on varattu 4 viikkoa. Ensimmäisen vaiheen tuotoksia ovat projektisuunnitelma ja sovellussuunnitelma. Toisen vaiheen tuloksia ovat valmis ohjelmointikoodi (JavaBeanit ja JSP-sivut) sekä koodin dokumentaatio. Kolmannen vaiheen tuloksia ovat testaussuunnitelma,testausraportti, projektiraportti ja sovellusraportti. Vaiheet on esitelty taulukossa. Tarkemmin aikataulutusta käsitellään liitteissä 1 ja 2.

Vaihe Tulos Esittely Suunnittelu 1 Projektisuunnitelma 04.10.2002 Sunnittelu 2 Sovellussuunnitelma 17.10.2002 Toteutus Ohjelmakoodi ja dokumentaatio 21.11.2002 Testaus Testausraportti, sovellusraportti ja projektiraportti 20.12.2002 Taulukko 1 Projektin vaiheet ja tarkistuspisteet

7  Riskien arviointi ja hallinta

Projektin suurin riski on sovitussa aikataulussa pysyminen. Projektiin kuuluvien henkilöiden henkilökohtaisten aikataulujen osalta pyritään joustamaan, jotta projekti saadaan toteutettua aikataulussa. Projektipäällikkö yrittää myös huolehtia aikataulussa pysymisestä.

Toinen melkein yhtä suuri riski on Timmi-sovelluksen ja Kiuru-sovelluksen välinen viestintä ja yhteistoiminta. Timmi ei myöskään ole vielä aktiivisessa käytössä salien varausprosessissa, mikä aiheuttaa epävarmuutta varausprosessiin. Riskit pienenevät jonkin verran, jos Yomi Oyj saa rajapintamäärittelyt valmiiksi mahdollisimman aikaisessa vaiheessa.

Myös mahdolliset eriävät näkemykset ja mielikuvat toteutettavasta sovelluksesta tuovat mukanaan omat haasteensa. Kaikkia esitettyjä toiveita ei ole mahdollista toteuttaa projektin puitteissa. Tarvittaessa projektiorganisaation kesken sovitaan ominaisuuksista,jotka jätetään myöhempien jatkokehittäjien toteutettaviksi. Riskiä pystytään pienentämään myös laatimalla sekä kattavat että selkeät pöytäkirjat ja dokumentit koko projektin ajan.

Sovelluksen testiversio täytyy saada valmiiksi hyvissä ajoin, jotta testauksessa saatua palautetta voidaan hyödyntää sovelluksen loppuhiomisessa. Järjestelmää yritetään testata mahdollisimman kattavasti testaussuunnitelman mukaisesti, jotta ongelmat saadaan poistetuksi ennen järjestelmän luovuttamista tilaajalle.

Pääosa riskeistä kohdistuu siis yhteistoimintaan muiden sovellusten kanssa ja varsinaiseen sovelluskehitykseen , jota tarkastellaan tarkemmin projektiryhmän myöhemmin laatimassa sovellussuunnitelmassa.

8  Yhteenveto

Projektiryhmä toteuttaa tilanvarausmoduulin Kotka-järjestelmään. Koska Kiuru-projekti liittyy läheisesti aikaisemmin toteutettuihin Kotka-, Korppi-, Halko-, Kolibri-, ja Koppelo"-projekteihin sekä Sali- ja Timmi-sovelluksiin, tulee ryhmän olla ainakin jossain määrin selvillä myös kaikista näistä järjestelmistä.

Projektin läpivienti on vaativaa työtä varsinkin, kun projektilaisilla ei ole mainittavaa kokemusta suurten järjestelmien kehittämisestä. Osa projektilaisista on kuitenkin kehittänyt joitakin pienempiä sovelluksia ennen tätä projektia. Kukin projektinjäsen tekee parhaansa ja toivon mukaan se riittää takaamaan kaikkia osapuolia tyydyttävän lopputuloksen.

Lähteet

[1] Hillebrand Minna, Silván Markus, Vanhanen Antti ja Ylitalo Marko, "Koppelo- projektin projektikansio", Jyväskylän yliopisto, Tietotekniikan laitos, 2002.

[2] Jaakkola Mia, Juutinen Sanna, Lupari Matti ja Nieminen Mikko, "Kolibri- projektin projektikansio", Jyväskylän yliopisto, Tietotekniikan laitos, 2001.

[3] Lesonen Minna, Pekkanen Hannu, Tawast Tuukka ja Uuksulainen Heikki, "Korppi"-projektin projektikansio", Jyväskylän yliopisto, Tietotekniikan laitos, 2001.

[4] Horppu Ismo, Mielityinen Markku ja Vire Markku, "Kotka-projektin projektikansio", Jyväskylän yliopisto, Tietotekniikan laitos, 2000. [5] Santanen Jukka-Pekka, "Tietotekniikan Sovellusprojektien ohje", Jyväskylän yliopisto, Tietotekniikan laitos, 2002.

[6] Santanen Jukka-Pekka, Öpinnäytteiden kirjoittaminen, lyhyt oppimäärä", Jyväskylän yliopisto, Tietotekniikan laitos, 2000.




File translated from TEX by TTH, version 3.13.
On 18 Oct 2002, 17:08.