Kurki-järjestelmän jatkokehitys

 

Pauli Kujala

 

Erikoistyö

 

29.09.1999

 

 

 

 

 

 

 

 

 

 

 

Jyväskylän yliopisto

tietotekniikan laitos


Tiivistelmä

Jyväskylän yliopiston matematiikan laitokselle toteutettiin keväällä 1998 työprojektina WWW-ympäristöön Kurki-kurssikirjanpitojärjestelmä. Työprojektina aikaansaatua versiota järjestelmästä on edelleenkehittänyt ja korjannut Pauli Kujala. Lisäksi Kurki on muutettu alkuperäisestä yksikielisestä järjestelmästä monikieliseksi. Tämä erikoistyöraportti kertoo Kurki-järjestelmän kehityksen vaiheista aina työprojektin päättymisestä monikielisyyden toteuttamiseen asti.

Avainsanat

Kurki, kurssikirjanpitojärjestelmä, Kurki-jatkokehitys, Kurki-monikielisyys


Sisältö

1.     Johdanto. 1

2.        Jatkokehitys  2

2.1.            Jatkokehitys syksyllä 1998  2

2.1.1.                Kurki tuotantokäyttöön  2

2.1.2.                Laitteisto- ja ohjelmisto-ongelmia sekä -uudistuksia  2

2.1.3.                Tenttiin ilmoittautuminen osaksi Kurki-järjestelmää  3

2.2.            Jatkokehitys keväällä 1999  3

2.2.1.                Nopeuttavia toimintoja  3

2.2.2.                Opastus ajan tasalle  3

2.2.3.                Tenttiuudistus  3

2.3.            Monikielisyyden toteuttaminen kesällä 1999. 4

2.3.1.                Syyt monikielisyyden toteuttamiseen  4

2.3.2.                Suunnitelma ja sen toteutus  4

2.3.3.                Parempi suunnitelma ja sen toteutus  4

2.4.            Monikielisyyden tehostaminen syksyllä 1999  5

2.4.1.                Ratkaisu hitauteen  5

2.4.2.                Ratkaisu muistinkulutukseen  6

2.4.3.                Opastuksen päivitys  6

3.        Yhteenveto  6

 


1.    Johdanto

Tämä erikoistyöraportti kuvaa Kurki-kurssikirjanpitojärjestelmän kehitysvaiheita Kurki-työprojektin päättymisestä monikielisyyden toteuttamiseen asti. Tämä tarkoittaa aikaa kesäkuusta 1998 syyskuuhun 1999.

Kesäkuussa 1998 työprojektin juuri päätyttyä suurimpina ongelmina olivat järjestelmän käyttöönottamisessa ilmenneet puutteet ja ongelmat. Näihin kuuluivat mm. salasanatarkistuksen täydellinen puuttuminen. Kesän ja syksyn 1998 aikana ongelmia ja puutteita korjattiin sekä lisättiin uusia ominaisuuksia, jotka helpottivat käyttöä. Tuotantokäyttöön Kurki saatiin syksyllä 1998, josta lähtien se on ollut toiminnassa.

Toukokuussa 1999 nousi esille idea muuntaa Kurki-järjestelmä monikieliseksi. Tähän asti järjestelmää oli kehitetty pelkästään suomenkielisille käyttäjille, joka rajasi täydellisesti pois kaikki sellaiset käyttäjät, jotka eivät suomea osanneet.

Kesäkuussa 1999 monikielisyyden toteuttaminen nousi tärkeimmäksi tavoitteeksi. Kesän ja syksyn 1999 aikana toteutus saatiin valmiiksi erinäisistä ongelmista huolimatta. Syyskuun lopussa vuonna 1999 monikielisyys oli vihdoin toteutettu viimeistä piirtoa myöten.

Luvussa 2 esitellään jatkokehityksen eri vaiheet yksityiskohtaisemmin. Jaottelu on tehty vuodenaikojen perusteella, jotka suurin piirtein noudattavat jatkokehityksen erilaisia isoimpia vaiheita.


2.    Jatkokehitys

2.1.           Jatkokehitys syksyllä 1998

2.1.1.     Kurki tuotantokäyttöön

