Koskikara-projekti

 

Ville Laitila

Pekka Moisio

Aapo Mäkinen

Harri Pölkki

 

 

 

 

 

Sovellusraportti 29.1.2003

 

 

 

 

Jyväskylän yliopisto
Tietotekniikan laitos

 



Koskikara-projektin tietoja

Tekijät:           Ville Laitila (vimalait@cc.jyu.fi),

Pekka Moisio (pejumois@cc.jyu.fi),

Aapo Mäkinen (ajmakine@cc.jyu.fi) ja

Harri Pölkki (hepolkki@cc.jyu.fi).

 

Työ: Sovellusraportti tietotekniikan Sovellusprojektiin.

Tiivistelmä: Koskikara-sovellusprojektissa jatkokehitettiin Kottarainen-projektin toteuttamaa kyselyjen laatimis- ja hallintajärjestelmää. Kehitystyössä keskityttiin vastausten analysointiin, tulosten esittämiseen ja kyselypankkiin. Sovellusraportissa esitetään sovellukselle asetetut vaatimukset, niiden toteutusratkaisut sekä kyseiset käyttöliittymän sivut.

Tilaajat ja muut projektiin liittyvät henkilöt: Sovelluksen tilaajia olivat 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 edusti Antti Auer. Laitoksen vastaavana ohjaajana toimi Jukka-Pekka Santanen sekä teknisinä ohjaajina toimivat Teemu Vähä-Ruka ja Vesa Lappalainen.

Yhteystiedot: Projektiorganisaation sähköpostilistan arkisto on nähtävissä osoitteessa http://korppi.jyu.fi/list-archive/koskikara/index.html. Kotisivu löytyy osoitteesta http://kotka.it.jyu.fi/koskikara/.

Avainsanat: Kysely, kyselyiden hallinta, vastausten analysointi, tulosten esittäminen, raportointi, kyselypankki, WWW-sovellus, Korppi-järjestelmä.


 

Versionhallinta

Versio

Päiväys

Tehnyt

Muutokset

0.1

20.11.

Pekka Moisio

Dokumentin luonti.

0.2

21.11.

Pekka Moisio

Johdanto, termistön luonti ja alustava rakenne.

0.3

8.12.

Pekka Moisio

Tietokantataulut.

0.4

10.12.

Pekka Moisio

Testaus. Jatkokehitysideoita.

0.5

15.12.

Pekka Moisio

Kuvien lisäys dokumenttiin.

0.6

27.12.

Pekka Moisio

Lukujärjestys uusiksi.

0.7

29.12.

Pekka Moisio

Yhteenveto, liitteet ja yleinen virheiden korjaus.

0.8

30.12.

Pekka Moisio

Dokumenttien yhtenäistäminen.

0.9

7.1.

Pekka Moisio

Tietokantarakenteen kuva.

0,91

8.1.

Pekka Moisio

Santasen korjausten toteutus.

0,98

12.1.

Pekka Moisio

Santasen korjausten toteutus.

0.99

22.1

Harri Pölkki

Sisältöä täydennetty, oikoluku tehty.

0.991

26.1

Harri Pölkki

Tarkastettu sekä lisätty parempia kuvia.

1.0

28.1

Harri Pölkki

Lopullinen tarkastus.

1.1

29.1

Ville Laitila

Lisätty luokkakaavio ja korjattu ulkoasua.

 


 

Sisällysluettelo

1      Johdanto. 1

2      Termejä. 1

3      Asetettujen tavoitteiden toteutuminen. 4

3.1       Kohteiden hakeminen hakutyökalun avulla. 4

3.2       Kyselyiden koostaminen kyselypankin kohteista. 5

3.3       Kyselyiden vastausten analysointi 5

3.4       Tulosten raportointi 5

4      Toteutustekniikat ja -työkalut 5

4.1       JSP-tekniikka. 5

4.2       Java-pavut 6

4.3       Palvelinohjelmistot 6

5      Tietokanta. 6

5.1       Koskikara-sovelluksen tiedostoratkaisut 7

5.2       Tietokannan ER-kaavio. 7

5.3       Tietoa varastoivat taulut 7

6      Sovelluksen rakenne. 9

6.1       JSP-sivut 9

6.2       Analysointiin liittyvät Java-tiedostot 9

6.3       Hakutuloksiin ja kyselyiden koostamiseen liittyvät sekä muut Java-tiedostot 12

7      Käyttöliittymien sivut 13

7.1       Sivujen yleinen rakenne. 13

7.2       Aloitussivu. 13

7.3       Kyselyiden yksinkertainen hakusivu. 17

7.4       Kyselyiden monipuolinen hakusivu. 18

7.5       Hakutulosten esittäminen. 19

7.6       Hakutyökalun esikatselusivu. 19

7.7       Kyselyn raporttien ja mallien valintasivu. 21

7.8       Kyselyn analysointisivu. 21

7.9       Raporttisivu. 24

8      Testaus ja tulokset 30

8.1       Testausympäristö. 30

8.2       Testausperiaatteet 30

8.3       Testitulokset 30

9      Puutteet ja jatkokehitysideat 31

10        Yhteenveto. 32

Lähteet 33

Liitteet 34

Liite 1. Tietokantataulujen rakenne. 34

questionnaireanalyzemodel 34

questiongrouppresentation. 34

questionpresentation. 34

Liite 2. Sovelluksen luokkakaavio. 35

 



1         Johdanto

