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

Samankaltaiset tiedostot
Suunnitteludokumentti

Suunnitteludokumentti

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

Ylläpitodokumentti. Ohjelmistotuotantoprojektin tietojärjestelmä OhtuTie

Vaatimusdokumentti. Koskelo. Helsinki Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Testaussuunnitelma. Koskelo. Helsinki Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Testausraportti. Koskelo. Helsinki Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

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

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

Järjestelmän syötteet ja tulosteet Kohahdus Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

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

Asennusohje. Sahara-ryhmä. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Ylläpitodokumentti. Oppimistavoitteiden hallintajärjestelmä harri

Projektisuunnitelma. Koskelo. Helsinki Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä

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

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

OHJELMISTOTUOTANTOPROJEKTI

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

Valppaan asennus- ja käyttöohje

TIEDONHALLINTA - SYKSY Luento 11. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

Testausraportti v.1.3

Tietokannat II -kurssin harjoitustyö

12. Näppäimistöltä lukeminen 12.1

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

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

Vaatimusdokumentti. Kohahdus. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Metodien tekeminen Javalla

Ylläpitodokumentti Mooan

5. HelloWorld-ohjelma 5.1

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

Asennusohje. Sahara-ryhmä. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Subversion-ohje. Linux Traffic Control-käyttöliittymä Ryhmä paketti2

Testausraportti. Orava. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa

OHJELMISTOTUOTANTOPROJEKTI

OHJELMISTOTUOTANTOPROJEKTI

Javan perusteita. Janne Käki

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

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot)

8. Näppäimistöltä lukeminen 8.1

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

P e d a c o d e ohjelmointikoulutus verkossa

Testausraportti. Oppimistavoitteiden hallintajärjestelmä harri

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

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

TIETOKANTOJEN PERUSTEET MARKKU SUNI

Lohtu-projekti. Testaussuunnitelma

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

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

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

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

eassari harjoitteluympäristön yleisrakenne

Olio-ohjelmointi Javalla

Tietokannat II -kurssin harjoitustyö

Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT. Jouni Huotari S2008

Luento 5. Timo Savola. 28. huhtikuuta 2006

PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

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

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen

Testaussuunnitelma PULSU. Syksy 2008 Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Ohjelmoinnin perusteet Y Python

Kehitysohje. ETL-työkalu. ExtraTerrestriaLs / Aureolis Oy

8. Näppäimistöltä lukeminen 8.1

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

Makrojen mystinen maailma lyhyt oppimäärä

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

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

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

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu

Mikä yhteyssuhde on?

Testaussuunnitelma Labra

Lohtu-projekti. Testiraportti. Versiohistoria: syklin toteutuksen testit. 1. ajo Virve

LINUX-HARJOITUS, MYSQL

Ohjelmoinnin perusteet Y Python

Kirjasto Relaatiotietokannat Kevät Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

P e d a c o d e ohjelmointikoulutus verkossa

Sukupuu -ohjelma. Ossi Väre ( ) Joni Virtanen ( )

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

Uutta Remote Support Platform 3.1 -versiossa

Testausdokumentti NJC2. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Projektisuunnitelma. KotKot. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Anne Benson. Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen:

Käyttöohje. Boa Open Access. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Algoritmit 1. Luento 3 Ti Timo Männikkö

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

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

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

HELIA TIKO-05 1 (17) ICT03D Tieto ja tiedon varastointi Räty, Virkki

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Testausdokumentti NJC2. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Testaussuunnitelma. Ohjelmistotuotantoprojekti Nero. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Tikon Ostolaskujenkäsittely/Web-myyntilaskutus versio 6.4.0

Fakta versio Forecast versio

Ylläpitodokumentti Labra

Transkriptio:

Ylläpitodokumentti Koskelo Helsinki 15.12.2004 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Tom Bertell Johan Brunberg Lauri Liuhto Eeva Nevalainen Harri Tuomikoski Asiakas Teemu Kerola Johtoryhmä Juha Taina Turjo Tuohiniemi Kotisivu http://www.cs.helsinki.fi/group/koskelo/ Versiohistoria Versio Päiväys Tehdyt muutokset 0.1 8.12.2004 Ensimmäinen versio 1.0 15.12.2004 Palautettu versio

