OHJELMISTOTUOTANTOPROJEKTI

Koko: px
Aloita esitys sivulta:

Download "OHJELMISTOTUOTANTOPROJEKTI"

Transkriptio

1 HELSINGIN YLIOPISTO TIETOJENKÄSITTELYTIETEEN LAITOS OHJELMISTOTUOTANTOPROJEKTI ASSARI Suunnitteludokumentti versio 1.1 Teemu Andersson Mikko Lukkari Vesa-Matti Mäkinen Olli-Pekka Ruuskanen Sami Termonen

2 Versiohistoria: versio päivämäärä kommentit/muutokset Dokumentin sisällön hahmotteleminen Sisällön tarkentaminen arkkitehtuurikuvauksen osalta Dokumentin sisällön uudelleenryhmitteleminen ja tarkentaminen Projektipäällikön korjauksia ja täydennyksiä Projektipalaverissa todettujen puutteiden korjaukset Cache-rakenteen toiminnan korjauksia Jäädytetty versio Dokumentti päivitetty vastaamaan toteutusvaiheen jälkeistä ohjelmiston tilaa. II

3 Sisältö: 1. JOHDANTO Dokumentin tarkoitus Dokumentin rakenne Sanasto JÄRJESTELMÄN YLEISKUVAUS Sovellusalueen kuvaus Toimintaympäristö Toteutusrajoitukset ARKKITEHTUURIKUVAUS Järjestelmän kokonaisarkkitehtuuri Komponenttien yhteistoiminta Tehtävien määritteleminen Tehtävien esittäminen Vastausten analysoiminen Palautteen esittäminen KEHYSKOODI Kehyskoodiservlettien abstrakti määrittely Servlettien tehtävät Servlettien tarjomat palvelut Servlettien säännöt ja rajoitukset Servlettien rajapinnat Kehyskoodiservlettien luokkakaavio Kehyskoodiservlettien parametrit CACHE-TIETORAKENNE Tiedon kulku cache-tietorakenteelta ohjelmistokomponenteille Tiedon kulku analysointikomponentilta cachelle...14 III

4 6. TIETOKANTA Nykyisen tietokantarakenteen kuvaus Tietokantaan tehtävät muutokset Tietojen sijoittuminen tietokantaan Tehtävätyyppien tiedot Tehtävätyyppikohtaiset tiedot Tehtävänmäärittelytiedot Käyttöliittymäelementtien tiedot TEHTÄVÄNMÄÄRITTELYKOMPONENTIT Tehtävänmäärittelykäyttöliittymät Controller-servlet Tietorakenteet Tehtävätiedot Istuntotiedot Kielitiedot Tukipalvelut Tietojen haku ja tallennus Muut tukipalveluluokat Tehtävänmäärittelynäkymien tiedonvälitys ESITYSKOMPONENTIT Esityskomponenttien abstrakti määrittely Komponenttien tehtävät Komponenttien tarjoamat palvelut Komponenttien säännöt ja rajoitukset Komponenttien rajapinnat Esityskomponenttien tietosisältö ja palvelut Esityskomponenttien parametrit Esityskäyttöliittymien ulkoasun muokkaaminen...35 IV

5 9. ANALYSOINTIKOMPONENTIT Analysointikomponenttien abstrakti määrittely Komponenttien tehtävät Komponenttien tarjoamat palvelut Komponenttien säännöt ja rajoitukset Komponenttien rajapinnat Analysointikomponenttien tietosisältö ja palvelut Analysointikomponenttien parametrit PAKKAUSRAKENNE LÄHTEET LIITTEET Liite 1: Tehtävänmäärittelyn käyttöliittymien tietosisältö...42 Liite 2: Käyttöliittymäkuvat...48 Liite 3: Käyttöliittymän ulkoasun muokkaaminen...61 Liite 4: Tehtävänmäärittelyn käyttöliittymäelementtien nimet ja kielikohtaiset arvot...63 Liite 5: Tehtävänmäärittelyn käyttöliittymäelementtien tallentaminen tietokantaan...68 V

6 1. JOHDANTO 1.1 Dokumentin tarkoitus Tämä dokumentti on tarkoitettu Helsingin yliopiston Tietojenkäsittelytieteen laitoksella kevätlukukaudella 2004 toteutettavan ohjelmistotuotantoprojektin Assari-ryhmälle sisäiseksi ohjeeksi siitä, kuinka sen tuottama ohjelmisto tulee toteuttaa. Dokumentissa kuvataan projektin aikana tuotettava ohjelmisto sellaisella tarkkuudella, että sen aikaansaaminen on mahdollista yksinomaan tämän dokumentin pohjalta. Dokumentti on kirjoitettu määrittelydokumentin version 1.0 pohjalta. 1.2 Dokumentin rakenne Dokumentti muodostaa itsenäisen kokonaisuuden, joka antaa lukijalleen riittävän kuvan jo olemassa olevasta järjestelmästä ja siihen projektin aikana liitettävistä ohjelmistokomponenteista niiden toteuttamista ajatellen. Valittu esitystapa johtaa väistämättä osittaiseen päällekkäisyyteen määrittelydokumentin kanssa, mutta jotta suunnitteludokumentin ymmärtäminen olisi mahdollista myös projektiryhmään kuulumattomille lukijoille ilman, että heidän tarvitsee perehtyä muihin projektidokumentteihin, on valittu esitystapa nähty perustelluksi luku toimii johdantona muuhun dokumenttiin ja siinä perustellaan dokumentin rakenteeseen ja laajuuteen liittyvät ratkaisut luku antaa perustiedot järjestelmästä, jonka osaksi toteutettavat ohjelmistokomponentit liitetään, sekä toteutukselle asetetuista rajoituksista luku antaa yleiskuvan toteutettavien ohjelmistokomponenttien arkkitehtuurista sekä niiden yhteistoiminnasta halutun toiminnallisuuden toteuttamiseksi luku kuvaa ohjelmistokomponenttien toimintaa kontrolloivan kehyskoodin rakenteen ja toiminnan luku kuvaa tietokantaoperaatioista vastaavan cache-tietorakenteen toiminnan luku kuvaa järjestelmän tietokannan rakenteen ja toiminnan luku kuvaa tehtävänmäärittelykomponenttien rakenteen ja toiminnan luku kuvaa tehtävänesityskomponenttien rakenteen ja toiminnan luku kuvaa analysointikomponenttien rakenteen ja toiminnan luku kuvaa projektissa toteutettavien luokkien jakautumisen pakkauksiin luku listaa dokumentissa viitatut lähteet lukuun on koottu dokumentin liitteet. 1

7 1.3 Sanasto Cache Keskusmuistitietorakenne, johon tallennetaan osakokonaisuus järjestelmän tietokantaan tallennetuista tiedoista. Tehostaa järjestelmän suorituskykyä tarjoamalla pääsyn tietoihin ilman toistuvia tietokantakyselyitä. Java API Java SDK JSP Servletti SQL Java Application Programming Interface. Sun Microsystems Inc:n laatima määrittelykokoelma Java-kielen tarjoaman valmiskaluston rajapinnoista. Java Software Development Kit. Sun Microsystems Inc:n laatima kehitysympäristö Java-sovellusten kehittämiseksi. Java Server Pages. Dynaamisten HTML ja XML-sivujen generoimiseen käytetty Java-tekniikka, joka mahdollistaa Java-koodin upottamisen staattisiin HTML -sivuihin. Www-palvelimella suoritettava Java-luokka, joka vastaanottaa pyyntöjä ja generoi niiden kautta saamiensa parametrien perusteella dynaamisia HTML-sivuja. Structured Query Language. Alunperin IBM:n kehittämä ja ANSI:n (American National Standards Institute) ja ISO:n (International Standardization Organization) standardoima relaatiotietokantoihin kohdistuvien operaatioiden tekemiseen tarkoitettu kysekykieli. 2

8 2. JÄRJESTELMÄN YLEISKUVAUS 2.1 Sovellusalueen kuvaus Assari on Helsingin yliopiston Tietojenkäsittelytieteen laitoksen ohjelmistotuotantoprojekti. Projektissa tuotetaan www-pohjaiseen opetusympäristöön komponentteja erityyppisten harjoitus- ja koetehtävien määrittelyyn ja käyttöön. Projektin pohjana toimii asiakkaan kehittämä eassari-opetusjärjestelmä [LAI03], joka tarjoaa nykyisellään mahdollisuuden tietokantakyselyiden harjoitteluun www-ympäristössä. Tässä projektissa järjestelmää laajennetaan uusilla tehtävätyypeillä. Kaikissa tehtävätyypeissä opiskelijalle esitetään tehtävänanto, johon opiskelijan on laadittava ratkaisu tehtävätyyppikohtaisin välinein. Järjestelmä analysoi ratkaisun ja antaa opiskelijalle palautetta, joka auttaa häntä huomaamaan omissa tiedoissaan mahdollisesti olevia puutteita. eassari-järjestelmä mahdollistaa tehtävien paketoimisen eri opintokokonaisuuksien osaksi. Nämä kokonaisuudet voidaan toteuttaa joko opetus- tai tenttitilassa. Opetustilassa vastaus tarkastetaan ja palaute annetaan opiskelijalle välittömästi vastaamisen jälkeen. Tenttitilassa palaute talletetaan myöhemmin esitettäväksi. Käyttötilan valinta tapahtuu nyt toteutettavien ohjelmistokomponenttien ulkopuolella, mutta komponenttien on tuettava molempien tilojen käyttöä. 2.2 Toimintaympäristö Ohjelmisto toteutetaan Tietojenkäsittelytieteen laitoksen Java-ympäristössä käyttäen Java SDK versiota Www-osioiden toteutuksessa hyödynnetään Java Servlet -luokkia noudattaen v.2.3 API-määrittelyä. Sovelluspalvelimena käytetään Apache Tomcat 4 ja tietokantapalvelimena Oracle 9 -tuotteita. Palvelinvalmistajien tuotespesifisiä välineitä ei käytetä, joten sovellus voidaan suoraviivaisesti asentaa mille tahansa Java- ja SQL-alustalle. 2.3 Toteutusrajoitukset Toteutuksessa on otettava huomioon olemassa olevan eassari-järjestelmän rakenne ja toiminta. Vaikka asiakas onkin antanut luvan järjestelmän tietokannan muokkaamiseen tarvittavilta osin, pyritään toteutuksessa säilyttämään tietokannan nykyinen rakenne mahdollisimman pitkälle. Tarvittavat laajennukset tehdään nykyisen tietokantarakenteen kanssa yhteensopivin menetelmin. 3

9 3. ARKKITEHTUURIKUVAUS 3.1 Järjestelmän kokonaisarkkitehtuuri Kuva 1 esittää projektin aikana toteutettavien ohjelmistokomponenttien sijoittumisen eassariopetusjärjestelmän kokonaisarkkitehtuuriin. Kuva 1: Järjestelmän kokonaisarkkitehtuuri Tehtävänmäärittelykomponentit tallentavat ja hakevat tehtävätiedot suoraan tietokannasta, mutta käyttävät cachea kielikohtaisten käyttöliittymäelementtien hakemiseen tietokannasta. Esitys- ja analysointikomponentit hoitavat sen sijaan kaikki tietokantayhteytensä cachen kautta. 4

10 3.2 Komponenttien yhteistoiminta Toteutettavien ohjelmistokomponenttien yhteistoiminta ja interaktio kehyskoodin kanssa on esitetty toimintokohtaisina sekvenssikaavioina kuvissa 2-5. Tarkemmat komponenttikohtaiset kuvaukset esitetään luvuissa Tehtävien määritteleminen Kuva 2: Tehtävienmäärittelyn sekvenssikaavio 5

11 3.2.2 Tehtävien esittäminen Kuva 3: Tehtävien esittämisen sekvenssikaavio 6

12 3.2.3 Vastausten analysoiminen Kuva 4: Vastausten analysoinnin sekvenssikaavio 7

13 3.2.4 Palautteen esittäminen Kuva 5: Palautteen esittämisen sekvenssikaavio 8

14 4. KEHYSKOODI eassari-järjestelmän kehyskoodi muodostuu kolmesta eri servlet-luokasta, jotka vastaavat HTTPkutsun POST-parametrien vastaanottamisesta sekä tehtävien määrittely-, esitys- ja analysointikäyttöliittymien esittämisestä käyttäjille. 4.1 Kehyskoodiservlettien abstrakti määrittely Servlettien tehtävät - tehtäväparametrien vastaanottaminen www-sivuilta. - tehtävätyyppikohtaisten määrittely-, esitys- ja analysointikomponenttien aktivoiminen. - tehtäväparametrien välittäminen määrittely-, esitys- ja analysointikomponenteille. - XHTML-koodin vastaanottaminen komponenteilta ja esittäminen käyttäjälle. - virheilmoitusten generoiminen ja esittäminen tarvittaessa Servlettien tarjomat palvelut - www-sivujen generoiminen käyttäjien selaimille. - tehtäväparametrien välittäminen määrittely-, esitys- ja analysointikomponenteille Servlettien säännöt ja rajoitukset - osattava päätellä tehtävätyyppi Servlettien rajapinnat - www-selainrajapinta - istuntotietojen käsittely. - POST-parametrien vastaanottaminen. - tehtävänmäärittelykäyttöliittymän/tehtävänannon/palautteen/virheilmoituksen esittäminen. - cache-rajapinta (vain tehtävänmäärittelyservletti) - kielikohtaisten tehtävänmäärittelyn käyttöliittymätietojen noutaminen. - kielikohtaisten tehtävätietojen noutaminen. - kielikohtaisten tehtävänmäärittelytietojen välittäminen tallennettaviksi tietokantaan. - Feedback-oliorajapinta - palautteen vastaanottaminen (vain vastauksenanalysointiservletti). - virheilmoituksen vastaanottaminen. 9

