1. Johdanto

1.1 Tausta ja tarkoitus

Tarkoituksena on tuottaa vaihtoehtoympäristö informaatiojärjestelmien harjoitustyön tekemiseen, nykyisen Oracle Web Server ympäristön tilalle. Vaihtoehtoympäristö perustuu laitoksen omaan tietokantapalvelimeen. Tietokannan hallintaan tullaan käyttämään kotimaista Solid Server -ohjelmistoa. Vaihtoehtoympäristöön toteutetaan komponentteja ja apuohjelmia, joiden tarkoituksena on helpottaa harjoitustyön tekemistä ja vähentää opeteltavien asioiden määrää. Komponenteista ja apuohjelmista syntyy Java-kielinen kirjasto, mitä harjoitustyön tekijä voi käyttää hyväkseen. Kirjaston avulla opiskelija tuottaa WWW –palvelimelle servlettejä, jotka tuottavat HTML-muotoisia sivuja käyttäjän WWW-selaimelle.

1.2 Käsitteitä

JDK Java Development Kit - Sun Microsystems:n Java kehitys- ja ajoympäristö.

HTML Internetissä olevissa dokumenteissa käytettävä standardoitu kuvauskieli.

SERVLET Java –kielen laajennus. Mahdollistaa Java kielisten ohjelmien tekemisen WWW-palvelimelle, joita voidaan kutsua WWW-selaimen sivuilta samaan tapaan kuin CGI-BIN ohjelmia.

2. Yleiskuvaus

2.1 Yleinen toiminta

Projektin lopputuloksena syntyy Java-kielinen kirjasto, joka sisältää komponentteja ja apuohjelmia. Kirjasto on tarkoitettu avuksi käyttäjille, jotka tekevät WWW-muotoisia tietokantaohjelmia. Kirjasto sijoittuu fyysisesti WWW-palvelimelle.

Käyttäjät ohjelmoivat kirjastoa apuna käyttäen Java-kielisiä servlettejä palvelimelle , jotka muodostavat käyttäjälle WWW-selaimella näkyviä HTML-sivuja. Nämä HTML-sivut muodostavat käyttäjälle tietokantaohjelman käyttöliittymän.

 







2.2 Tuotteen pääasiallinen toimintaympäristö

Järjestelmä on tarkoitettu toimimaan kaikissa ympäristöissä, joihin on saatavilla JDK 1.1.5:sta vastaava ympäristö. Käyttö tapahtuu WWW-selaimen kautta.

2.3 Tuotteen käyttäjäkunta

Kehitettävän ympäristön käyttäjät ovat pääasiassa opiskelijoita, joten ympäristöä käytetään ainakin Informaatiojärjestelmien harjoitustyön yhteydessä. Periaatteessa ympäristöä voi käyttää kuka tahansa, joka kokee tarjottavat komponentit ja apuohjelmat hyödylliseksi omaan tarkoitukseensa.

3. Toimintakuvaus

Projektissa valmistuvan kirjaston ideana on tarjota harjoitustyön tekijälle apuvälineitä WWW-tietokantaohjelman tekemiseen. Tietokantaohjelman toiminta tulee perustumaan kirjaston avulla etukäteen luotaviin sivupohjiin (ns. template). Sivupohjiin voidaan kytkeä etukäteen suoritetun tietokantakyselyn tiedot yhdellä funktiolla, jolle annetaan parametriksi kyselyn riviosoitin. Sivupohjissa on kuvattu kenttien sijainti ja ulkoasu käyttäjän haluamalla tavalla. Sivupohjissa on suoraan nimettynä kentät kenttänimillä, joiden perusteella tietyn kentän tieto tuodaan haluttuun kohtaan sivupohjaa.

Projektissa syntyvät komponentit ja apuohjelmat on jaettu erilaisiin ryhmiin käyttötarkoituksensa mukaan. Ryhminä ovat yleinen sivunkäsittely, taulukoiden käsittely ja lomakkeiden käsittely.

3.1 Lomakkeiden käsittely

TeeLomakeTaulusta (Taulu : string; ToimintoUrl : string; Metodi : String; Tyyppi : TauluTyyppi; Kentat : String; Vainluku : Boolean)

Toiminnalla tehdään standardilomake valitusta taulusta. Tyyppi -parametrilla kerrotaan halutaanko luoda listamuotoinen vai kenttämuotoinen lomake. Kentat -parametrissa luetellaan taulusta lomakkeelle tulevat kentät pilkulla eroteltuina. Metodi kertoo parametrien välitystavat (GET tai POST). Vainluku –parametri kertoo pystyykö lomakkeelle sijoittuvien kenttien arvoja muuttamaan. ToimintoUrl kertoo URL-osoitteen, johon lomakkeen napit kytketään

 















