Kottarainen-projekti

Sampsa Lintunen

Tiina Pöyhönen

Teemu Vähä-Ruka

Timo Ylönen

Sovellussuunnitelma 14.4.2003

Jyväskylän yliopisto

Tietotekniikan laitos

Kottarainen-projektin tietoja

Tekijät: Sampsa Lintunen ( sampsa@cc.jyu.fi),

Tiina Pöyhönen ( tmpoyhon@cc.jyu.fi),

Teemu Vähä-Ruka ( teemuvr@cc.jyu.fi) sekä

Timo Ylönen ( tylonen@cc.jyu.fi).

Työ: Sovellussuunnitelma tietotekniikan sovellusprojektiin

Tiivistelmä: Kottarainen-projekti toteuttaa WWW-pohjaisen kyselysovelluksen, jonka osiot mahdollistavat kyselyiden luomisen WWW-ympäristöön, vastausten hallinnan sekä tulosten muodostamisen ja esittämisen. Kottarainen-sovellus tulee olemaan yksi aiemmin toteutetun Korppi-järjestelmän moduuleista. Sovellussuunnitelmassa kuvataan sovellusta tekniseltä toteutukseltaan sekä sen toimintojen ja ominaisuuksien priorisointi. Suunnitelmassa esitetään myös hahmotelmat sovelluksen sivustokartasta sekä kuvataan koodin kommentointia.

Tilaajat ja muut projektiin liittyvät henkilöt: Sovelluksen tilaajia ovat yliopiston organisaatioista avoin yliopisto edustajanaan Eija Ihanainen, hallinto edustajanaan Mauno Väisänen, opetuksen laadun kehittämishanke OPLAA! edustajanaan Jari Rantamäki sekä virtuaaliyliopisto, jota edustaa Antti Auer. Laitoksen vastaavana ohjaajana toimii Jukka-Pekka Santanen sekä teknisinä ohjaajina Jussi Mäkinen ja Vesa Lappalainen.

Yhteystiedot: Agora, huone C223.2, puh.nro. 014-260 4964, projektiorganisaation sähköpostilista kottarainen@korppi.jyu.fi.

Avainsanat: Tiedonkeruu, kyselyt, palaute, tiedon esittäminen, WWW-sovellus, Kotka-järjestelmä

Versionhallinta

Versio
Päiväys
Tehnyt
Muutokset
1.0
10.3.
Tiina Pöyhönen
Suunnitelmanteko alulle, otsikkojen suunnittelu.
1.3
10.3.-19.3.
Tiina Pöyhönen
Otsikoiden alle tekstiä. Työkalujen ja käyttöympäristöjen faktoja selville. Käyttötapauksien suunnittelu alkuun.
1.4
20.3.
Tiina Pöyhönen
Sampsan ehdottamien muutosten korjaus.
1.41
24.3.
Tiina Pöyhönen
Timon ehdottamien muutosten korjaus.
1.42
25.3.
Tiina Pöyhönen
Idea vaatimusmäärittelyn tiivistelmän lisäämisestä hylätty. Tyylejä muokattu. Käyttötapauksia paranneltu.
1.5
25.3.
Sampsa Lintunen
Käyttötapauksiin lisää se selostuksia. Hienosäätöä.
1.51
26.3.
Tiina Pöyhönen
Teemun tekemien käyttöliittymäkuvien lisääminen ja selostuksia. Viimeistely ensimmäisen version esittämiskuntoon.
2.0
31.3.
Tiina Pöyhönen
Lisätty tietoa koodin kommentointikäytännöstä. Korjattu Santasen ehdottamia korjauksia.
2.1
1.4.
Tiina Pöyhönen, Timo Ylönen
Korjattu Santasen ehdottamia korjauksia.
2.2
2.4.
Tiina Pöyhönen
Korjattu Santasen ehdottamia korjauksia. Käyttötapaukset siirretty vaatimusmäärittelyyn.
2.3
7.4.
Sampsa Lintunen
Lisätty tietokannan määrittely.
2.4
14.4.
Teemu Vähä-Ruka
Santasen ehdottamia korjauksia.
2.45
10.6.
Teemu Vähä-Ruka
Hiomista kansiota varten.

Sisällysluettelo

1 Johdanto

Kottarainen on Jyväskylän yliopiston tietotekniikan laitoksen kevään 2003 sovellusprojekti, joka toteuttaa WWW-pohjaisen kyselyjen laatimis-, hallinta- ja analysointisovelluksen Jyväskylän yliopiston käyttöön. Kyseisen Kottarainen-sovelluksen osia ovat kyselyiden luominen WWW-ympäristöön, vastausten hallinta sekä tulosten muodostaminen ja esittäminen.

Kottarainen-sovellus tulee toimimaan yhtenä moduulina jo olemassa olevaa Korppi-nimistä opetushallintajärjestelmää. Tämän järjestelmän edeltäjä, Kurki, toteutettiin opiskelijaprojektina vuonna 1998. Sitä ovat seuranneet projektit, Kotka, Korppi, Halko, Kolibri, Koppelo ja Kiuru.