Koskikara-niminen tietotekniikan Sovellusprojekti jatkokehitti Korppi-järjestelmään WWW-pohjaista kyselyjen haku- ja analysointisovellusta Jyväskylän yliopiston käyttöön. Projektin puitteissa toteutettuja osia ovat kyselyiden haku kyselypankista sekä vastausten analysointi ja tulosten raportointi.

Järjestelmään ovat aiemmin toteuttaneet sovelluksia Kotka-, Korppi-, Halko-,
Kolibri-, Koppelo-, Kiuru- ja Kottarainen-projektit. Niitä on edelleen jatkokehitetty Jyväskylän yliopiston tietotekniikan laitoksella.

Kyselysovellus on yksi Korppi-nimisen opetustietojärjestelmän moduuleista. Koskikara-projekti hyödynsi työssään aiemmin toteutetun Kottarainen-projektin käyttämiä työkaluja ja toteuttaman sovelluksen tietorakenteita.

Dokumentissa kuvataan Koskikara-projektin osalta kyselysovellukselle asetettujen tavoitteiden sekä toimintojen ja ominaisuuksien toteutuminen. Lisäksi dokumentissa on kuvattu sovelluksen toteutunut käyttöliittymä. Dokumentissa kuvataan myös Koskikara-projektin tekemiä ratkaisuja tiedostokäytänteiden ja tietokannan suhteen sekä JSP-sivujen ja Java-papujen tehtävät ja tärkeimmät toiminnot.

Projektissa laadittiin myös muita dokumentteja. Projektiraportissa kuvataan projektin toteutunut ja suunniteltu läpivienti. Vaatimusmäärittelyssä ja sovellussuunnitelmassa kuvataan sovellukselle asetetut vaatimukset ja sovelluksen suunniteltu toteutus.

Luvussa 2 esitellään aiheeseen liittyviä käsitteitä. Luvussa 3 kuvataan projektissa sovellukseen toteutettuja ominaisuuksia. Luku 4 esittelee käytössä olleet toteutustekniikat ja -työkalut. Luku 5 kuvaa sovelluksen tietokantarakennetta. Luvussa 6 kuvataan sovelluksen rakennetta. Luvussa 7 esitellään käyttöliittymän WWW-sivut. Kahdeksannessa luvussa on käsitelty sovelluksen testausta ja sen tuloksia. Luvussa 9 on kirjattu virheitä, puutteita ja jatkokehitysideoita.

2         Termejä

 

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

Analysointi                                         on vastausten oleellisten havaintojen tiivistämistä pienemmäksi tulosjoukoksi.

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

Keskiarvo                                           on havaintojen summa jaettuna havaintojen lukumäärällä.

Keskihajonta                                      kuvaa havaintoarvojen keskimääräistä etäisyyttä keskiarvosta.

Kohde                                                 tarkoittaa kysymystä, kysymysryhmää tai kyselyä.

Korppi                                                 on Jyväskylän yliopistossa kehitetty opintotietojä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ä.

Kyselypankki                                     varastoi kyselyt julkisuusasteen mukaan kyselyjen analysointia ja uusien kyselyiden luontia varten.

Kyselytulokset                                   ovat yksittäisen kyselyn tuottamaa dataa, johon luetaan vastaukset ja raportit.

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

Kysymystyyppi                                  luokittelee kysymykset kyselyn luontivaiheessa kysymyksen esitysmuodon mukaan.

Maksimi                                             on havaintoaineiston suurin arvo.

Mediaani                                            on suuruusjärjestykseen asetettujen havaintoarvojen keskimmäinen arvo tai kaksi keskimmäistä, mikäli havaintoja on parillinen määrä.

Metatieto                                           on kohteisiin liitettävää tarkoitusta, käyttömuotoa ja laatimista kuvaavaa lisätietoa, joka helpottaa kyselyitä haettaessa ja vastauksia analysoitaessa eri kohteiden liittämistä toisiinsa. Mahdollisia metatietoja ovat esimerkiksi kyselyn laatija ja laatimisajankohta.

Minimi                                                 on havaintoaineiston pienin arvo.

Moodi                                                  on havaintoaineiston todennäköisin arvo.

Raportti                                              on vastauksia analysoimalla saatu tulosjoukko, johon sisältyy tekstiä ja graafeja.

Vastattava kysely                              on kysely, jonka voimassaoloaika ei ole vielä ohi.

Vastaustyyppi                                    luokittelee kysymykset kyselyn analysointivaiheessa. Yleensä kysymystyyppi kiinnittää vastaustyypin.

 

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

Bugzilla                                               on WWW-pohjainen monipuolinen virheiden korjausten hallintajärjestelmä.

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.

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

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

JBuilder                                              on ohjelmistonkehitystyökalu mm. Java- ja JSP-ohjelmointiin.

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

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

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.

TomCat                                               on ilmainen servletti- ja JSP-moottori.

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

 

3         Asetettujen tavoitteiden toteutuminen

Kyselysovelluksen tärkeimmiksi jatkokehityskohteeksi Koskikara-projektin osalta muotoutuivat kyselypankki sisältäen hakutyökalun ja kyselyiden koostamisen sekä analysointityökalun vastausten analysointiin ja HTML-raporttien luomiseen. Sovellukset toteutettiin Korppi-järjestelmän yhteyteen.

