Kaakkuri

Tietotekniikan sovellusprojekti

Petteri Kela
Antti Pokela
Santtu Salmi
Matti Suomalainen

Sovellussuunnitelma

20. tammikuuta 2005

Versio 1.0



Tietoja Kaakkuri-projektista

Tekijät:                       Petteri Kela, PK, (kapekela@cc.jyu.fi)
Antti Pokela, AP,
(anpokela@cc.jyu.fi)
Santtu Salmi, SS,
(ssalmi@cc.jyu.fi)
Matti Suomalainen, MS,
(msuomal@cc.jyu.fi)

Tilaaja:                        Jyväskylän yliopisto, tietotekniikan laitos

Tilaajan edustajat:     Päivi Jämsen, (pjamsen@mit.jyu.fi)
Vesa Lappalainen (vesal@mit.jyu.fi)

Vastaava ohjaaja:       Lari Kannisto (kalahe@mit.jyu.fi)

Tekninen ohjaaja:       Arto Rikalainen (artturi@cc.jyu.fi)

Käytettävyyskonsultit:

                                    Ville Haapsaari (vjhaaps@cc.jyu.fi)
Jukka Partanen
(jpartan@cc.jyu.fi)

Yhteystiedot:              Työtila AgC222.2, puhelin (014) 260 4963

Kotisivu:                     http://sovellusprojektit.it.jyu.fi/kaakkuri/

Postilista:                    kaakkuri@korppi.jyu.fi

Tiivistelmä:                Tämä dokumentti on Jyväskylän Yliopiston tietotekniikan laitokselle toteutettavan Kaakkuri-sovellusprojektin toteuttaman sovelluksen suunnitelma. Se sisältää kuvauksen sovelluksen suunnittelussa käytetyistä metodeista ja yleiskuvan sovelluksen toteutuksesta.

 


Versiohistoria

Versio

Päiväys

Tekijä

Muutokset

0.1

20.1.2005

MS

Ensimmäinen versio.


Sisällysluettelo

1      Johdanto. 1

2      Termejä. 2

3      Suunnittelu yleisesti 3

4      Käyttöliittymän yleiskuvaus. 4

4.1       Pääkäyttöliittymä. 4

4.1.1        Puurakenne. 4

4.1.2        Taulukko. 4

4.1.3        Kurssi-info. 4

4.1.4        Virheilmoitusruutu. 5

4.2       Blokkieditori 5

4.3       Kurssiryhmäeditori 5

4.4       Salieditori 5

5      Tietorakenteen arkkitehtuuri 6

5.1       Courses. 6

5.2       Rooms. 6

5.3       ScheduleDatabase. 6

6      Koodi 7

6.1       Nimeäminen. 7

6.2       Kommentointi 7

7      Tiedostot 7


1           Johdanto

Kaakkuri on Jyväskylän yliopiston tietotekniikan laitoksella toteutettava sovellusprojekti. Projekti toteuttaa tietotekniikan laitokselle sovelluksen, jonka avulla voidaan laatia lukukauden luentolukujärjestys. Lukujärjestyksen laatimiseksi täytyy ottaa huomioon useita rajoitteita, jotka hankaloittavat suunnittelutyötä. Toteutettavan sovelluksen on tarkoitus helpottaa tätä suunnittelutyötä, sekä mahdollistaa salivarausten tekemisen suoraan Korppi-järjestelmään.

Sovellussuunnitelmassa kuvataan sovelluksen suunnittelussa käytettäviä metodeja ja sovelluksen yleistä toiminnallisuutta. Projektin edetessä jäi sovellussuunnitelma nopeasti muuttuvien vaatimusten seassa käytännössä kokonaan tekemättä, joten tässä dokumentissa keskitytään kuvaamaan lähinnä kuinka sovellusta toteutettiin.

Kappaleessa kaksi tutustutaan projektin aikana käytettyyn vieraaseen termistöön. Kappale kolme käsittelee yleisesti sovelluksen suunnittelua. Kappaleet neljä ja viisi kuvaavat sovelluksen käyttöliittymää ja tietorakennetta. Kappaleet kuusi ja seitsemän kertovat koodauksessa käytetyistä tavoista ja sovelluksen sisäisestä tiedon tallennuksesta.


2           Termejä

Luvussa selitetään muutamia aihealueeseen liittyviä termejä ja lyhenteitä.

Java                    Java on oliopohjainen, laitteistoriippumaton ohjelmointikieli, mikä mahdollistaa Javalla kirjoitettujen sovellusten ajamisen useilla eri laitteistoarkkitehtuureilla.

Korppi                 Korppi on opintotietojärjestelmä, joka tarjoaa tietoa ja työvälineitä mm. opiskelijoille ja opettajille. Korppi-järjestelmän avulla voidaan mm. ilmoittautua kursseille ja tentteihin, varata opetusta varten saleja ja muita työvälineitä. Korppi-järjestelmä löytyy osoitteesta: https://korppi.jyu.fi/


 

3           Suunnittelu yleisesti