Kevään 2003 Kottarainen-ryhmään kuuluvat tietotekniikan opiskelijat Sampsa Lintunen, Tiina Pöyhönen, Teemu Vähä-Ruka ja Timo Ylönen. Tilaajana toimivat Jyväskylän yliopiston organisaatioista avoin yliopisto edustajanaan Eija Ihanainen, hallinto edustajanaan Mauno Väisänen, opetuksen laadunkehittämishanke OPLAA! edustajanaan Jari Rantamäki sekä virtuaaliyliopisto-hanke, jota edustaa Antti Auer. Kottarainen-projektin vastaavana ohjaajana toimii Jukka-Pekka Santanen sekä teknisinä ohjaajina Jussi Mäkinen ja Vesa Lappalainen.

Tämä dokumentti on suunnitelma toteutettavalle sovellukselle ja sitä tullaan tarkentamaan sovelluksen loppuraportiksi projektin aikana. Dokumentti määrittää toteutettavan sovelluksen tavoitteita, ominaisuuksia ja toimintoja sekä käyttöliittymän ja muiden sovelluksen osien toteutusta. Lisäksi dokumentissa esitellään käytettäviä tekniikoita. Projektin taustoja, tavoitteita ja resursseja kuvataan tarkemmin Projektisuunnitelmassa. Sovellukselta vaadittavat ominaisuudet on esitetty Vaatimusmäärittelyssä.

Lukuun 2 on kerätty projektissa ja sen dokumenteissa käytettäviä termejä. Luku 3 käsittelee sovellukselle asetettuja tavoitteita ja sovelluksen ominaisuuksia. Luvussa 4 käsitellään Kottarainen-projektin palvelinratkaisuja ja valotetaan projektissa käytössä olevia sovellusympäristöjä. Luku 5 esittelee tuotettavan sovelluksen käyttöliittymänäkymiä. Luku 6 kuvaa tietokannan rakennetta sekä etenkin Kotka-kantaan tulevia muutoksia ja lisäyksiä. Luku 7 käsittelee ohjelmakoodin kommentointia ja luvussa 8 kerrotaan testauksen pääperiaatteista.

2 Termistöä

Luvussa on selvennetty Kottarainen-projektissa käytettävää termistöä. Kottarainen-projektin aiheeseen ja Korppi-järjestelmään liittyviä termejä ovat seuraavat:

Benchmarking on arviointitapa, jossa useampi organisaatio suorittaa matriisimuotoisen laadunarviointikyselyn ja vertailee saamiaan tuloksia keskenään.

Kohde on tässä dokumentissa käytetty lyhenne, jolla tarkoitetaan kysymystä, kysymysryhmää ja kyselyä yhdessä.

Korppi on Jyväskylän yliopistossa kehitetty opetushallintajärjestelmä.

Kotka on Korppi-järjestelmän tietokanta ja henkilötietojen hallintaosio.

Kysely käsittää koko kyselyn ja voi koostua yhdestä tai useasta kysymysryhmästä.

Kysymyspankki on kokoelma kysymyssarjoja, joista voi valita uuden kyselynsä pohjaksi kokonaisia kyselyjä, kysymysryhmiä tai yksittäisiä kysymyksiä.

Kysymysryhmä käsittää yhden tai useampia samaan aihepiiriin liittyviä kysymyksiä.

Kysymyssarja on kysymyspankkiin saataville sijoitettu kysely.

Looginen ryhmittely on kysymysten ryhmittely analysointia varten asiasisällön mukaan.

SAS on tilastollinen ohjelma.

SPSS on yliopistolla laajasti käytetty tilastollinen analysointi-ohjelma.

SPSS Data Entry on WWW-kyselyiden tekemiseen tarkoitettu ohjelma.

Survo on käyttöympäristö tekstin ja numeerisen tiedon luovaan käsittelyyn.

Visuaalinen ryhmittely on kysymysten ryhmittely visuaalisesti eri ryhmiin niin, että käyttäjältä piilotetaan loogiset ryhmät.

Projektin toteutusympäristöön sekä käytettäviin työkaluihin ja tekniikoihin liittyviä termejä ovat seuraavat:

Apache on ilmainen HTTP-palvelinohjelmisto.

CSS eli Cascading Style Sheets on WWW-sivujen ulkoasua kuvaava kieli.

CSV (Comma Separated Values) on tiedon esitysmuoto, jossa eri muuttujien arvot erotetaan toisistaan pilkulla.

CVS (Concurrent Version System) on ohjelmistokehityksessä käytettävä versionhallintajärjestelmä.

Eväste (engl. cookie) on Netscapen luoma, mutta nykyään jo standardoitu menetelmä saada WWW-sivuista vuorovaikutteisempia. Palvelin lähettää pieniä tietopaketteja selaimelle, jonka perusteella käyttäjä asetuksineen tunnistetaan jatkossa.

HTML on WWW-sivujen sisältöä kuvaava kieli.

HTTP on WWW-arkkitehtuurin käyttämä tiedonsiirtoprotokolla.

IMS-standardi on Global Learning Consortiumin määrittely kysymysten esittämiselle XML-muodossa.

Java on Sunin kehittämä laitteistoriippumaton olio-ohjelmointikieli.

Java-pavut (engl. JavaBeans) ovat Java-ohjelmointikielellä luotuja komponentteja, joita voidaan kutsua JSP-sivuilla.

JDBC eli Java Database Connectivity on Java-teknologian käyttämä tietosilta erilaisiin tietokantoihin.

JSP eli Java Server Pages on ohjelmointikieli, jossa HTML-koodin sekaan on mahdollista lisätä Java-koodia.