Tarkemmin tavoitteista ja niiden toteutumisesta on luvussa 9. Projektin taustasta tarkempaa tietoa löytyy projektiraportin luvusta 3. Osioiden käyttöliittymiä kuvataan luvussa 7.

3.1      Kohteiden hakeminen hakutyökalun avulla

Kysymysten, kysymysryhmien ja kyselyiden (myöhemmin näihin viitataan kohteina) hakukäyttöliittymä suunniteltiin mahdollisimman helppokäyttöiseksi. Käyttöliittymää suunniteltiin useaan otteeseen palavereissa ja lopullisen muodon se saavutti ohjelmoinnin aikana, jolloin testaamalla pystyttiin havaitsemaan sen toimivuus. Tavoitteet toteutuivat hakutyökalun osalta täysin.

Valmistuneella työkalulla käyttäjä voi hakea kyselykohteita hakusanan, organisaation, virallisuusasteen, luontiajankohdan, metatietojen ja kyselyn laatijan nimen perusteella. Hakutyökalussa on kaksi eri tasoista hakutapaa. Yksinkertaisessa haussa käyttäjä pystyy hakemaan hakusanan, organisaation ja virallisuusasteen mukaan. Monipuolisessa haussa käyttäjä voi edellä mainittujen tietojen lisäksi hakea kyselyn laatijan, luontiajankohdan sekä metatietojen perusteella.

Käyttäjän haettua kohteita tietokannasta, käyttäjälle tarjoutuu mahdollisuus esikatsella haun tuloksena saatuja kohteita. Esikatseluun siirrytään klikkaamalla kohteen nimeä.

3.2      Kyselyiden koostaminen kyselypankin kohteista

Kyselyiden koostaminen integroitiin Kottarainen-projektin toteuttaman kyselyidenluontisivun yhteyteen. Tavoitteet eivät täysin toteutuneet kyselyiden koostamisen osalta, sillä koostamiseen jäi järjestysnumeroihin liittyviä ongelmia.

Uutta kyselyä luotaessa tai vanhaa muokatessa annetaan käyttäjälle mahdollisuus etsiä kyselypankista muokattavaan kyselyyn liitettäviä kohteita. Kohteita haetaan luvussa 3.1 mainitulla hakutyökalulla. Hakutuloksista valitaan haluttu kohde ja klikkaamalla otsikkolinkkiä siirrytään esikatseluun. Esikatselusivulla olevaa liittämispainiketta painamalla esikatseltu kohde siirtyy osaksi muokattavaa kyselyä.

3.3      Kyselyiden vastausten analysointi

Kyselyn analysoinnin osalta projektiryhmä toteutti analysointityökalun ja siihen liittyvät esitystavat. Käyttöliittymän viimeistely, taustamuuttujan käyttö analysoinnissa, esitystavan esikatselu, kohteiden kommentointi ja analysointimallien oikeuksien hallinta jäivät jatkokehitykseen.

Valmistuneella työkalulla käyttäjä voi luoda graafisia ja numeerisia raportteja Kotka-tietokannassa olevien kyselyiden vastauksista. Raportti laadintaan analysointimalliin pohjautuen. Raportin laatimisessa voi käyttää aiemmin luotuja analysointimalleja kyselylle tai tekemällä uuden analysointimallin. Analysointimallit tallennetaan tietokantaan. Tästä kerrotaan tarkemmin luvussa 5.3. Vaatimusmäärittelyssä mainitut esitystavat toteutettiin tunnuslukupylväsgraafia ja viivagraafeja lukuunottamatta. Toteutetut esitystavat kuvataan tarkemmin käyttöohjeessa ja vaatimusmäärittelyssä.

3.4      Tulosten raportointi

Projektissa toteutetulla kyselysovelluksen analysointityökalulla tuotetaan raportteja käyttäjän määrittelemän analysointimallin mukaan. Raportti julkaistaan HTML-muodossa, jossa kuvat ovat PNG-muodossa.

Raporttiin liittyvä kohteiden kommentointi jäi jatkokehityksen toteutettavaksi. Raportin ulkoasu kuvataan luvussa 7.9 ja raportin tallennushakemisto luvussa 5.1.

4         Toteutustekniikat ja -työkalut

Luvussa kuvataan Koskikara-projektissa kyselysovelluksen jatkokehittämiseen käytettyjä työkaluja ja ohjelmointiympäristöjä. Ryhmällä oli ohjelmointityökaluna käytössään Linux-koneissa JBuilder 9.0. Käyttöjärjestelminä kahdella projektin koneista oli Windows XP Professional  ja kahdella RedHat Linux 9.

4.1      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. Olemassaoleva servletti suoritetaan ja se palauttaa selaimelle tuloksen HTML-muodossa. Jos servlettiä ei löydy, pyyntö ohjautuu Tomcatille, joka generoi servletin. Kuvassa 1 esitetään luvussa käsiteltyjen palvelinohjelmistojen suhteita toisiinsa.

Kuva 1. Palvelinohjelmistojen suhteet toisiinsa.

4.2      Java-pavut

Java-pavut (engl. JavaBeans) ovat uudelleen käytettävien WWW-sivujen komponenttien luontiin tarkoitettu standardi, joka on kehitetty 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 Koskikara-projekti tuotti pääosin yleiskäyttöisiä ja hyvin kommentoituja Java-papuja, joita järjestelmän jatkokehittäjät voivat hyödyntää.

4.3      Palvelinohjelmistot

Koskikara-projekti käytti työssään Korppi-järjestelmässä käytössä olevia palvelinohjelmistoja.