15 - komponenttirajapinta - tehtäväparametrien välittäminen esityskomponentille (vain tehtävänesitysservletti). - tehtävänannon vastaanottaminen esityskomponentilta (vain tehtävänesitysservletti). - tehtävään annetun vastauksen välittäminen analysointikomponentille (vain vastauksenanalysointiservletti) 4.2 Kehyskoodiservlettien luokkakaavio Kuvassa 6 on esitetty järjestelmän kehyskoodiservletit luokkakaaviona. Kuva 6: Kehyskoodiservlettien luokkakaavio TrainerServlet on kehyskoodiservlettien yliluokka, joka huolehtii kaikille aliluokilleen yhteisen cache-tietorakenteen (TaskBase) luomisesta. 10

16 4.3 Kehyskoodiservlettien parametrit Servlettien aktivoiminen: Opetusmateriaaliin on määritelty linkkejä, joiden aktivoiminen kutsuu tehtävänesitysservlettiä. Tehtävään vastaaminen puolestaan aktivoi analysointiservletin. Tehtävänmäärittelyservletin kutsuminen tapahtuu nyt toteutettavien ohjelmistokomponenttien ulkopuolelta eassari-järjestelmän muista osista. Kaikki servletit hakevat HTTPServletRequest-parametrijoukosta tehtävänmäärittely-, tehtävänesitys- tai analysointikomponenteille välitettävät tiedot, jotka on esitetty taulukossa 1. tyyppi: nimi: tarkoitus: String userid käyttäjätunnus (vain määrittely- ja analysointiservletit). Käytetään opettajan tunnistamiseen hänen määrittelemiensä tehtävien listaamiseksi ja opiskelijan tunnistamiseen suorituksen kirjaamiseksi tietokantaan tarvittaessa. String tasktype tehtävätyyppi (vain esitys- ja analysointiservletit). Käytetään servlettien aktivoimien esitys-/analysointikomponenttien tyypin tunnistamiseen. String taskid tehtävätunnus (vain esitys- ja analysointiservletit). Käytetään esitettävän/analysoitavan tehtävän tunnistamiseen. String language esityskieli. Taulukko 1: Yleiset kutsuparametrit Tehtävänmäärittelykomponenttien aktivoiminen: Tehtävänmäärittelyservletti välittää taulukossa 2 listatut tiedot tehtävänmäärittelykomponentille. tyyppi: nimi: tarkoitus: String userid käyttäjätunnus. String language käyttöliittymän esityskieli. Taulukko 2: Tehtävänmäärittelykomponenttien kutsuparametrit Tehtävänesityskomponenttien aktivoiminen: Tehtävänesitysservletti aktivoi tehtävätyyppikohtaisen esityskomponentin, jolle se välittää taulukossa 3 esitetyt tiedot tehtävän esitysnäkymän generoimiseksi. tyyppi: nimi: tarkoitus: String taskid esitettävän tehtävän tunnus. String language haluttu esityskieli. Taulukko 3: Esityskomponenttien kutsuparametrit 11

17 Vastauksenanalysointikomponenttien aktivoiminen: Tehtävänanalysointiservletti aktivoi tehtävätyyppikohtaisen analysointikomponentin, jolle se välittää taulukossa 4 listatut tiedot tehtävään annetun vastauksen analysoimiseksi. tyyppi: nimi: tarkoitus: String userid käyttäjätunnus. String taskid tehtävätunnus. String language käytetty esityskieli. int[] answer opiskelijan valintatehtävään antamat vastaukset. String[] answer opiskelijan järjestystehtävään antama vastaus. String[] answer opiskelijan aukkojentäyttötehtävään antamat vastaukset. Taulukko 4:Analysointikomponenttien kutsuparametrit Tehtävänmäärittelyn, tehtävänannon, palautteen tai virheilmoituksen välittäminen servletille: Servletit käyttävät toista taulukossa 5 esitetyistä metodeista hakeakseen aktivoimiensa ohjelmistokomponenttien tuottaman XHTML-sivun. tyyppi: nimi: tarkoitus: String getscript käyttäjälle esitettävä tehtävänmäärittelykäyttöliittymä/ tehtävänanto. Feedback analyse käyttäjälle esitettävä palaute/virheilmoitus. Taulukko 5: Palautusparametrit 12

18 5. CACHE-TIETORAKENNE Cache-keskusmuistitietorakenne (TaskBase) sijoittuu järjestelmässä tietokannan ja sitä käyttävien ohjelmistokomponenttien väliin kuvan 1 (sivu 4) mukaisesti. Cache-rakenne sisältää toiminnot analysointikomponenttien välittämien vastausten tallentamiseksi tietokantaan, sekä tietokantaan tallennetun datan noutamiseksi ja palauttamiseksi sitä pyytävälle ohjelmistokomponentille. Tietorakenteen toteutus pohjautuu eri hajautustauluihin, joihin sijoitetaan tieto järjestelmässä aktiivisina olevista tehtävistä, tehtävätyypeistä sekä tehtäväattribuuteista. 5.1 Tiedon kulku cache-tietorakenteelta ohjelmistokomponenteille Cache-tietorakenne tarjoaa getattribute-metodin, jota kutsumalla muut komponentit voivat hakea tietokantaan tallennettujen attribuuttien arvoja: public String getattribute (String objtype, String objid, String attributename, String language) Kutsuparametreina kutsuja antaa tyyppinsä, nimensä, tarvitsemansa attribuutin nimen ja kielen, jolla se haluaa attribuutin arvon. Cache-rakenne muodostaa kutsuparametreista hajautusavaimen, jonka perusteella se hakee loadedattributes-hajautustaulusta pyydetyn parametrin arvon ja palauttaa sen pyytäjälle merkkijonona. Mikäli pyydettyä tietoa ei ole hajautustaulussa, laatii cache tietokantakyselyn pyydetyn dataelementin (esim. XHTML-sivun otsikko) sekä kaiken siihen sidoksissa olevan datan (esim. koko XHTML-sivu) noutamiseksi tietokannasta. Saatuaan datan tallentaa cache sen hajautustauluunsa ja palauttaa sitten pyydetyn attribuutin arvon sitä pyytäneelle ohjelmistokomponentille. Cache tallentaa tietokannan attributevalues-taulusta noutamansa attribuutit ylläpitämäänsä hajautustauluun seuraavasti: hajautusavain [tyyppi, id, esityskieli, attribuutin nimi] hajautustauluun tallennettava arvo attribuutin arvo Taulukko 6: Hajautustauluparametrit Cache tarjoaa myös erityisen attribcount-metodin, jonka avulla tehtäväattribuutteja tarvitsevat ohjelmistokomponentit voivat tiedustella cachelta tarvitsemiensa attribuuttien kuten esim. valintatehtävien vastausvaihtoehtojen lukumäärää: public int attribcount(string objectid, String attributename, String language) Kutsuja välittää metodille parametreina tehtävän tunnuksen, haettavan attribuutin nimiosan ja käytettävän esityskielen. Metodi palauttaa kutsujalle niiden attribuuttien lukumäärän, jotka täyttävät hakuehdot. 13

19 gettaskid-metodi palauttaa kutsujalleen tiettyyn kurssi-, moduuli- ja sekvenssitunnusyhdistelmään liitetyn tehtävän tunnuksen: public String gettaskid (String courseid, String moduleid, int seqno) languagedefined-metodi totuusarvoisen tiedon siitä, onko jokin tehtävä määritelty tietokantaan tietyllä kielellä: public boolean languagedefined (String taskid, String language) 5.2 Tiedon kulku analysointikomponentilta cachelle Vastauksenanalysointikomponentit kutsuvat cache-rakenteeseen toteutettavaa saveanswer-metodia välittääkseen tietokantaan tallennettavan vastauksen cachelle, joka vastaa järjestelmän tietokantaoperaatioista. Esityskomponentit eivät tallenna mitään tietokantaan. public void saveanswer(string userid, String courseid, String moduleid, int seqno, int trynumber, int correctness, String whenanswered, String answer, String language) 14

20 6. TIETOKANTA 6.1 Nykyisen tietokantarakenteen kuvaus eassari-järjestelmän tietokanta koostuu nykyisin kuvassa 7 esitetyistä tauluista. Kuva 7: Tietokannan rakenne Tehtävätyyppien yleistiedot tallennetaan tasktype tauluun, jossa mm. liitetään oikeat esitys- ja analysointikomponentit tehtävätyyppiin komponenttien luokkanimien avulla. Tehtävätyyppiin liittyvien attribuuttien tiedot tallennetaan taskattributes tauluun. Jokaisen attribuutin osalta 15

21 tallennetaan mm. attribuutin nimi sekä tieto siitä, miten attribuutti saadaan: tietokannasta, generoimalla vai ulkopuoliselta komponentilta. Tehtävätyypin attribuutin arvo tallennetaan attributevalues tauluun. Tehtävänmäärittely käyttää task-taulua tehtävää koskevien yleisten parametrien tallentamiseen. Tehtävälle yksilölliset arvot, kuten tehtävänanto ja oikeat vastaukset, tallennetaan attributevaluestauluun. Käyttöliittymäelementtien tiedot tallennetaan tietokannan attributevalues tauluun. 6.2 Tietokantaan tehtävät muutokset Tietokantaan lisätään systemlanguages-niminen taulu, joka sisältää järjestelmään määriteltyjen kielten korkeintaan kolmikirjaimisen tunnisteen ja esityskielikohtaiset nimet. Taulun rakenne on seuraavanlainen: create table systemlanguages( /* code for the language*/ languagecode varchar(3) not null primary key, ); /* name of the language*/ languagename varchar(40) not null unique, 16

22 6.3 Tietojen sijoittuminen tietokantaan Tässä luvussa kuvataan yksityiskohtaisesti tehtävänmäärittely- ja suoritustietojen sijoittuminen tietokantaan Tehtävätyyppien tiedot Kaikkiin tehtävätyyppeihin liittyy tehtävätyypistä ja määrittelykielestä riippumatta taulukossa 7 listatut tiedot. parametri typename author datecreated description displayer analyser tasktypestyle displayerinit analyserinit tietokantataulu, kenttä ja tyyppi [tasktype] typename: varchar (40) [tasktype] author: varchar (4) [tasktype] datecreated: date [tasktype] description [tasktype] displayer: varchar (40) [tasktype] analyser: varchar (40) [tasktype] tasktypestyle: varchar (80) [tasktype] displayerinit: varchar (1000) [tasktype] analyserinit: varchar (1000) kuvaus - tehtävätyypin nimi - arvon tuottaa tehtävätyypin määrittelijä - tehtävätyypin määrittelijän nimi - arvon tuottaa tehtävätyypin määrittelijä - päivä jolloin määrittely tehty - arvon tuottaa ohjelmisto - tehtävätyyppiin liittyvää metadataa - arvon tuottaa tehtävätyypin määrittelijä - ei käytössä toistaiseksi - tehtävätyyppiin liittyvän esityskomponentin luokan nimi - arvon tuottaa tehtävätyypin määrittelijä - tehtävätyyppiin liittyvän analysointikomponentin luokan nimi - arvon tuottaa tehtävätyypin määrittelijä - tehtävätyyppiin liittyvän tyylitiedoston nimi - arvon tuottaa tehtävätyypin määrittelijä - tehtävätyyppikohtaiset alustusparametrit esityskomponentille - arvon tuottaa tehtävätyypin määrittelijä - tehtävätyyppikohtaiset alustusparametrit analysointikomponentille - arvon tuottaa tehtävätyypin määrittelijä Taulukko 7: Tehtävätyyppien tiedot 17

23 6.3.2 Tehtävätyyppikohtaiset tiedot Kuhunkin tehtävätyyppiin liittyy joukko tietoa, joka määritellään taulukossa 8 osoitetulla tavalla. parametri tasktype attributename typeofvalue tietokantataulu, kenttä ja tyyppi [taskattributes] tasktype: varchar (40) [taskattributes] attributename: varchar (40) [taskattributes] typeofvalue: varchar (12) languagedependent [taskattributes] languagedependent: char (Y/N) howobtained [taskattributes] howobtained kuvaus -sen tehtävätyypin nimi, johon attribuutti liittyy - arvon tuottaa attribuutin määrittelijä - attribuutin nimi - arvon tuottaa attribuutin määrittelijä - attribuutin arvon tyyppi. Arvona: NONE (= ei arvoa), TEXT (= tekstiarvo) tai NUM (= numeerinen arvo) - arvon tuottaa attribuutin määrittelijä - tieto siitä, onko attribuutti kieliriippuvainen - arvon tuottaa attribuutin määrittelijä - tieto tavasta, jolla attribuutin arvo saadaan. Arvona: STORED (attribuutin arvo saadaan tietokannasta), GENERATED (attribuutin arvo generoidaan) tai EXTERNAL (attribuutin arvo tuotetaan ulkopuolisen ohjelmistokomponentin avulla) - arvon tuottaa attribuutin määrittelijä Taulukko 8: Tehtävätyyppikohtaiset tiedot 18