AloitaLomake (Metodi : string; ToimintoUrl : string; Tyyppi : Taulutyyppi; Vainluku:boolean);

Aloittaa lomakkeen pohjan määrittelyn. Metori, ToimintoUrl. Tyyppi ja Vainluku –parametrit kuten funktiossa TeeLomakeTaulusta.

Kytketiedot (Kyselyn_riviosoitin)

Kytkee tietokantakyselyn riviosoittimella kerrotun tulosrivin tiedot lomakkeeseen. Kytkentä tehdään käyttämällä kentille annettavia tietokantanimiä, jotka täytyy vastata kyselyn sarakenimiä.

Jos kyseessä on listamuotoinen lomake, kytketään kaikki tiedot osoittimen kohdasta eteenpäin lomakkeeseen. Jos kyseessä on lomakemuotoinen lomake, niin vain yhden kyselyn vastausrivin tiedot kytketään lomakkeeseen. Tällöin Kyselyn_riviosoitin –kertoo vastausrivin, josta tiedot haetaan.

LopetaLomake ()

Ilmoittaa, että lomakepohja on valmis.

LisääTekstiKentta (Prompti : String; LomakeNimi : String; TietokantaNimi : String; Koko : Integer; maxPit : Integer)

Lisää halutulla promptilla valitun kentän määritellyn kokoisena ja pituisena lomakkeelle. Prompti kertoo lomakkeella näytettävän selitteen kentälle. Lomakenimellä tarkoitetaan kentälle lomakkeella annettavaa nimeä. Lomakenimeä käytetään www-palvelimella lomakkeelta saatujen tietojen tulkitsemiseen. Tietokantanimi tarkoittaa sitä nimeä, jolla viitataan kyselyn kenttään ja jota käytetään tietojen kytkennässä lomakkeelle apuna. Tietokantanimi ja lomakenimi voivat olla samat.

LisääAlasvetoKentta (Prompti : String; LomakeNimi : String; TietokantaNimi : String; Vaihtoehdot : string)

Määrittelee alasvetovalikon. Muut parametrit kuten LisaaTekstiKentta funktiossa, mutta Vaihtoehdot -parametrissa luetellaan alasvetovalikon vaihtoehdot pilkulla eroteltuina.

AloitaValintaPainikeRyhma (Prompti : String; LomakeNimi : String; TietokantaNimi : String; Oletus : String )

Aloittaa valintapainikkeiden lisäämisen. TietokantaNimi -parametrilla kerrotaan se tietokantakyselyn kenttä, johon valintapainikeryhmä kytketään. Prompti ja tietokantanimi –parametrit kuten LisaaTekstikentta funktiossa. Oletus –parametrilla kerrotaan se valintapainikeryhmän arvo, joka on päällä.

LisääValintaPainike (Prompti : String)

Määrittelee valintapainikkeen (radio button). Prompti -parametrissa annetaan ko. painikkeen lomakkeella näkyvä teksti. Teksti vastaa suoraan sitä arvoa, joka ryhmälle annetaan, jos kyseinen valintapainike valitaan.

LopetaValintaPainikeRyhma

Lopettaa valintapainikkeiden lisäämisen.

LisaaMemoKentta (Prompti : String; LomakeNimi : String; TietokantaNimi : String; Rivilkm :Integer; Sarakelkm : Integer)

Kuten LisaaTekstiKentta, mutta määrittelee monirivisen syöttökentän.

LisaaHetuKentta (Prompti : String; LomakeNimi : String; TietokantaNimi : String)

Lisää lomakkeelle henkilötunnuskentän. Kenttään kytketään automaattisesti tarkastus, jonka tehtävänä on antaa käyttäjälle palautetta henkilötunnuksen oikeasta muodosta. Parametrit kuten LisaaTekstiKentta funktiossa.

LisaaPvmKentta (Prompti : String; LomakeNimi : String; TietokantaNimi : String; Minimi, Maximi : String)

Lisää lomakkeelle päivämääräkentän. Minimi ja maximi -parametreilla kerrotaan aikaväli, mistä annettavan päivämäärän pitää olla. Kenttään kytketään automaattisesti tarkastusrutiini, joka tarkistaa päivämäärän muodon ja onko annettu päivämäärä määritellyllä välillä. Muut parametrit kuten LisaaTekstiKentta funktiossa.