Kyselysovelluksella käytetään Kotka-tietokantaa PostgreSQL:n avulla. PostgreSQL on vuonna 1986 alkunsa saanut avoimen lähdekoodin relaatiotietokannan hallintaohjelmisto.

HTTP-palvelimena projektissa käytettiin Apache-nimistä suosittua Linux-käyttöjärjestelmän ohjelmistoa.

TomCat on Apache-projektin haarauma, joka kääntää JSP-sivut ja mahdolliset Java-pavut HTML-koodiksi. TomCatin avulla JSP-sivut siis muunnetaan selaimella esitettäviksi HTML-sivuiksi. TomCatiin on sisällytetty mukaan myös HTTP-palvelimen toiminnallisuus. HTTP-ominaisuuksia ei kuitenkaan käytetty, koska HTTP-palvelimena käytetyllä Apachella saatiin käyttöön myös SSL-salaus.

5         Tietokanta

Koskikara-projekti käytti Kottarainen-projektin luomaa kyselysovelluksen tietokantaa. Vanha tietokanta ei sellaisenaan ollut riittävä, joten Koskikara-projektin tarpeisiin lisätiin Kotka-tietokantaan sekä uusia tauluja, että kenttiä olemassaoleviin tauluihin.

5.1      Koskikara-sovelluksen tiedostoratkaisut

Kyselysovellus on jaettu neljän tyyppisiin tiedostoihin. Näistä JSP-sivut ja Java-pavut ovat yleisesti käytössä JSP-tekniikkaa toteuttavissa sovelluksissa.

HTML-muotoisten raporttien graafien tiedostomuoto on PNG. Raportti- ja graafitiedostot tallentuvat WWW-palvelimelle kyselyn ja analysointimallin mukaisiin alihakemistoihin, hakemiston kotka/survey/reports alle luotaviin alihakemistoihin.

5.2      Tietokannan ER-kaavio

Kyselysovelluksen tietokannan ER-kaavio on kuvassa 2. Taulut sekä taulujen kentät ovat listattuna luvussa 5.3. Tarkemmat kuvaukset tauluista sekä niiden avainkentistä löytyvät tämän dokumentin liitteestä 1. Kyselysovelluksen tietokanta kuvataan tarkemmin Kottarainen-projektin sovellusraportissa ja Kotka-tietokannan tietokantaraportissa.

Kuva 2. Kyselysovelluksen ER-kaavio.

 

5.3      Tietoa varastoivat taulut

Tietokantatauluja lisättiin Kotka-tietokantaan kolme kappaletta. Ne kaikki liittyvät kyselyn analysointimallin tallentamiseen.

Taulu questionnaireanalyzemodel sisältää analysointimallin nimen sekä yhdistää mallin kyselyyn ja analyysimallin laatijaan. Analysointimalli sisältää riittävän tiedon raportin generoimiseksi kyselyn vastaustiedoista. Taulun kentät ovat seuraavat:

Taulu questiongrouppresentation sisältää kysymysryhmien kommentit analysointimalli kohtaisesti. Taulun kentät ovat seuraavat:

o       questiongroupid osoittaa tauluun questiongroup. Viitteen arvo kertoo, mikä kysymysryhmä on kyseessä.

o       questionnaireanalyzemodelid osoittaa tauluun questionnaireanalyzemodel. Viitteen arvo kertoo valintoihin liittyvän analysointimallin.

o       comment on kysymysryhmäkohtainen kommentti.

Taulu questionpresentation sisältää analysointimalliin liitetyt kysymysten vastausten esitystavat, eli esitysgraafit ja kysymysryhmän asetukset. Taulun kentät ovat seuraavat:

Taulujen tarkempi kuvaus ja sisältö löytyy liitteestä.

6         Sovelluksen rakenne

Luvussa käsitellään projektissa toteutetun sovelluksen lähdekooditiedostoja ja niiden jakautumista hakemistoihin. Tarkemmat tiedot luokista löytyvät JavaDoceista.

6.1      JSP-sivut

Luvussa kuvataan lyhyesti Koskikara-projektissa luodut JSP-sivut sekä niiden käyttötarkoitus. Toteutettujen sivujen ulkoasu on yhtenäinen Korppi-järjestelmän kanssa.

Korppi-järjestelmän hakemistorakenne Koskikara-projektin toteuttamien JSP-lähdekooditiedostojen osalta on seuraava:

 

/survey

/analyzing

              selectModel.jsp

              selectPresentations.jsp

              generateReport.jsp

/bank

/search

simple.jsp

versatile.jsp

/preview

previewque.jsp

 

Hakemistot survey ja bank löytyvät Korppi-järjestelmän juurihakemistosta. JSP-tiedostot on jaettu kyselypankin hakutyökalun ja koostamisen käyttöliittymän sivuihin, sekä analysointityökalun käyttöliittymän sivuihin

Analysointityökalun käyttöliittymän JSP-sivut ovat seuraavat:

·        selectModel.jsp on mallin tai sitä vastaavan valmiin raportin valintasivu.

·        selectPresentations.jsp on analysointisivu, jolla muodostetaan analysointimalli.

·        generateReport.jsp generoi analysointimallista raportin.

 

Kyselypankin hakutyökalun ja koostamisen käyttöliittymien JSP-sivut ovat seuraavat:

·        simple.jsp on yksinkertaisen haun sivu.

·        versatile.jsp on monipuolisen haun sivu.