24 6.3.3 Tehtävänmäärittelytiedot Uusia tehtäviä määriteltäessä tallennetaan määrittelytiedot tietokantaan. Kaikki tehtävätyypit sisältävät joukon yleisiä määrittelytietoja. Lisäksi tehtävien sisältöön ja palautteeseen liittyy tietoa, jonka tallennus vaihtelee tehtävätyypeittäin. Yleiset tehtävätiedot: Jokaiseen tehtävään liittyy joukko tehtävätyypistä ja esityskielestä riippumattomia parametreja, jotka kuvataan taulukossa 9. parametri author datecreated taskname taskid task tasktype language positivefeedback negativefeedback cutofvalue tietokantataulu, kenttä ja tyyppi [task] author: varchar (40) [task] datecreated: date [task] taskname: varchar (40) [task] taskid: varchar (20) [attributevalues] attributevalue: varchar (2000) [task] tasktype: varchar (40) [attributevalues] language: varchar (3) [attributevalues] attributevalue: varchar (2000) [attributevalues] attributename: varchar (2000) [task] cutoffvalue: integer immediatefeedback [task] shouldevaluate_def: char registertry [task] shouldregistertry_def: char kuvaus - tehtävänmäärittelijän nimi - arvon tuottaa ohjelmisto - päivä jolloin määrittely on tehty - arvon tuottaa ohjelmisto - tehtävän nimi - arvon tuottaa tehtävän määrittelijä - tehtävän tunniste - arvon tuottaa ohjelmisto - tehtävänanto - arvon tuottaa tehtävän määrittelijä - tehtäväntyypin nimi - arvon tuottaa tehtävän määrittelijä - tehtävän kieli - arvon tuottaa tehtävän määrittelijä - arvo viedään jokaisen attributevaluestauluun menevän parametrin languagekentän arvoksi - tehtävään liittyvä globaali positiivinen palaute - arvon tuottaa tehtävän määrittelijä - tehtävään liittyvä globaali negatiivinen palaute - arvon tuottaa tehtävän määrittelijä - tehtävän hyväksyttyyn suoritukseen vaadittava oikeellisuusprosentti - arvon tuottaa tehtävän määrittelijä - tieto siitä, annetaanko tehtävästä palaute välittömästi -oletusarvo, jota voidaan muuttaa paketointivaiheessa - arvon tuottaa tehtävän määrittelijä - tieto rekisteröidäänkö yritys - oletusarvo, jota voidaan muuttaa paketointivaiheessa - arvon tuottaa tehtävän määrittelijä 19

25 saveanswer numberoftries loginrequired [task] shouldstoreanswer_def: char [task] numberoftries_def: int [task] shouldknowstudent_def: char - tieto tallennetaanko annettu vastaus - oletusarvo, jota voidaan paketointivaiheessa muuttaa - arvon tuottaa tehtävän määrittelijä - tieto sallittujen vastausyritysten määrä - oletusarvo, jota voidaan muuttaa paketointivaiheessa - arvon tuottaa tehtävän määrittelijä - tieto pitääkö tehtävään vastaajan olla kirjautuneenä järjestelmään - oletusarvo, jota voidaan muuttaa paketointivaiheessa - arvon tuottaa tehtävän määrittelijä Taulukko 9: Yleiset tehtävätiedot Valintatehtävien tiedot: Merkillä # kuvataan tallennettavan tiedon sekvenssinumeroa tapauksissa, joissa tietokenttien lukumäärää ei tiedetä etukäteen. Sekvenssinumerot generoidaan tehtävänmäärittelykäyttöliittymissä. parametri option# isselected# positivefeedback negativefeedback tietokantataulu, kenttä ja tyyppi [attributevalues] attributevalue: varchar (2000) [attributevalues] attributevalue: varchar (2000) [attributevalues] attributevalue: varchar (2000) [attributevalues] attributevalue: varchar (2000) kuvaus - vaihtoehdon # kuvaus - arvon tuottaa tehtävän määrittelijä - tieto siitä, pitääkö vaihtoehdon # olla valittuna - arvon tuottaa tehtävän määrittelijä -vaihtoehdon # oikeaan ratkaisuun liittyvä palaute - arvon tuottaa tehtävän määrittelijä -vaihtoehdon # virheelliseen ratkaisuun liittyvä palaute - arvon tuottaa tehtävän määrittelijä Taulukko 10: Valintatehtävien tiedot 20

26 Järjestystehtävien tiedot: Merkillä # kuvataan tallennettavan tiedon sekvenssinumeroa tapauksissa, joissa tietokenttien lukumäärää ei tiedetä etukäteen. Sekvenssinumerot generoidaan tehtävänmäärittelykäyttöliittymässä. parametri object# correctfeedback# tietokantataulu, kenttä ja tyyppi [attributevalues] attributevalue: varchar (2000) [attributevalues] attributevalue: varchar (2000) tooearlyfeedback# [attributevalues] attributevalue: varchar (2000) toolatefeedback# placeofobject# [attributevalues] attributevalue: varchar (2000) [attributevalues] attributevalue: varchar (2000) kuvaus - järjestettävän objektin # kuvaus - arvon tuottaa tehtävän määrittelijä - objektiin # liittyvä palaute, tapauksessa jossa objekti on oikealla paikalla - arvon tuottaa tehtävän määrittelijä - objektiin # liittyvä palaute, tapauksessa jossa objekti on liian aikaisella paikalla - arvon tuottaa tehtävän määrittelijä - objektiin # liittyvä palaute, tapauksessa jossa objekti on liian myöhäisellä paikalla - arvon tuottaa tehtävän määrittelijä - objektin # oikea paikka - arvon tuottaa tehtävän määrittelijä Aukkojentäyttötehtävien tiedot: Taulukko 11: Järjestystehtävien tiedot Merkillä # kuvataan tallennettavan tiedon sekvenssinumeroa tapauksissa, joissa tietokenttien lukumäärää ei tiedetä etukäteen. Sekvenssinumerot generoidaan tehtävänmäärittelykäyttöliittymässä. parametri text tietokantataulu, kenttä ja tyyppi [attributevalues] attributevalue: varchar (2000) positivefeedback# [attributevalues] attributevalue: varchar (2000) negativefeedback# [attributevalues] attributevalue: varchar (2000) gap# [attributevalues] attributevalue: varchar (2000) Kuvaus - teksti, joka sisältää aukot kaksinkertaisin hakasulkein ([[ ja ]])merkittyinä - arvon tuottaa tehtävän määrittelijä - aukkoon # liittyvä palaute tapauksiin, joissa aukko on täytetty oikein - arvon tuottaa tehtävän määrittelijä - aukkoon # liittyvä palaute tapauksiin, joissa aukko on täytettyväärin - arvon tuottaa tehtävän määrittelijä - aukossa # esiintyvä sana - arvon tuottaa ohjelmisto etsimälllä sanan tekstistä, johon määrittelijä on merkinnyt aukkopaikat Taulukko 12: Aukkojentäyttötehtävien tiedot 21

27 6.3.4 Käyttöliittymäelementtien tiedot Tietokantaan tallennetaan myös käyttöliittymäkenttien kuvaukset taulukossa 13 esitetyllä tavalla. Parametri Objecttype objectid attributename language valuetype attributevalue tietokantataulu, kenttä ja tyyppi [attributevalues] objecttype [attributevalues] objected [attributevalues] attributename: varchar (40) [attributevalues] language: varchar (3) [attributevalues] valuetype: char [attributevalues] attributevalue: varchar (2000) Kuvaus - objektin tyyppi, johon attribuutin arvo liittyy (esityskomponentissa arvona D) - arvon tuottaa attribuutin määrittelijä - attribuutin viittaaman objektin tunniste - esityskomponentissa arvona luokan nimi - arvon tuottaa attribuutin määrittelijä - attribuutin viittaaman objektin nimi - arvon tuottaa attribuutin määrittelijä - attribuutin arvon kieli - arvon tuottaa attribuutin määrittelijä - attribuutin arvon tyyppi - arvona C (= character) tekstiarvoille ja N (= number) numeerisille arvoille - arvon tuottaa attribuutin määrittelijä - attribuutin arvo - arvon tuottaa attribuutin määrittelijä Taulukko 13: Käyttöliittymäelementtien tiedot 22

28 7. TEHTÄVÄNMÄÄRITTELYKOMPONENTIT Tehtävänmäärittelykomponentit koostuvat neljäntyyppisistä alikomponenteista: 1. Käyttöliittymät Käyttöliittymät ovat www-selaimessa näytettäviä JSP-sivuja, joiden kautta käyttäjä voi määritellä tehtäviä. 2. Controller-Servlet Controller-komponentti on käyttöliittymiltä saatavien http-kutsujen käsittelyyn ja näkymienhallintaan toteutettava Servlet-luokka. Controller-komponentti lukee jokaisella kutsukerrallaan http-kutsussa vastaanotetut parametrit, päättelee parametritietojen perusteella tarvittavat toimenpiteet ja kutsuu näihin liittyviä tukipalveluita, muodostaa seuraavan käyttöliittymäkomponentin syötteenään tarvitsemat tietorakenteet ja ohjaa kontrollin seuraavalle käyttöliittymälle. 3. Tietorakenteet Tehtävien määrittelytietojen väliaikaistallennukseen ja käsittelyyn toteutetaan tehtävätyyppikohtaiset tietorakenteet. 4. Tukipalveluluokat Controller-komponentti ei suorita itsenäisesti tehtävänmäärittelyjen parametritietojen tietokantatallennuksia ja tietokantahakuja. Sen sijaan controller-komponentti kutsuu erillisiä tukipalveluluokkia, jotka huolehtivat tietokantatoiminnoista. Tietokantatoimintojen lisäksi tukipalveluluokat huolehtivat esimerkiksi tehtävänmäärittelynäkymien tietojen pakkaamisesta tietorakenteisiin ja syötteiden prosessoinnista: esimerkiksi aukkojen etsimisestä tekstimassasta aukkojentäyttötehtävässä. 7.1 Tehtävänmäärittelykäyttöliittymät Käyttöliittymänäkymät tarjoavat järjestelmää käyttävälle opettajalle liittymän tehtävien selaamiseen, uusien tehtävien luomiseen, sekä olemassa olevien tehtävien muokkaamiseen ja poistamiseen. Tehtävätyypit 1 ja 2 eli monivalinta- ja valintatehtävä toteutetaan yhdistetyn tehtävänmäärittelyliittymän avulla. Mikäli tehtävään määritellään täsmälleen yksi oikea ratkaisu, esitetään tehtävä monivalintatehtävänä. Muissa tapauksissa tehtävä esitetään valintatehtävänä. Aukkojentäyttötehtävä ja järjestystehtävä toteutetaan omien kahteen näkymään jakautuvien määrittelyliittymiensä avulla. 23

29 Taulukossa 14 on listattu kaikki järjestelmän tehtävänmäärittelynäkymät, sekä JSP-sivut, joiden avulla näkymät toteutetaan. Liite 2 sisältää kuvankaappaukset kaikista toteutettavista tehtävänmäärittelykäyttöliittymistä. Näkymän tehtävä JSP-sivu Kuva Kirjautuminen login.jsp Liite 2, kuva 5 Tehtävien listaus tasklist.jsp Liite 2, kuva 6 Tehtävän yleisten parametrien määrittely tasksettings.jsp Liite 2, kuva 7 Monivalinta- ja valintatehtävien määrittely optiontask.jsp Liite 2, kuva 8 Aukkojentäyttötehtävän tekstin ja aukkojen blankfill1.jsp Liite 2, kuva 9 määrittely Aukkojentäyttötehtävän palautteen määrittely blankfill2.jsp Liite 2, kuva 10 Järjestystehtävän järjestettävien objektien ja ordering1.jsp Liite 2, kuva 11 palautteen määrittely Järjestystehtävän oikean järjestyksen määrittely ordering2.jsp Liite 2, kuva 12 Taulukko 14: Tehtävienmäärittelyn käyttöliittymät Kaikki määrittelykäyttöliittymät toteutetaan kieliriippumattomasti. Näkymissä esiintyvät tekstiosiot talletetaan tietokantaan ja noudetaan käyttöliittymiä esitettäessä AttributeCache-oliosta. Liite 4 kuvaa tehtävänmäärittelynäkymien kielikohtaiset arvot ja liite 5 listaa näiden sijoittumisen järjestelmän tietokannassa. 7.2 Controller-servlet Tehtävänmäärittelytehtävien hallintaan toteutetaan yksi keskitetty controller-komponentti, jonka vastuulla on kaikkien tehtävänmäärittelyn käyttöliittymänäkymien osalta: POST-kutsujen vastaanottaminen ja parametrien lukeminen. tarvittavien tukipalvelujen, kuten tietokantatoimintojen kutsuminen. seuraavan käyttöliittymänäkymän tarvitsemien tietorakenteiden valmistelu. seuraavan käyttöliittymänäkymän aktivointi. Controller-Servlet päättelee kullakin kutsukerralla tarvittavat toimenpiteet jokaisen kutsun yhteydessä välitettävän event-post-parametrin avulla. Event-parametrit luetaan html-näkymiä generoitaessa sekä controller-servletissä vakiomuuttujia sisältävästä EventParameters-luokasta. Parametrit toimintokuvauksineen on esitetty taulukossa 15. Event-parametrimuuttuja LIST_TASKS NEW_TASK EDIT_TASK EDIT_TASK_AS_NEW EDIT_TASK_AS_NEW_LANG SUBMIT_TASK Toiminnon kuvaus Kaikkien kirjautuneen käyttäjän luomien tehtävien listaus. Uuden tehtävän lisäys. Olemassa olevan tehtävän muokkaus. Olemassa olevan tehtävän muokkaus siten, että muokattu versio tallennetaan uutena tehtävänä. Olemassa olevan tehtävän muokkaus siten, että muokattu versio tallennetaan saman tehtävän erikielisenä versiona. Tehtävän yleisten tietojen tallennus. 24