LisaaNroKentta (Prompti : String; LomakeNimi : String; TietokantaNimi : String; Minimi, Maximi : String)

Lisää lomakkeelle numeerisen kentän. Minimi ja maximi -parametreilla kerrotaan arvoväli, mistä annettavan numeron pitää löytyä. Minimi ja maximi -parametreilla voidaan myös kertoa pitääkö kenttään syöttää kokonaisluku vai desimaaliluku. Jos parametreina annetaan pilkun tai pisteen sisältävä arvo, odotetaan kenttään käyttäjänkin syöttävän desimaaliluvun. Kenttään kytketään automaattisesti tarkastusrutiini. Muut parametrit kuten LisaaTekstiKentta funktiossa.

LisaaPiiloKentta (Prompti : String; LomakeNimi : String; TietokantaNimi : String)

Kuten lisäätekstikenttä, mutta kenttä ei näy käyttäjälle. Tällä voidaan tuoda kyselystä tarpeellista tietoa talteen lomakkeelle ilman että, käyttäjä näkee sitä.

LisääEpäsuoraLinkki (Prompti : String; LomakeNimi : String; TietokantaNimi : String)

Lisää lomakkeelle linkkikentän. Linkin URL-osoite saadaan SQL-kyselystä. Tässä tietokantanimi tarkoittaa kyselyn kenttää, josta URL-osoite saadaan. Muut parametrit kuten LisaaTekstiKentta funktiossa.

LisääSuoraLinkki (Prompti : String; LomakeNimi : String; Linkki : String)

Lisää lomakkeelle linkkikentän. Linkki on URL-osoite (sivu tai proseduuri) mahdollisine parametreineen. Tämän kentän arvoa ei lomakkeella pysty muuttamaan. Muut parametrit kuten LisaaTekstiKentta funktiossa.

LisääVainlukuKenttä (Prompti : String; LomakeNimi : String; TietokantaNimi : String)

Lisää lomakkeelle vain lukemista varten kentän. Käyttäjälle pyritään tiedottamaan kentän olevan vain luettavaksi tarkoitettu esimerkiksi vaihtamalla kentän väriä. Parametrit kuten LisaaTekstiKentta funktiossa.

 

LisaaSalasanaKentta (Prompti : String; LomakeNimi : String; TietokantaNimi : String)

Lisää lomakkeelle salasanakentän. Kenttä on kuten normaali teksti kenttä,mutta tarkoitettu erityisesti salasanan kysymistä varten. Tämän funktio mahdollistaa käyttäjän toteuttaa haluamansalaisen kirjautumislomakkeen. Parametrit kuten LisaaTekstiKentta funktiossa.

 

LisaaOtsikko (Otsikko : String)

Lisää lomakkeelle otsikon.

LisaaLopputeksti (Paiva : Boolean; Teksti : String)

Lisää lomakkeelle lopputekstin. Paiva -parametri kertoo halutaanko lisätä päiväystieto. Teksti -parametrilla voidaan lisätä vapaamuotoista tekstiä.

LisaaNappi (Toiminta : String; NapinOtsikko : string; NapinNimi : string; Oletus : boolean)

Lisää lomakkeelle napin. Toiminta -parametrilla määritellään onko kyseessä submit vai reset. NapinOtsikko –parametrilla kerrotaan napissa käyttäjälle näkyvä teksti. NapinNimi –parametri kertoo nimen, millä WWW-palvelimella oleva ohjelma käsittelee napista tulevaa tietoa. Oletus –parametri kertoo aiheutuu ko. napin painallus, jos käyttäjä painaa rivinvaihto näppäintä.

3.2 Yleinen sivunkäsittely

Sivu (Nimi : String; Kielikoodi : String)

Lisää elementit

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//Kielikoodi">

<html>

<head>

<title>Nimi</title>

</head>.

Sivu ()

Lisää elementit

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//FI">

<html>

<head>

<title></title>

</head>.

AloitaBody (Taustakuvanosoite : String; Taustaväri : String; Tekstinväri : String; Linkinväri : String; Käytetynlinkinväri : String)

Lisää sivulle elementin

<body background="Taustakuvanosoite" bgcolor="Taustaväri" text=Tekstinväri link=Linkinväri vlink=Käytetynlinkinväri>.

LopetaBody ()

Ilmoittaa, että body-osio on valmis.

Otsikko (Taso : Integer; Teksti : String)

Lisää elementin

<Htaso>Teksti</Htaso>