Sisältö i 1 Järjestelmän asennus 1 1.1 Ohjelmakoodi............................... 1 1.2 Dokumentaatiot.............................. 1 1.3 Ympäristö................................. 1 1.4 Asennuksen vaiheet............................ 1 1.5 Käyttö................................... 2 2 Toteuttamatta jääneet järjestelmän osat 3 3 Uusien kriteerien lisääminen vanhoihin tehtäviin 3 4 Uusien TTK91-tehtävien lisääminen järjestelmään 5 4.1 Yleistä................................... 5 4.2 Composer osajärjestelmä......................... 5 4.3 Analyser osajärjestelmä......................... 7 4.4 Displayer osajärjestelmä......................... 7 Liitteet 1 Koskelon sql-lauseet

1 Järjestelmän asennus 1 1.1 Ohjelmakoodi Ohjelmakoodi löytyy war-muodossa projektin kotisivulta osoitteesta: http://www. cs.helsinki.fi/group/koskelo/koskelo.war. Koskelon ohjelmakoodi sisältää Koski-ryhmän Titokoneen ja Assari-ryhmän tuottaman ohjelmakoodin. Jakelupaketin hakemistorakenne on seuraava: /WEB-INF/classes/fi/helsinki/cs/koskelo, sisältää Koskelon koodin. /WEB-INF/classes/fi/hy/eassari, sisältää Assarin koodin. /WEB-INF/classes/fi/hu/cs/titokone, sisältää Titokoneen koodin. /jsp, sisältää sovelluksen käyttämät jsp-sivut. 1.2 Dokumentaatiot Koskelo-projektin dokumentaatio: http://www.cs.helsinki.fi/group/koskelo/. Koski-projektin dokumentaatio: http://www.cs.helsinki.fi/group/koski/. Assari-projektin dokumentaatio: http://www.cs.helsinki.fi/group/assari/. 1.3 Ympäristö Sovellus on valmiiksi asennettuna Tietojenkäsittelytieteen laitoksen palvelimelle osoitteeseen http://db.cs.helsinki.fi/tomcat/tkt_kos/assari/. Sovelluspalvelimena toimii Apache Tomcat ja tietokanta on bodbackan Oracle9. 1.4 Asennuksen vaiheet Järjestelmän alla toimivan tietokannan luontilauseet löytyvät Assari-projektin ylläpitodokumentista. Koskelon tekemät lisäykset tietokantaan ovat liitteenä ja ne ovat myös jakelupaketissa tiedostossa koskelo.sql. 1. Kopioidaan ohjelmakoodi koskelo.war sovelluspalvelimelle suoritettavien sovellusten hakemistoon. Suoritettavien sovellusten hakemisto riippuu käytettävästä sovelluspalvelimesta. Tomcat-ympäristössä hakemisto on muotoa /tomcat/webapps/sovelluksen NIMI.

2. Kun ohjelmakoodi on kopioitu oikeaan hakemistoon, niin se puretaan komennolla unzip -o koskelo.war. 3. Muokataan confil.txt tiedostoon käytettävän tietokannan asetukset. Oletuksena käytössä on tietokantapalvelimen bodbacka.cs.helsinki.fi Oracle9iperustainen tietokantainstanssi test. 4. Edellisen kohdan tietokanta-asetukset täytyy myöskin muuttaa luokkaan DatabaseBase, jonka jälkeen luokka pitää kääntää. Tämä johtuu Authorizationja LanguageHandler-luokista, jotka eivät käytä confil.txt tiedostossa määriteltyjä asetuksia. 5. Hakemistoon /tomcat/webapps pitää luoda tiedosto SOVELLUKSEN NI- MI.xml. Jonka sisältö on seuraava: <Context path="/tomcat/*user*/*sovelluksen_nimi*" docbase="/home/*user*/tomcat/webapps/*sovelluksen_nimi*/" debug="0" reloadable="true" crosscontext="true" override="true"/> 6. Käynnistetään sovelluspalvelin, jonka jälkeen ohjelma on käyttövalmis. Tomcatympäristö käynnistetään komennolla start-tomcat ja pysäytetään komennolla stop-tomcat. 7. Tomcatin web.xml vaatii uuteen ympäristöön asennettaessa todennäköisesti muutoksia. Tiedoston saa Koskelon jakelupaketista. 2 1.5 Käyttö Tehtävien esityksen testisivu on osoitteessa: http://db.cs.helsinki.fi/tomcat/ tkt_kos/assari/displayertest2.jsp. Listassa olevat tehtävät on liitetty kurssiin coursex1 ja moduuliin modulex1. Tehtävien luontisivulle pääse sivun: http://db.cs.helsinki.fi/tomcat/tkt_ kos/assari/jsp/login.jsp kautta. Kirjautumissivulle kelpaa mikä tahansa tunnus. Luotuja tehtäviä ei pysty suoraan ratkaisemaan, koska tehtävien tallentamisjärjestelmä ei lisää tehtävää taskinmodule-tauluun. Tällä hetkellä liittäminen pitää tehdä käsin. Esimerkki tehtävän lisäämisestä: 1. Luodaan uusi tehtävä esim. nimellä testi.