30 DELETE_TASK Olemassa olevan tehtävän poistaminen. OPTION_TASK_COMPOSE Monivalinta/valintatehtävän käsittelyliittymän esittäminen. Parametrina välitetään tietorakenne, jossa on kaikki tulee parametrina olevassa tietorakenteesta saada helposti kaikki muokattavan tehtävän tiedot. OPTION_TASK_COMPOSE_ADD_OPTI Monivalinta/valintatehtävän käsittelyliittymän esittäminen ONS siten, että tyhjien valinnansyöttökenttien määrää lisätään. Servletin tulee pakata vastaanotetut POST-parametrit tietorakenteeseen, kasvattaa numberofoptions-parametrin arvoa kahdellakymmenellä ja palauttaa kontrolli monivalinta/valintatehtävän käsittelyliittymälle. OPTION_TASK_SUBMIT Monivalinta/valintatehtävän tallentaminen. BLANKFILL_TEXT_COMPOSE Aukkojentäyttötehtävän käsittelyliittymän ensimmäisen osion esittäminen. Ensimmäisessä osassa määritellään teksti ja siihen liittyvät aukkokohdat. BLANKFILL_TEXT_EDIT Aukkojentäyttötehtävän käsittelyliittymän ensimmäisen osion muokkaaminen. Ensimmäisessä osassa määritellään teksti ja siihen liittyvät aukkokohdat. BLANKFILL_TEXT_SUBMIT Aukkojentäyttötehtävän käsittelyliittymän ensimmäisen osion tallentaminen. BLANKFILL_FEEDBACK_COMPOSE Aukkojentäyttötehtävän käsittelyliittymän toisen osion esittäminen. Toisessa osassa määritellään valittuihin aukkokohtiin liittyvät palautteet. Tämä käyttöliittymä vaatii syötteenään BlankDTO-keskusmuistitietorakenteen, josta aukkopaikat voidaan helposti poimia palautteen määrittelyä varten. BLANKFILL_FEEDBACK_EDIT Aukkojentäyttötehtävän käsittelyliittymän toisen osion muokkaaminen. Toisessa osassa määritellään valittuihin aukkokohtiin liittyvät palautteet. Tämä käyttöliittymä vaatii syötteenään BlankDTO-keskusmuistitietorakenteen, josta aukkopaikat voidaan poimia palautteen määrittelyä BLANKFILL_ FEEDBACK_SUBMIT varten. Aukkojentäyttötehtävän käsittelyliittymän toisen osion tallentaminen. ORDERING_OPTIONS_COMPOSE Järjestystehtävän ensimmäisen osion esittäminen. Ensimmäisessä osassa määritellään järjestettävät objektit ja niihin liittyvä palaute. ORDERING_OPTIONS_EDIT ORDERING_OPTIONS_COMPOSE_ADD _OPTIONS ORDERING_OPTIONS_SUBMIT ORDERING_ORDER_COMPOSE Järjestystehtävän ensimmäisen osion muokkaaminen. Ensimmäisessä osassa määritellään järjestettävät objektit ja niihin liittyvä palaute. Järjestystehtävän käsittelyliittymän ensimmäisen osion esittäminen siten, että tyhjien syöttökenttien määrää lisätään. Servletin tulee pakata vastaanotetut POSTparametrit tietorakenteeseen, kasvattaa numberofoptionsparametrin arvoa kahdellakymmenellä ja palauttaa kontrolli järjestystehtävän käsittelyliittymälle. Järjestystehtävän käsittelyliittymän ensimmäisen osion tallentaminen. Järjestystehtävän toisen osion esittäminen. Toisessa osassa määritellään järjestettävien objektien oikea 25

31 järjestys. ORDERING_ORDER_EDIT Järjestystehtävän toisen osion muokkaaminen. Toisessa osassa määritellään järjestettävien objektien oikea järjestys. ORDERING_ORDER_SUBMIT Järjestystehtävän käsittelyliittymän toisen osion tallentaminen. TEST Event-parametri testikäyttöön. Tämän event-tapauksen yhteydessä Servletin tulee tulostaa kaikki POST-kutsussa saadut parametrit html-sivulle. Taulukko 15: Event-parametrit 7.3 Tietorakenteet Tehtävänmäärittelykomponentit käsittelevät tehtäviin, käyttäjän istuntoon ja järjestelmän kieliin liittyviä tietoja JavaBean-tietorakenteiden avulla. Tehtävätiedot ja käyttäjän istuntoon liittyvät tiedot tallennetaan HttpSession-olioon Tehtävätiedot Tehtävänmäärittelytietojen väliaikaistallennukseen käytetään TaskDTO-tietorakennetta, joka on esitetty kuvassa 8. TaskDTO tarjoaa get- ja set- metodit kaikille tehtävätyypin yleistiedoille sekä sisältää hashmap-rakenteen tehtävätyyppikohtaisille tiedoille. Tietorakennetta muokataan HttpSession-olion kautta ja lopullinen tietokantatallennus tehdään vasta tehtävän käsittelyn ollessa valmis. Täten vältetään rikkonaisen tiedon kerääntyminen tietokantaan. 26

32 Kuva 8: Tehtävätiedot sisältävä TaskDTO-tietorakenne 27

33 7.3.2 Istuntotiedot Käyttäjän kirjautuessa järjestelmän tehtävänmäärittelyosioon, tallennetaan annettu käyttäjänimi ja käyttökieli TeacherSession-tietorakenteeseen, joka on esitetty kuvassa 9. Kuva 9: Istuntotiedot sisältävä TeacherSession-tietorakenne Kielitiedot Järjestelmässä esitettävien kielivalintojen kielitiedot tuodaan tukipalveluilta käyttöliittymäkomponenteille erillisten kieliä kuvaavien LanguageDTO-tietorakenteiden avulla. Tietorakenne sisältää get- ja set-palvelut kielen nimelle ja tunnistelyhenteelle. LanguageDTOtietorakenne on esitetty kuvassa 10. Kuva 10: Kielitiedot sisältävä LanguageDTO-tietorakenne 28

34 7.4 Tukipalvelut Tehtävien määrittelyyn liittyvät tukipalvelut, kuten tietojen tallennus ja haku toteutetaan erillisten tukipalveluluokkien avulla. Controller-servlet kutsuu näitä palveluita tarvittaessa Tietojen haku ja tallennus Tietokannan käsittelyyn toteutettavat apuluokat tarjoavat palvelut tehtävätyyppikohtaisten tietorakenteiden sisällön tietokantatallennuksiin sekä määrittelytiedot sisältävien tietorakenteiden hakuun. Kuvassa 11 on esitetty luokkakaavio tietokannan käsittelyyn tarvittavista luokista. DataBaseBase on yliluokka, joka sisältää yhteiset tietokantayhteyden hallintaan liittyvät palvelut. Kuva 11: Tietokannan käsittelyluokat 29

35 Taulukossa 16 listataan yksityiskohtaisesti tietokantaa käsittelevien apuluokkien metodien toiminta. Luokka Metodi Metodin kuvaus DatabaseBase public Connection Avaa tietokantayhteyden ja palauttaa getconnection(); valmiin Connection olion. public void Sulkee tietokantayhteyden. closeconnection(); AllTasksDataBase TaskDatabase public abstract int savedata(basetaskdto data); public abstract TaskDTO loaddata(); public Collection getallauthortasks(string author, String language) public int savedata(taskdto datatosave); public int updatedata(taskdto datatoupdate); Public TaskDTO loaddata(string taskid, String language); Abstrakti metodi, joka toteutetaan aliluokissa. Abstrakti metodi, joka toteutetaan aliluokissa. Hakee kaikki käyttäjän hallinnoimat tehtävät ja palauttaa ne TaskDTO-tietorakenteista koostuvana Collection-oliona. Tallentaa parametrina saadun TaskDTOtietorakenteen tiedot tietokantaan. Päivittää parametrina saadun TaskDTOtietorakenteen tiedot tietokantaan. Hakee kaikki määrättyyn tehtävään liittyvät tiedot annetulla kielellä ja palauttaa ne TaskDTO tietorakenteessa. Taulukko 16: Tietokannankäsittelymetodit Muut tukipalveluluokat Controller-servlet hyödyntää tukipalveluluokkia myös käyttöliittymiltä saatavien POST-parametrien lukemiseen, tietorakenteiden muodostamiseen sekä tietotyyppimuunnoksiin. Lisäksi aukkojentäyttötehtävässä hyödynnetään erillistä apuluokkaa aukkopaikkojen tunnistamiseen käyttäjän syöttämästä tekstistä. Nämä apuluokat on esitetty taulukossa 17. Luokka Authorization BlanksParser DbOperationsManager Kuvaus Apuluokka tehtävänmäärittelyn kutsujen autentikointiin. Sisältää palvelut käyttäjän tehtävänmuokkausoikeuksien varmentamiseen. Apuluokka aukkojentäyttötehtävien määrittelyyn. Etsii aukkokohdat käyttäjän antamasta tekstistä, ja pakkaa ne tehtävää kuvaavan TaskDTO-tietorakenteen hashmap-tauluun. Sisältää tehtävätietojen käsittelyyn tarvittavien tietokantalauseiden kutsupalvelut. Luvussa kuvatut tietokantapalvelut hyödyntävät tämän luokan metodeja palveluidensa toteuttamiseen. 30

36 LanguageHandler PostParameterParser TaskTypes Apuluokka kieliarvojen noutamiseen tietokannasta. Sisältää palvelumetodit kaikkien järjestelmän kielien ja annetun tehtävän määrittelykielien selvittämiseen. Palauttaa kieliarvot LanguageDTO-tietorakenteina. Apuluokka POST-parametrien käsittelyyn. Tarjoaa palvelut usein käytettyjen parametrien hakuun suorilla palvelumetodeilla ja Vakioluokka tehtävätyyppien käsittelyyn. Sisältää merkkijonomuotoiset nimet kaikille tehtävätyypeille POSTkutsuissa käytettäviksi. Taulukko 17: Muut tukipalveluluokat 7.5 Tehtävänmäärittelynäkymien tiedonvälitys Tehtävänmäärittely jakautuu kaikille tehtävätyypeille yhteiseen yleiseen tehtävänmäärittelyosaan sekä tehtävätyyppikohtaiseen osaan, jossa määritellään: tehtävänannon elementit, kuten monivalinta- ja valintatehtävän valinnat, järjestystehtävän järjestettävät objektit sekä aukkojentäyttötehtävän teksti aukkoineen. tehtävänannon oikea ratkaisu. tehtävään liittyvä yksityiskohtainen palaute. muu mahdollinen tehtäväkohtainen tieto. Tiedot välitetään käyttöliittymiltä controller-servletille http-post-parametreina. Tarkat parametritiedot on listattu liitteessä 1 taulukossa 18 osoitetulla tavalla. Parametrien käyttö Parametrilistaus Kaikissa post-kutsuissa välitettävät yleiset Liite 1, taulukko 1. parametrit Kirjautumisvaiheen parametrit. Liite 1, taulukko 2. Yleisen tehtävänmäärittelyvaiheen parametrit. Liite 1, taulukko 3. Monivalinta- ja valintatehtävien parametrit. Liite 1, taulukko 4. Aukkojentäyttötehtävien parametrit. Liite 1, taulukko 5. Järjestystehtävien parametrit. Liite 1, taulukko 6. Taulukko 18: Käyttöliittymien POST-parametrit Monivalinta- ja valintatehtävissä, järjestystehtävissä sekä aukkojentäyttötehtävissä esiintyy tietoja, joiden määrää ei tiedetä etukäteen. Näiden parametrien nimien perään katenoidaan käyttöliittymänäkymiä generoitaessa sekvenssinumero, jota esitetään liitteenä olevissa parametrilistauksissa merkillä #. Numerointi alkaa luvusta 1. 31

37 8. ESITYSKOMPONENTIT Esityskomponentit vastaavat tehtävän esityskäyttöliittymän sisällön generoimisesta. Tehtävätietojen käsittelyyn käytetään cache-tietorakennetta, joka on kuvattu luvussa Esityskomponenttien abstrakti määrittely Komponenttien tehtävät - Käyttäjälle esitettävän tehtävänannon muotoileminen Komponenttien tarjoamat palvelut - Tehtävänannon palauttaminen kehyskoodille käyttäjän www-selaimella näytettäväksi Komponenttien säännöt ja rajoitukset - Osattava esittää kaikki tehtävätyypit. - Toteutettava AttributeCache-rajapinnan vaatimukset Komponenttien rajapinnat - Esitysservlettirajapinta - tehtäväparametrien vastaanottaminen (mm. esityskieli) - tehtävänannon palauttaminen - Cache-rajapinta - kielikohtaisten tehtävätietojen noutaminen 32

