`"






















KIURU
Tietotekniikan sovellusprojekti
Toni Hilpinen
Marko Koivuniemi
Jussi Mäkinen
Miika Nurminen
Sovellussuunnitelma
25.11.2002
Jyväskylän yliopisto
Tietotekniikan laitos

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:   Työtila AgC222.2, puh.nro. (014) 260 4963, sähköpostilistojen osoitteet kiuru@korppi.jyu.fi ja kiurulaaja@korppi.jyu.fi.
Työn nimi:   Sovellussuunnitelma, Kiuru-projekti.
Työ:   Sovellussuunnitelma tietotekniikan sovellusprojektiin.
Tiivistelmä:   Kiuru-projekti toteuttaa Jyväskylän yliopiston tietotekniikan laitoksella kehitettyyn Korppi-järjestelmään WWW-pohjaisen varausosion sekä varaustietojen synkronoinnin Kotka- ja Timmi-järjestelmien välillä. Sovellussuunnitelmassa kuvataan sovelluksen toteutusta ja toimintaa.
Avainsanat:   Salivaraus, kurssien opetustapahtumat, resurssivaraus, Korppi-järjestelmä, Timmi-järjestelmä, WWW-sovellus.

Versionhallinta



Versio Päiväys Tehnyt Muutokset
0.1 16.10.2002 Toni Hilpinen Ensimmäinen versio
0.15 17.10.2002 Marko Koivuniemi Käyttötapauskaavion ja käyttötapausten päivitys
0.16 17.10.2002 Toni Hilpinen Ulkoasun muokkausta
0.2 7.11.2002 Toni Hilpinen Yleistä päivitystä
Miika Nurminen Tietokantasuunnitelma
Marko Koivuniemi Käyttöliittymäkaaviot ja LATEX-editointi
0.3 12.11.2002 Toni Hilpinen Korjauksia J-P Santasen kommenttien perusteella
0.4 25.11.2002 Miika Nurminen Korjauksia tietokantasuunnitelmaan, koodin merkintätapaan ja käyttöliittymäsuunnitelmaan

Contents

1  Johdanto
2  Termejä
    2.1  Aihepiirin yleisiä termejä
    2.2  Teknisiä termejä
3  Toiminnot
    3.1  Tilanvarausmoduli salien varausprosessin osana
    3.2  Projektin tehtävät
    3.3  Aikataulun salliessa toteutettavat
    3.4  Jatkokehitykseen jäävät
4  Toteutustekniikat ja työkalut
    4.1  JSP-tekniikka
        4.1.1  JSP-sivujen käsittelylogiikka
    4.2  Java-pavut (engl. JavaBeans)
    4.3  Tietokanta
5  Käyttöliittymäsuunnitelma
    5.1  Sivuhahmotelmat
        5.1.1  Varausjärjestelmä
        5.1.2  Ylläpitäjän käyttöliittymä
    5.2  Havaituista muutostarpeista
6  Tietokantasuunnitelma
    6.1  Toteutusratkaisuja
        6.1.1  Yhtenäiset tilat ja tilaryhmät
        6.1.2  Yhtenäiset tilat, tilaryhmät ja resurssit
        6.1.3  Tilat, tilaryhmät ja resurssit erillään
    6.2  Tietokohteisiin liittyvistä tiedoista
        6.2.1  Resurssipyynnöt
        6.2.2  Saliryhmät
        6.2.3  Varaukset
    6.3  Varausten sitominen ulkopuoliseen varausjärjestelmään
    6.4  Tuki monikielisyydelle
7  Ohjelmakoodissa käytettävät merkinnät

1  Johdanto

Kiuru-niminen tietotekniikan Sovellusprojekti on jatkoa Kotka-, Korppi-, Kolibri- ja Koppelo-projekteille. Kiuru toteuttaa Kotka-järjestelmään tilanvaraussovelluksen, joka rakentuu olemassaolevan Kotka-tietokannan päälle. Kiuru-sovellus mahdollistaa erilaisten tilojen suoran varaamisen tai varauspyyntöjen tekemisen erilaisin kriteerein, kuten esim. tilan koon tai sen laitteiden perusteella. Lisäksi Kiuru toteuttaa Kotka- ja Timmi-järjestelmien välisen varaustietojen synkronoinnin.
Syksyn 2002 Kiuru-projektiryhmään kuuluvat tietotekniikan opiskelijat Toni Hilpinen, Marko Koivuniemi, Jussi Mäkinen ja Miika Nurminen. Tilaajana toimii Jyväskylän yliopiston hallintovirasto ja tietotekniikan laitos.
Projektiryhmä tuottaa tämän sovellussuunnitelman lisäksi myös muita dokumentteja. Vaatimusmäärittelyssä määritellään vaatimukset, jotka toteutettavan sovelluksen tulee täyttää. Projektisuunnitelmassa käsitellään projektin taustoja ja tavoitteita, projektiorganisaatiota ja resursseja, sekä projektin tehtäviä aikatauluineen. Testaussuunnitelmassa esitellään Kiuru-projektissa toteutettavan sovelluksen testauksen toteutusstrategiat, testitapukset ja testausympäristö. Projektiraportti laaditaan projektin päätteeksi ja siinä tarkastellaan projektin kulkua ja onnistumista. Sovellusraportti kuvaa lopullisen sovelluksen onnistumista ja toimivuutta, jonka lisäksi se sisältää myös sovelluksen käyttö- ja asennusohjeet.
Luvussa 2 esitellään aiheeseen oleellisesti liittyviä termejä. Luku 3 tarkastelee sovellukseen toteutettavia ja ulkopuolelle jääviä toimintoja. Luvussa 4 tutustutaan sovelluksen toteutustekniikoihin ja työkaluihin. Luku 5 sisältää sivustokartan ja JSP-sivut sekä niiden kuvaukset. Luvussa 6 käsitellään sovelluksen tietokantaratkaisuja. Luvussa 7 määritellään ohjelmakoodin kirjoitustyyli ja kommentointitapa.

2  Termejä

Luvussa on kuvataan joitakin termejä, jotka tulee kaikkien projektiorganisaatioon kuuluvien henkilöiden ainakin jossain määrin sisäistää. Tekniset termit on pääosin listattu sellaisia 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ö tai organisaatio, joka maksaa varauksen.
Oheisvarattavaon liikuteltava esine, jonka vahtimestarit toimittavat tilaisuuden järjestäjän toiveiden mukaisesti haluttuun saliin haluttuna ajankohtana.
Resurssion johonkin saliin liittyvä ominaisuus tai kiinteästi saliin asennettu laite tai esine. Esimerkiksi salin paikkamäärä tai piirtoheittimen olemassaolo voivat olla resursseja.
Resurssipyyntökuten varauspyyntö, kuitenkin sillä erotuksella, että salin sijaan ilmoitetaan resurssien tarve.
Salion varattavissa oleva paikka, johon ihmiset voivat kokoontua (esimerkiksi luentosali tai kokoustila).
Sali-järjestelmäon Jyväskylän yliopistossa tällä hetkellä käytössä oleva tekstipohjainen salienvarausjärjestelmä.
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.
Varauspyyntöon varauksen pyytäjän tekemä ehdotus varauksesksi koskien tiettyä tilaa tiettynä ajankohtana.

2.2  Teknisiä termejä

Seuraavia ohjelmointiteknisiä termejä käytetään puhuttaessa sovelluksen taustalla olevasta järjestelmästä:
AJP12on protokolla tiedonsiirtoon Apache ja Tomcat -palvelimien välillä.
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.
JavaDocon Java-kehitysympäristön mukana tuleva dokumentointityökalu.
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.
Servletti(engl. servlet) on palvelimella sijaitseva sovellus, joka toteuttaa HTTP-palvelimen pyynnöstä tietyn toiminnon.
SQL eli Structured Query Language on relaatiotietokantojen hallintaan kehitetty standardi kieli.

3  Toiminnot

Luvussa kuvataan lyhyesti Kiuru-projektissa toteutettavia toimintoja. Toimintojen tarkempi erittely on esitetty erillisessä Vaatimusmäärittely-dokumentissa.

3.1  Tilanvarausmoduli salien varausprosessin osana

Kuvassa 1 on esitetty karkealla tasolla salien varausprosessin kulku. Varausprosessin yksityiskohtainen selvitys on kuvattu Kiuru-projektin haastatteluraportissa.
Figure
Figure 1: Salien varausprosessi
Projektin toteuttama sovellus tukee ensisijaisesti varauspyyntöjä ja varausten vahvistuksia. Jatkokehityksessä toteutettava suunnitteluohjelma tukee resurssien kartoitusta ja -jakoa.

3.2  Projektin tehtävät

Kiuru-projektin ensisijaisena tehtävänä on toteuttaa Korppi-järjestelmään liitettävä tilanvarausmoduli, joka vastaa toiminnoiltaan Sali-järjestelmää. Projekti toteuttaa myös Korppi- ja Timmi-järjestelmien välisten salinvaraustietojen synkronoinnin hyödyntäen Yomi Applications Oy:n toimittamaa Timmi-rajapintaa. Varauspyyntöjen teko sekä varausten muokkaaminen, poisto ja vahvistaminen ovat Kiuru-projektin tärkeimpiä tavoitteita. Lisäksi projektiin kuuluu järjestelmissä olevien yhteyshenkilöiden lisäys ja muokkaus.

3.3  Aikataulun salliessa toteutettavat

Saliryhmien, salien ja oheisvarattavien lisäys ja muokkaus katsottiin palavereissa niin harvoin suoritettavaksi operaatioksi, että se voidaan tarvittaessa suorittaa suoraan tietokantaan. Näiden toimintojen toteuttaminen ei siis ole tässä projektissa pakollista. Kyseiset käyttöä helpottavat, mutta eivät pakolliset ominaisuudet, toteutetaan mikäli aikataulu antaa myöten.

3.4  Jatkokehitykseen jäävät

Korppi-järjestelmään tulee toteuttaa suunniteluohjelma, jolla voidaan suunnitella luentojen, demojen ja harjoitusten sijoittamista saleihin. Tämä kuitenkin rajattiin jo projektin alkuvaiheessa jatkokehityksen harteille, sillä ajanpuute ei mahdollista sen kehittämistä tässä projektissa. Kiuru-projekti ottaa huomioon omassa toiminnassaan myös tulevien projektien tarpeet. Kiuru-projekti suunnittelee tietokantaan taulut resurssipyyntöjen käsittelyä varten, mutta niiden käsittely jää tuleville projekteille.

4  Toteutustekniikat ja työkalut

Luvussa esitellään projektissa käytettävät työkalut ja ohjelmointitekniikat. Koska Korppi-järjestelmä on useiden aikaisempien projektien tulos, käyttää Kiuru pitkälti samoja menetelmiä ja tekniikoita yhtenäisyyden säilyttämiseksi. Kehitysympäristönä on Redhat Linux 7.2 sekä sovelluskehittimenä NetBeans IDE 3.4.
Figure
Figure 2: Korppi-järjestelmän rakenne.

4.1  JSP-tekniikka

Kun WWW-palvelin vastaanottaa pyynnön selaimelta, se päättelee, onko kyseessä staattinen HTML-sivu vai JSP-sivu. Apache palauttaa staattiset sivut takaisin selaimeen.
JSP-sivun pyyntö välittyy servlettimoottorille, joka Korppi-järjestelmässä on Tomcat. Se tutkii onko kyselyä vastaava servletti olemassa. Olemassaoleva servletti suoritetaan ja se palauttaa selaimelle tuloksen HTML-muodossa. Jos servlettiä ei löydy, pyyntö ohjautuu JSP-moottorille, joka generoi servletin.

4.1.1  JSP-sivujen käsittelylogiikka

Kaaviossa esitetään vaiheittain tietojen käsittelylogiikka johonkin tietokohteeseen tehtävien pyyntöjen ja muokkausten osalta.
Figure
Figure 3: JSP-sivujen käsittely.
Oletetaan, että Modify-sivu on aluksi saanut HTTP-parametrina tiedon, mitä sivulla tehdään (esim. lisäys tai muokkaus) ja käsiteltävän tietokohteen tunnisteen. Käsittelyvaiheet on numeroitu seuraavasti:
  1. JSP-sivun HTTP-parametrit asettavat Handler-pavun vastaavat ominaisuudet (tieto siitä, mitä sivulla tehdään on myös ominaisuutena). HandlerBean hakee tarvittaessa tiedot tietokannasta.
  2. Sivun tiedot generoidaan Handler-pavun ominaisuuksien pohjalta.
  3. Käyttäjän syöttämät Modify-lomakkeen tiedot lähetetään HTTP-muuttujina JSP-Handler sivulle.
  4. HTTP-parametrit asettavat Handler-pavun vastaavat ominaisuudet. Jos syötteet ovat kelvollisia, HandlerBean päivittää tarvittaessa tietokannan tiedot.
  5. HandlerBean palauttaa ominaisuuksissaan tiedon, onko päivitys onnistunut ja ovatko syötteet kelvollisia.
Projektiryhmä noudattaa seuraavia periaatteita JSP-sivuja ja Java-papuja toteutettaessa:

4.2  Java-pavut (engl. JavaBeans)

Java-pavut ovat Javalla toteutettuja luokkia. Java-koodi keskitetään papuihin siten, että varsinaisten JSP-sivujen ylläpidettävyys säilyy. Lisäksi Kiuru-projektin tavoitteena on tuottaa yleiskäyttöisiä papuja, joita tulevat projektit ja jatkokehittäjät voivat käyttää varausten suunnitteluohjelman toteutuksessa. Lisäksi erikoistoimintoja, kuten Timmi-rajapinnan käsittely ja rajapinnasta saatavien XML-muotoisten vastausten käsittely on tarkoitus hoitaa omissa pavuissaan. Näin järjestelmän ylläpito ja muokkaaminen helpottuu.

4.3  Tietokanta

Aiempien Korppi-järjestelmään liittyvien sovellusprojektien tapaan Kiuru-projektissa ei käytetä PostgreSQL -tietokannan hallintajärjestelmän erikoispiirteitä, vaan noudatetaan SQL92-standardia. Tämä ratkaisu mahdollistaa järjestelmän siirrettävyyden alustalta toiselle.
Kiuru-projektin toteuttamat muutokset suunnitellaan ER-kaavioiden avulla ja toteutetaan SQL-lauseilla. Muutokset olemassaolevaan tietokantaratkaisuun pyritään minimoimaan, mutta toisaalta pyritään ottamaan huomioon tulevien projektien tarpeet.

5  Käyttöliittymäsuunnitelma

Luvussa esitetään hahmotelmia uusista käyttöliittymän sivuista, jotka Kiuru-projekti toteuttaa.

5.1  Sivuhahmotelmat

Kuvassa 4 on kuvattu käyttöliittymäsivujen jakautuminen järjestelmän moduleissa. Olemassaolevia sivuja muokataan kalenterimodulin, opettajan käyttöliittymän ja tenttien hallinnan osalta. Varausjärjestelmä sisältää sivut resurssipyyntöjen ja varausten listaukseen, käsittelyyn sekä raporttien generointiin. Ylläpitäjän käyttöliittymään lisätään sivut yhteyshenkilöiden, salien, saliryhmien ja resurssien hallintaan. Varausten, yhteyshenkilöiden ja salien tietoja muokkaavat sivut käyttävät Timmi-rajapintakomponenttia.
Figure
Figure 4: Sivustokartta.

5.1.1  Varausjärjestelmä

Varausjärjestelmä integroidaan Korppi-järjestelmään omana modulinaan (kuten edeltävissä projekteissa mm. kalenteri ja opinnäyteosio). Olemassaoleviin sivuihin tehtävät muutokset ovat ensisijaisesti linkkejä varausjärjestelmän sivuille.
Kuvassa 5 on esitetty näkymä käyttäjän varauspyyntöjen näyttöön.
Figure
Figure 5: Omien varausten näyttö.
Sivu listaa käyttäjän omat varauspyynnöt ja resurssipyynnöt ryhmiteltynä käyttäjän määrittelemän kentän mukaan. Tapahtumat, joilla on toistoja voidaan ryhmitellä yhdeksi kokonaisuudeksi. Tapahtuman kuvauksen kohdalla on linkki varauspyynnön muokkaukseen. Jos tapahtuma ei liity mihinkään kurssiin, tilalla on tapahtumaryhmän nimi (esim. Kiuru-sovellusprojektiryhmä).
Kuvassa 6 on esitetty varauspyynnön muokkausnäyttö.
Figure
Figure 6: Yksittäisen varauspyynnön lisääminen ja muokkaus.
Sivua kutsutaan kalenterista, opettajan käyttöliittymästä tai tenttien hallinnasta. Osa sivun tiedoista näytetään vastaavan tapahtuman pohjalta. Sivun alaosassa on linkit varaukseen liittyvään tapahtumaan ja tapahtuman mahdollisiin toistoihin.
Varauspyynnön tekijä on oletuksena Korppi-järjestelmän tämänhetkinen käyttäjä. Yhteyshenkilöt valitaan kurssin (tunti)opettajista tai tapahtumaryhmän jäsenistä. Käyttäjä voi valita myös "tuntemattoman" henkilön.
Kuvassa 7 on esitetty varauspyyntöjen vahvistussivu.
Figure
Figure 7: Varauspyynnön vahvistaminen.
Sivu listaa varauspyynnöt saleihin, joihin käyttäjällä on vahvistusoikeus. Varauspyynnöt on ryhmitelty käyttäjän määrittelemän kentän mukaan. Sivulla voi hakea varauspyyntöjä erilaisilla rajoitteilla.
Päällekkäin menevät varaukset on korostettu, toistettavat tapahtumat ryhmitelty. Vahvistaja voi muokata varausta ennen sen hyväksymistä.
Kuvassa 8 on esitetty salin hakunäyttö.
Figure
Figure 8: Salin haku.
Sivua voidaan kutsua aina, kun käyttäjän tulee hakea salin tietoja eri hakukriteereillä. Lisähakuehdot ovat valinnaisia. Oletuksena sivu näyttää käyttäjän viimeisimmät tai yleisimmät salit.
Kuvassa 9 on esitetty salin varausten viikkonäkymä.
Figure
Figure 9: Näytä salin viikkonäkymä.
Sivu vastaa kalenterimodulin lukujärjestystä. Erona on, että henkilön tai tapahtumaryhmän tietojen sijasta näytetään salin tietoja. Linkeistä käyttäjä pääsee tarkastelemaan tapahtuman tietoja tai syöttämään uusia tapahtumia. Sivun toteutuksessa käytetään hyödyksi kalenterimodulin koodia.
Kuvassa 10 on esitetty raportin luontisivu.
Figure
Figure 10: Raportin luonti.
Varausmodulilla voi luoda monipuolisia varausraportteja, kaikki saman mallin mukaan. Raportit luodaan kahdessa vaiheessa. Ensin käyttäjä päättää raportin tietojen ryhmittelystä, aikarajojen syötöstä ja muotoilusta. Tämän jälkeen varsinaisella raporttisivulla haetaan raporttiin tulevat tiedot.
Tietoja voidaan ryhmitellä salin, saliryhmän, yhteyshenkilön tai kurssin mukaan. Aikarajan voi antaa viikon tai päivämäärän tarkkuudella. Raportti voidaan generoida lukujärjestyksen tai listan muotoon.
Kuvassa 11 on esimerkki henkilöraportista.
Figure
Figure 11: Esimerkki henkilöraportista.
Sivun yläosassa käyttäjä voi hakea raporttiin tulevat tiedot. Hakuehdot riippuvat raportin tyypistä, tässä tapauksessa haetaan henkilöitä. Lisäksi raportille määritellään aikaväli (tässä tapauksessa päivämäärän tarkkuudella) sekä raporttiin tulevat kentät (tässä pohjana opettajan käyttöliittymän raporttisivu). Raporttimalli voidaan tallentaa tulevaa käyttöä varten.

5.1.2  Ylläpitäjän käyttöliittymä

Suunniteltavat sivut lisätään osaksi Korppi-järjestelmän nykyistä ylläpitäjän käyttöliittymää. Projekti toteuttaa aikataulun salliessa sivut, joiden toiminnot ylläpitäjä voi tehdä helposti suoraan SQL:llä.
Kuvassa 12 on kuvattu salin lisäystoiminto.
Figure
Figure 12: Salin lisäys.
Salin lisäystoimintoa voivat ylläpitäjien lisäksi hyödyntää tavalliset käyttäjät lisätessään omia tilojaan (esim. harrastuspaikat). Sivulla voidaan määrittää salille jokin saliryhmä (useampiin saliryhmiä varten liittäminen täytyy tehdä saliryhmien hallinnan puolella). Lisäksi sali voidaan määritellä "tavalliseksi" tai "varattavaksi" Timmi- tai vain Korppi-järjestelmään.
Kuvassa 13 on kuvattu saliryhmän lisäys tai muokkaus.
Figure
Figure 13: Saliryhmän lisäys.
Saliryhmän hallintanäytössä voidaan määritellä saliryhmän tiedot ja ryhmään kuuluvat salit. Uusien salien lisäys tehdään hakutoiminnon avulla valitsemalla. Saliryhmään liittyvien henkilöiden asetus on omassa näytössään, johon on sivulta linkki.
Kuvassa 14 on esitetty saliryhmään liittyvien henkilöiden hallinta.
Figure
Figure 14: Saliryhmän henkilöiden hallinta.
Sivulle tullaan saliryhmien hallintasivun kautta. Sivulla voidaan määritellä henkilöt, joilla on oikeus muokata saliryhmää sekä ryhmään kuuluvien salien vahvistajat.
Yleensä vain ylläpitäjä tai henkilökohtaisen saliryhmän luoja voivat muokata saliryhmiä. Vahvistajille voidaan määrittää erikseen vahvistustaso (tavallinen/päävaraaja).
Kuvassa 15 on esitetty saliryhmien hallintanäyttö.
Figure
Figure 15: Saliryhmän näyttö.
Sivua käytetään saliryhmäjoukon hakuun. Haku voidaan kohdistaa kaikkiin saliryhmiin tai tiettyä tyyppiä (esim. rakennukset) edustaviin ryhnmiin. Lisäksi sivu näyttää saliryhmiin liittyvät salit.
Kuvassa 16 on esitetty Timmin yhteyshenkilöiden hallinta.
Figure
Figure 16: Yhteyshenkilöiden hallinta.
Sivulla näkyvät keskitetysti järjestelmän tuntemat ja tuntemattomat Timmi-järjestelmän yhteyshenkilöt. Sivua käytetään, jos Timmi-järjestelmään on lisätty uusi yhteyshenkilö. Tällöin ylläpitäjä tai sihteeri voi yhdistää yhteyshenkilön tiedot olemassaolevaan Korppi-tunnukseen. Sivulla voi myös lisätä uusia yhteyshenkilöitä Timmi-järjestelmään tai poistaa tiedon yhteyshenkilöstä Korppi-järjestelmästä.

5.2  Havaituista muutostarpeista

Sivuhahmotelmien pohjalta on jo suunnitteluvaiheessa havaittu muutostarpeita sekä uusien sivujen että sivujen toiminnallisuuden ja ulkoasun osalta.
Sivusto tulee muokkautumaan koko ajan sovelluksen toteutuksen ajan, joten hahmotelmia ei ole päivitetty vastaamaan nykytilannetta. Hahmotelmien ulkoasu ei ole yhtenevä, koska niitä ovat tehneet kaikki projektiryhmän jäsenet itsenäisesti. Lopullisten sivujen ulkoasu hiotaan yhteneväksi viimeistään projektin testausvaiheessa.

6  Tietokantasuunnitelma

Luvussa kuvataan Kiuru-projektin suunnittelemia lisäyksiä ja muutoksia Kotka-tietokantaan.

6.1  Toteutusratkaisuja

Projektiryhmä tutki kolmea erilaista toteutusmallia ohjaajien ja ryhmäläisten ehdotusten pohjalta. Mallit eroavat toisistaan tilojen, tilaryhmien ja resurssien määrittelyn suhteen.

6.1.1  Yhtenäiset tilat ja tilaryhmät

Malli perustuu ideaan, että tila voisi koostua useammista tiloista. Samantyyppistä ratkaisua on sovellettu Kotka-tietokannassa organisaatioiden määrittelyssä. Mallia havainnollistaa kuva 17.
Figure
Figure 17: Yhtenäiset tilat ja tilaryhmät.
Mallin hyviä puolia ovat:
Huonoja puolia ovat:

6.1.2  Yhtenäiset tilat, tilaryhmät ja resurssit

Mallin tarkoituksena on yleistää nykyisen kannan tilan, tilaryhmän ja resurssin käsitteitä niin, että ne kaikki luokitellaan resursseiksi, jotka voivat sisältää toisia resursseja. Näin muodostuisi "resurssipuita". Mallia havainnollistaa kuva 18.
Figure
Figure 18: Yhtenäiset tilat, tilaryhmät ja resurssit.
Mallin hyviä puolia ovat:
Huonoja puolia ovat:

6.1.3  Tilat, tilaryhmät ja resurssit erillään

Malli pyrkii säilyttämään alkuperäisen KOTKA-tietokannan mahdollisimman pitkälle ennallaan lisäten rinnalle uusia tauluja, joilla järjestelmän vaatimukset saadaan täytettyä toteutuksen helppoutta ja tehokkuutta ajatellen. Malli pyrkii yhdistämään molempien edellä kuvattujen mallien hyviä puolia.
Figure
Figure 19: Parametritaulumerkintä.
Kuvassa 19 on esitetty lyhennysmerkintä parametritaulujen käytölle. Yksityiskohtainen kantarakenne on kuvassa 20.
Figure
Figure 20: Yhtenäiset tilat, tilaryhmät ja resurssit.
Mallin hyviä puolia ovat:
Huonoja puolia ovat:

6.2  Tietokohteisiin liittyvistä tiedoista

Aliluvussa kuvataan Kiuru-projektin käyttämät keskeisimmät tietokohteet ja niihin liittyvät yhteydet.

6.2.1  Resurssipyynnöt

ResourceRequest-taulu kuvaa tiettyyn suunnitellun kurssin tapahtumaryhmään liittyvän resurssipyynnön. Resurssipyyntö koostuu viittauksista resursseihin ja salityyppeihin sekä rajoitteesta määrätylle resurssille (esim. salin paikkamäärän oltava yli 50).

6.2.2  Saliryhmät

Tietokannassa olevia saleja voidaan ryhmitellä fyysisiiin tai loogisiin saliryhmiin. Tieto saliryhmistä on SpaceGroup-taulussa.

6.2.3  Varaukset

Reservation-taulu kuvaa varauspyynnöt ja vahvistetut varaukset.

6.3  Varausten sitominen ulkopuoliseen varausjärjestelmään

Timmi-järjestelmässä on omat ID-numerot rakennuksille, tiloille, organisaatioille, yhteyshenkilöille, varauksille ja tilauksille (esim. toistuva varus). ID-numeroiden yksilöinti Korppi- ja Timmi-järjestelmien välillä hoituu Parameter- ja ParameterType -taulujen avulla.
Henkilöille ja organisaatioille vastaavat taulut ovat olemassa kannassa. Uudet taulut ovat SpaceParameter-, SpaceParameterType, ReservationParameter- ja ReservationParameterType.
Uusien parametrien tyyppinä on yleisesti alkuperäistä tietokohdetta vastaava TimmiID ja parametrina kyseisen ID:n arvo. Saleille merkitään lisäksi rakennuksen TimmiID, varauksille tilaunumero ja henkilöille yhteyshenkilön organisaation TimmiID.

6.4  Tuki monikielisyydelle

Kotka-tietokannan olemassaolevista tauluista PersonParameterType, OrganisationParameterType ja Resource on monikielistetty käytettäen erillisiä Translation-tauluja. Käännöstauluista ollaan luopumassa Korppi-järjestelmässä. Parametri- ja resurssitauluihin lisätään uusi name-kenttä suomenkielisiä muotoja varten. Jatkossa monikielistäminen hoidetaan keskitetysti User-pavun T-metodilla (Translate).

7  Ohjelmakoodissa käytettävät merkinnät

Kolibri-projekti päätyi yhtenäisyyden vuoksi käyttämään sovelluksen moduulien listauksissa samantyylistä kommentointitapaa kuin aiemmat Korppi-järjestelmää kehittäneet projektit. Aiempiin projekteihin verrattuna merkintätapa on määritelty täsmällisemmin. Ryhmä tulee käyttämään ja muuttamaan Kotka-, Korppi- ja Kolibri-projektien toteuttamia Java-papuja. Uusia Java-papuja lisätään sitä mukaa, kun tarve vaatii.
Java-papujen koodissa käytetään kahden merkin sisennystä. Koodiin lisätään kaikkien luokkamääritysten, attribuuttien ja metodien alkuun JavaDoc-kommentit luokkien toteutuksen automaatisoitua dokumentointia varten. Attribuuttien asetus- ja saantimetodit voidaan tarvittaessa jättää kommentoimatta, jos niiden toiminta on asiayhteydestä selvää.
JSP-sivuilla kaikki Java-kieliset tulostukset tehdään <%= %>-tulostuselementillä. Staattisia HTML-elementtejä ei tulosteta ohjelmallisesti, vaan ne pidetään JSP-sivujen HTML-lohkoissa. JSP-sivuilla generoidaan XHTML 1.0 -standardin mukaista koodia, mutta itse JSP-sivut eivät ole XML-dokumentteja.
Sivulla pageref on esimerkki Java-pavusta. Sivulla pageref on JSP-sivupohja.
/******************************************************************************
*                             MODULE DESCRIPTION
*******************************************************************************
*
*	NAME: MyBean.java
*	LANGUAGE: Java 2
*	DATE: 25.11.2002
*	AUTHOR: Miika Nurminen, Jyväskylän yliopisto
*
*******************************************************************************
*             COPYRIGHT (C) KIURU-PROJEKTIRYHMÄ
*             Limited rights granted. Please refer to license
******************************************************************************/

/******************************************************************************
*                                  UPDATES
*******************************************************************************
*
* 25.11.2002 Initial release
*
******************************************************************************/

/**
 * This is a test class.
 */
public class MyClass extends ... implements ... {

// Attributes
  /**
   * myBoolean is used for...
   */
  private boolean myBoolean;

// Constructors 
  /**
   * Default constructor for MyClass
   */
  public MyClass() {
  }

// Access methods
  public boolean getMyBoolean() {
    return myBoolean;
  }
  public void setMyBoolean(boolean myBoolean) {
     this.myBoolean=myBoolean;
  }

// Methods
  /**
   * function description
   */
  void executeFunc(...) {
    ...
    // Specific line comment
  }
}

/******************************************************************************
*                  COPYRIGHT (C) KIURU-PROJEKTIRYHMÄ
*             Limited rights granted. Please refer to license
******************************************************************************/

<%@ include file="../shared/header.inc" %>
<%@ page language="Java" import="kotkabeans.*, kolibribeans.*, java.sql.*, 
     kiurubeans.*" session="true" autoFlush="true" isThreadSafe="true"   
     isErrorPage="false" errorPage="../shared/showError.jsp" %>
<jsp:useBean id="error" scope="session" class="kotkabeans.Error" />

<%
/******************************************************************************
*                             MODULE DESCRIPTION
*******************************************************************************
*
*	NAME: template.jsp
*	LANGUAGE: JSP 1.1
*	DATE: 25.11.2002
*	AUTHOR: Jussi Mäkinen, Jyväskylän yliopisto
*
*******************************************************************************
*             COPYRIGHT (C) KIURU-PROJEKTIRYHMÄ
*             Limited rights granted. Please refer to license
******************************************************************************/

/******************************************************************************
*                                  UPDATES
*******************************************************************************
*
* 25.11.2002 Initial release
*
******************************************************************************/
pageContext.setAttribute("checkMethod", "SIMPLE"); 
%>
<%@ include file="../shared/userCheck.inc" %>
<%@ include file="../shared/menus.inc" %>

<h3>Otsikko</h3>
<p>
Tervetuloa, <%=User.getName()%>.
</p>

<table>
<% 
for (int i=0; i<10; i++) {
%>
  <tr><td><%= ... %></td></tr>
<%
}
%>
</table>

<%@ include file="../shared/footer.inc" %>
/******************************************************************************
*                  COPYRIGHT (C) KIURU-PROJEKTIRYHMÄ
*             Limited rights granted. Please refer to license
******************************************************************************/

Lähteet

[1]
Hillebrand Minna, Silván Markus, Vanhanen Antti ja Ylitalo Marko, "Koppelo-projektin projektikansio", Jyväskylän yliopisto, tietotekniikan laitos, 2002.
[2]
Hilpinen Toni, Koivuniemi Marko, Mäkinen Jussi ja Nurminen Miika, "Kiuru-projektin haastatteluraportti", Jyväskylän yliopisto, tietotekniikan laitos, 2002.
[3]
Hilpinen Toni, Koivuniemi Marko, Mäkinen Jussi ja Nurminen Miika, "Kiuru-projektin vaatimusmäärittely", Jyväskylän yliopisto, tietotekniikan laitos, 2002.
[4]
Jaakkola Mia, Juutinen Sanna, Lupari Matti ja Nieminen Mikko, "Kolibri-projektin projektikansio", Jyväskylän yliopisto, tietotekniikan laitos, 2001.
[5]
Lesonen Minna, Pekkanen Hannu, Tawast Tuukka ja Uuksulainen Heikki, "Korppi-projektin projektikansio", Jyväskylän yliopisto, tietotekniikan laitos, 2001.
[6]
Horppu Ismo, Mielityinen Markku ja Vire Markku, "Kotka-projektin projektikansio", Jyväskylän yliopisto, tietotekniikan laitos, 2000.
[7]
Santanen Jukka-Pekka, "tietotekniikan Sovellusprojektien ohje", Jyväskylän yliopisto, tietotekniikan laitos, 2002.
[8]
Santanen Jukka-Pekka, "Opinnäytteiden kirjoittaminen, lyhyt oppimäärä", Jyväskylän yliopisto, tietotekniikan laitos, 2000.



File translated from TEX by TTH, version 3.22.
On 02 Jan 2003, 17:53.