3 2. Haetaan tehtävän taskid tietokannasta: select taskid from task where taskname = testi ; 3. Lisätään tehtävän tiedot taskinmodule tauluun: insert into taskinmodule values( coursex1, modulex1, taskid, taskid, -1, N, N, N, Y, 100) 4. Jotta tehtävä näkyy esityksen testisivulla, pitää displayertest2.jsp:hen lisätä rivi: <OPTION> taskid </OPTION>. 2 Toteuttamatta jääneet järjestelmän osat Projektin oli alunperin tarkoitus toteuttaa dynaaminen tehtävä järjestelmään, mikä kuitenkin aikataulun kireyden vuoksi karsittiin pois. Tarkempi kuvaus siitä miten dynaaminen tehtävä oli suunniteltu toteutettavaksi löytyy suunnittelu- ja vaatimusdokumentista. 3 Uusien kriteerien lisääminen vanhoihin tehtäviin Uusia kriteerejä haluttaessa täytyy miettiä minkä tyyppistä tietoa kriteeri sisältää. Mikäli kriteeri on pelkkä luku tai muuten vain lyhyt String, niin kannattanee käyttää Javan perustietotyyppejä. Mikäli kyseessä on pari tai vertailu niin kannattaa käyttää valmista TTK91TaskCriteria-luokkaa kääreenä. Uuden kriteerin lisäys vaatii seuraavia muutoksia seuraaviin luokkiin ja jsp-sivuille. StaticTTK91Composer.jsp sekä FillInTTK91Composer.jsp -Kenttä kriteeriä varten. TTK91SyntaxChecker.java -Uuden kriteerikentän lukeminen -Kriteerikentän syntaksin tarkistaminen, käytännössä yksi privaattimetodi lisää, jos uudentyyppinen kriteeri -Käsitellyn kriteerikentän asettaminen TaskOptionsiin -Palautekenttien tulostaminen uudelle kriteerille TTK91TaskOptions.java -Luokkamuuttuja uutta kriteeriä varten -Set -metodi muuttujan asetusta varten

4 -Get -metodi muuttujan hakemista varten TTK91TaskParser.java Koodirivi yksityiseen metodiin assemble, jossa haetaan uusi kenttä TTK91Task- Optionsista ja asetetaan se TaskDTO:n. Esimerkki: arvo = options.[get-metodi] newtask.set(hashmap avain, arvo) Yllä newtask siis ilmentymä luokasta TaskDTO. TTK91FeedbackComposer.java Jokaisen uuden kriteerin kohdalla pitää lisätä seuraava toiminnallisuus: Koodirivi, joka hakee tiedon siitä oliko kriteeri oikein TTK91AnalyseResults- luokan getkriteerinnimi-metodilla. Koodirivi, joka hakee kriteeriin liittyvän palautteen TTK91TaskFeedback-luokan getkriteerinnimifeedbackpositive/negative. Lisäksi HTML-sivulla näkyvä kriteerin kielikohtainen nimiteksti pitää hakea cachesta TaskBase-luokan getattribute-metodilla. StaticTTK91Analyser.java -Todennäköisesti ei mitään muutoksia TTK91RealAnalyser.java - Uusi sisäinen analysointimetodi uudelle kriteeriryhmälle TTK91AnalyseData.java - Mahdollisesti tarvittavan uuden datan esiin kaivelu - Get -metodi uuden datan hakemista varten TTK91AnalyseResults.java -Set -metodi kriteerin oikeellisuuden asettamista varten -Get -metodi oikeellisuuden noutamista varten TTK91AnalyserUtils.java Luokkaan pitää lisätä koodirivi, joka hakee kriteerin cachesta ja lisää sen TTK91- TaskOptions-luokan ilmentymään. Luokassa on apumetodeita erityyppisten kriteerien hakemiseen cachesta. TTK91AnalyserExtraUtils.java Nimestään huolimatta luokka sisältää kirjastometodeja kunkin kriteerin analysointiin. Käytännössä tänne pitää lisätä kirjastometodi, joka ottaa parametrina uudenlaisen kriteerit ja kriteerin analysointiin tarvittavan datan.