Syksyllä 1998 tärkein tavoite oli saada Kurki-kurssikirjanpitojärjestelmä tuotantokäyttöön. Tietotekniikan laitoksen eriydyttyä matematiikan laitoksesta elokuussa 1998 muutamat tietotekniikan laitoksen luennoitsijat alkoivat käyttää Kurkea kokeilumielessä.

Ongelmia esiintyi heti alusta alkaen. Toistaiseksi Kurki-järjestelmään hyväksyttiin opiskelijoiksi vain ne, joilla oli sähköpostiosoite Jyväskylän yliopiston ATK-keskuksessa. Nyt opiskelijoiksi täytyi käytännön pakosta hyväksyä myös ne, joilla ei ollut tunnusta ATK-keskuksessa. Aluksi opiskelijoiden sähköpostiosoitteista hyväksyttiin vain .jyu.fi-loppuiset, mutta edelleen käytännön pakosta myös tästä luovuttiin syksyn aikana. Tämän jälkeen opiskelijat voivat siis käyttää mitä tahansa kelvollista sähköpostiosoitetta.

Myös opettajan käyttöliittymän puolella esiintyi ongelmia. Työprojektin aikana opettajiksi hyväksyttiin kaikki ne, joilla oli tunnus matematiikan laitoksen tarzan.math.jyu.fi-palvelimella. Tämä tuotti ongelmia tietoturvan suhteen, koska ko. palvelimella on lukuisa määrä myös tavallisia opiskelijatunnuksia. Näillä ei ole oikeutta päästä Kurki-järjestelmän opettajan käyttöliittymään. Ongelma ratkaistiin sillä, että käyttöoikeuden omaavista opettajista muodostettiin lista, ja vain tällä listalla olevat pääsevät kirjautumaan opettajan käyttöliittymään.

2.1.2.     Laitteisto- ja ohjelmisto-ongelmia sekä -uudistuksia

Laitteisto- ja ohjelmistoepäyhteensopivuudet muodostivat syksyllä 1998 osan ongelmista. Kurki-palvelin jouduttiin mm. asentamaan täysin uudestaan parikin kertaa syys-lokakuun aikana. Windows NT:n korjauspakettien toimimattomuus NT Serverissä olivat jatkuva ongelma. Näiden lisäksi NT Server Option Packin käytössä oli ja on jatkuvia ongelmia. Sitä jouduttiin kuitenkin käyttämään, koska NT:lle ei löydetty kunnolla toimivaa SSL-salauksen sisältävää WWW-palvelinta. Option Packiin sisältyvän IIS:n eli Internet Information Server –WWW-palvelimen toimivuus oli välillä suorastaan surkea.

Ajan myötä ongelmat kuitenkin ratkottiin, vaikka parempaa WWW-palvelinta etsittiinkin koko ajan (mm. Unix-maailmasta tuttu Apache on edelleen harkinnan alla – siitä ei ole kuitenkaan vielä olemassa kunnollista Win32-versiota, jonka kanssa Borland IntraBuilder –WWW-kehitysympäristö toimisi).

Ei myöskään sovi unohtaa Borlandin IntraBuilderin aiheuttamia ongelmia. Vanhana, jo tukensa menettäneenä tuotteena se ei ole enää sovelias WWW-käyttöliittymien tekoon. Vaikka syksyllä 1998 siitä vielä ilmestyikin uusi päivitys – kaikessa hiljaisuudessa –, se ei toiminut NT Option Packin IIS:n kanssa kunnolla, joten päivityksestä ei ollut mitään hyötyä Kurki-järjestelmän kannalta.

Lähes ainoa positiivinen uudistus syksyllä 1998 oli se, että Kurki-järjestelmää varten hankittiin uusi, tehokkaampi ja nopeampi palvelin. IntraBuilderin muodostama ohjelmakoodi on tehotonta tulkattavaa skriptikieltä, joten käyttäjien lisääntyessä myös järjestelmän käyttö hidastui, ja entisen Kurki-palvelimen tilalle piti hankkia suorituskykyisempi palvelin. Uusi palvelin otettiin käyttöön marraskuussa 1998, kun yllämainitut ongelmat NT Serverin, Option Packin jne. kesken oli saatu ratkaistua.

