Ville Laitila
Pekka Moisio
Aapo Mäkinen
Harri Pölkki
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ä.
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. |
3 Asetettujen
tavoitteiden toteutuminen
3.1 Kohteiden hakeminen hakutyökalun avulla
3.2 Kyselyiden koostaminen kyselypankin kohteista
3.3 Kyselyiden vastausten analysointi
4 Toteutustekniikat
ja -työkalut
5.1 Koskikara-sovelluksen tiedostoratkaisut
6.2 Analysointiin liittyvät Java-tiedostot
6.3 Hakutuloksiin ja kyselyiden koostamiseen liittyvät sekä muut Java-tiedostot
7.3 Kyselyiden yksinkertainen hakusivu
7.4 Kyselyiden monipuolinen hakusivu
7.6 Hakutyökalun esikatselusivu
7.7 Kyselyn raporttien ja mallien valintasivu
9 Puutteet
ja jatkokehitysideat
Liite 1. Tietokantataulujen rakenne
Liite 2. Sovelluksen luokkakaavio
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.
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.
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.
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ä.
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ä.
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ä.
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.
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.
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.
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ää.
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.
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.
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.
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.
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:
questionnaireanalyzemodelid
on taulun avainkenttä.questionnaireid
osoittaa tauluun questionnaire
. Viitteen arvo kertoo, mihin
kyselyyn analyysi liittyy.personid
osoittaa tauluun person
. Viitteen arvo kertoo,
analysointimallin laatijan.name
kertoo analysointimallin nimen. description
on analysointimallin kuvaus.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:
questionpresentationtypeid
kertoo
kysymykselle valitun esitystavan. Esitystavat yksilöivät arvot löytyvät
sovelluksen lähdekoodista, luokasta PresentationFactory
.questionid
osoittaa tauluun question
. Viitteen arvo kertoo
analyysiin liittyvän kysymyksen. questiongrouppresentationid
osoittaa tauluun questiongrouppresentation
.
Viitteen arvo kertoo, mihin kokonaisuuteen (questiongrouppresentation
) esitystavan valinta kuuluu.comment
kysymyskohtainen kommentti.settings
syventävää ulkoasua
määrittelevää tietoa (esim. värillisyys).Taulujen tarkempi kuvaus ja sisältö
löytyy liitteestä.
Luvussa
käsitellään projektissa toteutetun sovelluksen lähdekooditiedostoja ja niiden
jakautumista hakemistoihin. Tarkemmat tiedot luokista löytyvät JavaDoceista.
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
/bank
/search
/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.
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.
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.
Luvussa
käsitellään projektissa toteutettujen kyselysovelluksen sivujen ulkoasua ja
toiminnallisuutta.
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.
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
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
.
Kuva 8. Monipuolinen haku versatile.jsp
.
Hakutulokset esitetään kuvan 9 mukaisella
sivulla. Jokaisesta tuloksesta on linkki luvussa 7.6 kuvattavaan esikatseluun.
Kuva
9. Hakutulokset versatile.jsp
.
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
.
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
.
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.
Raportti tulostuu
kuvan 15 mukaisesti. Raporttiin tulostuu aina frekvenssitaulukko.
Kuva 14. Kyselyn raportin ulkoasu.
Luvussa
tarkastellaan Koskikara-projektin testaamista yleisellä tasolla.
Koskikara-projektin testaaminen voidaan jakaa ohjelmoinnin aikana tapahtuvaan
yksikkö- ja integraatiotestaukseen.
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.
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.
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.
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?
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.
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.
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 |
Field |
Type |
Not Null |
deleted |
boolean |
NOT NULL |
questiongrouppresentationid |
integer |
NOT NULL |
questionnaireanalyzemodelid |
integer |
NOT NULL |
questiongroupid |
integer |
NOT NULL |
comment |
character varying (4000) |
|
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) |
|