38 8.2 Esityskomponenttien tietosisältö ja palvelut Kuvassa 12 on kuvattu toteutettavat esityskomponentit luokkakaaviona. Kaikki esityskomponentit toteuttavat DisplayerInterface-rajapinnan ja perivät CommonDisplayer-luokan, joka sisältää esityskomponenteille yhteiset palvelut. Tehtävätyyppikohtainen getsetting()-metodi palauttaa varsinaisen tehtävänannon XHTML-merkkijonona. Kuva 12: Esityskomponenttien luokkakaavio DisplayerInterface-rajapintaluokka vaatii jokaisen esityskomponentin sisältävän toteutuksen ainakin seuraaville metodeille: public void init (String taskid, String language, String initparams); Toiminta: Alustetaan tarvittavat muuttujat. Initparams-muuttuja on xml-muodossa annettu merkkijono, joka tulkitaan jos parametreja on annettu. 33

39 public String getscript () throws CacheException; Toiminta: Tuotetaan käsiteltävää tehtävää koskevan XHTML-esityskäyttöliittymän headerosaan lisättävät dynaamiset skriptiosiot. public String getsetting(string [] initval, String params, String hiddens, boolean allowtry) throws CacheException; Toiminta: Tuotetaan käsiteltävää tehtävää koskevan XHTML-esityskäyttöliittymän varsinainen sisältö. 8.3 Esityskomponenttien parametrit Tämä luku kuvaa esityskomponenttien käyttämät parametrit tehtävätyypeittäin. Esityskomponenttien aktivoiminen: tyyppi: nimi: tarkoitus: String taskid esitettävän tehtävän tunnus. String language haluttu esityskieli. Taulukko 19: Esityskomponenttien kutsuparametrit Tehtävänmäärittelytietojen noutaminen cache-rakenteesta - valintatehtävät: tyyppi: nimi: tarkoitus: String task tehtävänanto. String helpline käyttäjälle esitettävä ohjeteksti. String option# vastausvaihtoehto nro. # String submitbutton vastauspainikkeen teksti. Taulukko 20: Valintatehtävien esitysparametrit Tehtävänmäärittelytietojen noutaminen cache-rakenteesta - järjestystehtävät: tyyppi: task tarkoitus: String task tehtävänanto. String helpline käyttäjälle esitettävä ohjeteksti. String object# järjestettävä elementti nro #. String submitbutton vastauspainikkeen teksti. Taulukko 21: Järjestystehtävien esitysparametrit 34

40 Tehtävänmäärittelytietojen noutaminen cache-rakenteesta - aukkojentäyttötehtävät: tyyppi: nimi: tarkoitus: String task tehtävänanto. String helpline käyttäjälle esitettävä ohjeteksti. String text aukkoja sisältävä teksti. String submitbutton vastauspainikkeen teksti. Taulukko 22: Aukkojentäyttötehtävien esitysparametrit Sisällön palauttaminen kehyskoodiservletille: tyyppi: palauttava metodi: tarkoitus: String pageheader( ) XHTML-sivun header-osio. String bodybegin( ) XHTML-sivun body-osion alkuosa. String getsetting( ) XHTML-sivun body-osiossa esitettävä varsinainen tehtävänanto. String bodyend( ) XHTML-sivun body-osion loppuosa. String footer( ) XHTML-sivun loppuosa. Taulukko 23: Tehtävän esitysparametrit 8.4 Esityskäyttöliittymien ulkoasun muokkaaminen Tehtävien esittämisessä generoitavien xhtml-sivujen ulkoasua voidaan muokata toteuttamalla kurssikohtainen css-tiedosto, jossa on liitteen 3 taulukossa 1 listatut css-class tyylimäärittelyt. Mikäli joitain luokkia ei ole toteutettu kurssikohtaisessa tyylitiedostossa, käytetään esittämiseen esityskomponenttien käyttöön toteutettavia oletustyylejä. Omia tyylitiedostoja käytettäessä tulee käyttäjän itse huolehtia tyylimäärittelyjen toimivuuden testaamisesta järjestelmä ei validoi käyttäjien tyylitiedostoja millään tavalla. 35

41 9. ANALYSOINTIKOMPONENTIT Analysointikomponentit vastaavat käyttäjän antamien vastausten arvioinnista ja palautteen muodostamisesta. Palaute kootaan Feedback-olioon, joka palautetaan kehyskoodiservletille. Tehtävätietojen, kuten oikeiden vastausten ja palautteen, käsittelyyn käytetään cachetietorakennetta, joka on kuvattu luvussa Analysointikomponenttien abstrakti määrittely Komponenttien tehtävät - tehtävään annetun vastauksen arvioiminen. - käyttäjälle esitettävän palautteen muodostaminen. - Feedback-olion luominen Komponenttien tarjoamat palvelut - Feedback-olion palauttaminen kehyskoodille Komponenttien säännöt ja rajoitukset - osattava analysoida kaikki tehtävätyypit. - toteutettava AttributeCache-rajapinnan vaatimukset. - sisällytettävä palautteeseen oikeellisuusprosentti: numeerinen arvio vastauksen oikeellisuudesta. ilmoitusteksti: varsinainen palauteteksti. liiteaineisto: mahdollinen muu tieto, esim. suoritettavan SQL-kyselyn tulos. - tallennettava palaute Feedback-olioon. - palautettava Feedback-olio kehyskoodille Komponenttien rajapinnat - vastausservlettirajapinta - tehtäväparametrien vastaanottaminen - vastauksen vastaanottaminen - Feedback-olion palauttaminen - cache-rajapinta - kielikohtaisten oikean vastauksen kuvailutietojen noutaminen - Feedback-oliorajapinta - palautteen tallentaminen 36

42 9.2 Analysointikomponenttien tietosisältö ja palvelut Kuvassa 13 on kuvattu toteutettavat analysointikomponentit luokkakaaviona. Kaikki analysointikomponentit toteuttavat AnalyserInterface-rajapinnan, ja perivät CommonAnalyserluokan, joka sisältää esityskomponenteille yhteiset tiedot. Tehtävätyyppikohtainen analyse()-metodi arvioi annetun vastauksen ja palauttaa Feedback-olion kehyskoodiservletille. Kuva 13: Analysointikomponenttien luokkakaavio AnalyserInterface-rajapintaluokka vaatii jokaisen analysointikomponentin sisältävän toteutuksen ainakin seuraaville metodeille: public void init (String taskid, String language, String initparams); Toiminta: Alustetaan tarvittavat muuttujat. Initparams-muuttuja on xml-muodossa annettu merkkijono, joka tulkitaan jos parametreja on annettu. 37

43 public Feedback analyse (String [] answer, String params) throws CacheException; Toiminta: Suorittaa varsinaisen analysoinnin. Answer-parametrin sisältämää vastausta verrataan tietokantaan määriteltyyn oikeaan vastaukseen. public void registercache(attributecache cache ); Toiminta: Rekisteröidään cache analysointikomponenttiin, jotta sitä voidaan käyttää vastauksen analysoinnissa. 9.3 Analysointikomponenttien parametrit Tämä luku kuvaa analysointikomponenttien käyttämät parametrit tehtävätyypeittäin. Analysointikomponentin aktivoiminen: tyyppi: nimi: tarkoitus: String userid käyttäjätunnus. String taskid tehtävätunnus. String language käytetty esityskieli. String[] answer opiskelijan tehtävään antamat vastaukset. Taulukko 24: Analysointikomponenttien kutsuparametrit Oikean vastauksen kuvailutietojen noutaminen cache-rakenteesta - valintatehtävät: tyyppi: nimi: tarkoitus: String isselected# vastausvaihtoehdon nro. # oikeellisuustieto. String positivefeedback# oikein valittuun vaihtoehtoon nro. # annettava palaute. String negativefeedback# väärin valittuun vaihtoehtoon nro. # annettava palaute. Taulukko 25: Valintatehtävien analysointiparametrit 38

44 Oikean vastauksen kuvailutietojen noutaminen cache-rakenteesta - järjestystehtävät: tyyppi: nimi: tarkoitus: String placeofobject# elementin nro. # oikean paikan sijaintitieto. String correctfeedback# oikeaan paikkaan sijoitettuun elementtiin nro. # liittyvä palaute. String tooearlyfeedback# liian aikaiseen paikkaan sijoitettuun elementtiin nro. # liittyvä palaute. String toolatefeedback# liian myöhäiseen paikkaan sijoitettuun elementtiin nro. # liittyvä palaute. Taulukko 26: Järjestystehtävien analysointiparametrit Oikean vastauksen kuvailutietojen noutaminen cache-rakenteesta - aukkojentäyttötehtävät: tyyppi: nimi: tarkoitus: String gap# aukkoon nro. # kuuluva oikea syöte. String positivefeedback# oikein täytettyyn aukkoon nro. # annettava palaute. String negativefeedback# väärin täytettyyn aukkoon nro. # annettava palaute. Taulukko 27: Aukkojentäyttötehtävien analysointiparametrit Palautteen välittäminen kehyskoodiservletille: tyyppi: nimi: tarkoitus: Feedback feedback käyttäjälle esitettävä palaute. Taulukko 28: Palautteenvälitysparametrit 39

45 10. PAKKAUSRAKENNE Projektissa toteutettavat luokat jaetaan taulukossa 29 esitettyyn pakkausrakenteeseen. Paketti fi.hy.eassari.displayers fi.hy.eassari.showtask.trainer fi.hy.eassari.taskdefinition fi.hy.eassari.taskdefinition.util fi.hy.eassari.taskdefinition.servlets fi.hy.eassari.tests Selite Tehtävien esityskomponenttien luokat. Muut tehtävien esityksen ja analysoinnin luokat. Tehtävänmäärittelyn luokat. Tehtävänmäärittelyn apuluokat. Tehtävämäärittelyn Servlet-luokat. Kaikki järjestelmän testiluokat. Taulukko 29: Pakkausrakenne 40

46 11. LÄHTEET [LAI03] Harri Laine: eassari Practicing, assesment and exam engine ( ) 41

47 12. LIITTEET Liite 1: Tehtävänmäärittelyn käyttöliittymien tietosisältö Kaikissa post-kutsuissa välitettävät yleiset parametrit Nimi Merkitys Tyyppi Muuta event Tähän POST-kutsuun liittyvän tapahtuman tunniste, jonka avulla vastaanottava Servlet osaa tehdä tarvittavat toimenpiteet. int Event-parametrien arvot luetaan aina EventParametersluokasta. taskid Tehtävän tunniste String Vain olemassa olevilla tehtävillä on id-arvot. Jos arvoa ei saada POST:n yhteydessä, on kyseessä uusi tehtävä. Jokaisen kutsun yhteydessä on validoitava onko käyttäjällä oikeutta käsitellä taskidparametrin osoittamaa tehtävää. Taulukko 1: Jokaisen post-kutsun yhteydessä käytettävät yleiset parametrit Tehtävänmäärittelyyn kirjautumisen post-parametrit Nimi Merkitys Tyyppi Muuta userid Tähän POST-kutsuun int Event-parametrien arvot liittyvän tapahtuman luetaan aina EventParametersluokasta. tunniste, jonka avulla vastaanottava Servlet osaa tehdä tarvittavat toimenpiteet. password Tehtävän tunniste int Vain olemassa olevilla tehtävillä on id-arvot. Jos arvoa ei saada POST:n yhteydessä, on kyseessä uusi tehtävä. Jokaisen kutsun yhteydessä on validoitava onko käyttäjällä oikeutta käsitellä taskidparametrin osoittamaa tehtävää. language Järjestelmän käyttökieli String Arvona saadaan kielen tunniste (esim. FI, EN, SWE) Taulukko 2: Kirjautumiskutsun yhteydessä käytettävät parametrit 42

48 Yleisen tehtävänmäärittelyvaiheen post-parametrit Nimi Merkitys Tyyppi Muuta task Tehtävänanto. String tasktype Tehtävän tyyppi, esim. String monivalintatehtävä. Tämän tiedon avulla Servlet osaa kirjata tietokantaan tehtävätyyppiin liittyvän analysointikomponentin ja esityskomponentin, sekä ohjata kontrollin oikeaan tehtävänmäärittelyliittymä än. taskname Tehtävän nimi String language Tehtävän määrittelykieli. String positivefeedback Koko tehtävää koskeva String palaute, joka esitetään jos ratkaisu on hyväksyttävä. negativefeedback Koko tehtävää koskeva String palaute, joka esitetään jos ratkaisu ei ole hyväksyttävä cutofvalue Tehtävän hyväksymisraja oikeellisuusprosenttina. int (0-100) immediatefeedback Tieto siitä, esitetäänkö int (0 tai 1) palaute välittömästi. numberoftries Ratkaisuyrityskertojen yläraja. Mikäli parametrin arvo POST-kutsussa ei ole nollaa suurempi kokonaisluku, ei yrityskertojen määrää rajoiteta. registertry Tieto siitä, int (0 tai 1) rekisteröidäänkö tehtävän ratkaisuyritykset. saveanswer Tieto siitä, tallennetaanko int (0 tai 1) tehtävään annetut vastaukset. loginrequired Tieto siitä, onko int (0 tai 1) opiskelijan oltava kirjautuneena järjestelmään suorittaakseen tehtävän. saveasnew Tieto siitä, tallennetaanko tehtävä uudeksi tehtäväksi. Jos tämä parametri on int (0 tai 1) 43