Sähkökatkosten varalta Kurki-palvelin liitettiin ennen joulua vielä UPS:n (Uninterruptible Power Source) taakse, jotta mahdolliset sähkökatkot eivät tuhoa tietoa.

2.1.3.     Tenttiin ilmoittautuminen osaksi Kurki-järjestelmää

Juuri ennen joulua Kurki-järjestelmään integroitiin tenttiin ilmoittautuminen WWW:n kautta. Tuotantokäyttöön tämä otettiin heti tammikuussa 1999 sekä matematiikan laitoksella että tietotekniikan laitoksella.

2.2.           Jatkokehitys keväällä 1999

2.2.1.     Nopeuttavia toimintoja

Kevät 1999 lähti liikkeelle työn merkeissä. Kurssien päättyessä joulukuussa 1998 ja tammikuussa 1999 uusia toteutuskelpoisia ideoita tuli esille. Esimerkiksi opintosuoritusten siirto Kurki-järjestelmästä suoraan JOREen (Jyväskylän yliopiston opiskelijarekisteri) oli (ja on edelleen) esillä.

Opettajien useimmiten käyttämät toiminnot – opiskelijoiden tietojen päivitys ja raporttien teko – miellettiin liian hitaiksi käyttää normaalilla sisäänkirjautumisella. Tämän takia opettajan käyttöliittymään lisättiin pika-aloitusominaisuus, joka käyttää hyväkseen selainten tarjoamia ns. kuitteja (engl. cookie). Näin sisäänkirjautuminen saatiin nopeaksi sekä tietojen päivitykseen että raporttien tekoon. Myös normaali sisäänkirjautuminen opettajan käyttöliittymän päävalikkoon asetettiin haluttaessa käyttämään kuittia, joten myös tässä nopeusetu oli huomattava.

2.2.2.     Opastus ajan tasalle

Opastustekstit olivat pääosiltaan vanhentuneita, joten keväällä oli opastuksen päivityksen aika. Opastuspäivitys saatiin suoritettua loppuun maaliskuussa 1999.

2.2.3.     Tenttiuudistus

Kesän tenttejä varten tenttiin ilmoittautumiseen piti lisätä mahdollisuus käyttää normaalista kolmesta työpäivästä poikkeavaa ilmoittautumisaikaa. Tämän toteuttaminen ja testaaminen saatiin päätökseen maaliskuun loppupuolella. Samaan aikaan kaikki matematiikan, tietotekniikan ja tietoliikenteen kesän tentit oikeine ilmoittautumisaikoineen saatiin lisättyä Kurki-järjestelmään.

2.3.           Monikielisyyden toteuttaminen kesällä 1999

2.3.1.     Syyt monikielisyyden toteuttamiseen

Toukokuussa 1999 idea monikielisyydestä nousi esille. Kurki-järjestelmä oli tähän asti ollut suunnattu pelkästään suomenkielisille käyttäjille, mutta koska yliopistomaailmassa on paljon myös pelkästään englannin kieltä taitavia, oli Kurki-järjestelmänkin pystyttävä tarjoamaan palveluksiaan ulkomaalaisille käyttäjille.

Osasyy monikielisyyden toteuttamiseen oli myös se, että Kurki-järjestelmästä oli kiinnostunut myös Jyväskylän yliopiston kielikeskus. Kielikeskus aikoi siirtää oman ilmoittautumisjärjestelmänsä WWW-pohjaiseksi, joten Kurki olisi ollut tähän käyttöön erinomainen väline. Vaatimuksena oli se, että Kurki olisi käytettävissä vähintään suomeksi ja englanniksi.

Valitettavasti (tai sitten ei) kielikeskus päätti kuitenkin pysyä entisessä systeemissään, koska Kurki-järjestelmän liittäminen osaksi entistä järjestelmää olisi tuonut liikaa töitä kielikeskuksen ATK-ylläpitohenkilökunnalle. Lisäksi ATK-keskus ei antanut lupaa tehdä suoraan Ingres-tietokannan päälle WWW-käyttöliittymää, joten siirto kielikeskuksen WWW-järjestelmän ja Ingres-tietokannan välillä olisi pitänyt hoitaa siirtotiedostoilla. Järjestelmä ei siis olisi ollut enää reaaliaikainen, eikä luultavasti enää kovin varmatoiminenkaan.