·        previewque.jsp on kohteiden esikatselusivu koostamista varten.

 

6.2      Analysointiin liittyvät Java-tiedostot

Koskikara-projekti toteutti sovelluksen kehityksen aikana seuraavat analysointitoimintoihin liittyvät Java-tiedostot Korppi-järjestelmään:

AnalyzeModel                                            pitää huolen analysointimallista ja asetuksista.

AnalyzeSettings                                    vastaa analysointimallin asetuksista.

AnalyzeSettingsFormatter              generoi analysointiasetusten valintaa varten HTML-taulukon.

Analyzer                                                      luo raportin käyttäen tietokantaa ja analysointimallia.

AnalyzerTest                                            on Analyzer-luokan testausluokka.

AnswerTable                                              on kyselydatan (yhden kysymysrivin säiliö (abstrakti luokka).

BarGraph                                                      on pylväsgraafi (yliluokka kaikille pylväsgraafeille).

ColorPalette                                            antaa värejä järjestetystä värijoukosta.

ComplexLiteralAnswerTable           on monimutkaisten sanallisten vastausten säiliöluokka (monta tekstikenttää yhtä kysymysriviä kohti).

FrequencyHTMLtable                             esittää frekvenssitaulukon raportissa.

GraphPresentation                               on kaikkien graafien yliluokka tallentaen kuvan tiedostoon.

GraphTestFrame                                       on graafien testausta varten kehitetty JFrame-tyyppinen käyttöliittymäluokka.

HTMLFormatted                                         on rajapinta kaikille raportin osille.

HTMLHeader                                                 luo HTML-otsikon raporttiin tallennettavaksi.

HTMLlist                                                      luo HTML-listaesitystavan raporttia varten.

HorizontalBarGraph                             luo vaakapylväsgraafin esitystavan.

ImageUtility                                            generoi yksilöllisiä kuvien nimiä raportin kuville ja sisältää muita kuviin liittyviä aputoimintoja.

KeyValuesHorizontalBarGraph      luo tunnuslukuja kuvaavan vaakapylväsgraafin esitystavan.

KeyValuesVerticalBarGraph           luo tunnuslukuja kuvaavan pystypylväsgraafin esitystavan.

LiteralAnswerDescriptions           on taulukko sanallisten kenttien kuvauksille.

LiteralAnswerTable                             säilöö sanalliset vastaukset (olio per kysymysrivi).

NullPresentation                                  on näkymätön esitystapa raportissa.

NumericalAnswerTable                        on numeerisen vastausdatan säilövä taulukko (olio per kysymysrivi).

NumericalAnswerTableRepeating tarjoaa taustamuuttujatuen numeeriselle vastausdatalle.

NumericalKeyValueHTMLtable         esittää tunnusluvut HTML-taulukkona.

PieGraph                                                      luo piirakkagraafiesitystavan

Presentation                                            on kaikkien esitystapojen yliluokka.

PresentationFactory                          luo esitystapaluokkien olioita.

QueryData                                                   on tietolähdeluokka analysointimallille.

QuestionAnalyzeHTMLtable              tuottaa kysymysriviä vastaavan HTML-kokonaisuuden raporttiin.

QuestionAsGroupHeader                     vastaa kysymysrivejä sisältävän kysymysryhmän otsikkoa raportissa.

QuestionGroupHeader                          vastaa kysymysryhmiä sisältävän kysymysryhmän otsikkoa raportissa.

QuestionGroupPresentation           vastaa samannimistä taulua sisältäen kysymysryhmäkohtaista analyysitietoa.

QuestionSettings                                  sisältää analysointimallin kysymyskohtaista tietoa.

SelectModel                                              käsittelee samannimistä JSP-sivua, vastaten mallien valinnasta.

TextualHTMLtable                                  sisältää HTML-taulukon generoimiseen liittyvän toiminnallisuuden.

VerticalBarGraph                    luo pystypylväsgraafin.

6.3      Hakutuloksiin ja kyselyiden koostamiseen liittyvät sekä muut Java-tiedostot

Koskikara-projekti tuotti sovelluksen kehityksen aikana seuraavat hakutuloksiin, kyselyiden koostamiseen liittyvät sekä muut Java-tiedostot Korppi-järjestelmään:

 

AggregateQuestionnaire                    huolehtii kyselyiden koostamisesta.

Debug                                                               avustaa sovelluksen perkaamisessa.

UserStatic                                                  auttaa kotkabeans.User-luokan käyttämisessä Java-koodista.

SavedFieldHandler                                 tallentaa fields-oliot tietokantaan.

QueriesPreview                                        vastaa kyselyjen, kysymysryhmien ja kysymysten esikatselusta.

QueryBankGenericHTMLGenerator   luo hakusivuille alasvetolistoja.

QueryBankResultSQLGenerator        luo SQL-kyselyjä formatoidakseen hakutulokset.

QueryBankSearch                                      ajaa haut kyselypankissa.


7         Käyttöliittymien sivut

Luvussa käsitellään projektissa toteutettujen kyselysovelluksen sivujen ulkoasua ja toiminnallisuutta.

7.1      Sivujen yleinen rakenne

Sivujen käyttöliittymä koostuu kolmesta eri osasta: kahdesta navigaatioalueesta sekä tietoalueesta. Navigaatioalueet ovat selainikkunan yläosassa oleva osio sekä vasemmassa reunassa oleva navigaatiopuu kalentereineen.

Yläosan navigointialue sisältää Korppi-järjestelmän perustoiminnot, joita ovat poistuminen, palaute, asetukset ja opastus. Vasemmassa reunassa olevassa puurakenteessa puolestaan on esitetty linkkilistana Korppi-järjestelmän eri sovelluksiin liittyvät kokonaisuudet. Niiden avulla Korppi-järjestelmän käyttäjä pystyy liikkumaan eri sovellusten ja toimintojen välillä. Navigaatiopuussa on linkki myös kyselysovellukseen, joka sisältää Kottarainen- ja Koskikara-projektien toteuttamat osiot.

Kuvassa 3 on kuvattu kyselysovelluksen käyttöliittymän rakenne Koskikara-projektissa toteutettujen sivujen osalta.

 

Kuva 3. Koskikara-projektin tuottamat kyselysovelluksen sivut.

7.2      Aloitussivu

Luvussa kuvataan Koskikara-projektin toteuttamien sivujen huomioimista kyselysovelluksen aloitussivuilla.

Kuvassa 4 näkyvällä Kottarainen-projektin luomalla kyselyjen pääsivulla main.jsp on linkki valmiin kyselyn muokkaamiseen.

Kuva 4. Kottarainen-projektin kyselyjen hallintasivu.

Sivun Muokkaamaan-linkistä päästään kuvan 5 kyselyn luontisivulle.

 

Kuva 5. Kyselyjen luontisivu.

Kuvassa 5 olevasta painikkeesta Analysointiin päästään kyselyn Eijan uusi syksykysely analysointisivulle.

Kyselysovelluksen kyselypankin toimintoihin päästään käsiksi kyselyjen luontisivuilta questionnairehandler.jsp (katso kuva 6).Tämä sivu on Kottarainen-projektin tuotoksia.

Kuvan 5 painike Hae kyselypankista vie hakusivulle simple.jsp. Hakutyökalun sivuja kuvataan tarkemmin luvuissa 7.3 ja 7.4.

Kuva 6. Kyselyn tietojen muokkaussivu questionnairehandler.jsp


7.3      Kyselyiden yksinkertainen hakusivu

Kuvassa 7 on esitelty Hae kyselypankista -painikkeesta oletuksena aukeava sivu simple.jsp. Sivun yläosassa on linkki monipuoliseen hakuun, jota on kuvattu enemmän luvussa 7.4. Yksinkertaisen haun toimintoja ei tässä turhaan kuvata, koska ne sisältyvät monipuolisen haun toimintoihin.

 Kuva 7. Yksinkertainen haku simple.jsp.

7.4      Kyselyiden monipuolinen hakusivu

Yksinkertaisesta hausta (luku 7.3) pääsee monipuolisen haun sivulle linkin kautta. Tällöin avautuu sivu versatile.jsp. Täältä päästään yksinkertaisen haun puolelle sivun yläreunassa olevan linkin kautta.

Kuvassa 8 on esitelty monipuolisen haun näkymä. Käyttäjällä on mahdollisuus kohdistaa hakuaan määrittämällä haettavat kohteet, uudelleenkäyttöaste, hakutuloksiin tulostettavat tiedot, julkaisuorganisaatio, metatiedot ja niihin liittyvä hakusana, luonti- ja voimassaoloaika sekä laatijan nimi. Haun ehdot ja valinnat on kuvattu tarkemmin vaatimusmäärittelyssä ja käyttöohjeessa.

Kuva 8. Monipuolinen haku versatile.jsp.


 

7.5      Hakutulosten esittäminen

Hakutulokset esitetään kuvan 9 mukaisella sivulla. Jokaisesta tuloksesta on linkki luvussa 7.6 kuvattavaan esikatseluun.

Kuva 9. Hakutulokset versatile.jsp.

7.6       Hakutyökalun esikatselusivu

Hakutulosten sivulta (katso kuva 9) pääsee kyselyn, kysymysryhmän tai kysymyksen esikatseluun kohteen linkkiä klikkaamalla. Kuvan 10 esikatselusivu esittää kohteen ulkoasun ja sisällön. Esikatselusivun alalaidassa olevilla painikkeilla voidaan valita kohde lisättäväksi muokattavissa olevaan kyselyyn tai palata takaisin hakusivulle.

Kuva 10. Kyselyn esikatselu previewque.jsp.

 


7.7      Kyselyn raporttien ja mallien valintasivu

Kyselyjen luontisivun Analysointiin-painikeesta päästään kyselyn analysointiin. Jos kyselystä on aiemmin luotu analysointimalli, tulee esille kyselyyn liitetyt analysointimallit ja raportit esittävä sivu selectModel.jsp (katso kuva 11). Sivulta voi jatkaa analysoimaan kyselyä klikkaamalla Mallit-listan linkkejä, jolloin tulee esille mallia vastaava analysointisivu tai selata kyselyn aiemmin luotuja raportteja klikkaamalla Raportit-listan linkkejä.

Kuva 11. Kyselyn mallien ja raporttien valintasivu selectModel.jsp.

7.8       Kyselyn analysointisivu

Kyselyn vastausten analysointityökalun toiminnallisin ja olennaisin sivu on  selectPresentations.jsp. Kuvassa 12 näkyvällä sivulla määritellään käytettävä analysointimalli. Lisäksi käyttäjä voi valita kunkin kysymyksen kohdalla,  otetaanko kysymys mukaan raporttiin vai ei.


 

Kuva 12. Kyselyn vastausten analysointisivu selectPresentations.jsp.

 

Tunnuslukutaulukko voidaan valita esitettäväksi kyseisellä valintaruudulla. Tekstiä sisältävät avoimet vastaukset tulostuvat allekkain vastauksittain. Esitystavaksi voidaan valita piirakkagraafi, vaaka- tai pystypylväsgraafi, lista tai ettei esitystapaa käytetä ollenkaan.

Esitettävä raportti  tallennetaan HTML-muodossa palvelimen hakemistoon kotka/survey/reports/[kyselyn id]/[analysointimallin id]. Raportin tiedosto index.html sisältää viittauksia samassa hakemistossa sijaitsevien graafien kuvatiedostoihin.


 

7.9      Raporttisivu

Raportti tulostuu kuvan 15 mukaisesti. Raporttiin tulostuu aina frekvenssitaulukko.

 

Kuva 14. Kyselyn raportin ulkoasu.

 

 


 

8         Testaus ja tulokset

Luvussa tarkastellaan Koskikara-projektin testaamista yleisellä tasolla. Koskikara-projektin testaaminen voidaan jakaa ohjelmoinnin aikana tapahtuvaan yksikkö- ja integraatiotestaukseen.

8.1      Testausympäristö

Testaus tapahtui pääosin kehitysympäristössä. Kehitysympäristö koostui kolmesta Linux-koneesta. Kehitysympäristössä testatessa voitiin reagoida nopeasti havaittuihin virheisiin koodissa. Lopullinen integraatiotestaaminen suoritettiin tuotantoympäristössä. Testausta suoritettiin myös projektiryhmäläisten kotoa, hitaampien verkkoyhteyksien läpi.

Testatut selaimet olivat Internet Explorer 6.0, Mozilla 1.4 sekä Opera 7.1. Ainoastaan Operalla havaittiin jotain pieniä ongelmia, jotka ovat ilmenneet jo aiemmin Korppi-järjestelmän sovelluksissa. Muita yhteensopivuusongelmia ei ole ilmennyt.

Tarkemmat tiedot kehitys- ja tuotantoympäristön palvelinohjelmista löytyvät luvusta 4.

8.2      Testausperiaatteet

Projektiryhmän tavoitteena oli testata mahdollisimman paljon sovellusta sen kehittämisen aikana. Tavoite toteutui kohtuullisesti. Sovelluksen kehittäminen jaettiin kahteen erilliseen osioon: kyselypankkiin ja analyysityökaluun. Kyselypankin toteuttamisen vastaavina henkilöinä olivat Harri ja Aapo. Analysointityökalun vastaavina olivat Pekka ja Ville. Pekka ja Ville testasivat Harrin ja Aapon tuotokset ja päinvastoin. Tällä menettelyllä saatiin hiukan tarkemmin selvitettyä puuttuvia ominaisuuksia ja virheitä.

Tilaajien ja ohjaajien käyttöön annettiin ryhmän toimesta testattu ohjelma. Heidän kommenttiensa ja havaittujen virheiden perusteella korjattiin ja kehitettiin sovellusta. Sovelluksen järjestelmätestausvaihe oli lyhyt, koska sovellukselle sovitut toiminnot valmistuivat vasta projektin loppupuolella.

Bugzilla-ohjelman käyttö havaittiin projektin kohdalta turhaksi. Kommentoinnin ja ongelmien ratkaisun avuksi käytettiin ryhmän sisäistä sähköpostilistaa. Tämä ratkaisu toimikin tehokkaasti.

8.3      Testitulokset

Testausvaiheissa löytyi useita virheitä, eritoten kehitysympäristössä koodia ajaessa ja peratessa. Nämä korjattiin yleensä heti tai sitten vähemmän kriittiset virheet jätettiin odottamaan myöhempää korjausta.

Tuotantoympäristössä testattaessa suurimmat virheet löytyivät koostamisesta ja varsinkin liitettyjen kohteiden järjestys ei aina mennyt oikein. Koostamista on yhä projektin loppuun saakka korjattu ja siihen jäi pieni satunnainen järjestykseen liittyvä virhe.

Koostettujen kyselyiden analysoinnin kohdalla ilmeni ongelma, joka esti analysoinnin ja raportin tuottamisen. Tämäkin johtui koostamisen järjestysnumeroon liittyvästä ongelmasta.

Analysoinnissa oli ongelmia lisäksi tunnuslukujen kanssa. Tunnusluvut laskettiin vääristä arvoista ja se aiheutti muita pienempiä ongelmia.

9         Puutteet ja jatkokehitysideat

Luvussa kuvataan jatkokehitykseen sovittuja puutteita, ominaisuuksia ja ideoita. Osa niistä oli vaatimusmäärittelyssä kirjattu Koskikara-projektin tehtäviin.

Sovelluksen testausvaiheessa havaittiin, että kaikkia ominaisuuksia ei ehditä toteuttamaan Koskikara-projektin puitteissa. Nämä toteutetaan tulevaisuudessa erillisinä sovellusprojekteina, erikoistöinä tai palkattuina työtekijöinä.

Analyysityökalun kehittämiskohteita ovat:

·        kyselyn, kysymysryhmän, kysymyksen ja vastauksen kommentointi raporttiin,

·        kyselyn virallistamisprosessin tarkempi selvittäminen ja konkretisointi,

·        graafin esitystavan, värien ja sijoittelun lopullinen määritteleminen,

·        raportin ulkoasun esikatselu,

·        raportin ulkoasun muokkaamiseen työkalu,

·        kaikki tarpeelliset analysointiaineistot kattava esitystapojen ja tunnuslukujen lisääminen

·        taustamuuttujan huomiointi (esimerkiksi miesten ja naisten vastausten vertailu erillään),

·        toistuvan kurssikyselyn analysointi (trendien analysoinnissa tarvittava ominaisuus),

·        servlet huolehtimaan raporttien lukemisesta (hakemistorakenne),

·        ja kaikkien HTML-raporttien selaaminen huomioiden käyttäjäoikeudet mallikohtaisesti.

Hakutyökalun kehittämiskohteena ovat:

·        Google-tyyppinen haku, jolla listataan siis yhdelle sivulle vain osa hakutuloksista kerrallaan ja laitetaan sivun alle tarvittaessa linkit ohjamaan lisähakuja,

·        ja hakutulosten lukumäärän rajaaminen (COUNT-lause), liittyy Google-tyyppiseen hakuun.

Hakutyökalun Java-lähdekooditiedostojen ToDo-osassa on myös listattu kehitysideoita.

 

Ideoita jatkokehitystä varten ovat:

·        Kyselyn kopioiminen tietokannasta toiseen voisi toteuttaa tietokantasovelluksen avulla. Data otettaisiin ulos tekstitiedostoon tai XML-tiedostoon.

·        Pitäisikö myös ilmoittaa, missä tarkoituksessa kyselypankista ollaan kohteita hakemassa? Eikö siis analysoinninkin yhteydessä tarvittu joskus pankkia?

·        Yksinkertainen ja monipuolinen haku voitaisiin toteuttaa välilehdin. Ei kai nykyistä esitys- ja valintatapaa löydy muualta Korppi-järjestelmästä?

·        Tarvitaanko kyselyn esikatselu ja kohteen valinnan sisältävä esikatselu erikseen vai riittäisikö niille yhteinen sivu?

10   Yhteenveto

Koskikara-sovellusprojekti jatkokehitti WWW-pohjaista kysely-sovelluksen prototyyppiä Jyväskylän yliopiston käyttöön. Projektin puitteissa toteutuneita osia olivat kyselyiden haku ja vastausten analysointi WWW-ympäristössä.

Jatkokehitykseen jäivät mm. kysymyksen ja vastauksen kommentointi raporttiin, kyselyn virallistamisprosessi, taustamuuttujan mukaan suoritettu analysointi ja hakupuolella Google-tyyppinen haku. Projektissa toteutetulla sovelluksella pystyy kuitenkin laatimaan kyselyitä hakutyökalun avulla sekä analysoimaan vastauksia graafisesti ja tuottamaan kyselyn vastauksista HTML-raportti.

Sovelluksen valmistuminen myöhästyi suunnitellusta aikataulustaan kolme viikkoa, eikä täyttänyt kaikkia sille alunperin asetettuja vaatimuksia. Projektin jäsenet olettivat sovelluksen toimintojen toteuttaminen yksinkertaisemmaksi.

Suurimpia syitä myöhästymiseen olivat sovelluksen rajaamisen epäonnistuminen. Myös koko projektin jatkunut liian suuri keskittyminen sovelluksen ulkoasuun ja käyttöliittymään aiheutti liikaa työtä. Sovelluksen toteuttaminen oli huomattavasti vaativampaa kuin suunnitelmissa ennakoitiin.

Pääsyy kuitenkin sovelluksen valmistumisen myöhästymiseen oli raportin kuvien luomiseen liittynyt ongelma, joka johtui JSP-ohjelmointikielen rajoittuneisuudesta.


Lähteet

Lintunen Sampsa, Pöyhönen Tiina, Vähä-Ruka Teemu ja Ylönen Timo, ”Kottarainen-projektin Sovellusraportti”, <URL: http://kotka.it.jyu.fi/kottarainen/dokumentit/viralliset/Sovellusraportti.rtf>, Jyväskylän yliopisto, tietotekniikan laitos, 2003.

David M. Geary, ”Advanced Java Server Pages”, Prentice Hall, 2001.

Lahtonen Tommi, “SQL ToolKit”, Docendo, 2002.

Mika Vesterholm. Jorma Kyppö, “Java-ohjelmointi Pro Training”, Satku, 2000.


Liitteet

Liite 1. Tietokantataulujen rakenne

 

questionnaireanalyzemodel

Field

Type

Not Null

deleted

boolean

NOT NULL

questionnaireanalyzemodelid

integer

NOT NULL

name

character varying (400)

 

description

Character varying (4000)

 

questionnaireid

integer

NOT NULL

personid

integer

NOT NULL

 

questiongrouppresentation

Field

Type

Not Null

deleted

boolean

NOT NULL

questiongrouppresentationid

integer

NOT NULL

questionnaireanalyzemodelid

integer

NOT NULL

questiongroupid

integer

NOT NULL

comment

character varying (4000)

 

 

 

questionpresentation

Field

Type

Not Null

deleted

boolean

NOT NULL

questionpresentationid

integer

NOT NULL

questionid

integer

NOT NULL

questionpresentationtypeid

integer

NOT NULL

questiongrouppresentationid

integer

NOT NULL

settings

character varying (400)

 

Comment

character varying (4000)

 


Liite 2. Sovelluksen luokkakaavio