PostgreSQL on ilmainen tietokannanhallintajärjestelmä.

Palvelin on WWW-sovellusten tapauksessa ohjelmisto, joka palvelee asiakkaana toimivien selainten hakupyyntöjä.

Selain on ohjelma, joka käyttäjän koneella tulkkaa HTML-kieliset sivut kuvaruudulla esitettävään muotoon.

Servletti on palvelimella sijaitseva sovelma (engl. applet), joka toteuttaa HTTP-palvelimen pyynnöstä tietyn toiminnon.

Skripti on ohjelmointikieltä muistuttava ja usein hieman yksinkertaistettu tulkattava kieli.

Skriptaus tarkoittaa WWW-sivujen tapauksessa ohjelmakoodin kirjoittamista HTML-dokumenttien sisään. Palvelinpuolen skriptauksessa koodi ajetaan palvelinkoneessa ja asiakaspään skriptauksessa selaimessa.

SQL eli Structured Query Language on tietokantojen hallintaan kehitetty standardi kieli.

SSL-salaus on eräs Internetissä käytössä oleva salausmenetelmä.

TomCat on ilmainen servletti- ja JSP-moottori.

XML on rakenteisten dokumenttien määrittely- ja kuvauskieli.

3 Sovelluksen tavoitteet, ominaisuudet ja toiminnot

Kottarainen-sovelluksesta toteutetaan tilaajien ja Jyväskylän yliopiston käyttöön helppokäyttöinen sovellus kyselyiden laatimiseen, suorittamiseen, hallintaan ja analysointiin. Kyselyn teko tapahtuu WWW:ssä selaimella ja kysely tulee heti valmistuttuaan näkyviin palvelimelle. Jonkun vastattua kyselyyn, vastaukset tallentuvat tietokantaan ja tulevat myös näkyviin selaimelle raporttina.

3.1 Kyselyiden luomisen toiminnalliset vaatimukset

Kysymysten, kysymysryhmien ja kyselyiden (myöhemmin näihin viitataan kohteina) luomisen käyttöliittymä toteutetaan mahdollisimman helppokäyttöiseksi. Kyselyn luoja voi valita kysymyksiä, kysymysryhmiä tai kysymyssarjoja kysymyspankista ja muokata niistä itselleen sopivan kyselyn. Kyselyn laatija voi myös tehdä lisää omia kysymyksiä. Laaditut kyselyt voidaan asettaa kaikkien kyselyjen laatijoiden nähtäväksi kysymyspankkiin kysymyssarjoiksi tai pitää saatavilla vain itsellään.

Kyselyä laatiessa voi koko ajan tarkastella, miltä syntyvä kysely näyttää. Kysymyksiä, kysymysryhmiä ja kysymyssarjoja voi helposti lisätä, poistaa tai siirtää mihin tahansa kohtaan kyselyä. Kysymykset voivat muodostaa loogisesti erilaisia kokonaisuuksia kuin visuaalisesti. Näin voidaan pitää kysymysten laatimisvaiheessa kysymykset lajiteltuna loogisesti oikeisiin ryhmiin ja toisaalta sijoitella ne visuaalisesti erilleen loogisista yhteyksistään. Tällä saavutetaan etua esimerkiksi, jos on odotettavissa, että kysymykset vaikuttavat toistensa vastauksiin.

Kun kysely on valmis, se talletetaan palvelimelle ja on nähtävissä ja täytettävissä Kottarainen-sovelluksessa tietyn, laatijan määrittelemän, ajanjakson.

3.2 Kysymyspankki

Kaikilla Korppi-järjestelmän käyttäjillä, joilla on oikeus laatia kyselyitä, on myös oikeus ottaa kohteita kysymyspankista ja tallentaa tekemänsä kohteet sinne esimerkiksi sihteerin hyväksyminä.

Kysymykset, kysymysryhmät ja kysymyssarjat tallennetaan kysymyspankkiin niin, että niissä säilyy tiettyjä metatietoja, kuten tekijä, luontipäivämäärä ja tarkoitus sekä kurssikyselyiden tapauksessa kurssin nimi.

Kohteita voidaan hakea kysymyspankista kysymyksessä olevan sanan tai tekijän, päivämäärän sekä muiden kohteeseen liittyvien metatietojen perusteella. Jos kysymys on liitetty nimenomaan kurssikyselyyn, voidaan se hakea myös kurssin nimen perusteella.

Laatija voi halutessaan julkaista kysymyspankkiin tallentamansa kohteet. Julkaisuun käytetään erilaisia julkaisuasteita, joiden perusteella määritellään kuka saa ottaa niitä käyttöönsä (kysely voi olla käytettävissä esimerkiksi organisaation sisällä). Julkaisuasteen valitessaan laatija antaa samalla käyttöoikeudet luomiinsa kohteisiin. Pankkiin julkaistuja kohteita ei voi muokata, vaan muokkaaminen luo kohteesta uuden ilmentymän.

3.3 Vastausten tallentamisen toiminnalliset vaatimukset

Kyselyjen vastaukset tallennetaan Kotka-tietokantaan. Olemassa olevaa tietokantaa laajennetaan ja muutetaan Kottarainen-sovelluksen tarpeiden mukaan. Tätä kuvataan tarkemmin luvussa 6.