2.3.2.     Suunnitelma ja sen toteutus

Monikielisyyden toteuttaminen lähti liikkeelle suunnitelmasta. Sen mukaan Kurki-järjestelmän käyttämään tietokantaan lisätään Kielet-taulu, josta löytyvät kaikki käytössä olevat kielet. Näiden lisäksi sekä opettajien että opiskelijoiden henkilö­tietoihin lisätään Kielet-tauluun viittaava kieli-indeksi. Suunnitelman mukaan varsinaiset käännöstekstit sijoitetaan kunkin lomakkeen yhteyteen samannimiseen .LNG-päätteiseen tiedostoon.

Käännöstekstit haetaan lomakkeiden teksti-, painike- jne. komponentteihin funktiolla, jolle viedään parametrina lomake, funktion nimi, komponentin nimi ja tekstitunniste (samassa funktiossa voidaan tarvita monta eri tekstitunnistetta eli monta eri käännöstä samalle komponentille) sekä mahdolliset parametrit sisältävä taulukko.

Käännöstyö aloitettiin siis keräämällä jokaisesta lomakkeesta komponenttien tiedot, sekä tarvittavat käännöstekstit. Tarvittavat tiedot näistä muotoiltiin sopivaan formaattiin, jota myös eo. käännösfunktio osaa käyttää.

Käännöstekstien rutiininomaisessa keräämisessä ja suomenkielisten tekstien kääntämisessä englanniksi kului aikaa noin kuukausi. Tämä olikin suurimman työmäärän vaatima osio monikielisyyden toteuttamisessa.

2.3.3.     Parempi suunnitelma ja sen toteutus

Ensimmäisessä suunnitelmassa oli ongelmia. Jos käännöksen tunnistetiedoissa oli kirjoitusvirhe tai koko käännöstä ei löytynyt lainkaan käännöstiedostosta, käyttäjälle tulostettiin virheilmoitus löytymättömästä käännöksestä. Alkuperäistäkään käännöstä ei voitu siis tässä tapauksessa käyttää, koska sitä ei oltu viety parametrina käännösfunktiolle.

Huomattavasti parempi lähestymistapa ongelmaan olikin viedä alkuperäiskielinen – yleensä siis suomenkielinen – käännösteksti parametrina käännösfunktiolle, joka etsii sitä vastaavan käännöksen oikealla kielellä. Jos käännöstä ei löytynyt, palautettiin alkuperäiskielinen käännösteksti ja asetettiin lokitiedostoon tieto löytymättömästä käännöksestä. Näin kaikissa tilanteissa oli aina käytettävissä jonkinlainen käännösteksti, vaikka se ei välttämättä ollutkaan oikeakielinen.

Vaikka kaikki käännöstekstit olikin jo kerätty ja käännetty englanniksi, ei tämä työ ollut suinkaan mennyt hukkaan. Käännöstiedostojen sisältämien rivien formaattia hiukan muokkaamalla saatiin helposti aikaan formaatti, jota uusi versio käännösfunktiosta voi lukea. Lisäksi ”yleiskäyttöiset” käännöstekstit (kaikki muut kuin lomakkeen alustusvaiheessa tarvittavat käännöstekstit) siirrettiin omaan tiedostoonsa, joten samaa käännöstä voitiin käyttää useassa eri paikassa.

Varsinainen käännöstiedoston formaatti muotoutui lopulta sellaiseksi, että ensimmäisenä oli ns. peruskielinen käännös, joka vietiin parametrina käännösfunktiolle ja jota etsittiin käännöstiedostosta. Tämän jälkeen olivat lueteltuina kaikki käännökset, kukin omalla rivillään varustettuna kielilyhenteellä. Näiden jälkeen oli uusi peruskielinen käännös, sen erikieliset varsinaiset käännökset jne. Jopa eri kielten keskinäisellä järjestyksellä ei ollut väliä.