49 arvoltaan 0, tallennetaan määrittely aiemman tehtävän tilalle. saveasnewlanguage Tieto siitä, tallennetaanko tehtävä olemassa olevan tehtävän erikieliseksi variaatioksi. Jos tämä parametri on arvoltaan 1, tallennetaan tehdyt muutokset saman tehtävän erikielisiksi kuvaustiedoiksi. int (0 tai 1) Taulukko 3: Yleisen tehtävänmäärittelyvaiheen post-parametrit 44

50 Monivalinta- ja valintatehtävien parametrit Nimi Merkitys Tyyppi Muuta option# #. vaihtoehdon nimi. String Todellisten parametrien nimet ovat option1, option2, option3,, optionn (N=vaihtoehtojen määrä) isselected# positivefeedback# negativefeedback# numberofoptions Tieto siitä, tuleeko vaihtoehdon # olla valittuna oikeassa ratkaisussa. Vaihtoehtoon # liittyvä palaute tapauksiin, joissa vaihtoehtoon liittyvä ratkaisu on oikein. Vaihtoehtoon # liittyvä palaute tapauksiin, joissa vaihtoehtoon liittyvä ratkaisu ei ole oikein. Lomakkeella esitettävien vaihtoehtojen määrä. Osa tarjotuista vaihtoehdoista voi olla tyhjiä. Mikäli jonkin vaihtoehdon option#- kenttä on tyhjä, ei vaihtoehtoa tule tallentaa tietokantaan. Tällöin tätä vaihtoehtoa seuraavien vaihtoehtojen sekvenssinumerot tulee korjata oikeellisiksi. int (0 tai 1) String String int Todellisten parametrien nimet ovat isselected1, isselected2, isselected3,, isselectedn (N=vaihtoehtojen määrä) Todellisten parametrien nimet ovat positivefeedback1, positivefeedback2, positivefeedback3,, positivefeedbackn (N=vaihtoehtojen määrä) Todellisten parametrien nimet ovat negativefeedback1, negativefeedback2, negativefeedback3,, negativefeedbackn (N=vaihtoehtojen määrä) Kaikissa yllä esitetyissä parametreissa # numberofoptions. Taulukko 4: Monivalinta- ja valintatehtävien parametrit 45

51 Aukkojentäyttötehtävien parametrit Nimi Merkitys Tyyppi Muuta text Tehtävänantoon liitettävä teksti, joka sisältää aukkopaikat kaksinkertaisin hakasulkumerkein ([[ ja ]]) merkittyinä. String Tyhjän aukkopaikan merkintä onnistuu merkitsemällä tekstiin kaksinkertaiset hakasulut, joiden sisällä ei ole tekstiä. Sisällöllisen aukkopaikan merkintä tehdään ympäröimällä aukon oikea täyttötapa kaksinkertaisilla positivefeedback# Aukkopaikkaan # liittyvä palaute tapauksiin, joissa aukko on täytetty oikein. negativefeedback# Aukkopaikkaan # liittyvä palaute tapauksiin, joissa aukkoa ei ole täytetty oikein. numberofblankspot s Aukkojen lukumäärä. Taulukko 5: Aukkojentehtävien parametrit hakasulkumerkeillä. Palaute määritellään eri näkymässä kuin edellä mainittu parametri text. Ennen palautteen määrittelyä käsittelevä Servlet on käsitellyt text-parametrin ja muodostanut keskusmuistitietorakenteen, josta aukkopaikat on helppo poimia palautteen määrittelyä varten. Palaute määritellään eri näkymässä kuin edellä mainittu parametri text. Ennen palautteen määrittelyä käsittelevä Servlet on käsitellyt text-parametrin ja muodostanut keskusmuistitietorakenteen, josta aukkopaikat on helppo poimia palautteen määrittelyä varten. Tämä tieto välitetään ainoastaan palautteenmäärittelynäkymästä. 46

52 Järjestystehtävien parametrit Nimi Merkitys Tyyppi Muuta object# # järjestettävän objektin nimi. String Todellisten parametrien nimet ovat object1, object2, object3,, objectn (N=objektien correctfeedback# tooearlyfeedback# toolatefeedback# numberofoptions placeofobject# Objektiin # liittyvä palaute tapauksiin, joissa objekti on järjestetty oikealle paikalleen. Objektiin # liittyvä palaute tapauksiin, joissa objekti on järjestetty liian aikaiselle paikalle. Objektiin # liittyvä palaute tapauksiin, joissa objekti on järjestetty liian myöhäiselle paikalle. Lomakkeella esitettävien vaihtoehtojen määrä. Osa tarjotuista vaihtoehdoista voi olla tyhjiä. Mikäli jonkin vaihtoehdon option#- kenttä on tyhjä, ei vaihtoehtoa tule tallentaa tietokantaan. Tällöin tätä vaihtoehtoa seuraavien vaihtoehtojen sekvenssinumerot tulee korjata oikeellisiksi. Objektin # sijainnin kuvaava järjestysnumero. String String String int int Taulukko 6: Järjestystehtävien parametrit määrä) Todellisten parametrien nimet ovat positivefeedback1, positivefeedback2, positivefeedback3,, positivefeedbackn (N=vaihtoehtojen määrä) Todellisten parametrien nimet ovat negativefeedback1, tooearlyfeedback2, tooearlyfeedback3,, tooearlyfeedbackn (N=vaihtoehtojen määrä) Todellisten parametrien nimet ovat toolatefeedback1, toolatefeedback2, toolatefeedback3,, toolatefeedbackn (N=vaihtoehtojen määrä) Kaikissa yllä esitetyissä parametreissa # numberofoptions. Tämä parametri tulee huomioida ainoastaan ORDERING_ORDER_SUBMITevent-parametria käsiteltäessä. Tämän event-parametrin käsittelyssä voidaan muut tämän taulukon parametrit jättää huomioimatta. 47

53 Liite 2: Käyttöliittymäkuvat Tehtävien esittäminen Kuva 1: Monivalintatehtävän vastauskäyttöliittymä 48

54 Kuva 2: Valintatehtävän vastauskäyttöliittymä 49

55 Kuva 3: Aukkojentäyttötehtävän vastauskäyttöliittymä 50

56 Kuva 4: Järjestystehtävän vastauskäyttöliittymä 51

57 Tehtävien määritteleminen Kuva 5: Kirjautumisnäkymä 52

58 Kuva 6: Tehtävien listausnäkymä 53

59 Kuva 7: Tehtävän yleisten parametrien määrittelynäkymä 54

60 Kuva 8: Monivalinta- ja valintatehtävien määrittelynäkymä 55

61 Kuva 9: Aukkojentäyttötehtävän tekstin ja aukkojen määrittelynäkymä 56

62 Kuva 10: Aukkojentäyttötehtävän palautteenmäärittelynäkymä 57

63 Kuva 11: Järjestystehtävän järjestettävien objektien ja palautteen määrittelynäkymä Kuva 12: Järjestystehtävän oikean järjestyksen määrittelynäkymä 58

64 Palautteen esitys Kuva 13: Monivalinta- ja valintatehtävien palautteenesitysynäkymä Kuva 14: Aukkojentäyttötehtävän palautteenesitysynäkymä 59

65 Kuva 15: Järjestystäyttötehtävän palautteenesitysynäkymä 60

OHJELMISTOTUOTANTOPROJEKTI

OHJELMISTOTUOTANTOPROJEKTI HELSINGIN YLIOPISTO TIETOJENKÄSITTELYTIETEEN LAITOS OHJELMISTOTUOTANTOPROJEKTI ASSARI Suunnitteludokumentti versio 1.0 Teemu Andersson Mikko Lukkari Vesa-Matti Mäkinen Olli-Pekka Ruuskanen Sami Termonen

Lisätiedot

OHJELMISTOTUOTANTOPROJEKTI

OHJELMISTOTUOTANTOPROJEKTI HELSINGIN YLIOPISTO TIETOJENKÄSITTELYTIETEEN LAITOS OHJELMISTOTUOTANTOPROJEKTI ASSARI Käyttöohje versio 1.0 Teemu Andersson Mikko Lukkari Vesa-Matti Mäkinen Olli-Pekka Ruuskanen Sami Termonen 11.5.2004

Lisätiedot

eassari harjoitteluympäristön yleisrakenne

eassari harjoitteluympäristön yleisrakenne eassari harjoitteluympäristön yleisrakenne Harri Laine (20.1.2004) eassari on tietokantapohjainen WWW-sovellus ohjelmallisesti tarkastettavien harjoitus- ja koetehtävien suorittamiseen. Monikielisyys ja

Lisätiedot

Suunnitteludokumentti

Suunnitteludokumentti Suunnitteludokumentti AssariXP Helsinki 13.11.2004 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Mikko Hakila

Lisätiedot

eassari Practicing, assessment and exam engine Harri Laine Taustaa

eassari Practicing, assessment and exam engine Harri Laine Taustaa eassari Practicing, assessment and exam engine Harri Laine Taustaa eassari on tietokantapohjainen ympäristö ohjelmallisesti tarkastettavien harjoitus- ja koetehtävien suorittamiseen. Monikielisyys ja helppo

Lisätiedot

eassari tekninen kuvaus Harri Laine Taustaa

eassari tekninen kuvaus Harri Laine Taustaa eassari tekninen kuvaus Harri Laine Taustaa eassari on tietokantapohjainen ympäristö automaattisesti tarkastettavien harjoitus- ja koetehtävien suorittamiseen. Monikielisyys ja helppo laajennettavuus ovat

Lisätiedot

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Tällä kurssilla on tutustuttu ohjelmistojen mallintamiseen oliomenetelmiä ja UML:ää käyttäen Samaan aikaan järjestetyllä kurssilla on käsitelty

Lisätiedot

Toteutusdokumentti. AssariXP. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Toteutusdokumentti. AssariXP. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Toteutusdokumentti AssariXP Helsinki 9.12.2004 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Mikko Hakila

Lisätiedot

Vaatimusmäärittely. AssariXP. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Vaatimusmäärittely. AssariXP. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Vaatimusmäärittely AssariXP Helsinki 12.10.2004 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti ( ov) Projektiryhmä Mikko Hakila

Lisätiedot

Suunnitteludokumentti

Suunnitteludokumentti Suunnitteludokumentti Koskelo Helsinki 15.12.2004 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Tom Bertell

Lisätiedot

Ylläpitodokumentti. Ohjelmistotuotantoprojektin tietojärjestelmä OhtuTie

Ylläpitodokumentti. Ohjelmistotuotantoprojektin tietojärjestelmä OhtuTie Ylläpitodokumentti Ohjelmistotuotantoprojektin tietojärjestelmä OhtuTie Helsinki 16.7.2004 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti

Lisätiedot

WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa

WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa WWW ja tietokannat WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa tekstiä, kuvia, hyperlinkkejä Staattiset sivut kirjoitettu kerran, muuttaminen käsin ongelmana pysyminen ajantasalla Ylläpito hankalaa,

Lisätiedot

Ylläpitodokumentti. Oppimistavoitteiden hallintajärjestelmä harri

Ylläpitodokumentti. Oppimistavoitteiden hallintajärjestelmä harri Ylläpitodokumentti Oppimistavoitteiden hallintajärjestelmä harri Helsinki 14.12.2007 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti

Lisätiedot

Ylläpitodokumentti. Boa Open Access. Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Ylläpitodokumentti. Boa Open Access. Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Ylläpitodokumentti Boa Open Access Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Ilmari

Lisätiedot

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä www.niksula.cs.hut.fi/~jjkankaa// Demosovelluksen tekninen määrittely v. 0.6 Päivitetty 11.12.2000 klo 20:26 Mickey Shroff 2 (12) Dokumentin versiohistoria Versio Päivämäärä Tekijä / muutoksen tekijä Selite

Lisätiedot

582203 Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus

582203 Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus 582203 Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus Sisältö Mikä on web-sovellus? Selaimen rooli web-sovelluksessa Palvelimen rooli web-sovelluksessa Aineistopyynnöt Tiedon välittäminen

Lisätiedot

Lohtu-projekti. Ylläpitäjän dokumentti. Versiohistoria: Ensimmäinen versio Andreas Asuja

Lohtu-projekti. Ylläpitäjän dokumentti. Versiohistoria: Ensimmäinen versio Andreas Asuja Lohtu-projekti Ylläpitäjän dokumentti Versiohistoria: 1.0 12.5.2003 Ensimmäinen versio Andreas Asuja Helsinki 12. toukokuuta 2003 Kimmo Airamaa, Andreas Asuja, Mari Muuronen, Seppo Pastila, Virve Taivaljärvi