Vastaukset tallennetaan tietokantaan niin, että niissä säilyy tieto kyselystä ja ajanhetkestä. Näin voidaan vertailla saatuja tuloksia esimerkiksi eri vuosien välillä. Lisäksi vastaukset on mahdollista tallentaa liittäen niihin tieto vastaajasta, tai siten, ettei vastaajaa tiedetä (anonyymikyselyt). On myös mahdollista, että vastaajasta tallennetaan ainoastaan joitakin kyselylle oleellisia metatietoja, kuten opintojen aloitusvuosi tai sukupuoli, mutta ei hänen henkilöllisyyttään.

Tallentamisessa otetaan huomioon tietojen jatkokäytön vaatimukset (kuten vastausten tarkempi analysointi) joita kuvataan tarkemmin Vaatimusmäärittelyssä.

3.4 Tulosten esittämisen toiminnalliset vaatimukset

Kyselyiden tulokset tullaan esittämään numeerisista ja luokitteluasteikollisista vastauksista laskettavina yksinkertaisina tunnuslukuina WWW-selaimella. Tuloksia voidaan havainnollistaa numeerisesti muun muassa keskiarvoina ja jakaumina, sekä myös graafisesti. Toteutettavia graafisia esitysmuotoja ovat pylväskaaviot ja jakaumat.

Avoimet kysymykset kasataan kysymyksittäin yhteen kokonaisuuksiksi. Vastausten käsittelijä voi halutessaan kommentoida ja muokata tuloksia ja vastauksia. Muokkaukset tulevat näkyviin tulossivulle.

Edellisen lisäksi vastauksista voidaan muodostaa tiedosto muun muassa analysointityökalu SPSS:n ymmärtämään formaattiin. Tällöin käyttäjillä on mahdollisuus tehdä tiedoilla myös monimutkaisempiakin tilastollisia analyysejä.

3.5 Aikataulun salliessa toteutettavia toiminnallisia vaatimuksia

Aikataulun salliessa toteutetaan kysymystyypit IMS-standardin mukaisessa XML-formaatissa. Tällöin ne ovat siirrettävissä erilaisiin ympäristöihin, kuten esimerkiksi OPTIMA-oppimisympäristöön. Myös tulosten tallentaminen XML-muodossa on alemman prioriteetin vaatimuksia.

Jos aikaa jää, toteutetaan mahdollisuus Jari Rantamäen ja Antti Auerin esittelemän matriisimuotoisen kyselyn luomiseen sekä myös näillä kyselyillä saadun palautteen esityttäminen matriisimuodossa.

3.6 Jatkokehitykseen jääviä toimintoja

Aikataulun tiukkuudesta ja projektin jäsenten työtuntien rajallisuudesta johtuen kaikkien ideoita ja vaatimuksia ei pystytä toteuttamaan tämän projektin puitteissa. Jatkokehitykseen jää muun muassa tarkempien analyysien tuottaminen saadusta palautteesta. Tämä pyritään ottamaan huomioon tiedon tallentamisessa, jotta jatkokehitys tulisi olemaan mahdollisimman kivutonta.

Tulosten teko ja visualisointityökalujen toteutus jäävät toivottaviksi tai myöhemmin toteutettaviksi vaatimuksiksi. Kyselyn käyttäjä- ja käyttöoikeuksien hallinta jää myös ainakin osin jatkokehityksen hoidettavaksi. Toteutusvaiheen aikataulu käy ilmi Projektisuunnitelmasta.

4 Toteutustekniikat- ja työkalut

Luvussa kuvataan Kottarainen-sovelluksen toteuttamiseen käytettäviä työkaluja ja ohjelmointiympäristöjä. Ryhmällä on ohjelmointityökaluna käytössään NetBeans 3.4.1. Käyttöjärjestelminä kahdella projektin koneista on Windows 2000 ja kahdella RedHat Linux 7.3.

4.1 Palvelinratkaisut

Kotka-projektin valitsemaa palvelinratkaisua tullaan käyttämään myös Kottarainen-sovelluksessa, koska Kottarainen tulee hyvin pitkälti toimimaan yhdessä Korppi-opetushallintajärjestelmän kanssa, jossa Kotka-tietokanta on käytössä. Kuvassa 1 esitetään Kottarainen-sovelluksen suhde muihin olemassa oleviin järjestelmiin.


Kuva 1: Kottarainen -sovelluksen suhde muihin järjestelmiin

4.2 JSP-tekniikka

JSP-sivuilla on tavallisen HTML-koodin sekaan mahdollista lisätä Java-koodia. Kun WWW-palvelin vastaanottaa pyynnön selaimelta, se päättelee, onko kyseessä staattinen HTML-sivu vai JSP-sivu (katso kuva 1). Apache palauttaa pyydetyt staattiset sivut suoraan takaisin selaimeen.

JSP-sivun pyyntö välittyy servlettimoottorille, joka Korppi-järjestelmässä on TomCat. Se tutkii onko kyselyä vastaava servletti jo olemassa. Olemassa oleva servletti suoritetaan ja se palauttaa selaimelle tuloksen HTML-muodossa. Jos servlettiä ei löydy, pyyntö ohjautuu JSP-moottorille, joka generoi servletin. Kuvassa 2 esitetään luvussa käsiteltyjen palvelinohjelmistojen suhteita toisiinsa.