sivulle. Taso saa olla välillä 1 (suurin) - 6 (pienin).

LihavoituTeksti (Teksti : String)

Lisää sivulle elementin

<B>Teksti</B>.

KursiiviTeksti (Teksti : String)

Lisää sivulle elementin

<I>Teksti</I>.

Kuva (Osoite : String; Sijainti : String; Leveys : String; Korkeus : String; Tilaasivuilla : Integer; Tilaylä-jaalapuolella : Integer; Kehyksenpaksuus : Integer)

Lisää elementin

<img src="Osoite" align="Sijainti" width="Leveys" height="Korkeus" hspace=Tilasivuilla cspace=Tilaylä-jaalapuolella border="Kehyksenpaksuus">.

Sijainti saa olla left, right, top, middle tai bottom.

Rivinvaihto ()

Lisää elementin

<BR>.

UusiKappale ()

Lisää elementin

<P>.

Laskuri ()

Lisää laskurin, joka näyttää sivulla käyntien lukumäärän.

Kello (Käy : Boolean)

Lisää kellon sivulle. Jos Käy-parametrin arvona on true, lisätään kello, joka käy koko ajan. Jos taas arvona on false, haetaan tämän hetkinen aika ja näytetään se sivulla.

Päivämäärä ()

Lisää päivämäärän muodossa pp.kk.vvvv sivulle.

VaakaKehys (Yläosankoko : String; Alaosankoko : String)

Lisää kehyksen vaakasuunnassa eli elementin

<frameset rows="Yläosankoko, Alaosakoko">.

PystyKehys (Vasemmanpuolenkoko : String; Oikeanpuolenkoko : String)

Lisää kehyksrn pystysuunnassa eli elementin

<frameset cols="Vasemmanpuolenkoko, Oikeanpuolenkoko">.

KehysSisältö (Kehyksenlähde : String; Kehyksennimi : String; Frameborder : Boolean; Kehyksenkoko : Integer; Kehyksenväri : String)

Lisää elementin

<frame src="Kehyksenlähde" name="Kehyksennimi" frameboder border=Kehyksenkoko bordercolor=Kehyksenväri>.

Jos frameborder-parametrin arvo on true, lisätään rivi, jossa on frameborder-teksti. Jos false, lisätään rivi, jossa ei ole frameborder-tekstiä.

LopetaKehys ()

Lisää elementin

</frameset>.

Linkki (Teksti : String; Osoite : String)

Lisää linkin sivulle eli elementin

<A HREF="Osoite">Teksti</A>.

Kuvalinkki (Kuvanosoite : String; Kehyksenpaksuus : Integer; Osoite : String)

Lisää elementin

<A HREF="Osoite"><IMG SRC="Kuvanosoite" BORDER=Kehyksenpaksuus></A>.

Kehyslinkki (Osoite : String; Kehyksennimi : String; Teksti : String)

Lisää elementin

<A HREF="Osoite" TARGET="Kehyksennimi">Teksti</A>.

Kommentti (Teksti : String)

Lisää elementin

<!--teksti-->.

Sähköpostiosoite (Osoite : String; Teksti : String)

Lisää elementin

<A HREF="MAILTO:Osoite">Teksti</A>.

Vapaateksti (Teksti : String)

Lisää Teksti-parametrin sisällön sivulle.

TulostaSivu ()

Lisää tarvittavat loppumerkit ja tulostaa sivun näytölle.

3.3 Taulukoiden käsittely

TaulukonAlku (Border : Integer; Width : String; KirjasinLaji : String; KirjasinKoko : Integer; Paikka : String)

Parametri Border kertoo taulukon reunojen leveyden pikselein. Parametrilla Width pystyy määrittelemään taulukon leveyden joko pikseleinä tai suhteutettuna näytön leveyteen. Parametreilla KirjasinLaji ja KirjasinKoko määrittellään taulukossa olevan tekstin fontit ja parametrilla Paikka kerrotaan tasaatanko taulukko näytön vasempaan laitaan (LEFT, oletusarvo), keskelle (CENTER) vai oikeaan laitaan (RIGHT)

TaulukonLoppu ()

Lopettaa taulukon määrittelyn.

VaihdaTaulukonFontti (KirjasinLaji : String; KirjasinKoko : Integer)

Määrittelee uudelleen taulukon kirjasinlajin.

VaihdaSolunVari (SoluNimi : String; Taustaväri : String; Tekstinväri : String)

Vaihtaa SoluNimi-parametrilla määritellyn solun taustavärin ja tekstin värin.