Lisätiedot

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Kirjoita jokaiseen palauttamaasi konseptiin kurssin nimi, kokeen päivämäärä, oma nimi ja opiskelijanumero. Vastaa kaikkiin tehtäviin omille konsepteilleen.

Lisätiedot

KIURU Tietotekniikan sovellusprojekti

KIURU Tietotekniikan sovellusprojekti KIURU Tietotekniikan sovellusprojekti Toni Hilpinen Marko Koivuniemi Jussi Mäkinen Miika Nurminen DOKUMENTIN NIMI dd.mm.yyyy Jyväskylän yliopisto Tietotekniikan laitos Kiuru-projektin tietoja Tekijät:

Lisätiedot

Käyttöohje. AssariXP. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Käyttöohje. AssariXP. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Käyttöohje AssariXP Helsinki 9.12.2004 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Sisällys 1 Johdanto...1 2 Asennusohje...1 3 Käyttöohje...1 3.1 3.2 3.3 3.4 3.4.1 3.4.2

Lisätiedot

Järjestelmäarkkitehtuuri (TK081702)

Järjestelmäarkkitehtuuri (TK081702) Järjestelmäarkkitehtuuri (TK081702) yleistyvät verkkopalveluissa Youtube Google... Avaavat pääsyn verkkopalvelun sisältöön. Rajapintojen tarjoamia tietolähteitä yhdistelemällä luodaan uusia palveluja,

Lisätiedot

Tietotekniikan laitos Käki-projekti TIETOKANTASUUNNITELMA. 1. Johdanto

Tietotekniikan laitos Käki-projekti TIETOKANTASUUNNITELMA. 1. Johdanto Jyväskylän yliopisto SUUNNITELMA Tietotekniikan laitos 5.11.2003 Käki-projekti TIETOKANTASUUNNITELMA 1. Johdanto Suunnitelma sisältää kuvauksen tietokannan suunnittelussa käytetyistä periaatteista, kuvan

Lisätiedot

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto Sisällys 18. bstraktit tietotyypit Johdanto abstrakteihin tietotyyppeihin. Pino ja jono. Linkitetty lista. Pino linkitetyllä listalla toteutettuna. 18.1 18.2 Johdanto Javan omat tietotyypit ovat jo tuttuja:

Lisätiedot

Digitaalisen median tekniikat. JSP ja XML