4 Uusien TTK91-tehtävien lisääminen järjestelmään 5 Tämä osuus toistaa osittain eassari-projektin ylläpitodokumenttia ja saattaa olla hyvä lukea myöskin se, kun lisätään uusia tehtäviä järjestelmään. 4.1 Yleistä Tehtävätyypin lisääminen luokkaan TaskTypes Esimerkkejä: public static final String FILLIN TTK91 = fillinttk91task ; public static final String DYNAMIC TTK91 = dynamicttk91task ; Tehtävän tapahtumien lisääminen luokkaan Events eassarin servletit kuten TaskDefinitionController saavat post-kutsun mukana kentän event joka ilmoittaa kokonaislukuna mitä silloisella kutsulla halutaan tehdä. Tapahtumat määritellään luokkaan Events. Esimerkkejä: public static final int STATIC TTK91 COMPOSE = 27; public static final int STATIC TTK91 EDIT = 28; 4.2 Composer osajärjestelmä Tehtävän lisääminen optio-boxiin tiedostoon tasksettings.jsp Esimerkki: <option value="<%=tasktypes.static_tt91_task%>"> <%=cache.getattribute("d", "staticttk91taskcomposer", "staticttk91tasklabel", lang)%> </option> Koodattava tehtäväkohtainen JSP määrittelysivu Esimerkkinä ja pohjana voi käyttää eassarin aiempia JSP-sivuja. Otettava huomioon erityisesti piilokentät mitkä liittyvät sessioihin. Kentistä tarkemmin Assariprojektin suunnitteludokumentaatiossa. Toiminnallisuus luokkaan TTK91SyntaxChecker Tätä servlettiä ei käytännössä kannata käyttää, jos uuden tehtävätyypin kriteerikentät poikkeavat sisällöl-

tään nykyisestä. Muissa tapauksissa uusi tehtävätyyppi saattaa vaatia muutaman tehtävätyyppikohtaisen if-lausekkeen. Vaaditaan ainakin uusien kenttien lukeminen ja niiden tallentaminen taskoptionsiin. Todennäköisesti halutaan uusille kentille toteuttaa jonkinlainen apumetodi syntaksintarkistukseen. Jos mitään uusia kriteerejä ei tarvita, eikä kriteerien syntaksi muutu, mitään muutoksia ei tarvitse tehdä. Toiminnallisuus luokkaan TTK91TaskOptions Uuden tehtävän lisäys saattanee vaatia myöskin uusia kriteerejä, jolloin TTK91TaskOptions tarvitsee luokkamuuttujat sekä set- ja get-metodit ko. kriteereille. Toiminnallisuus luokkana TTK91TaskCriteria Luokan ei suositella toteuttavan enempää toimintaa kuin nyt. Mikäli muunlaisia kääreluokkia uusille kriteereille tarvitsee, niin mieluummin kokonaan uusi luokka. Toiminnallisuus luokkaan TTK91TaskFeedback Uusille kriteereille oltava myöskin palautteet. Luokkamuuttujat sekä set- ja getmetodit positiiviselle, negatiiviselle ja kenties laadulliselle palautteelle (kriteeristä riippuen). Toiminnallisuus luokkaan TaskDefinitionController If-lause kohtaan [case Events.SUBMIT TASK], joka ohjaa kutsun oikealle tehtävän määrittelysivulle. Case joka tunnistaa tehtävän submit eventin ja ohjaa toiminnan eteenpäin metodille joka koostaa TaskDTO:n. Eli TTK91-tehtävän ollessa kyseessä kutsutaan TTK91TaskParserin sopivaa metodia. Assemble-metodi luokkaan TTK91TaskParser Koodattava uudelle tehtävälle metodi joka kerää metodin kutsussa saaduista PostParameterParserista ja HttpSessiosta tehtävän määrittelytiedot ja asettaa ne TaskDTO:n. Mikäli vanha assemble ei tehtävään sovellu. Tehtävän kenttien lisääminen tietokantaan Katso esimerkit tämän dokumentin liitteistä ja Assari-projektin ylläpitodokumentin liitteistä vastaavia malleja. Kälin tekstien lisääminen tietokantaan eassarin sivuilla näkyvät tekstit on talletettu tietokantaan. Esimerkit tekstien lisäämisestä tämän dokumentin liitteissä ja Assari-projektin ylläpitodokumentin liitteissä vastaavia malleja. JSP-sivuilla tekstin saa haettua kannasta esimerkiksi seuraavasti: cache.getattribute( D, staticttk91taskcomposer, staticttk91tasklabel, lang) cache yllä on ilmentymä luokasta TaskBase. 6