VaihdaSarakkeenOtsikot (Otsikko1 : String; Otsikko2 :String; jne)

Käy vaihtamassa oletussarakeotsikot käyttäjän antamiin.

TulostaTaulukko (Muoto : String)

Tulostaa tietokantakyselyn tuloksen aiemmin määritellyssä muodossa joko yksi- tai kaksiulotteisen taulukon muodossa parametri Muoto arvon mukaan (lomake tai taulukko).

4. Tietosisältö

Alustava luokkakaavio. Kuvauksessa on käytetty UML-tekniikkaa.

 

 











5. Testaus

Tuote testataan sitä varten rakennettavalla yksinkertaisella, mutta kaikkia kirjaston osia käyttävällä esimerkkiohjelmalla. Esimerkkiohjelmana toteutetaan tietojenkäsittelytieteen-laitoksen opiskelijoille koetulospalvelu.

5.1 Esimerkkijärjestelmän kuvaus

Esimerkkijärjestelmä: koetietojen välitys

Järjestelmän tehtävänä on tarjota opiskelijoiden nähtäväksi WWW:n kautta tietojenkäsittelytieteen laitoksen kokeiden tulokset, kurssin lopputulokset sekä kokeiden tehtävät ja malliratkaisut. Näytettävälle materiaalille ei kiinnitetä mitään erityistä muotoa, vaan kurssien vastuuhenkilöt voivat tuottaa materiaalin joko tavallisina tekstitiedostoina tai html-muotoisina tiedostoina. Kurssien vastuuhenkilöt sijoittavat tiedostot sopiviin hakemistoihin ja huolehtivat siitä, että tiedostot ovat luettavissa WWW:n kautta. Koetietojen välitysjärjestelmään kirjataan tiedostoista vain tunnistetiedot ja tiedoston URL-osoite. Tiedostoille voidaan määritellä näkyvissäoloaika.

5.2 Esimerkkijärjestelmän toiminnot

Tiedoston tuonti järjestelmään

Käyttäjä antaa tunniste- ja ryhmittelytiedot, näkyvissäoloajan ja näytettävän tiedoston URL-osoitteen. Kurssien nimet voidaan valita valikosta. Järjestelmä tarkastaa, että liitettävä tiedosto on olemassa.

Koetulosten osalta järjestelmä tarkastaa myös, että näyttöaika ei ylitä maksiminäyttöaikaa. Operaation suoritusoikeus tarkastetaan salasanan avulla.

Tiedoston poistaminen järjestelmästä

Käyttäjä antaa poistettavan tiedoston tunnistetiedot. Operaation suoritusoikeus tarkastetaan salasanan avulla. Poiston voi tehdä kuka tahansa, joka tietää järjestelmän salasanan. Tiedot eivät poistu oikeasti vaan tietue ainoastaan leimataan poistetuksi.

Tulosten katselu

Tulosten katselu on julkinen palvelu. Linkit kursseihin tai kokeisiin näytetään kirjausjärjestyksessä uusimmat ensin.

Tehtävien ja malliratkaisujen katselu

Tehtävien ja malliratkaisujen katselu on julkinen palvelu. Linkit kokeisiin ja ratkaisuihin näytetään kurssitasoittain (approbatur, cum laude, laudatur) kurssin nimen mukaisessa aakkosjärjestyksessä, kurssin sisällä uusimmat ensin. Vain sellaiset kurssit, joilla on kirjattuja kokeita ja/tai malliratkaisuja näytetään. Tiedoille tehdään hierarkkinen valikko.

Käyttötilastointi

Järjestelmä pitää raporttikohtaisesti kirjaa sitä kuinka monta kertaa raportti on noudettu.

6. Rajoitteet suunnittelulle ja toteutukselle

6.1 Noudatettavat standardit

Lähdekoodissa käytetään Java 1.1:ssä määriteltyjä ominaisuuksia. Lähdekoodi kommentoidaan siten, että siitä voidaan generoida javadoc-dokumentaatio.

6.2 Ohjelmistorajoitteet

Järjestelmä on ympäristöriippumaton, kunhan Java 1.1:stä on olemassa standardinmukainen toteutus ympäristölle, jossa järjestelmää on tarkoitus suorittaa.

6.3 Laitteistorajoitukset

Laitteistorajoitukset muodostuvat eri ympäristöjen Java-toteutusten mahdollisesti aiheuttamista rajoituksista. Nämä eivät ole projektiryhmän hallittavissa.

Lähteet