Kuva 2: Palvelinohjelmistojen suhteet toisiinsa.

4.3 Java-pavut

Java-pavut (engl. JavaBeans) ovat uudelleen käytettävien komponenttien luontiin tarkoitettu standardi, joka on luotu erityisesti visuaalisia kehitysvälineitä ajatellen. Ne ovat Javalla toteutettuja luokkia, joihin Java-koodi pyritään keskittämään. Tällä tavoin varsinaiset JSP-sivut säilyvät helposti ylläpidettävinä sisältäen vain HTML-rakenteen ja staattiset tekstit.

Aikaisempien Korppi-järjestelmään moduleita toteuttaneiden projektien tavoin Kottarainen-projektin tavoitteena on tuottaa yleiskäyttöisiä ja hyvin kommentoituja Java-papuja, joita järjestelmän jatkokehittäjät voivat hyödyntää.

4.4 Tietokanta

Kottarainen-projekti tulee käyttämään Kotka-tietokantaa toteutettavan sovelluksen tietokannan pohjana. Vanha tietokanta ei aivan sellaisenaan taivu Kottarainen-sovelluksen tarpeisiin, joten lisäyksiä tarvitaan sekä uusien taulujen että kenttien osalta. Näitä on kuvattu tarkemmin luvussa 10. Tietokannanhallintajärjestelmänä Kotka-kannassa on ollut PostgreSQL, joten Kottarainen-sovelluskin käyttää sitä.

PostgreSQL on vuonna 1986 alkunsa saanut avoimen lähdekoodin relaatiotietokannan hallintaohjelmisto, joka on käytössä Kotka-tietokannassa. Koska Kottarainen-sovelluksessa päätettiin käyttää Kotka-tietokantaa, sekin tulee käyttämään kyseistä ohjelmistoa.

4.5 Apache TomCat

Apache on HTTP-palvelin, joka toimittaa JSP-sivupyynnöt TomCatille ja palauttaa selaimelle sen pyyntöjä koskevat HTML-dokumentit. Sen avulla on mahdollista käyttää SSL-salattua yhteyttä tietojen välittämiseen. Korppi-järjestelmän HTTP-palvelimena on Apache, joten Kottarainen-projekti tulee myös käyttämään tätä palvelinohjelmistoa.

Apache Sofware Foundationin TomCat on ilmainen palvelin joka ajaa JSP-sivujen toiminnallisuutta ja kääntää ne sellaiseen muotoon, että ne voidaan selaimella esittää kuten tavalliset HTML-sivut. Tarkemmin ilmaistuna se on palvelinsovelmasäiliö, johon on sisällytetty mukaan myös WWW-palvelimen toiminnallisuus. Kottarainen-projektissa TomCatia käytetään kuitenkin vain JSP-sivujen ja servlettien käsittelemiseen.

5 Käyttöliittymä

Luvussa kuvataan Kottarainen-sovelluksen käyttöliittymän ulkoasua.

Korppi-järjestelmän navigointipalkkiin lisätään Kyselyiden hallinta -linkki, josta avautuu näkymä Kottarainen-sovelluksen aloitussivulle.

5.1 Kyselyn luomisen aloitussivu

Kuvassa 3 on näkymä kyselyn laatimisen aloitussivusta, johon on täytettävä kyselyyn liitettävät yleiset tiedot. Käyttäjä ei pääse luomaan varsinaista kyselyä, mikäli kyseisiä tietoja ei ole täytetty.

Hae valmis kysymysryhmä -painikkeesta pääsee noutamaan kysymyspankissa valmiina olevia kohteita.

Luo kysymysryhmä -painikkeesta laatija pääsee tekemään kysymysryhmää.

Näytä lisäominaisuudet -linkistä saa esiin tavallisesti piilossa olevat lisäominaisuudet, kuten kyselyn käyttöoikeusasetukset. Sivusta on olemassa laajennettu näkymä, joka edellä mainittua painiketta painamalla tulee kyselyn laatijalle. Lisäominaisuudet saa piilotettua laajennetusta näkymästä linkistä Piilota lisäominaisuudet .

Kuva 3: Kyselyn luomisen aloitussivu.

5.2 Kysymysryhmän luominen

Kysymysryhmän luominen alkaa kuvan 4 esittämässä näkymässä. Laatija voi mennä hakemaan kohteita kysymyspankista painamalla Hae valmis kysymysryhmä -painiketta.

Laatija voi myös aloittaa luomaan uutta ryhmää täyttämällä ryhmälle otsikkotiedot sekä valitsemalla alustavasti kysymysten lukumäärän.

Kysymysryhmän laatimisessa on myös laajennettu sivu. Kyseisiin lisäominaisuuksin voi muun muassa määrittää kysymysten visuaalisen järjestyksen kyselylomakkeelle. Näkymän saa esiin klikkaamalla Näytä lisäominaisuudet -painiketta.


Kuva 4: Kysymysryhmän luominen.

5.3 Kysymyksien muokkaaminen

Kysymyksien muokkaaminen tapahtuu kuvan 5 esittämällä sivulla. Ryhmään kuuluu niin monta kysymystä kuin laatija on edellisellä sivulla valinnut luotavaksi, mutta ryhmään saa haettua pankista lisää kysymyksiä tai luotua itse uusia. Kysymyksiä saa myös helposti poistettua ryhmästä valitsemalla poistettavat kysymykset ja painalla painiketta Poista merkityt .