7 4.3 Analyser osajärjestelmä Uusi Analyser Jos tehtävän vastaanoton ja sen analysoinnin välissä tehtävä, malliratkaisut ja kriteerit voidaan pienillä muutoksilla muuttaa sellaisiksi, että tehtävä olisi StaticTTK91Analyserin tarkastettavissa, suositellaan korvattavan metodit gettaskoptions, getexamplecode ja mahdollisesti toteuttamalla jotain vastaavaa opiskelijan vastaukselle. FIXME RealAnalyserin muutokset RealAnalyser tulee toimeen sen kanssa, että jokin kriteeriryhmä on null. Jos kuitenkin halutaan esimerkiksi yleisstatistiikka analysoida aikaisemmasta poikkeavalla tavalla, mutta muut osat kuin ennenkin, kannattanee RealAnalyseriin tehdä if-lause, jolla valitaan tehtävätyypin mukaan sopiva analysoija. Jos muutoksia on useampaan kuin yhteen kriteeriryhmään, on syytä harkita vaihtoehtoista RealAnalyseria, sillä nykyisen toiminnan muuttaminen pitäen rakenteen edelleen järkevänä ja säilyttäen nykyisten tehtävien toiminnan lienee hankalaa ja lopputulos ei välttämättä ole kovin selkeää. AnalyserExtraUtils Luokkaan voi lisätä uudenlaisia kirjastometodeja erityyppisille kriteereille. Nykyisten toiminnan muuttamista ei suositella tutkimatta vaikutuksia nykyisiin tehtävätyyppeihin. 4.4 Displayer osajärjestelmä Uuden tehtävätyypin lisäämiseen riittää vastaavan uuden displayer-komponentin tekeminen.

