Opintojensuunnittelujärjestelmä Vaatimusanalyysi Teemu Ajalin Lauri Jokipii Anu Määttä Juho Peltonen Nuutti Rintala Mikko Suonio Helsinki 11. helmikuuta 2003 Ohjelmistotuotantoprojekti Vaatimusanalyysi HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
Dokumentin versiohistoria 0.1 07.02.2002 Ryhmässä tarkasteltava versio 0.2 11.02.2002 Ryhmässä tarkasteltava versio
Sisältö 1 Johdanto 1 1.1 Työn aihepiiri........................... 1 1.2 Määritelmät, termit ja lyhenteet................. 2 2 Yleiskuvaus 2 2.1 Ohjelmiston yleiskuvaus..................... 2 2.2 Ohjelmiston toimintaympäristö................. 3 2.3 Ohjelmiston käyttäjät....................... 3 3 Vaatimukset 4 3.1 Opintojen tilan visualisointi (Lauri)............... 4 3.1.1 Pakolliset cum laude approbatur -kurssit....... 4 3.1.2 Toiminnallisuus graafissa................ 4 3.1.3 Valinnaiset cum laude approbatur -kurssit...... 5 3.1.4 Laudatur -kurssit..................... 5 3.2 Opintokokonaisuuslomake (Nuutti, Mikko, Juho)...... 5 4 Käyttötapaukset 6 4.1 Käyttötapauksissa esiintyvät henkilöt (Lauri)......... 6 4.2 Opintojen tilan visualisointi (Lauri)............... 6 4.3 Opintokokonaisuuslomake (Juho)............... 7 4.3.1 Käyttötapaus: opintosuoritusmerkintä lomakkeen hankkiminen.......................... 7 4.3.2 Käyttötapaus: opintosuorituksen sisällön tarkastelu 8 4.3.3 Käyttötapaus: suorituksen siirtäminen kokonaisuudesta toiseen....................... 8 4.3.4 Käyttötapaus: suorituksen siirtäminen muihin opintoihin........................... 8 4.3.5 Käyttötapaus: opintokokonaisuuden täyttymisen tarkastaminen........................ 8 4.3.6 Käyttötapaus: opintokokonaisuuden opintoviikkomäärän selvittäminen..................... 8 4.3.7 Käyttötapaus: opintokokonaisuuden arvosana.... 8 4.3.8 Käyttötapaus: opintokokonaisuuden tallennus.... 8 4.3.9 Käyttötapaus: opintokokonaisuuden uudelleen käyttö.............................. 9 5 Käyttöliittymä 9 5.1 Opintojen tilan visualisointi (Lauri)............... 9
5.2 Opintokokonaisuuslomake (Nuutti).............. 10 6 Ohjelmiston tekninen kuvaus 11 6.1 Opintojen tilan visualisointi (Lauri)............... 11 6.1.1 Graafi........................... 11 6.1.2 Kurssilistat........................ 12 6.2 Opintokokonaisuuslomakkeen tietomallinnus (Mikko)... 12 6.2.1 Opintokokonaisuus................... 13 6.2.2 Pakollinen kurssi..................... 13 6.2.3 Suoritus.......................... 13 6.2.4 Suuntautuminen..................... 13 6.2.5 Tutkintovaatimus..................... 14 6.2.6 Opiskelija......................... 14 6.3 Tietokanta............................. 14 7 Testaus (Juho) 14 7.1 Yleistä............................... 14 7.2 Käytettäviä periaatteita...................... 15 7.3 Yksikkötestaus........................... 16 7.4 Integraatiotestaus......................... 16 7.5 Järjestelmätestaus......................... 17 8 Rajoitteet suunnittelulle ja toteutukselle 17 8.1 Opintojen tilan visualisointi (Lauri)............... 17 8.2 Opintokokonaisuuslomake................... 17 9 Korjaukset 18 9.1 Optimointi............................. 18 9.1.1 Ongelma (Juho)...................... 18 9.1.2 Syy ja miten havaittiin (Mikko)............. 18 9.1.3 Miten korjataan (Mikko)................. 19 9.2 Tietokanta (Nuutti ja Juho).................... 20 9.2.1 Ongelma.......................... 20 9.2.2 Miten ongelma korjataan................ 20
1 Johdanto 1 1.1 Työn aihepiiri Kevällä 2002 Opintosu -ohjelmistotuotantoprojekti 1 toteutti opintojensuunnittelujärjestelmän, jonka avulla opiskelijan opintojen suunnittelu ja niiden muuttaminen helpottuu. Syksyllä 2002 OS2 -projekti 2 toteutti projektinaan laajennukset, joiden avulla järjestelmä osaa tarkistaa opiskelijan suunnittelemien kurssien esitietovaatimukset sekä uusien kurssien vastaavuudet vanhoihin kursseihin. OS3 -projekti määrittelee ja toteuttaa korjaukset, joiden avulla nykyisen järjestelmän nopeus ja toiminnallisuus saadaan kuntoon. OS3 -projektin tehtävänä on kehittää graafinen työkälu, jonka avulla opiskelija saa selkeän kuvan opintojensa vaiheesta. Tilanteensa havannointi helpottaa opiskelijan opintojen suunnittelua. Lisäksi OS3 -projekti toteuttaa työkalun, jonka avulla opiskelijan on helppo suunnitella ja tulostaa opintokokonaisuutensa hakulomakkeen. 1 http://www.cs.helsinki.fi/group/opintosu/ 2 http://www.cs.helsinki.fi/group/os2/
2 1.2 Määritelmät, termit ja lyhenteet CVS HTML J2SDK Opintosu OS2 XML Concurrent Versions System. projektin käyttämä versionhallinta. Hypertext Markup Language. WWW-sivujen kuvauskieli. Sun Microsystemin kehittämä työkalu Java -pohjaisten www -palvelujen tekemiseen Kevään 2002 Ohtu -projekti, joka toteutti alkuperäisen järjestelmän. http://www.cs.h Syksyn 2003 Ohtu -projekti, joka jatkokehitti järjestelmää. http://www.cs.helsinki.fi/ Extensible Markup Language. Metakieli rakenteisten dokumenttien esittämiseen. 2 Yleiskuvaus 2.1 Ohjelmiston yleiskuvaus Projektin aikana tuotetaan www-ohjelmiston laajennus Java Servlet -tekniikalla. Apuna tullaan käyttämään J2SDK kehityskirjastoa. Ohjelmisto käyttää tietojenkäsittelytieteen laitoksen Oracle -tietokantaa tietosisällön tallennukseen. Toteutettava järjestelmä jakautuu kolmeen erilliseen kokonaisuuteen. Ensimmäisenä osavaiheena ryhmä määrittelee ja toteuttaa korjaustoimenpiteet nykyisen järjestelmän hitaus- ja toimimattomuusongelmiin. Toisena osatehtävänä toteutetaan graafinen laajennus Cum lauden pakollisten opintojen esittämiseen. Käyttäjä voi nähdä kaaviosta opintojen nykyisen tilan, suunnittelemansa kurssit sekä ne kurssit, joille hän voi nykyisillä suorituksillaan ilmoittautua. Näin ollen opiskelijan ideaalisen opintopolun suunnittelu helpottuu. Laudatur ja valinnaisista kursseista järjestelmä tarjoaa eritellyissä listoissa myöhemmin suunniteltavan tietosisällön. Järjestelmän pyrkii esittämään mahdollisimman selkeän kuvan opintojen tilasta. Kolmantena osatehtävänä toteutetaan järjestelmä, jonka avulla opiskelijan on helppo suunnitella, muokata, tulostaa ja mahdollisesti toimittaa hyväk-
3 syttäväksi opintokokonaisuuslomakkeensa. Järjestelmä mahdollistaa sekä Cum Laude- että Laudatur- merkintöjen lomakkeen suunnittelun. Kuva 1: Ohjelmiston yleiskuvaus. 2.2 Ohjelmiston toimintaympäristö Ohjelmisto toteutetaan toimimaan osana aiempaa järjestelmää Opintosu -järjestelmää, joka on toteutettu toimimaan tietojenkäsittelytieteen laitoksella. 2.3 Ohjelmiston käyttäjät Ohjelmiston käyttäjinä tulee olemaan tietojenkäsittelytieteen laitoksen opiskelijat ja mahdollisesti suuntautumisvaihtoehtojen vastuuhenkilöt. Laitoksen suuresta opiskelijamäärästä johtuen järjestelmän käyttöaste tulee olemaan korkea ja asettaa korkeat vaatimukset ohjelmiston tehokkuudelle.
3 Vaatimukset 4 3.1 Opintojen tilan visualisointi (Lauri) Ohjelmassa näytetään opintojen tila seuraavin osa-aluein. Pakolliset cum laude approbatur -kurssit, valinnaiset cum laude approbatur -kurssit ja valitun suuntautumisvaihtoehdon/erikoistumislinjan mukaiset laudatur -kurssit. Kaikille edellä luetelluille osa-alueille on yhteistä se, että näytetyistä kursseista on havainnollistettu suoritustaso, esitietovaatimusten täyttyminen ja onko kurssi suunniteltu käytäväksi. Kaikkiin kursseihin liittyy toiminnallisuutta ja kurssien muodostamista, edellä luetelluista osaalueista, näytetään kurssien muodostama minimi-, yhteen laskettu ja puuttuva opintoviikkomäärä. 3.1.1 Pakolliset cum laude approbatur -kurssit Pakolliset cum laude approbatur -kurssit kuvataan verkkona visuaalisesti graafilla. Graafista nähdään mitä tutkintovaatimuksiin liittyviä pakollisia cum laude approbatur -kursseja on jo suoritettu, mitä nykyiseen tutkintovaatimukseen liittyviä pakollisia cum laude approbatur -kursseja on vielä suorittamatta ja mille kursseille voidaan tai ei voida seuraavaksi mennä. Erityisesti graafista on tarkoitus nähdä helposti, miten opinnot kulkevat eteenpäin ja mille kursseille seuraavaksi voisi tai pitäisi mennä. Kurssien väliset esitietovaatimukset (suositus, hallittava ja vaatimus) tulee näkyä graafissa. Graafi tulee tulostettuna mahtua A4-paperiarkille ja graafissa olevien komponenttien pitää erottua myös mustavalkotulostuksessa. 3.1.2 Toiminnallisuus graafissa Graafiin lisätään toiminnallisuutta, mikäli se vain on sallituilla ja valituilla ohjelmisto- ja ohjelmointitekniikoilla sekä projektin aikatauluun liittyen mahdollista. Toiminnallisuus olisi kurssien tarkempien tietojen näyttämistä, kurssien lisäämistä ja poistamista suunniteltuihin opintoihin ja tiettyyn kurssiin liittyvien esitietovaatimuksien havainnollistamista.
5 3.1.3 Valinnaiset cum laude approbatur -kurssit Valinnaiset cum laude approbatur -kurssit näytetään listana. Tässä listassa on ne kurssit, jotka on joko suoritettu tai suunniteltu käytäväksi. Suorittamattomia ja suunnittelemattomia kursseja ei listata, koska listasta tulisi turhan pitkä ja epäkäytännöllinen. 3.1.4 Laudatur -kurssit Jotta laudatur -kursseja ylipäätään voidaan näyttää, täytyy jokin Tietojenkäsittelytieteen laitoksen järjestämistä suuntautumisvaihtoehdoista/erikoistumislinjoista olla valittu. Kun valinta on tehty ja laudatur -kursseja halutaan katsoa, näytetään valitun suuntautumisvaihtoehdon/erikoistumislinjan mukaiset laudatur -kurssit seuraavalla jaolla. Pakolliset, aihepiiriin kuuluvat ja valinnaiset laudatur -kurssit, sekä seminaarit ja Pro gradu. Tässä kurssijaossa pakollisten laudatur -kurssien lista näytetään aina kokonaisuudessaan. Siis suoritetut, suunnitellut ja suunnittelemattomat kurssit. Sen sijaan kaikkiin muihin laudatur -osa-alueisiin listataan vain suoritetut ja suunnitellut kurssit. Syy tähän on sama kuin valinnaisille cum laude approbatur -kursseillekin. Listoista tulisi turhan pitkiä ja epäkäytännöllisiä. 3.2 Opintokokonaisuuslomake (Nuutti, Mikko, Juho) Järjestelmä tarjoaa opintokokonaisuuslomakkeen tarkistettuaan, että opiskelijalla on riittävät suoritukset opintokokonaisuusmerkinnän hakemiseen. Lomakkeella voi hakea pääaine cumun ja laudaturin opintokokonaisuuksia. Opiskelijalle tarjotaan valmis ehdotus opintokokonaisuuden sisällöksi, jota opiskelija voi vielä muokata. Valinnaisia kursseja voi siirtää cum laude approbatur -kokonaisuudesta laudatur-kokonaisuuteen ja päinvastoin. Muokkauksen aikana tarkistetaan, että tutkintovaatimusten mukaiset ehdot täyttyvät. Muokkauksen jälkeen opintokokonaisuusehdotelman voi tallentaa kantaan, kirjoittaa tiedostoon tai tulostaa näytölle lomakkeen muodossa. Täs-
6 sä yhteydessä kokonaisuudelle lasketaan myös arvosana ja kokonaisopintoviikkomäärä. Opintokokonaisuusehdotelmaan voi myöhemmin lukea kannasta uudelleen muokkaamista varten. 4 Käyttötapaukset 4.1 Käyttötapauksissa esiintyvät henkilöt (Lauri) Frank Fuksi. Uusi opiskelija Helsingin yliopistossa pääaineenaan tietojenkäsittelytieteet. Olli Opiskelija. Toisen vuoden opiskelija HY:ssä TKT pääaineenaan. Ollin ensimmäisenä vuonna suorittamat kurssit ovat Tietokone työvälineenä, Ohjelmoinnin perusteet, Java-ohjelmointi, Johdatus sovellussuunnitteluun, Ohjelmoinnin harjoitustyö, C-ohjelmointi ja Digitaalisen median tekniikat. Mikko Mallikas. Neljännen vuoden opiskelija HY:ssä TKT pääaineenaan. Saanut suoritettua Luonnontieteiden kandidaatin tutkinnon. On valinnut käyvänsä Infomaatiojärjestelmien suuntautumisvaihtoehdon. Tero Tuutori. Tietojenkäsittelytieteen laitoksella opettajatuutorina alkavassa Opettajatuutoroinnissa. 4.2 Opintojen tilan visualisointi (Lauri) Frank Fuksi saapuu TKTL:lle syyskuun 13. päivän aamuna. Frank on sen verran perillä asioista, että hän haluaa jo tietää mille kursseille hänen pitää tai kannattaa mennä ensimmäisenä syksynään. Saatuaan tietää, että ensimmäisiin käytäviin kursseihin kuuluu Ohjelmoinnin perusteet -kurssi, Frank Fuksi kiinnostuu tietämään mitä ko. kurssi pitää sisällään ja miten hän voi ilmoittautua sille. Samoihin aikoihin, kun Frank arvuuttelee omia opintojaan, Olli Opiskelija on saapunut TKTL:lle ja hän haluaa ensimmäiseksi tietää mitä TKTL:n kursseja hän on ensimmäisen vuoden aikana suorittanut.
7 Olli Opiskelijan saatuaan selville ensimmäisenä vuonna suorittamansa kurssit, häntä kiinnostaa kauanko hänen opintonsa tulee kestämään tällä tahdilla. Lisäksi hän haluaa tietää enemmän suuntautumisvaihtoehdoista. Se mitä Olli Opiskelija tietää jo TKTL:lle tullessaan tänä syksynä on, että hänen tulee ilmoittautua Opettajatuutorointiin. Mikko Mallikas haluaa tietää kurssisuunnitelman 15 opintoviikon lukuvuositahdille. Ja ennen kaikkea Mikko haluaa tietää millä kursseilla hänen tulisi nyt, tänä syksynä, käydä. Syksyn ensimmäinen periodi on loppunut ja Frank Fuksi on käynyt kurssit Tietokone työvälineenä ja Ohjelmoinnin perusteet. Frank on myöskin suunnitellut käyvänsä kurssit Java-ohjelmointi ja Johdatus sovellussuunnitteluun. Toteuttaessaan suunnittelutyötään Frankille herää kysymys, että mitä TKTL:n kursseja hänen pitää ylipäätään suorittaa, saavuttaakseen ensimmäisen päämääränsä Luonnontieteiden kandidaatin tutkinnon. Selatessaan kursseja Frank Fuksi huomaa kurssien joukossa Rinnakkaisohjelmistot -kurssin. Ensiksi Frank ottaa selville tarkempia tietoja kurssiin liittyen ja sitten häntä askarruttaa milloin hän voisi ko. kurssin käydä. Marraskuun alkupuolella Tero Tuutoria, nyt Olli Opiskelijan opettajatuutori, haluaa tietää mm. Ollin opintojen tilan ennen ryhmätapaamista, jossa olisi tarkoitus keskustella ja pohtia opiskelijoitten, tuutoroitavien kuten Olli, jatkosuunnitelmia opintojen kululle. 4.3 Opintokokonaisuuslomake (Juho) 4.3.1 Käyttötapaus: opintosuoritusmerkintä lomakkeen hankkiminen Mikko Mallikas on suorittanut luonnotieteiden kandidaatin tutkintoon vaadittavat opinnot ja haluaa hakea cum laude approbatur opinnoistaan merkinnän. Merkinnän hakemiseen hän tarvitsee lomakkeen, johon opintosuoritukset ja hyväksyjän allekirjoitus merkitään.
8 4.3.2 Käyttötapaus: opintosuorituksen sisällön tarkastelu Mikko Mallikas haluaa tietää mitä suoritettuja kursseja hänen cum laude approbatur opintokokonaisuuteensa mahdollisesti kuuluu. 4.3.3 Käyttötapaus: suorituksen siirtäminen kokonaisuudesta toiseen Mikko haluaa XML-kurssin suprituksensa kirjattavaksi ladautur opintoihin eikä otettavaksi mukaan cum laude merkintään. 4.3.4 Käyttötapaus: suorituksen siirtäminen muihin opintoihin Mikko haluaa tietää voisiko Tietokoneen toiminta kurssin siirtää cum laude ja laudatur merkintöjen ulkopuolelle, muihin opintoihin. 4.3.5 Käyttötapaus: opintokokonaisuuden täyttymisen tarkastaminen Olli Opiskelija haluaa tietää voisiko hän hakea cum laude approbatur merkintää nykyisillä opintosuorituksillaan. 4.3.6 Käyttötapaus: opintokokonaisuuden opintoviikkomäärän selvittäminen Mikko Mallikas on kiinnostunut tietämään cum laude merkintään oikeuttavien suoritustensa opintoviikkojen yhteismäärän. 4.3.7 Käyttötapaus: opintokokonaisuuden arvosana Mikkoa kiinnostaa myös cum laude kokonaisuudesta hänelle määräytyvä kokonaisarvosana. 4.3.8 Käyttötapaus: opintokokonaisuuden tallennus Mikko on valinnut suorittamistaan kursseista ne jotka hän haluaa mukaan cum lauden opintokokonaisuuteen ja haluaa säilyttää tiedon myöhempää
9 käyttöä varten. 4.3.9 Käyttötapaus: opintokokonaisuuden uudelleen käyttö Mikko kuulee, että cum laude merkintöjä antava professori on tänään vihdoin paikalla ja haluaa toissapäivänä tallentamansa opintokokonaisuuden jälleen käyttöönsä. 5 Käyttöliittymä 5.1 Opintojen tilan visualisointi (Lauri) Ohjelmassa näytetään opintojen tila seuraavin osa-aluein. Pakolliset cum laude approbatur -kurssit, valinnaiset cum laude approbatur -kurssit ja valitun suuntautumisvaihtoehdon/erikoistumislinjan mukaiset laudatur -kurssit. Nämä saadaan näkyviin joko siten, että näkyvissä on vain cum laude approbatur tai laudatur -kurssit. Jos näkyvillä on cum laude approbatur -kurssit, niin valittavissa on näkyykö pakollisten kurssien graafin lisäksi valinnaisten kurssien lista. Jos näkyvillä on laudatur -kurssit, niin näkyvillä on cum laude approbatur -kursseista opintoviikkomäärät. Opintojen tilaan mukaan tuleville kursseille on yhteisiä toiminnallisuuksia, joille siis tehdään myös liittymä. Kaikista kursseista saadaan tarkempia tietoja esiin. Suunniteltuihin kursseihin liittyy toiminnallisuus, jolla kurssin voi poistaa suunnitelmistaan. Suunnittelemattomiin kursseihin liittyy toiminnallisuus, jolla kurssin voi liittää suunnitelmiinsa. Pakolliset cum laude approbatur -kurssit kuvataan verkkona visuaalisesti graafilla. Jos graafiin saadaan toiminnallisuutta, on toiminnallisuus aiemmin mainittujen lisäksi tiettyyn kurssiin liittyvien esitietovaatimuksien havainnollistamista.
10 5.2 Opintokokonaisuuslomake (Nuutti) Opintokokonaisuuslomakkeen käyttöliittymä toteutetaan html-sivulla, jossa on lomakkeita, painikkeita, valintalaatikoita ja javascriptiä. Html-sivun tulostaa servletti. Toiminnallisuus lomakkeella on toteutettu javascriptillä ja servletille lähetettävällä lomakekutsulla. Opintokokonaisuuslomakkeelle pääsee opintojen tila-sivulta, kun opintosuoritukset riittävät jonkin opintokokonaisuuden hakemiseen. Tällöin opintojen tila-sivulle ilmestyy linkki (painike, html-linkki) opintokokonaisuuslomakkeelle. Opintokokonaisuuslomakkeen tyyppi (cumu/laudatur) valitaan joko opintojen tila-sivulla tai opintokokonaisuuslomakkeella valintalistan avulla (dropdown list). Opintokokonaisuuslomakkeella laudatur-kokonaisuuden kohdalla voi valita minkä linjan mukaista laudatur-kokonaisuutta hakee. Suoritettujen kurssien mahdollistamat linjavaihtoehdot ovat valittavissa valintalistan avulla (dropdown list). Lisäksi tutkintovaatimusten vuosi on valittavissa samalla tavalla. Opintokokonaisuuslomakkeella toiminnallisuuksia ovat kurssien siirtäminen cumun-opintokokonaisuuksista laudatur-kokonaisuuteen ja päinvastoin. Kursseja voi myös poistaa kokonaan lomakkeelta. Yksinkertainen ratkaisu toiminnallisuuden toteuttamiseen on kaikkien suoritettujen kurssien esittäminen listana ja jokaisen kurssin perässä on valintalaatikko (radiobutton), josta voisi valita kumpaan kokonaisuuteen kurssin haluaa tai haluaako sitä ollenkaan mukaan lomakkeelle. Aluksi kurssit on esivalittu tutkintovaatimukset täyttäväksi ehdotelmaksi. Valinta kokonaisuuksien välillä on mahdollista vain tiettyjen kurssien välillä - pääasiassa valinnaisten kurssien, sillä cumun kaikki pakolliset kurssit kuuluvat luonnollisesti cumuun ja samoin laudaturin kohdalla. Muutoksien jälkeen lomake lähetetään servletille, joka tarkistaa, että muutoksien jälkeen tutkintovaatimukset säilyvät. Lomakkeella on myös painikkeet lomakkeen tulostamiseksi määrämuotoisena allekirjoitusta varten tai tallentaa kantaan myöhempää käyttöä varten. Tulostamisen yhteydessä kokonaisuuksille lasketaan kokonaisopintoviikkomäärä ja arvosana. Kuvassa 2 on ehdotelma käyttöliittymän suunnitelmaksi.
11 Kuva 2: Opintokokonaisuuslomakkeen käyttöliittymä. 6 Ohjelmiston tekninen kuvaus 6.1 Opintojen tilan visualisointi (Lauri) Teknisesti visualisointi toteutetaan Java-kielellä, tarkemmin sanottuna servleteillä. Pakollisten cum laude approbatur -kurssien ja niiden esitietovaatimusten pohjalta luotavasta kurssiverkosta muodostetaan kuva, graafi. Valinnaiset cum laude approbatur ja laudatur -kurssit näytetään listoina. 6.1.1 Graafi Graafi on aluksi yksi iso kuva, joka pilkotaan sitten pienemmiksi paloiksi ja näytetään servletien välityksellä HTML-kielellä WWW-sivulla. Pieniksi paloiksi kuva pilkotaan sen vuoksi, että graafiin saadaan toiminnallisuutta. Pienet palat ollevat suuntaa antavasti noin 10X10 pikseliä suuria, ja pienet palat asetetaan sitten HTML-sivulle vieri viereen muodostaen näin
12 jälleen yhtenäisen ison kuvan verkosta. Jokaiseen yksittäiseen pieneen kuvaan saadaan lisättyä haluttuja toimintoja. 6.1.2 Kurssilistat Valinnaisten cum laude approbatur ja laudatur -kurssien osalle muodostettavat listat eivät teknisesti ole kovin vaativia. Listataan vain kuhunkin osa-alueeseen määritetyt kurssit ja näytetään. Lisäten tietenkin toiminnot kullekin kurssille. 6.2 Opintokokonaisuuslomakkeen tietomallinnus (Mikko) * -valitsee 0..1 TUTKINTOVAATIMUS -tutkinto_id OPISKELIJA -tunnus -opiskelijanro -etunimi -sukunimi -osoite -puhelin -email * 0..1 -valitsee 1 * SUUNTAUTUMINEN -suuntautumis_id 1 1 * -suorittaa SUORITUS * -kurssikoodi -arvosana -hyväksymis_pvm -opintoviikot -korvattu -oodi * -sitoo 1 OPINTOKOKONAISUUS -kokonaisuus_id -ovmin -ovmax 1..* * PAKOLLINEN KURSSI -kurssikoodi -pakollisuus Kuva 3: Osajärjestelmän tietosisältö UML-kaaviona
13 6.2.1 Opintokokonaisuus Järjestelmän tuntemia opintokokonaisuuksia ovat tietojenkäsittelytieteen pääaineoppimäärät cum laude approbatur ja laudatur. Näiden lisäksi omaksi opintokokonaisuudekseen luetaan FM-tutkinnon muut opinnot, joita ei lueta mihinkään pääaine- eikä sivuaineopintokokonaisuuteen. Opintokokonaisuudella on joukko pakollisia kursseja sekä minimi- ja maksimiopintoviikkomäärä, joiden rajoissa opiskelija suorittaa lisäksi suuntautumisvaihtoehtoon soveltuvia valinnaisia kursseja. Opintokokonaisuus on eheä, kun siihen on sidottu vaaditut suoritukset. Opintokokonaisuus kuuluu yhteen suuntautumisvaihtoehtoon, jonka mukaan siihen vaaditut kurssit määräytyvät. 6.2.2 Pakollinen kurssi Täysin pakollinen kurssi vaaditaan johonkin opintokokonaisuuteen. Suositeltuja kursseja ovat ne valinnaiset kurssit, joista opintokokonaisuuteen sidottavat kurssit suositellaan valittavaksi. Pakollisuuden asteen määrittää attribuutti pakollisuus. 6.2.3 Suoritus Opiskelija saa läpäisemästään kurssista suorituksen, joka voidaan sitoa yhteen opintokokonaisuuteen. Suoritus sisältää arvosanan, hyväksymispäivän, opintoviikkomäärän ja tiedon, onko suoritus saatu korvaamalla kurssi esimerkiksi toisen oppilaitoksen kurssilla. Attribuutti oodi ilmaisee, onko suoritus luettu Oodi-opintosuoritusotteesta vai onko opiskelija lisännyt suorituksen itse. 6.2.4 Suuntautuminen Suuntautuminen on opiskelijan valitsema suuntautumisvaihtoehto, joka vaikuttaa siihen kuuluvan opintokokonaisuuden sisältöön. Tietojenkäsittelyn suuntautumisvaihtoehdossa suuntautumisella tarkoitetaan valittua erikoistumislinjaa.
14 6.2.5 Tutkintovaatimus Tutkintovaatimus on säännöstö jonkin suoritettavan tutkinnon vaatimuksista. Saman nimiselle tutkinnolle saattaa olla järjestelmässä erilaisia vaatimuksia. Filosofian maisterin tutkinnosta on esimerkiksi eri vuosina määritellyt tutkintovaatimukset FM1999 ja FM2002. Tutkintovaatimukseen kuuluu useita suuntautumisia, jotka määrittävät tutkintovaatimuksen mukaisten opintokokonaisuuksien sisällöt. 6.2.6 Opiskelija Opiskelija on opintokokonaisuuslomakkeen käyttäjä, jonka tietoja osajärjestelmä käsittelee. Opiskelija on muualla järjestelmässä valinnut itselleen tutkintovaatimuksen ja suuntautumisen. Suorituksia hän kerää järjestelmään merkitsemällä kurssit itse suoritetuksi tai lukemalla ne ohjelmallisesti Oodi-otteesta. 6.3 Tietokanta Ohjelmisto käyttää opintosu- ja os2-ryhmien tapaan Oracle-tietokantaa, johon ollaan yhteydessä JDBC-ajurin välityksellä. Tietokantaan joudutaan tekemään vain minimaalisia muutoksia ainoastaan opintokokonaisuuslomakkeen tallentamista varten. Kurssitarjottimen kohdalla käytetään ILMOjärjestelmän tietokantaa. 7 Testaus (Juho) 7.1 Yleistä Testauksen avulla pyritään löytämään ohjelmistoon todennäköisesti aikaisemmissa ohjelmistotuotantoprosessin vaiheissa jääneitä virheitä. Testaus voidaan toteuttaa ajamalla ohjelmaa tai sen osia, ohjelman toiminta ympäristössä tai erillisessä testiympäristössä. Virheitä voidaan etsiä testausvaiheessa myös simuloimalla ohjelman toimintaa muuten, esim. kynällä
15 paperille. Testaus ei prosessin vaiheena ajoitu pelkästään loppuun, varsinaiseen testausvaiheeseen, vaan sitä voidaan suorittaa toteutusvaiheen kanssa yhtäaikaisesti (esim. yksikkötestaus). Testauksen lisäksi ohjelmiston laatua pyritään pitämään korkeana toteuttamalla kaikki prosessin vaiheet mahdollisimman suurella huolella ja noudattamalla mm. määrättyjä standardeja koodin ulkomuodon ja nimeämisten suhteen. Ohjelmiston laatua voidaan ja pitäisi valvoa myös erityisissä katselmuksissa, joissa katselmoitavan prosessin vaiheen oikeellisuus hyväksytään yhdessä asiakkaan kanssa. Jotta testauksella saataisiin mahdollisimman hyviä tuloksia, tulisi testauksen vaiheet suunnitella perustuen mahdollisimman tarkasti vastaamaan määrittelyä ja suunnittelua. Ohjelmistossa olevat virheet voidaan jakaa määrittely-, suunnittelu- ja toteutusvaiheiden mukaisesti. Näistä kahden ensin mainitun virheet ovat kalliita korjata jälkikäteen ja näiden vaiheiden virheiden välttämisessä katselmoinnilla, tarkastuksilla ja huolellisuudella on erityisen suuri merkitys. 7.2 Käytettäviä periaatteita Testausta suoritetaan erillisessä vaiheessaan, mutta myös toteutusvaiheen kestäessä. Kaikki testitapaukset ja -materiaalit suunnitellaan etukäteen ja testauken tulokset dokumentoidaan järjestelmällisesti. Os3 pyrkii noudattamaan seuraavassa käsiteltyjä periaatteita testauksen osalta. Kaikki asiakkaan kanssa sovitut vaatimukset ohjelmistolle testataan. Testitapausten suunnittelussa otetaan tällöin huomioon määrittelydokumentaatiossa vahvistetut vaatimukset. Testitapaukset suunnitellaan etukäteen, mahdollisimman aikaisessa vaiheessa. Testauksen suunnittelulla pyritään varmistamaan kaiken toteutettavan tulevan mukaan testaukseen. Testauksen suunnitteleminen mahdollisimman varhain tarkoittaa parhaimmillaan sitä, että järjestelmätestaus suunnitellaan heti kun määrittely on hyväksytty jne. Os3 ei pyri toteuttamaan järjestelmätestauksen suunnittelua aivan näin aikaisin, mutta kaikki testaus suunnitellaan suunnitteluvaiheen kestäessä. Testaus aloitetaan pienistä yksiköistä jo toteutusvaiheessa ja laajennetaan
16 siitä kattamaan lopuksi koko järjestelmän uusien osien testaus. Virheet pyritään tällä tavoin löytämään mahdollisimman aikaisessa vaiheessa, jolloin kustannus niiden korjaamisesta on mahdollisimman pieni. Vain olennainen on tärkeää. Ohjelmiston toiminnan kannalta ei ole relevanttia yrittää testata kaikki mahdolliset tapaukset. Kaiken testaaminen ei sitä paitsi ole käytännössä eikä edes teoriassa mahdollista. Testauksessa pyritään nimenomaan kattamaan olennaiset käyttötapaukset, joiden löytämiseen tähdätään hyvästä määrittelystä lähtien. Testiaineistojen valinnassa pyritään kuitenkin mahdollisimman suureen kattavuuteen ja testit suunnitellaan siten, että myös virhetilanteet ja ohjelmiston käytön kannalta väärän laiset tapaukset tulevat huomioiduksi. Os3 ei käytä ulkopuolista testihenkilöstöä, vaan kaikki testaus suoritetaan ryhmän omin voimin. 7.3 Yksikkötestaus Os3 suorittaa yksikkötestausta toteutusvaiheen yhteydessä. Yksikkötestauksessa testataan kaikkein pienimpiä osia ohjelmistosta, yksittäisiä moduleita tai komponentteja. Yksiköistä testataan mm. rajapinnat, paikalliset tietorakenteet, raja arvot, itsenäiset polut sekä virhetilanne polut. Yksikön testaus suunnitellaan samalla kun itse yksikkö suunnitellaan. Testausta varten joudutaan toteuttamaan ainakin jonkin verran erillisiä apuyksiköitä, tynkiä (stub) ja ajureita (driver), sillä yksittäinen ohjelman osa ei toimi ilman viereisiä osia. 7.4 Integraatiotestaus Kun yksiköt on ensin yksikkötestattu erillään, täytyy niiden toimiminen yhdessä varmistaa. Tämä tapahtuu integraatiotestauksen avulla. Ryhmä toteuttaa integraatiotestauksen valitun kokoamissuunnan mukaan, joko tasoittain ylhäältä alas tai alhaalta ylös, tai poluittain. Integraatiotestaus suunnitellaan arkkitehtuurisuunnittelun yhteydessä.
17 7.5 Järjestelmätestaus Valmiille tuotteelle tehdään järjestelmätestaus. Os3 testaa itse toteuttamiensa uusien osien, sekä tekemiensä vanhan koodin korjausten testauksen. Järjestelmätestaus suunnitellaan vaatimusmäärittelyn mukaisesti. Erityisesti testataan järjestelmälle asetettujen vaatimusten vastaavuus määrittelyyn. Järjestelmätestauksessa otetaan huomioon asetetut alusta vaatimukset. Ohjelmiston toiminta varmistetaan kaikilla vaadituilla selaimilla, erityisesti tietojenkäsittelytieteenlaitoksella käytettävissä ympäristöissä. Jo aiemmissa testauksen vaiheissa pyritään käyttämään useampia alustoja, jotta mahdolliset selainkohtaiset erot toteutustekniikoiden käsittelyn suhteen tulevat esille mahdollisimman aikaisessa vaiheessa. 8 Rajoitteet suunnittelulle ja toteutukselle 8.1 Opintojen tilan visualisointi (Lauri) Opintojen tilaa kuvaavan graafin suunnittelua ja toteutusta rajoittaa mahdollisesti sallittujen ja valittujen ohjelmisto- ja ohjelmointitekniikoiden kyky toteuttaa määriteltyjä ominaisuuksia. Tällaisia on toiminnallisuuden aikaansaamiseen liittyvät ongelmat ja pakollisten cum laude approbatur - kurssien esitietovaatimuksien muodostaman verkon automaattinen muodostaminen järkevältä näyttäväksi. 8.2 Opintokokonaisuuslomake tulossa...
9 Korjaukset 18 9.1 Optimointi 9.1.1 Ongelma (Juho) Opintojensuunnittelujärjestelmän suunnittelusivu, joka on myös avaussivuna koko järjestelmässä, latautuu erittäin hitaasti. Vasteaika on käytettävästä alustasta riippumatta 25-30 sekuntia. Suunnitelusivun hitaus toistuu, joka kerta kun käyttäjä lisää jonkin kurssin omaan suunnitelmaansa ja sivu lada taan uudelleen. Näin ollen esim 5 kurssin suunnitelman tekemisestä kaksi ja puoli minuuttia on täysin turhaa odotusaikaa, jonka kestäessä käyttäjä ei voi tehdä mitään. 9.1.2 Syy ja miten havaittiin (Mikko) Suorituksen hitauden suurimmaksi aiheuttajaksi havaittiin tietokantayhteyden toistuva avaaminen. OS2-osajärjestelmä käyttää tietokantaoperaatioihinsa os2.ljk-pakkauksen luokkia Kyselyt, Esitiedot, Tutkintovaatimukset ja Vastaavuudet. Näiden luokkien tietokantaa käyttävät metodit yhden suorituksensa aikana avaavat yhteyden, suorittavat pyydetyn tietokantaoperaation ja sulkevat yhteyden. Ongelmaksi muodostuu se, että joidenkin servlet-kutsujen aikana tietokantayhteyden avaavia ja sulkevia metodeja kutsutaan turhaan toistuvasti. Koska yhteyden muodostaminen kertaalleen kestää n. 120-300 ms, kokonaisaika voi kasvaa huomattavan suureksi. Syyn havaitsemiseksi tarkasteltiin servlettiä OpiskelijaSuunnitelma, jonka suoritus oli todettu erityisen hitaaksi. Testaus tapahtui tulostamalla hetkellinen suoritusaika eri kohdista ohjelmakoodia käyttäen java.util.date.gettime()- metodia. Kun metodin eniten aikaa vievät kohdat paikallistettiin metodikutsuiksi, siirryttiin testaamaan edelleen näitä metodeja. OpiskelijaSuunnitelmaservletin dokysely()-metodista alkavaan ja opintosu.tietokanta.tkapu-luokan avaaconnection()-metodiin päättyvään verkkoon on merkitty metodikutsut, jotka olivat selvästi aikaa vievimpiä osia metodeissaan (Kuva 4).
19 Yhteydet ovat metodikutsuja, jotka vievät suurimman osan kutsuvan metodin suoritusajasta. Metodien välisiin yhteyksiin on merkitty, kuinka monta kutsua kutsuva metodi suunnilleen tekee yhden suorituksensa aikana. (Servlet) OpiskelijaSuunnitelma.doKysely() 5-20 (Servlet) OpiskelijaSuunnitelma.varitaEsitiedot() 1 2-10 os2.etv Esitietovaatimus.tarkasta() 1 1 os2.vastaavuus Vast_tark.onkoSuoritettu() 0-1 os2.ljk Kyselyt.haeVoimassa() os2.ljk Kyselyt.haeVastaavuudet() os2.ljk Kyselyt.haeEsitiedot() 1 1 opintosu.tietokanta YhteysSailio.avaaTestiYhteys() 1 1 opintosu.tietokanta TKApu.avaaConnection() Kuva 4: Kaavio OpiskelijaSuunnitelma-servletin metodikutsuista Esimerkkitapauksessa kevään 2003 kurssitiedoilla OpiskelijaSuunnitelmaservlet aiheutti kuvan metodikutsuja käyttäen 127 tietokantayhteyden avausta. Jos yhden avauksen kestoksi arvioidaan 125 ms, avausten yhteisaika servletin osalta on noin 16 sekuntia. Servletin arvioidusta kokonaissuoritusajasta 25 s tämä olisi noin 64 prosenttia. 9.1.3 Miten korjataan (Mikko) Turhia tietokantayhteyksiä voidaan vähentää huomattavasti, jos siirretään yhteyden avaaminen Kyselyt-luokasta servlet-tasolle. Tällöin servletissä avattu yhteys välitetään tietokantaoperaatioita tekeville metodeille parametrinä, eikä sitä avata kutsuttavissa metodeissa enää uudestaan. Tällä tavoin pystyttäneen rajoittamaan mm. ongelmalliseksi todetun OpiskelijaSuunnitelmaservletin tietokantayhteyden avaamiset yhteen suorituskertaa kohti.
20 Korjausta varten kartoitetaan ohjelmakoodista os2.ljk-pakkauksesta metodit, joita suoritetaan toistuvasti. Nämä korvataan vastaavilla metodeilla, jotka saavat avoimen tietokantayhteyden parametrinä. Kutsuvat servletit muutetaan avaamaan tietokantayhteys, välittämään sen parametrin kautta ja lopuksi sulkemaan yhteys. Myös kaikki metodit, joiden kautta yhteys välitetään, tullaan päivittämään tähän tarkoitukseen. 9.2 Tietokanta (Nuutti ja Juho) 9.2.1 Ongelma Ohjelman tietokanta ei ole enää os2-ryhmän tekemien muutoksien jälkeen koodin kanssa ajantasalla ja tästä johtuen useat ohjelman osat eivät yksinkertaisesti toimi (henkilötietojen tallennus, opintojen tilanne). Kannan tauluissa on attribuutteje, joita ei oteta huomioon kantaan tehtävissä kyselyissä. On myös kyselyitä, joissa käytetään attribuutteja, joite eo ole määritelty kantaan lainkaan. Ongelma havaittiin os2-ryhmän dokumentointia lukemalla ja ohjelmistoa testaamalla. 9.2.2 Miten ongelma korjataan Koodissa on select, insert, update ja delete lauseita yhteensä lähes 200 riviä 15 eri tiedostossa. Nämä pitää kaikki käydä läpi ja tarkistaa vastaavatko ne nykyistä kantaa ja korjata tietokantaa vastaaviksi, jos eivät. Esimerkiksi select-lauseessa on voinut vaihtua sarakkeen nimi tai pääavain on voinut muuttua. Myös tietokantahakujen tulosten käsittelyyn voi tulla muutoksia.