Kysymysryhmän laatimisessa on myös laajennettu sivu. Kyseisiin lisäominaisuuksin voi muun muassa määrittää kysymysten visuaalisen järjestyksen kyselylomakkeelle. Näkymän saa esiin klikkaamalla Näytä lisäominaisuudet -painiketta.

Kun kysymysryhmälle on luotu otsikko ja kysymyksille valittu tyypit, pongahtaa laatijalle näkyviin kuvan 6 laajempi kyselyn laadintanäkymä. Laajempi näkymä tarkoittaa sitä, että käyttäjä pääsee määrittämään esimerkiksi alasvetovalikkojen vastausvaihtoehtotekstejä.

Kuva 5: Kysymyksien laadinnan käyttöliittymänäkymä.

Kuva 6: Kysymysten laadinnan laajennettu näkymä.

Kyselyn esikatselu

Laatija pääsee koska tahansa kyselyä, kysymysryhmää tai kysymystä luodessaan tarkastelemaan kyseisen kohteen näkymää vastaajan näkökulmasta valitsemalla Lomakkeen esikatselu -linkin. Kuva 7 esittää esikatselunäkymää.

Kuva 7: Kyselyn esikatselu.

6 Kottarainen-sovelluksen tietokantasuunnitelma

Kotka-tietokantaan tehtiin Kottarainen-sovellusta varten kokonaan oma osio, koska olemassa oleva rakenne ei soveltunut kaikkien haluttujen ominaisuuksien toteuttamiseen.

Tässä luvussa esitellään sovellusta varten luodut uudet tietokantataulut ja tietokannan rakennekaavio. Tietokannan ER-kaavio ja tarkennetut kuvaukset löytyvät tietokantaraportista.

Tietokannan rakennekaavio

Tietokannan rakennekaaviosta (kuva8) käy ilmi projektia varten luodut uudet taulut ja niiden sisältämät kentät.

Kuva 8: Tietokannan rakennekaavio

Tietoa varastoivat taulut

Nimi

questionnaire

Tarkoitus

Sisältää kyselyn perustiedot.

Avainkenttä

questionnaireid

Viiteavaimet

bankgroupid
Osoittaa tauluun questionbankgroup. Viitteen arvo kertoo kyselyn ryhmittelyn kysymyspankissa, tai sen ettei se näy pankissa ollenkaan.
bankuserightid
Osoittaa tuluun question_bankuseright. Viitteen arvo kertoo kyselyn kopiointioikeuden kysymyspankista.
personid
Osoittaa tauluun person. Viitten arvo kertoo, kuka on luonut kyselyn (kyselyn omistaja).

Nimi

question

Tarkoitus

Sisältää yksittäisen kysymyksen perustiedot. Käyttöliittymätasolla kysymys on teksti, joka esittää kysyttävän asian

Avainkenttä

questionid

Viiteavaimet

questiontypeid
Osoittaa tauluun questiontype. Viitteen arvo kertoo kysymystyypin.
bankgroupid
Osoittaa tauluun questionbankgroup. Viitteen arvo kertoo kysymyksen ryhmittelyn kysymyspankissa, tai sen ettei se näy pankissa ollenkaan.
bankuserightid
Osoittaa tuluun question_bankuseright. Viitteen arvo kertoo kysymyksen kopiointioikeuden kysymyspankista.
personid
Osoittaa tauluun person. Viitten arvo kertoo, kuka on luonut kysymyksen (kysymyksen omistaja).

Nimi

questiongroup

Tarkoitus

Sisältää kysymysten ryhmittelytiedot. Taulun rakenne on rekursiivinen, joten alkiot muodostavat puurakenteen, jossa kysymysryhmät voivat sijaita toistensa sisällä. Huomioitava seikka on, että kysymysryhmän sisällä voi olla sekä kysymyksiä että muita kysymysryhmiä

Avainkenttä

questiongroupid

Viiteavaimet

parentid
Osoittaa saman taulun questiongroupid-kenttään. Mikäli kentällä ei ole arvo (null), kysymysryhmä on suoraan kyselyn alainen kysymysryhmä. Muutoin arvo kertoo kysymysryhmän isäryhmän.
bankgroupid
Osoittaa tauluun questionbankgroup. Viitteen arvo kertoo kysymysryhmän ryhmittelyn kysymyspankissa, tai sen ettei se näy pankissa ollenkaan.
bankuserightid
Osoittaa tuluun question_bankuseright. Viitteen arvo kertoo kysymysryhmän kopiointioikeuden kysymyspankista.
personid
Osoittaa tauluun person. Viitten arvo kertoo, kuka on luonut kyselymysryhmän (kysymysryhmän omistaja).

Nimi

questionfield

Tarkoitus

Sisältää kysymyksen kenttään/kenttiin liittyvät tiedot. Käyttöliittymätasolla kenttä edustaa html-komponenttia (radiopainike,valintaruutu,tekstirivi, tekstialue, valintalistan alkio).

Avainkenttä

questionfieldid

Viiteavaimet

questionid
Osoittaa tauluun question. Kertoo mihin kysymykseen kenttä liittyy.

Nimi

questionresult

Tarkoitus

Vastaus tiettyyn kenttään. Huomioitavaa on, että esimerkiksi radiopainikekysymyksen kohdalla vastaus koskee yksittäistä radiopainiketta, ei kysymystä.