Tämä versio monikielisestä Kurki-järjestelmästä toimikin sitten jo kunnolla, ja se voitiin asettaa tuotantokäyttöön heinäkuussa 1999 juuri ennen Kurki-ylläpitäjän kesälomaa.

2.4.           Monikielisyyden tehostaminen syksyllä 1999

Vaikka olemassaoleva monikielinen versio Kurki-järjestelmästä toimikin periaatteessa hyvin, ei se käytännössä toiminut kovinkaan nopeasti. Tämä johtui siitä, että käännösfunktio oli toteutettu IntraBuilderin tehottomalla skriptikielellä, joka etsi oikeaa käännöstekstiä tiedostosta rivi kerrallaan.

2.4.1.     Ratkaisu hitauteen

Ensimmäinen ratkaisu oli ladata koko käännöstiedosto muistiin. Hitaus ei johtunut kuitenkaan siitä, että tiedostoa luettiin rivi kerrallaan levyltä, joten ongelma oli ja pysyi. Uutena haittana tuli se, että IntraBuilder-palvelinagenttien vaatima muistimäärä kasvoi vähitellen, koska jokaista yhteyttä varten ladattiin käännöstiedosto muistiin. Käännöstiedoston koko oli noin 50 kilotavua, joten muutaman sadan käyttäjän jälkeen muistia oli kulunut jo kymmeniä megatavuja.

Ratkaisu hitauteen löytyi elokuussa sillä, että muistissa olevasta taulukkomuotoisesta käännöstiedostosta etsittiin ensin oikea paikka ja vasta siitä alkaen etsittiin entisellä algoritmilla käännöstekstiä. Haluttu teksti löytyi luonnollisesti yhden tai korkeintaan muutaman rivin tutkimisella. Muistinkulutus kuitenkin pysyi entisenlaisena.

2.4.2.     Ratkaisu muistinkulutukseen

Seuraavaksi oli paneuduttava muistinkulutusongelman ratkaisuun. Kaikki IntraBuilderin tarjoamat keinot oli jo käytetty, joten ongelma täytyi ratkaista jollakin muulla tavalla.

Optimaalinen ratkaisu olisi se, että kaikki yhteydet käyttäisivät vain yhtä muistissa olevaa käännöstiedostoa. Tähän päästiin sillä, että käännöksen hakeva funktio ja käännöstiedoston lataava funktio kirjoitettiin C-kielellä Windowsin DLL-tiedostoksi. DLL:n käyttöön ladattiin siis vain yksi globaali käännöstiedosto erityiseen taulukkorakenteeseen, joka ei ottanut kantaa siihen, montako eri kieltä oli käytössä.

Näin saatiin aikaan sekä algoritmisesti nopea että muistinkulutukseltaan tehokas ratkaisu käännöstekstien hakemiseen. Käännös-DLL otettiin lopulta käyttöön syyskuun lopussa 1999. Samalla saatiin päätökseen koko Kurki-järjestelmän monikielisyysprojekti.

2.4.3.     Opastuksen päivitys

Opastustekstit olivat luonnollisesti pelkästään suomen kielellä, joten nekin piti kääntää englanniksi. Tämä tapahtui elokuussa 1999 muun käännöstyön ohella.

3.    Yhteenveto

Tässä erikoistyöraportissa on kuvattu Kurki-järjestelmän kehitystä kesästä 1998 syksyyn 1999. Työprojektin aikana toteutettua versiota Kurki-järjestelmästä on kehitetty ja laajennettu, joten erinäisiin virheisiin ja ongelmiin on jatkokehityksen aikana törmätty. Useimmista niistä on kuitenkin selvitty ennemmin tai myöhemmin.

Haluan kiittää kaikkia niitä, jotka ovat esittäneet uusia toteutuskelpoisia ideoita Kurki-järjestelmään sekä kaikkia niitä, jotka ovat Kurki-ongelmien esiintyessä ottaneet yhteyttä Kurki-ylläpitäjään – ilman tietoa ongelmista ei niitä voida korjata.

Erityisesti haluan kiittää Vesa Lappalaista ideoista ja suunnitelmasta monikielisyyden toteuttamisvaiheessa.