Kaakkuri-projektissa lähdettiin toteuttamaan sovellusta, jonka vaatimuksista ei ollut tarkkaa kuvausta. Tämä teetti aluksi paljon työtä vaatimusmäärittelyn parissa, mutta pian ajauduttiin tilanteeseen, jossa ei osattu enää hahmottaa tarvittavia toiminnallisuuksia tai ominaisuuksia. Ongelmaa lähdettiin ratkaisemaan toiselta kantilta eli päätettiin alkaa tekemään tulevasta käyttöliittymästä malleja, joiden pohjalta sovellusta saataisiin kehitettyä eteenpäin. Samalla projektiryhmän jäsenet saivat tarvitsemaansa kokemusta Java-kielellä ohjelmoimisesta.

Kaakkuri-projektissa siirryttiin perinteisesti käytetyn vesiputousmallin sijasta iteratiiviseen malliin, jossa jokaisen käyttöliittymämallin kehittämiseen tarvittiin määrittely, suunnittelu ja toteutusvaihe. Usein näistä vaiheista kaksi oli päällekkäin, joskus kaikki kolme. Projektissa järjestettiin kokouksia viikoittain muutamaa poikkeusta lukuun ottamatta, joten iteraatioiden aikaväli oli hyvin lyhyt. Tämä osaltaan hankaloitti myös sovellussuunnitelman laatimista. Ohjelmoinnissa käytettiin usein XP mallin mukaista pariohjelmointia, jonka aikana osa suunnittelusta tehtiin toteuttamisen yhteydessä.

Iteratiivinen malli vei sovellusta nopeaa tahtia eteenpäin ja kokouksien jälkeen pidettiin projektiryhmän jäsenten kesken palaveri, jossa suunniteltiin tarvittavia muutoksia ja uusien ehdotusten mukaisten toimintojen toteuttamistapoja. Hyvin nopeasti ensimmäisten iteraatiokierrosten jälkeen alkoi Kaakkuri-sovelluksen käyttöliittymä saada muotoaan. Sitä tosin pidettiin avoimena muokkaukselle projektin viimeisiin kokouksiin saakka.

 

4           Käyttöliittymän yleiskuvaus

Käyttöliittymän suunnittelulla oli keskeinen rooli Kaakkuri-projektissa, koska oltiin siirtämässä tietokoneelle jotain sellaista mikä aikaisemmin oli tehty lähinnä paperin ja kynän avulla. Useasti mietittiin esimerkiksi, että ollaanko tässä nyt tekemässä sitä parasta mahdollista ratkaisua vai vain siirtämässä vanhaa tuttua keinoa tietokoneen näytölle. Käyttöliittymä sai lopullisen ulkoasunsa vasta toiseksi viimeisen palaverin jälkeen. Käyttöliittymään kuuluu viisi dialogia: pääkäyttöliittymä, blokkieditori, kurssiryhmäeditori ja salieditori.

4.1             Pääkäyttöliittymä

Pääkäyttöliittymässä on neljä pääkomponenttia: puurakenne, taulukko, kurssi-info ja virheilmoitusruutu.

4.1.1      Puurakenne

Sovelluksen vasemmassa reunassa on puurakenne, jossa näkyy kaikki kurssit, joita luentolukujärjestyksen suunnittelussa käytetään. Puu on jaettu kahteen osaan: sijoittamattomat kurssit ja sijoitetut kurssit. Puurakenteesta voi raahata kurssien luentoja taulukkoon, jolloin ne sijoittuvat haluttuun aikaan.

4.1.2       Taulukko

Taulukko on sovelluksen pääelementti ja siksi suurin komponentti näytöllä. Taulukko jakautuu kahteen eri näkymään: periodinäkymä ja kalenteri. Näiden välillä voi liikkua vaihtamalla välilehteä taulukon yläpuolella. Periodinäkymä on kooste joltain tietyltä ajanjaksolta. Se näyttää kaikki kurssit, jotka kuuluvat sen alueelle. Kalenteri taas esittää ruudussa viikon kerrallaan. Käyttäjä voi sijoittaa kursseja molempiin näkymiin.

4.1.3      Kurssi-info

Kurssi-info näyttää puurakenteessa valittuna olevaan kurssiin liittyvän informaation. Tämä sisältää muun muassa opintoviikkojen määrän, opettajien toiveet ja kurssiryhmät, joihin kyseinen kurssi kuuluu. Tilan säästämiseksi ruudulla näkyy vain tietyt infot kerrallaan ja niiden välillä voi vaihdella välilehdillä.

4.1.4      Virheilmoitusruutu

Virheilmoitusruutu näyttää informaatiota käyttäjän tekemistä virheistä. Virheet on jaettu absoluuttisiin virheisiin ja huomautusvirheisiin. Absoluuttisen virheen tapauksessa sovellus peruu käyttäjän tekemän toiminnon ja ilmoittaa siitä virheilmoitusruudussa. Huomautusvirheissä sovellus vain näyttää virheilmoituksen, mutta jättää käyttäjän tekemän toiminnon voimaan. Absoluuttisiksi virheiksi luetaan saman kurssin tapahtumien sijoittaminen päällekkäin ja samaan saliin samaan aikaan kahden tapahtuman sijoittaminen. Huomautusvirhe tulee kun sijoittaa kaksi samaan kurssiryhmään kuuluvaa tapahtumaa päällekkäin.