Avainkenttä

questionresultid

Viiteavaimet

questionfieldid
Osoittaa tauluun questionfield ja kertoo mihin kenttään vastaus liittyy.
personid
Osoittaa tauluun person. Viitten arvo kertoo kenelle vastaus on osoitettu.
markerid
Osoittaa tauluun person. Viitteen arvo kertoo kuka vastauksen on antanut.

Viitetaulut

Nimi

questionnaire_group

Tarkoitus

Yhdistää kyselyn tiettyyn käyttäjäryhmään. Taulussa määritellään myös toiminto, joka ryhmälle kyseiseen kyselyyn annetaan.

Avainkenttä

questionnaireid, usergroupid, questionnaireactionid

Viiteavaimet

questionnaireid
Osoittaa tauluun questionnaire ja kertoo mihin kyselyyn viitataan.
usergroupid
Osoittaa tauluun usergroup ja kertoo mille ryhmälle toiminto-oikeus annettaan.
questionnaireactionid
Osoittaa tauluun questionnarieaction ja kertoo mikä oikeus ryhmälle annetaan.

Nimi

questionnaire_question

Tarkoitus

Yhdistää kysymyksen kyselyyn/kyselyihin. Taulussa kerrotaan myös mihin kysymysrymään kysymys kuuluu.

Avainkenttä

questionnaireid, questionid

Viiteavaimet

questionnaireid
Osoittaa tauluun questionnaire ja kertoo mihin kyselyyn kysymykset liitetään.
questionid
Osoittaa tauluun question ja kertoo mikä kysymys kyselyyn liitetään.
questiongroupid
Osoittaa tauluun questiongroup ja kertoo mihin kysymysryhmään kysymys liittyy. Mikäli kentän arvo on tyhjä (null) kysymys liittyy suoraan kyselyyn.

Määritystaulut

Nimi

questionnaireaction

Tarkoitus

Sisältää eri toiminnot, joita kyselylle voidaan suorittaa. Toimintoja ovat luonti, muokkaus, vastaus, tulosten luonti ja katselu.

Avainkenttä

questionnaireactionid

Nimi

questionstatus

Tarkoitus

Sisältää määrittelyt kyselyn osien mahdollisisista tiloista. Eri tiloja voi olla piilotettu, auki ja luku.

Avainkenttä

questionstatusid

Nimi

questiontype

Tarkoitus

Sisältää kysymyksille mahdolliset tyypit. Näitä ovat tekstirivi, tekstialue, monivalinta, radiopainike ja alasveto.

Avainkenttä

questiontypeid

Nimi

question_bankgroup

Tarkoitus

Sisältää ryhmittelyt, joita kysymyspankissa voi eri kohteille olla. Sisältää myös alkion salattu, jolloin kohde ei ole muiden saatavilla.

Avainkenttä

bankgroupid

Nimi

question_bankuseright

Tarkoitus

Sisältää määrittelyt oikeuksille, joilla kohde on mahdollista uudelleenkäyttää. Eri oikeuksia on viite, viite lukuoikeuksin , kopio ja kopio vastauksin.

Avainkenttä

bankuserightid

Metatietotaulut

Metatietotaulurakenne on tehty määrittelemään eri kohteiden ominaisuuksia. Tarkoituksena on, että ominaisuuksia voi lisätä jo valmiiseen sovellukseen. Rakenne on sellainen, että kohteeseen liitetyn tiedon typpi ilmaistaan viitteellä, jolloin uuden tyypin lisääminen ei aiheuta muutoksia tietokannan rakenteeseen.

Nimi

question_parametertype

Tarkoitus

Sisältää määritykset eri metatietotyypeille. Tyyppejä voi lisätä valmiin sovelluksen julkaisun jälkeen.

Avainkenttä

parametertypeid

Nimi

questionnaire_parameter

Tarkoitus

Yhdistää metatiedon kyselyyn. Alkio sisältää tiedon metatiedon tyypistä sekä tiedon varsinaisen sisällön

Avainkenttä

questionnaireid, parameterid

Viiteavaimet

questionnaireid
Osoittaa tauluun questionnaire ja kertoo mihin kyselyyn metatieto liitetään.
parameterid
Osoittaa tauluun question_parametertype ja kertoo minkä tyyppinen metatieto on kyseessä.

Nimi

question_parameter

Tarkoitus

Yhdistää metatiedon kysymykseen. Alkio sisältää tiedon metatiedon tyypistä sekä tiedon varsinaisen sisällön

Avainkenttä

questionid, parameterid

Viiteavaimet

questionid
Osoittaa tauluun question ja kertoo mihin kysymykseen metatieto liitetään.
parameterid
Osoittaa tauluun question_parametertype ja kertoo minkä tyyppinen metatieto on kyseessä.

Nimi

questiongroup_parameter

Tarkoitus

Yhdistää metatiedon kysymysryhmään. Alkio sisältää tiedon metatiedon tyypistä sekä tiedon varsinaisen sisällön

Avainkenttä

questiongroupid, parameterid

Viiteavaimet

questiongroupid
Osoittaa tauluun questiongroup ja kertoo mihin kysymysryhmään metatieto liitetään.
parameterid
Osoittaa tauluun question_parametertype ja kertoo minkä tyyppinen metatieto on kyseessä.