Digitaalisen median tekniikat. JSP ja XML Digitaalisen median tekniikat JSP ja 28.4.2004 Harri Laine 1 JSP hyvin lyhyesti JSP on Java-pohjainen skriptikieli JSP:llä laadittu sivu käännetään java-servletiksi (sivun toteutus vastaa servlettiluokan

Lisätiedot

Digitaalisen median tekniikat. JSP ja XML Harri Laine 1

Digitaalisen median tekniikat. JSP ja XML Harri Laine 1 Digitaalisen median tekniikat JSP ja XML 28.4.2004 Harri Laine 1 JSP hyvin lyhyesti JSP on Java-pohjainen skriptikieli JSP:llä laadittu sivu käännetään java-servletiksi (sivun toteutus vastaa servlettiluokan

Lisätiedot

Tietokanta.java Luokka tarjoaa välineet tietokannan lukemiseen. Haetuista tiedoista muodostetaan kurssi- ja opetus-olioita.

Tietokanta.java Luokka tarjoaa välineet tietokannan lukemiseen. Haetuista tiedoista muodostetaan kurssi- ja opetus-olioita. Arkkitehtuurikuvaus Käytössä olevat java-luokat: Kansio: /WEB_INF/classes/ - käännetyt luokat Kansio: /WEB_INF/src/ - lähdekoodi custom_pojos: Kurssi.java Java-luokka, jonka sisältö vastaa tietokannassa

Lisätiedot

18. Abstraktit tietotyypit 18.1

18. Abstraktit tietotyypit 18.1 18. Abstraktit tietotyypit 18.1 Sisällys Johdanto abstrakteihin tietotyyppeihin. Pino ja jono. Linkitetty lista. Pino linkitetyllä listalla toteutettuna. 18.2 Johdanto Javan omat tietotyypit ovat jo tuttuja:

Lisätiedot

ALMU-järjestelmä Suunnitteludokumentti

ALMU-järjestelmä Suunnitteludokumentti ALMU-järjestelmä Suunnitteludokumentti Helsingin yliopisto TKTL Ohjelmistotuotantoprojekti Projektiryhmä: Peter Ahlberg, Marika Korhonen, Tomi Kuittinen, Iikka Meriläinen, Jukka Narkiniemi SISÄLLYS 1 Johdanto...

Lisätiedot

Tehtävä 1. Tietojen lisääminen, poistaminen, päivittäminen ja tulostaminen

Tehtävä 1. Tietojen lisääminen, poistaminen, päivittäminen ja tulostaminen Esimerkki: Tehtävä 1. Tietojen lisääminen, poistaminen, päivittäminen ja tulostaminen Luo tietokanta Koulu. Tietokantaan lisätään 3 taulua. Kurssit-taulu: kurssiid not null primary key INTEGER aineid not

Lisätiedot

A274101 TIETORAKENTEET JA ALGORITMIT

A274101 TIETORAKENTEET JA ALGORITMIT A274101 TIETORAKENTEET JA ALGORITMIT PERUSTIETORAKENTEET LISTA, PINO, JONO, PAKKA ABSTRAKTI TIETOTYYPPI Tietotyyppi on abstrakti, kun se on määritelty (esim. matemaattisesti) ottamatta kantaa varsinaiseen

Lisätiedot

Tietokantasovelluksen määrittelydokumentti

Tietokantasovelluksen määrittelydokumentti hyväksymispäivä arvosana arvostelija Tietokantasovelluksen määrittelydokumentti Tuomas Husu Helsinki 19.4.2008 582203 Tietokantasovellus, kevät 2008 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen

Lisätiedot

Testidatan generointi

Testidatan generointi Testidatan generointi Anu Ahonen Kevät 2008 Tämä työ on tehty Creative Commons -lisenssin alla Työn tarkasti 9.4.2008 Jouni Huotari (JAMK/IT) 1 SISÄLTÖ 1 TYÖN LÄHTÖKOHDAT JA TOTEUTUS...2 2 TESTIDATAN GENEROINTI

Lisätiedot

Sisältö. 22. Taulukot. Yleistä. Yleistä

Sisältö. 22. Taulukot. Yleistä. Yleistä Sisältö 22. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 22.1 22.2 Yleistä

Lisätiedot

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++? JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,

Lisätiedot

Suunnitteludokumentti

Suunnitteludokumentti Suunnitteludokumentti Koskelo Helsinki 15.12.2004 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Tom Bertell

Lisätiedot

Uutisjärjestelmä. Vaatimusmäärittely. Web-palvelujen kehittäminen. Versio 1.3

Uutisjärjestelmä. Vaatimusmäärittely. Web-palvelujen kehittäminen. Versio 1.3 Uutisjärjestelmä Vaatimusmäärittely Versio 1.3 Sisällys 1 Muutoshistoria... 4 2 Viitteet... 4 3 Sanasto... 4 3.1 Lyhenteet... 4 3.2 Määritelmät... 4 4 Johdanto...5 4.1 Järjestelmän yleiskuvaus... 5 4.2

Lisätiedot

Tentti erilaiset kysymystyypit

Tentti erilaiset kysymystyypit Tentti erilaiset kysymystyypit Monivalinta Monivalintatehtävässä opiskelija valitsee vastauksen valmiiden vastausvaihtoehtojen joukosta. Tehtävään voi olla yksi tai useampi oikea vastaus. Varmista, että

Lisätiedot

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2 4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä muuttujia ja vakioita. Esittely

Lisätiedot

ELM GROUP 04. Teemu Laakso Henrik Talarmo

ELM GROUP 04. Teemu Laakso Henrik Talarmo ELM GROUP 04 Teemu Laakso Henrik Talarmo 23. marraskuuta 2017 Sisältö 1 Johdanto 1 2 Ominaisuuksia 2 2.1 Muuttujat ja tietorakenteet...................... 2 2.2 Funktiot................................

Lisätiedot

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Matti Luukkainen 10.12.2009 Tässä esitetty esimerkki on mukaelma ja lyhennelmä Robert Martinin kirjasta Agile and Iterative Development löytyvästä

Lisätiedot

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4) 2. Lisää Java-ohjelmoinnin alkeita Muuttuja ja viittausmuuttuja Vakio ja literaalivakio Sijoituslause Syötteen lukeminen ja Scanner-luokka 1 Muuttuja ja viittausmuuttuja (1/4) Edellä mainittiin, että String-tietotyyppi

Lisätiedot

Linkitetystä listasta perittyä omaa listaa käytetään muun muassa viestiin liittyvien vastausten säilömiseen.

Linkitetystä listasta perittyä omaa listaa käytetään muun muassa viestiin liittyvien vastausten säilömiseen. Harjoitustyö 1 Harjoitustyö Tehtävä: ohjelmoi Java-kielellä keskustelualuetta simuloiva olioperustainen ohjelma (Simple Oope Board, S.O.B). Linkitetystä listasta perittyä omaa listaa käytetään muun muassa

Lisätiedot

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä

Lisätiedot

Matematiikan oppifoorumi Projektisuunnitelma

Matematiikan oppifoorumi Projektisuunnitelma Matematiikan oppifoorumi Projektisuunnitelma Carl Johansson Jukka Kariola Outi Marttila Helena Venäläinen Sampsa Virtanen Ohjaaja Jukka Eskola Asiakas Mikko Mäkelä Ohjelmistotuotantoprojekti 29.10.1999

Lisätiedot

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi. 11. Rajapinnat 11.1 Sisällys Johdanto. Abstrakti luokka vai rajapinta? Rajapintojen hyötyjä. Kuinka rajapinnat määritellään ja otetaan käyttöön? Eläin, nisäkäs, kissa ja rajapinta. Moniperiytyminen rajapintojen

Lisätiedot

Testaussuunnitelma Labra

Testaussuunnitelma Labra Testaussuunnitelma Labra Helsinki 25.8.2008 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos 1 Kurssi 581260 Ohjelmistotuotantoprojekti (9+1op) Projektiryhmä Anssi Kapanen,

Lisätiedot

Java-API, rajapinnat, poikkeukset, UML,...

Java-API, rajapinnat, poikkeukset, UML,... Java-API, rajapinnat, r poikkeukset, UML,... Janne Käki 12.10.2006 Keskeisimmät Java-API:n pakkaukset API = Application Programming Interface eli sovellusohjelmointirajapinta (!) pakkaus (engl. package)

Lisätiedot

Lohtu-projekti. Testaussuunnitelma

Lohtu-projekti. Testaussuunnitelma Lohtu-projekti Testaussuunnitelma Versiohistoria: 1.0 19.2.2003 1. versio Mari 1.1 20.2.2003 Muutoksia Mari 1.2 25.2.2003 Katselmoinnissa esiin tulleet Mari muutokset 1.3 17.3.2003 2. syklissä tehtävät

Lisätiedot

INTINU13A6 Java sovellukset

INTINU13A6 Java sovellukset Johdanto Kurssin tavoitteena oli luoda tietokantaa käyttävä websovellus Java EE ohjelmointikielellä, sekä hyödyntää muun muassa servlettejä sekä JSP sivuja ja muita tekniikoita monipuolisesti. Webserverinä

Lisätiedot

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2 6. Metodit 6.1 Sisällys Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2 Oliot viestivät metodeja kutsuen Olio-ohjelmoinnissa ohjelma

Lisätiedot

Ylläpitodokumentti NJC2. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Ylläpitodokumentti NJC2. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Ylläpitodokumentti NJC2 Helsinki 11.5.2004 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti ( ov) Projektiryhmä Eero Anttila Olli

Lisätiedot

Ylläpitodokumentti. Kohahdus. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Ylläpitodokumentti. Kohahdus. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Ylläpitodokumentti Kohahdus Helsinki 14.12.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti ( ov) Projektiryhmä Taro Morimoto,

Lisätiedot

Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC)

Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC) HAAGA-HELIA ICT1TA006: Ohjelmointi 1 /5 Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC) (Lähteet: Oracle java jdbc Tutorial, Arvo Lipitsäinen: Tietokannan käsittely JDBC:n

Lisätiedot

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1 15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Geneerinen ohjelmointi. Lueteltu tyyppi enum. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien silmukoimiseen:

Lisätiedot

Käyttöohje. Ticket Inspector. Versio 1.0. Sportum Oy

Käyttöohje. Ticket Inspector. Versio 1.0. Sportum Oy Käyttöohje Ticket Inspector Versio 1.0 Sportum Oy 10.5.2017 Sivu 1 Sisällysluettelo 1. Yleistä... 2 2. Kirjautuminen ensimmäisellä kerralla / PIN-koodin unohtuessa... 3 3. Tunnistautuminen... 4 4. Päänäkymä...

Lisätiedot

Testausdokumentti. Kivireki. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Testausdokumentti. Kivireki. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Testausdokumentti Kivireki Helsinki 17.12.2007 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Anu Kontio Ilmari

Lisätiedot

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1 15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien

Lisätiedot

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki Sisällys JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta Abstrakti luokka ja metodi Rajapintamäärittely (interface) Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto 13.10.2000 E.

Lisätiedot

Javan perusteita. Janne Käki

Javan perusteita. Janne Käki Javan perusteita Janne Käki 20.9.2006 Muutama perusasia Tietokone tekee juuri (ja vain) sen, mitä käsketään. Tietokone ymmärtää vain syntaksia (sanojen kirjoitusasua), ei semantiikkaa (sanojen merkitystä).

Lisätiedot

Taulukot. Jukka Harju, Jukka Juslin 2006 1

Taulukot. Jukka Harju, Jukka Juslin 2006 1 Taulukot Jukka Harju, Jukka Juslin 2006 1 Taulukot Taulukot ovat olioita, jotka auttavat organisoimaan suuria määriä tietoa. Käsittelylistalla on: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti

Lisätiedot

Rajapinta (interface)

Rajapinta (interface) 1 Rajapinta (interface) Mikä rajapinta on? Rajapinta ja siitä toteutettu luokka Monimuotoisuus ja dynaaminen sidonta Rajapinta vs periytyminen 1 Mikä rajapinta on? Rajapintoja käytetään, kun halutaan määritellä

Lisätiedot

Ylläpitodokumentti Labra

Ylläpitodokumentti Labra Ylläpitodokumentti Labra Helsinki 26.8.2008 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos 1 Kurssi 581260 Ohjelmistotuotantoprojekti (9+1op) Projektiryhmä Anssi Kapanen,

Lisätiedot

Rajapintakuvaus Liikenneluvat

Rajapintakuvaus Liikenneluvat Rajapintakuvaus Liikenneluvat MUUTOSHISTORIA Versio Päiväys Laatija Muutoksen kuvaus / hyväksyjä 0.1 Tapio Oikarainen Ensimmäinen versio 2(7) Sisällysluettelo 1. Johdanto... 4 1.1. Yleistä... 4 1.2. Rajaus...

Lisätiedot

Java kahdessa tunnissa. Jyry Suvilehto

Java kahdessa tunnissa. Jyry Suvilehto Java kahdessa tunnissa Jyry Suvilehto Ohjelma Ohjelmointiasioita alkeista nippelitietoon n. 45 min Tauko 10 min Oliot, luokat ja muut kummajaiset n. 45 min Kysykää Sisältöä ei oikeasti ole 2x45 min täytteeksi,

Lisätiedot

Sisältö. 2. Taulukot. Yleistä. Yleistä

Sisältö. 2. Taulukot. Yleistä. Yleistä Sisältö 2. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.1 2.2 Yleistä

Lisätiedot

Osallistavan suunnittelun kyselytyökalu

Osallistavan suunnittelun kyselytyökalu Osallistavan suunnittelun kyselytyökalu Käyttöohje ARFM- hankkeessa jatkokehitetylle SoftGIS-työkalulle Dokumentti sisältää ohjeistuksen osallistavan suunnittelun työkalun käyttöön. Työkalu on käytettävissä

Lisätiedot

emo eassari Moodle-ympäristössä Vaatimusmäärittely

emo eassari Moodle-ympäristössä Vaatimusmäärittely emo eassari Moodle-ympäristössä Vaatimusmäärittely Helsinki 15.12.06 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteenlaitos Kurssi 581260 Ohjelmistotuotantoprojekti (9+1op/6ov) Projektiryhmä

Lisätiedot

Tietokannat II -kurssin harjoitustyö

Tietokannat II -kurssin harjoitustyö Tietokannat II -kurssin harjoitustyö Jyri Lehtonen (72039), jkoleh@utu.fi Azad Hajipour (72187), azhaji@utu.fi 10.6.2007 Sisältö 1. Tietokannan kuvaus... 1 1.1 Tietokannan rakenne... 1 1.2 Relaatiokaava

Lisätiedot

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma. 2. Taulukot 2.1 Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.2 Yleistä

Lisätiedot

Tietokanta (database)

Tietokanta (database) Tietokanta Tietokanta (database) jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja 1 Tiedosto Ohjelmointikielissä apumuistiin tallennettuja tietoja käsitellään

Lisätiedot

Ohjelmisto on selainpohjaisen käyttöliittymän tarjoava tietokantajärjestelmä merikotkien seurantaan WWF:n Merikotka-työryhmän tarpeisiin.

Ohjelmisto on selainpohjaisen käyttöliittymän tarjoava tietokantajärjestelmä merikotkien seurantaan WWF:n Merikotka-työryhmän tarpeisiin. TIETOKANTA MERIKOTKIEN SEURANTAAN Käyttöohje Versiohistoria: Versio Päivämäärä Kuvaus Tekijä 1.0 11.12.2007 Ensimmäinen luonnos Janne Piippo 2.0 13.12.2007 Virallinen verio Janne Piippo HELSINGIN YLIOPISTO

Lisätiedot

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista Sisällys 1. Omat operaatiot Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

Lisätiedot

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

Sisällys. 11. Rajapinnat. Johdanto. Johdanto Sisällys 11. ajapinnat. bstrakti luokka vai rajapinta? ajapintojen hyötyjä. Kuinka rajapinnat määritellään ja otetaan käyttöön? Eläin, nisäkäs, kissa ja rajapinta. Moniperiytyminen rajapintojen avulla.

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Standardi- ja tietorakenneluokkia

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Standardi- ja tietorakenneluokkia Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Standardi- ja tietorakenneluokkia Standardi- ja tietorakenneluokkia Javan API, ArrayList Ohjelmointirajapinta (Application Programming Interface, API)

Lisätiedot

9. Periytyminen Javassa 9.1

9. Periytyminen Javassa 9.1 9. Periytyminen Javassa 9.1 Sisällys Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Ilmentymämetodien korvaaminen. Luokkametodien peittäminen. Super-attribuutti. Override-annotaatio.

Lisätiedot

Määrittelydokumentti NJC2. Helsinki 11.2.2004 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Määrittelydokumentti NJC2. Helsinki 11.2.2004 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Määrittelydokumentti NJC2 Helsinki 11.2.2004 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti ( ov) Projektiryhmä Eero Anttila Olli

Lisätiedot

Testausdokumentti. Sivu: 1 / 10. Ohjelmistotuotantoprojekti Sheeple Helsingin yliopisto. Versiohistoria

Testausdokumentti. Sivu: 1 / 10. Ohjelmistotuotantoprojekti Sheeple Helsingin yliopisto. Versiohistoria Sivu: 1 / 10 Testausdokumentti Ohjelmistotuotantoprojekti Sheeple Helsingin yliopisto Versiohistoria Versio Päivitykset 0.4 Lisätty mod_form.php -tiedostoon liittyvät testit 0.5 Lisätty johdanto 1.0 Dokumentti

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Tietorakenneluokkia 2: HashMap, TreeMap

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Tietorakenneluokkia 2: HashMap, TreeMap Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Tietorakenneluokkia 2: HashMap, TreeMap Tietorakenneluokkia ja -rajapintoja Java tarjoaa laajan kokoelman tietorakennerajapintoja ja - luokkia. Aiemmin

Lisätiedot

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14 Arkkitehtuurikuvaus Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy Ryhmä 14 Muutoshistoria Versio Pvm Päivittäjä Muutos 0.4 1.11.2007 Matti Eerola 0.3 18.10.2007 Matti Eerola 0.2

Lisätiedot

T-111.361 Hypermediadokumentin laatiminen. Sisältö. Tavoitteet. Mitä on www-ohjelmointi? Arkkitehtuuri (yleisesti) Interaktiivisuuden keinot

T-111.361 Hypermediadokumentin laatiminen. Sisältö. Tavoitteet. Mitä on www-ohjelmointi? Arkkitehtuuri (yleisesti) Interaktiivisuuden keinot T-111.361 Hypermediadokumentin laatiminen -Ohjelmointi Peruskäsitys www-ohjelmoinnin kentästä Tekniikat interaktiivisuuden toteuttamiseen tekniikat tekniikat Tietokannat Juha Laitinen TKK/TML juha.laitinen@hut.fi

Lisätiedot

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006 TURUN YLIOPISTO DEMO III Informaatioteknologian laitos tehtävät Olio-ohjelmoinnin perusteet / Salo 15.2.2006 1. Tässä tehtävässä tarkastellaan erääntyviä laskuja. Lasku muodostaa oman luokkansa. Laskussa

Lisätiedot

4. Luokan testaus ja käyttö olion kautta 4.1

4. Luokan testaus ja käyttö olion kautta 4.1 4. Luokan testaus ja käyttö olion kautta 4.1 Olion luominen luokasta Java-kielessä olio määritellään joko luokan edustajaksi tai taulukoksi. Olio on joukko keskusmuistissa olevia tietoja. Oliota käsitellään

Lisätiedot

XPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy

XPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy IBM Collaboration Forum ٨.٣.٢٠١١ XPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy ٢٠١١ IBM Corporation Domino-sovelluskehitys Nopea kehitysympäristö (Rapid application development,

Lisätiedot

Yhteenvetodokumentti. Halaan-ryhmä. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Yhteenvetodokumentti. Halaan-ryhmä. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Yhteenvetodokumentti Halaan-ryhmä Helsinki 18.12.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Paula

Lisätiedot

Oppimisalusta eassarin TTK-91-tehtävien käyttöohje

Oppimisalusta eassarin TTK-91-tehtävien käyttöohje Oppimisalusta eassarin TTK-91-tehtävien käyttöohje Koskelo Helsinki 15.12.2004 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6

Lisätiedot

13/20: Kierrätys kannattaa koodaamisessakin

13/20: Kierrätys kannattaa koodaamisessakin Ohjelmointi 1 / syksy 2007 13/20: Kierrätys kannattaa koodaamisessakin Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy

Lisätiedot

Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.

Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei. Harjoitustyö 1 Harjoitustyö Tehtävä: ohjelmoi olioperustainen sokkeloseikkailu peli Javakielellä. Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen

Lisätiedot

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta. Malli-näkym kymä-ohjain arkkitehtuurit (Model-View View-Controller, MVC) Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta. Lähtökohdat: Sovelluksen

Lisätiedot

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset Tekninen määrittely: Editori Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset Sisällysluettelo 1. Johdanto...4 1.1. Tarkoitus ja kattavuus...4 1.2. Tuote ja ympäristö...4 1.3. Määritelmät,

Lisätiedot

Ohjelmiston toteutussuunnitelma

Ohjelmiston toteutussuunnitelma Ohjelmiston toteutussuunnitelma Ryhmän nimi: Tekijä: Toimeksiantaja: Toimeksiantajan edustaja: Muutospäivämäärä: Versio: Katselmoitu (pvm.): 1 1 Johdanto Tämä luku antaa yleiskuvan koko suunnitteludokumentista,

Lisätiedot

Mallintaminen; kurssipalautejärjestelmä

Mallintaminen; kurssipalautejärjestelmä Thomas Gustafsson & Saara Salminen Mallintaminen; kurssipalautejärjestelmä Metropolia Ammattikorkeakoulu Insinööri (AMK) Tietotekniikan koulutusohjelma Mallintaminen, tehtävä 1 21.1.2012 Tiivistelmä Tekijä(t)

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman

Lisätiedot

Ylläpitodokumentti Mooan

Ylläpitodokumentti Mooan Ylläpitodokumentti Mooan Helsinki 16.08.06 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (9+1op/6ov) Projektiryhmä Heikki Aitakangas

Lisätiedot

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta. Malli-näkym kymä-ohjain arkkitehtuurit (Model-View View-Controller, MVC) Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta. Lähtökohdat: Sovelluksen

Lisätiedot

1. Omat operaatiot 1.1

1. Omat operaatiot 1.1 1. Omat operaatiot 1.1 Sisällys Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

Lisätiedot

Jokaisella tiedostolla on otsake (header), joka sisältää tiedostoon liittyvää hallintatietoa

Jokaisella tiedostolla on otsake (header), joka sisältää tiedostoon liittyvää hallintatietoa Tietojen tallennusrakenteet Jokaisella tiedostolla on otsake (header), joka sisältää tiedostoon liittyvää hallintatietoa tiedot tiedostoon kuuluvista lohkoista esim. taulukkona, joka voi muodostua ketjutetuista

Lisätiedot

HELIA 1 (14) Outi Virkki Tiedonhallinta

HELIA 1 (14) Outi Virkki Tiedonhallinta HELIA 1 (14) Luento SQL... 2 Historiaa... 2 Standardit... 3 Käyttö... 4 DDL... 5 Tietokantaobjektien määrittely... 5 SQL:n tietotyypit... 6 Eheyssääntöjen määrittely... 9 Indeksin määrittely... 11 Syntaksikuvaukset...

Lisätiedot

CODEONLINE. Monni Oo- ja Java-harjoituksia. Version 1.0

CODEONLINE. Monni Oo- ja Java-harjoituksia. Version 1.0 CODEONLINE Monni Oo- ja Java-harjoituksia Version 1.0 Revision History Date Version Description Author 25.10.2000 1.0 Initial version Juha Johansson Inspection History Date Version Inspectors Approved

Lisätiedot

Suunnitteluvaihe prosessissa

Suunnitteluvaihe prosessissa Suunnittelu Suunnitteluvaihe prosessissa Silta analyysin ja toteutuksen välillä (raja usein hämärä kumpaankin suuntaan) Asteittain tarkentuva Analyysi -Korkea abstraktiotaso -Sovellusläheiset käsitteet

Lisätiedot