Liite 1. Koskelon sql-lauseet 1 Uudet tehtävätyypit on lisätty kantaan seuraavasti: insert into tasktype values ( staticttk91task, Koskelo-projektiryhmä, to date( 05.11.2004, DD.MM.YYYY ), null, fi.helsinki.cs.koskelo.displayer.staticttk91displayer, fi.helsinki.cs.koskelo.analyser.staticttk91analyser, http://www.cs.helsinki.fi/group/assari/css/assari.css, null, null); insert into tasktype values ( fillinttk91task, Koskelo-projektiryhmä, to date( 05.11.2004, DD.MM.YYYY ), null, fi.helsinki.cs.koskelo.displayer.fillinttk91displayer, fi.helsinki.cs.koskelo.analyser.fillinttk91analyser, http://www.cs.helsinki.fi/group/assari/css/assari.css, null, null); insert into tasktype values ( dynamicttk91task, Koskelo-projektiryhmä, to date( 05.11.2004, DD.MM.YYYY ), null, fi.helsinki.cs.koskelo.displayer.dynamicttk91displayer, fi.helsinki.cs.koskelo.analyser.dynamicttk91analyser, http://www.cs.helsinki.fi/group/assari/css/assari.css, null, null); Uusien tehtävätyyppien attribuutit on lisätty kantaan seuraavasti: insert into taskattributes values ( staticttk91task, examplecode, TEXT, N, STORED ); insert into taskattributes values ( staticttk91task, taskdescription, TEXT, Y, STORED ); insert into taskattributes values ( staticttk91task, publicinput, TEXT, N, STO- RED ); insert into taskattributes values ( staticttk91task, hiddeninput, TEXT, N, STORED ); insert into taskattributes values ( staticttk91task, comparemethod, NUM, N, STORED ); insert into taskattributes values ( staticttk91task, maxcommands, NUM, N, STORED ); insert into taskattributes values ( staticttk91task, acceptedsize, NUM, N, STO- RED );

insert into taskattributes values ( staticttk91task, optimalsize, NUM, N, STO- RED ); insert into taskattributes values ( staticttk91task, memoryreferences, TEXT, N, STORED ); insert into taskattributes values ( staticttk91task, requiredcommands, TEXT, N, STORED ); insert into taskattributes values ( staticttk91task, forbiddencommands, TEXT, N, STORED ); insert into taskattributes values ( staticttk91task, registervalues, TEXT, N, STORED ); insert into taskattributes values ( staticttk91task, memoryvalues, TEXT, N, STORED ); insert into taskattributes values ( staticttk91task, screenoutput, TEXT, N, STORED ); insert into taskattributes values ( staticttk91task, fileoutput, TEXT, N, STO- RED ); insert into taskattributes values ( staticttk91task, acceptedsizefeedbackpositive, insert into taskattributes values ( staticttk91task, acceptedsizefeedbacknegative, insert into taskattributes values ( staticttk91task, optimalsizefeedbackpositive, insert into taskattributes values ( staticttk91task, optimalsizefeedbacknegative, insert into taskattributes values ( staticttk91task, memoryreferencesfeedbackpositive, insert into taskattributes values ( staticttk91task, memoryreferencesfeedbacknegative, insert into taskattributes values ( staticttk91task, requiredcommandsfeedbackpositive, insert into taskattributes values ( staticttk91task, requiredcommandsfeedbacknegative, 2

insert into taskattributes values ( staticttk91task, forbiddencommandsfeedback- Positive, insert into taskattributes values ( staticttk91task, forbiddencommandsfeedback- Negative, insert into taskattributes values ( staticttk91task, registerfeedbackpositive, TEXT, Y, STORED ); insert into taskattributes values ( staticttk91task, registerfeedbacknegative, insert into taskattributes values ( staticttk91task, memoryfeedbackpositive, TEXT, Y, STORED ); insert into taskattributes values ( staticttk91task, memoryfeedbacknegative, insert into taskattributes values ( staticttk91task, screenoutputfeedbackpositive, insert into taskattributes values ( staticttk91task, screenoutputfeedbacknegative, insert into taskattributes values ( staticttk91task, fileoutputfeedbackpositive, insert into taskattributes values ( staticttk91task, fileoutputfeedbacknegative, insert into taskattributes values ( staticttk91task, registerqualityfeedback, TEXT, Y, STORED ); insert into taskattributes values ( staticttk91task, memoryqualityfeedback, TEXT, Y, STORED ); insert into taskattributes values ( staticttk91task, screenoutputqualityfeedback, insert into taskattributes values ( staticttk91task, fileoutputqualityfeedback, insert into taskattributes values ( staticttk91task, requiredcommandsqualityfeedback, insert into taskattributes values ( staticttk91task, forbiddencommandsquality- Feedback, 3

4 Sivujen kieliversiot lisätty kantaan seuraavasti: Staattisen tehtävänmäärittelyn tekstit insert into attributevalues values ( D, staticttk91taskcomposer, examplecodeheader, FI, C, Ohjelman malliratkaisu ); insert into attributevalues values ( D, staticttk91taskcomposer, taskdescription- Header, FI, C, Tehtävänanto ); insert into attributevalues values ( D, staticttk91taskcomposer, publicinputheader, FI, C, Opiskelijalle näytettävät syötteet ); insert into attributevalues values ( D, staticttk91taskcomposer, hiddeninputheader, FI, C, Salaiset syötteet ); insert into attributevalues values ( D, staticttk91taskcomposer, comparemethod1header, FI, C, Vertailu malliratkaisun suorituksen perusteella ); insert into attributevalues values ( D, staticttk91taskcomposer, comparemethod2header, FI, C, Vertailu valmiisiin kriteereihin ); insert into attributevalues values ( D, staticttk91taskcomposer, maxcommands- Header, FI, C, Ohjelman käskyjen yläraja (silmukan esto) ); insert into attributevalues values ( D, staticttk91taskcomposer, acceptedsizeheader, FI, C, Hyväksymisen yläraja ); insert into attributevalues values ( D, staticttk91taskcomposer, optimalsizeheader, FI, C, Ohjelman ihannekoon yläraja ); insert into attributevalues values ( D, staticttk91taskcomposer, memoryreferencesheader, FI, C, Muistiviitteiden määrä ); insert into attributevalues values ( D, staticttk91taskcomposer, requiredcommandsheader, FI, C, Ohjelmassa vaaditut käskyt ); insert into attributevalues values ( D, staticttk91taskcomposer, forbiddencommandsheader, FI, C, Ohjelmassa kielletyt käskyt ); insert into attributevalues values ( D, staticttk91taskcomposer, registervalues- Header, FI, C, Rekisterien sisältö ); insert into attributevalues values ( D, staticttk91taskcomposer, memoryvalues- Header, FI, C, Muistipaikkojen ja muuttujien sisältö ); insert into attributevalues values ( D, staticttk91taskcomposer, screenoutputhea-

5 der, FI, C, Tulosteet näytölle ); insert into attributevalues values ( D, staticttk91taskcomposer, fileoutputheader, FI, C, Tulosteet tiedostoon ); insert into attributevalues values ( D, staticttk91taskcomposer, submitbutton- Text, FI, C, Tehtävän luonti osa 2 ); Tehtävänmäärittelyn palautteenkeruulomakkeen tekstit ja virheilmoitukset insert into attributevalues values( D, ttk91syntaxchecker, feedbacktitle, FI, C, Opiskelijalle annettavat palautteet ); insert into attributevalues values( D, ttk91syntaxchecker, criteriafilledtitle, FI, C, Kriteerien vaatimukset täyttyvät ); insert into attributevalues values( D, ttk91syntaxchecker, criterianotfilledtitle, FI, C, Kriteerien vaatimukset eivät täyty ); insert into attributevalues values( D, ttk91syntaxchecker, criteriaqualitytitle, FI, C, Laadulliset kriteerit täyttyvät ); insert into attributevalues values( D, ttk91syntaxchecker, ttk91memoryvaluesyntaxerror, FI, C, Muistikriteerien syntaksi on väärin ); insert into attributevalues values( D, ttk91syntaxchecker, ttk91registervaluesyntaxerror, FI, C, Rekisterikriteerien syntaksi on väärin ); insert into attributevalues values( D, ttk91syntaxchecker, ttk91taskdescriptionsyntaxerror, FI, C, Tehtävänannon syntaksi on väärin ); insert into attributevalues values( D, ttk91syntaxchecker, ttk91publicinputsyntaxerror, FI, C, Opiskelijalle näytettävien syötteiden syntaksi on väärin ); insert into attributevalues values( D, ttk91syntaxchecker, ttk91hiddeninputsyntaxerror, FI, C, Opiskelijalta piilotettujen syötteiden syntaksi on väärin ); insert into attributevalues values( D, ttk91syntaxchecker, ttk91examplecodesyntaxerror, FI, C, Malliratkaisun syntaksi on virheellinen ); insert into attributevalues values( D, ttk91syntaxchecker, ttk91examplecodefillinsyntaxerror, FI, C, Malliratkaisuun on merkitty täyttökohta virheellisesti ); insert into attributevalues values( D, ttk91syntaxchecker, ttk91maxcommandssyntaxerror, FI, C, Ohjelman maksimikäskymäärä on ilmoitettu virheellisesti ); insert into attributevalues values( D, ttk91syntaxchecker, ttk91acceptedsizesyntaxerror, FI, C, Ohjelman hyväksymisen maksimikoko on ilmoitettu virhellisesti );

insert into attributevalues values( D, ttk91syntaxchecker, ttk91optimalsizesyntaxerror, FI, C, Ohjelman ihannekoko on ilmoitettu virheellisesti ); insert into attributevalues values( D, ttk91syntaxchecker, ttk91comparemethodsyntaxerror, FI, C, Ohjelman tarkistuksen vertailumetodi on ilmoitettu virheellisesti ); insert into attributevalues values( D, ttk91syntaxchecker, ttk91requiredcommandssyntaxerror, FI, C, Vaadittujen konekäskyjen syntaksi on väärin. Tarkista, että kaikki määrittelemäsi käskyt ovat TTK91-käskyjä ); insert into attributevalues values( D, ttk91syntaxchecker, ttk91forbiddencommandssyntaxerror, FI, C, Kiellettyjen konekäskyjen syntaksi on väärin. Tarkista, että kaikki määrittelemäsi käskyt ovat TTK91-käskyjä ); insert into attributevalues values( D, ttk91syntaxchecker, ttk91missingexamplecoderror, FI, C, Simuloitava mallivastaus puuttuu ); insert into attributevalues values( D, ttk91syntaxchecker, ttk91memoryreferencessyntaxerror, FI, C, Muistiviitteiden määrä on ilmoitettu virheellisesti ); insert into attributevalues values( D, ttk91syntaxchecker, ttk91screenoutputsyntaxerror, FI, C, Näyttötulosteiden syntaksi on väärin ); insert into attributevalues values( D, ttk91syntaxchecker, ttk91fileoutputsyntaxerror, FI, C, Tiedostotulosteiden syntaksi on väärin ); insert into attributevalues values( D, ttk91syntaxchecker, submitbutton, FI, C, Tallenna ); eassarin yleisen tehtävänmäärittelyn tekstit insert into attributevalues values ( D, teachertaskdef, staticttk91tasktypelabel, FI, C, TTK91 ohjelmointitehtävä ); insert into attributevalues values ( D, teachertaskdef, fillinttk91tasktypelabel, FI, C, TTK91 täydennystehtävä ); Tehtävän näyttämisen syöte-teksti insert into attributevalues values( D, staticttk91taskdisplayer, inputheader, FI, C, Syötteet ); insert into attributevalues values( D, staticttk91taskdisplayer, inputheader, EN, C, Input ); Palautteen muodostamisessa käytetyt tekstit insert into attributevalues values( A, ttk91feedbackcomposer, criterialabel, FI, 6

7 C, Kriteerit ); insert into attributevalues values( A, ttk91feedbackcomposer, criterialabel, EN, C, Criteria ); insert into attributevalues values( A, ttk91feedbackcomposer, feedbacklabel, FI, C, Palaute ); insert into attributevalues values( A, ttk91feedbackcomposer, feedbacklabel, EN, C, Feedback ); insert into attributevalues values( A, ttk91feedbackcomposer, qualitylabel, FI, C, Laadullinen palaute ); insert into attributevalues values( A, ttk91feedbackcomposer, qualitylabel, EN, C, Qualitative feedback ); insert into attributevalues values ( A, ttk91feedbackcomposer, registervalueslabel, FI, C, Rekisterit ); insert into attributevalues values ( A, ttk91feedbackcomposer, registervalueslabel, EN, C, Registers ); insert into attributevalues values ( A, ttk91feedbackcomposer, statisticslabel, FI, C, Statistiikka ); insert into attributevalues values ( A, ttk91feedbackcomposer, statisticslabel, EN, C, Statistics ); insert into attributevalues values ( A, ttk91feedbackcomposer, outputlabel, FI, C, Tulosteet ); insert into attributevalues values ( A, ttk91feedbackcomposer, outputlabel, EN, C, Output ); insert into attributevalues values ( A, ttk91feedbackcomposer, memoryreference, FI, C, Muistiviittauksia yhteensä ); insert into attributevalues values ( A, ttk91feedbackcomposer, memoryreference, EN, C, Total memory references ); insert into attributevalues values ( A, ttk91feedbackcomposer, stacksize, FI, C, Pinon suurin koko ); insert into attributevalues values ( A, ttk91feedbackcomposer, stacksize, EN, C, Stack max size ); insert into attributevalues values ( A, ttk91feedbackcomposer, codesegment, FI,

8 C, Koodisegmentin koko ); insert into attributevalues values ( A, ttk91feedbackcomposer, codesegment, EN, C, Code segment size ); insert into attributevalues values ( A, ttk91feedbackcomposer, datasegment, FI, C, Datasegmentin koko ); insert into attributevalues values ( A, ttk91feedbackcomposer, datasegment, EN, C, Data segment size ); insert into attributevalues values ( A, ttk91feedbackcomposer, executedcommands, FI, C, Suoritettuja käskyjä ); insert into attributevalues values ( A, ttk91feedbackcomposer, executedcommands, EN, C, Executed commands );