Nimi

questionresult_parameter

Tarkoitus

Yhdistää metatiedon vastaukseen. Alkio sisältää tiedon metatiedon tyypistä sekä tiedon varsinaisen sisällön

Avainkenttä

questionresultid, parameterid

Viiteavaimet

questionresultid
Osoittaa tauluun questionresult ja kertoo mihin vastaukseen metatieto liitetään.
parameterid
Osoittaa tauluun question_parametertype ja kertoo minkä tyyppinen metatieto on kyseessä.

7 Ohjelmakoodin kommentointi ja nimeämiskäytännöt

Ohjelmakoodin kommentoinnissa käytetään yhtenäisyyden vuoksi samantyylistä ratkaisua kuin aiemmat Korppi-järjestelmää kehittäneet projektit ovat käyttäneet.

Seuraavassa on esimerkki kommenttilohkosta sekä luokan ja funktioiden kommentoinnista.

/********************************************************************

* PAGE DESCRIPTION

*********************************************************************

*

* NAME: kommentointi.jsp

* LANGUAGE: jsp

* DATE: 31.3.2003

* PURPOSE: Demostrates commenting..

* AUTHOR: Tiina Pöyhönen, Jyväskylän yliopisto

*

*********************************************************************

* COPYRIGHT (C) KOTTARAINEN-PROJEKTIRYHMÄ

* Limited rights granted. Please refer to license

*********************************************************************

*********************************************************************

* UPDATES

*********************************************************************

*

* 30.3.2003 Initial release

* 31.3.2003 Added something.. (Tiina Pöyhönen)

*

********************************************************************/

/** Function does this and that...

* @param param1 is parameter which is given to function

* @param param2 is second parameter given to function

* @throws SomeException which is some kind of an exception

* @return Return value

*/

public String ThisAndThat(int param1, param2) throws SomeException {

if (param1 != param2) {

throw new SomeException("Some kind of exception..");

}

else {

//do this and that..

}

return value;

}

/********************************************************************

* COPYRIGHT (C) KOTTARAINEN-PROJEKTIRYHMÄ

* Limited rights granted. Please refer to license

********************************************************************/

8 Testausperiaatteita

Testausta suoritetaan koko ajan sovellusta kehitettäessä niin, että jokainen sovelluksen komponentti on toimiva ennen yhdistämistä muihin osiin. Sovelluksen osien valmistuttua ne yhdistetään yksi kerrallaan isommaksi kokonaisuudeksi. Tällöin pyritään löytämään kaikki mahdolliset ongelmakohdat sovelluksessa sehä testaamaan ja korjaamaan toiminta.

Sovellus pyritään testaamaan toimivaksi kaikilla Kottarainen-ryhmällä käytössä olevilla selaimilla sekä Windows- että Linux-ympäristössä. Käytössä olevia selaimia Linuxissa ovat Opera 6.1, Netscape Communicator 4.79 ja Mozilla 1.0.1. Windowsissa puolestaan on käytössä Netscape Navigator 7.01, Internet Explorer 6.0, Opera 7.03 ja Mozilla 1.3.

Kottarainen-projektin osalta tärkein toteutettava osa sovelluksesta on helppokäyttöinen kyselynlaadintaosio, joten sen osion käyttöliittymän prototyyppi pyritään saamaan ajoissa valmiiksi ja testattavaksi. Protyypistä pyydetään palautetta tilaajilta ja tulevilta käyttäjiltä jo ennen sovelluksen valmistumista, jotta kaikkien mielipide käytettävyydestä saadaan varmasti huomioitua.

Testaukseen osallistuvat ryhmän jäsenten lisäksi ainakin tilaajien edustajat ja ohjaajat. Toivottavaa olisi, että ainakin käyttöliittymään saataisiin mielipiteitä myös ihmisiltä, jotka eivät ole ottaneet osaa sovelluksen suunnitteluun projektin kuluessa. Näin saataisiin tuoreita mielipiteitä ja ehkä havaittaisiin ongelmakohdat, joille sovelluksen kehittämiseen osallistuneet eivät havaitse.

9 Yhteenveto

Kottarainen-projektiryhmä toteuttaa WWW-pohjaisen kyselyjen laatimis-, hallinta- ja analysointisovelluksen Jyväskylän yliopiston käyttöön. Sovelluksen osia ovat kyselyiden luominen WWW-ympäristöön, kyselyyn vastaaminen, vastausten hallinta sekä tulosten muodostaminen ja esittäminen.

Tässä dokumentissa kuvataan Kottarainen-sovellukselle asetetut tavoitteet sekä toimintojen ja ominaisuuksien priorisointi. Suunnitelmassa kuvataan projektissa käytettäviä työkaluja sekä sovellusympäristöjä. Lisäksi dokumentissa on kuvattuna sovelluksen tietokanta ja käyttöliittymä.

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 projektikansio", Jyväskylän yliopisto, tietotekniikan laitos 2002.

[3] Kyppö Jorma ja Vesterholm Mika, "Java-ohjelmointi", Talentum Media Oy, 2001.

[4] Antti Auerin, Eija Ihanaisen ja Jari Rantamäen toimittamat esimerkit heidän tarpeistaan.

[5] Sähköpostikeskustelu Harri Tuomen kanssa, liittyen Tomcat:in tekniseen toimintaan, 13.3.2003.