4.2             Blokkieditori

Blokkieditorilla voi käyttäjä muokata haluamansa blokkirakenteen. Blokkijärjestelmä pienentää ongelma-avaruutta ja se otettiin osaksi sovellusta aikaisemmin käytössä olleen toimintatavan mukaisesti.

4.3              Kurssiryhmäeditori

Kurssiryhmäeditorilla luodaan kurssiryhmiä, joille voi antaa mielivaltaisen nimen. Kurssiryhmään voidaan sijoittaa kursseja, joiden ei haluta jostain syystä joutuvan suunnittelussa päällekkäin. Ryhmään voi sijoittaa myös toisen ryhmän.

4.4             Salieditori

Kaakkuri-sovellus hakee Korpista kaikki Jyväskylän yliopistolla käytössä olevat salit. Saleja on hyvin paljon, joten salieditorin avulla käyttäjä voi valita käyttöönsä vain haluamansa salit ja antaa niille tarvittaessa lyhyemmän tai paremmin muistettavan nimen.

5           Tietorakenteen arkkitehtuuri

Sovelluksen tietorakenne on ”tekstinkäsittelymäinen” eli kaikki data on olemassa vain tietokoneen muistissa kunnes käyttäjä tallettaa sen levylle.  Tietorakenne jakautuu kolmeen pääosaan: Courses, Rooms ja ScheduleDatabase.

5.1             Courses

Courses on tietorakenne kursseista, jotka on luentolukujärjestyksen suunnitteluun haettu. Courses pitää sisällään Course ilmentymiä. Course vastaa yhtä tiettyä kurssin ilmentymää. Course sisältää yleisen informaation kurssista ja kaikki siihen kuuluvat tapahtumat. Tapahtumat itse tietävät mihin aikaan ja paikkaan ne kuuluvat. Courses tietorakenne tallennetaan levylle XML muodossa.

5.2             Rooms

Rooms on tietorakenne luentosaleista, jotka on käytössä. Rooms sisältää Room nimisiä ilmentymiä, jotka vastaavat tiettyä luentosalia. Rooms tietorakenne tallennetaan levylle XML muodossa.

5.3             ScheduleDatabase

ScheduleDatabase on sovelluksen kalenterimainen tietorakenne, jota käytetään tapahtumien aikojen sijoittamiseen. ScheduleDatabase koostuu joukosta Scheduleja, joista jokainen edustaa tiettyä viikkoa kalenterissa. Schedule tietää mitkä tapahtumat sen edustamalle ajanjaksolle kuuluu. ScheduleDatabaseen liittyy myös ScheduleView, joka koostaa halutunlaisen näkymän (periodi- tai kalenterinäkymä). ScheduleDatabase pystyy esisijoittamaan talletetun Courses tietorakenteen pohjalta tapahtumat oikeisiin paikkoihinsa, joten suunnittelua voidaan jatkaa viimeksi tallennetusta kohdasta.


6           Koodi

Sovellus toteutetaan Java-ohjelmointikielellä, koska siitä halutaan alustariippumaton. Joillakin tulevan käyttäjäryhmän henkilöillä on MAC tietokoneita, joten Java tarjoaa myös heille mahdollisuuden käyttää sovellusta. Kehitysympäristönä on Borland JBuilder 9. Koodaaminen toteutetaan englanniksi. Sovelluksen toteutuksessa otetaan jatkuvasti huomioon mahdollinen jatkokehittäminen ja ominaisuuksien lisääminen.

6.1             Nimeäminen

Luokkien nimet kirjoitetaan isolla alkukirjaimella esim. Courses. Muuttujien nimet pienellä alkukirjaimella esim. credits. Metodien nimet aloitetaan pienellä kirjaimella, mutta eri seuraavien sanojen ensimmäiset kirjaimet kirjoitetaan isolla esim. getEventCount().

6.2             Kommentointi

Kaikki public luokat kommentoidaan Javadoc kommentoinnin mukaisesti. Hankalammat rakenteet pilkotaan myös kommenteilla osiin ja yritetään selittää mitä ollaan tekemässä. Tarkoituksena olisi tuottaa helposti luettavaa ja ymmärrettävää Java-koodia, jota on helppo jatkokehittää.

7           Tiedostot

Sovellus tallettaa kaikkiaan neljä tiedostoa. Kurssitieto.xml sisältää tiedot suunnittelussa käytetyistä kursseista. Tiedosto on XML formaattia. Salitieto.xml sisältää tiedot sovelluksen käytössä olevista saleista. Tiedosto on XML formaattia. Lisäksi sovellus tallettaa kurssiryhmat.dat tiedoston, joka sisältää tiedot luoduista kurssiryhmistä ja blokkirakenne.txt tiedoston, joka sisältää tiedot käyttäjän luomasta blokkirakenteesta.