eassari harjoitteluympäristön yleisrakenne Harri Laine (20.1.2004) eassari on tietokantapohjainen WWW-sovellus ohjelmallisesti tarkastettavien harjoitus- ja koetehtävien suorittamiseen. Monikielisyys ja helppo laajennettavuus ovat olleet päätavoitteita järjestelmää suunniteltaessa. eassari itse on palvelinsovellus. Ohjelmisto on toteutettu Javaohjelmointikielellä. Se käyttää servlet- ja JSP-tekniikoita. Ohjelmiston avulla opiskelijalle voidaan selainkäyttöliittymässä esittää tietokannassa määriteltyjä tehtäviä, joihin opiskelija antaa vastauksen järjestelmän tarjoaman käyttöliittymän kautta. Opiskelijan antama vastaus tarkistetaan normaalisti heti ja opiskelijalle annetaan välitön palaute tehdyn tarkistuksen perusteella. Vastaus voidaan haluttaessa kirjata tietokantaan joko myöhemmin tarkastettavaksi tai muuten talteen. eassari on ensisijaisesti harjoitteluympäristö, mutta sitä voidaan käyttää myös opiskelijapalautteen keräämiseen ja oppimateriaalin välittämiseen. eassarin toiminnalliset pääkomponentit ja niiden tehtävät ovat Tuottaja (Producer) Tehtävien laadita ja ylläpito Tehtävätarjotinten laadinta ja ylläpito Ohjaaja (Director) Tehtävien tarjonta Vastausten hallinta Esittäjä (TaskPresentation) Tehtävän esittäminen Kriitikko (Critic) Vastauksen tarkastus Palautteen antaminen Vastauksen tallennus Vastauksen rekisteröinti Opiskelijahallinta (Student) Opiskelijan suoritustilanteen ylläpito Opiskelijan suoritusraportointi Rekisteröityminen Vastausvarasto (AnswerBase) Yhteenvetoja vastauksista Harjoittelun organisointi Harjoittelu eassarilla voidaan organisoida joko harjoitteluympäristön tai ulkopuolisen oppimateriaalin ohjaamaksi. Harjoitteluympäristön ohjaamassa harjoittelussa opiskelija kirjautuu kurssille ja järjestelmän Ohjaaja-komponentti huolehtii tehtävien tarjoamisesta tietokantaan tallennettujen ohjeiden mukaisesti. Järjestelmän keskeinen tietosisältö on hahmoteltu kuvassa 1. Kuvassa näkyvät myös täydennyskomponentit ja niiden kytkentä tietosisältöön. Kukin kurssi jakautuu moduuleihin. Moduuli muodostuu järjestetystä joukosta tehtäviä. Samaa tehtävää voidaan käyttää useassa saman tai eri kurssin moduulissa tai jopa samassa moduulissa moneen kertaan. 1
Kurssitarjottimella tarkoitetaan opiskelijalle tarjottavaa kurssikohtaista tehtäväkokoelmaa. Oletusarvoisesti opiskelijan kurssitarjottimeen sisältyvät kaikki kurssin tehtävät. Tarjottimen sisältöä voidaan kuitenkin säätää moduulikohtaisten karsijakomponenttien avulla. Karsija voi hyväksyä tehtäviä suoritetuiksi aiempien suoritusten perusteella ja siten poistaa ne vaadittavien tehtävien listalta. Karsijat ovat ulkopuolisia täydennyskomponentteja. Niitä varten on määritelty yksinkertainen täydennysrajapinta, mutta yhtään komponenttia ei ole toteutettu. Toteutus saattaa aiheuttaa muutoksia täydennysrajapintaan. Ulkopuolisen oppimateriaalin ohjaamassa harjoittelussa ei käytetä lainkaan Ohjaaja-komponenttia vaan tehtävien esittäjät käynnistetään suoraan oppimateriaalista. Tätä tapaa voi käyttää esimerkiksi oppimateriaalin esimerkkien vuorovaikutteisuuden lisäämiseen (aktiiviset esimerkit). Ulkopuolisen oppimateriaalin ohjaamassa harjoittelussa ei välttämättä vaadita opiskelijan tunnistusta eikä vastauksia välttämättä kirjata talteen. 2
Kuva 1: Sisältö- ja täydennyskomponentteja Tehtävien esittäminen Opiskelija voi valita tehtäviä ratkaistavakseen kurssitarjottimen valikosta. Vastauksen pohjaksi voi valita jonkin aiemman vastauksen. Ulkoisen oppimateriaalin kautta käynnistettävien tehtävien kohdalla materiaaliin täytyy sisällyttää tehtävän käynnistyksen aiheuttava käyttöliittymäelementti esimerkiksi linkki tai kuva. Tehtävien esittämistä kontrolloi servlettinä toteutettu Esittäjä-komponentti. Esittäjä on kehys tehtävätyyppikohtaisille näyttökomponenteille. Näyttökomponentit ovat ulkoisia täydennyskomponentteja. Niitä varten on määritelty täydennysrajapinta (DisplayerInterface). Näyttökomponentin tehtävänä on tuottaa tehtävän esittämiseen ja tehtävään vastaamiseen tarvittavan käyttöliittymän sisältö. Käyttöliittymän ulkoasun määrittää tehtävätyyppikohtainen tyylitiedosto. Ulkoisten näyttökomponenttien tarkoituksena on mahdollistaa uusien rakenteeltaan aiemmista poikkeavien tehtävätyyppien liittäminen järjestelmään. Näyttökomponentit tuottavat tehtäväksiannon tietokantaan talletettujen tehtäväkohtaisten parametritietojen avulla. Uusien tehtävätyyppien tarvitsemia parametritietoja ei voida kiinnittää ennakkoon. Jokainen näyttökomponentti määrittelee omat tietotarpeensa. Myöskään kieliä, joilla tehtävät esitetään, ei ole kiinnitetty. Ennalta määrittelemättömien monikielisten parametriarvojen tallettamiseen käytetään geneeristä tietokanta- 3
taulua, jonne kustakin parametriarvosta tallennetaan varsinainen arvo, arvon kieli, parametrin nimi ja tieto kohteesta, johon parametriarvo liittyy. Näyttökomponentit hakevat tarvitsemansa parametriarvot välimuistin kautta (kuva 2). Välimuisti nopeuttaa arvojen hakua ja kätkee tietokantatoteutuksen näyttökomponenteilta. Järjestelmässä on varauduttu myös dynaamisiin tehtäviin. Dynaamisissa tehtävissä näyttökomponentti arpoo joitain tehtäväksiannon osia. Tällainen piirre voisi olla käyttökelpoinen esimerkiksi koetehtävien erilaistamisessa. Järjestelmän täydennysrajapinnoissa ja tietokantaratkaisussa on välineistö arvottujen tehtäväparametrien välittämiseen ja tallennukseen. Kuva 2: Näyttömoduuli ja välimuisti tehtävien esittämisessä Näyttökomponentteja on toistaiseksi toteutettu vain yksi (SimpleDisplayer). Tämä esimerkkikomponentti kykenee esittämään tietokannassa tekstimuotoisena annetun tehtävän sekä luomaan tehtävälle joko teksti-ikkunaan tai yksinkertaiseen tekstikenttään perustuvan vastauskäyttöliittymän. Näyttökomponentti on riittävä esimerkiksi SQL-kyselytehtävien esittämiseen. Kevään 2004 alussa käynnistynyt ohjelmistotuotantoryhmä tuottaa lisää näyttökomponentteja erilaisia yleiskäyttöisiä tehtävätyyppejä varten. Tällaisia ovat esimerkiksi monivalintatehtävät, valintalistat, järjestämistehtävät ja aukkojentäyttötehtävät. Järjestämistehtäviin yritetään saada näyttävyyttä ja helppo- 4
käyttöisyyttä tukemalla vastaamista JavaScript funktioin. Näiden tuottaminen tarvittaessa on yksi näyttökomponentin tehtävistä. Vastausten käsittely Vastausten käsittely on periaatteeltaan varsin samanlaista kuin tehtävien näyttäminen. Vastauksen käsittelyä kontrolloiva Kriitikko on kehys, johon kytketään ulkoisina täydennyskomponentteina arvioija- (analyser) ja näyttökomponentit. Näyttökomponentin toiminta käsiteltiin jo yllä. Arvioijan päätehtävänä on tuottaa arvio vastauksen oikeellisuudesta. Tieto arvioinnin tuloksesta palautetaan Feedback-oliona. Olio sisältää numeerisien arvion tuloksesta, tekstimuotoisen palautekommentin sekä lisäpalautteen. Esimerkiksi SQL-kyselytehtävissä lisäpalautteena voisi olla kyselyn suorituksen tuottama tulos. Numeerinen arvio tuloksesta esitetään oikeellisuusprosenttina välillä 0-100. Arvioija voi toki rajoittua vain asteikon ääripäiden käyttöön. Kullekin tehtävälle voidaan määritellä hyväksymisraja, johon numeerista arviota verrataan. Arvioija perustaa arvionsa tietokannasta haettaviin tehtäväkohtaisten arviointiparametrien arvoihin ja omaan sisäiseen säännöstöönsä. Arviointiparametrien arvot haetaan välimuistin kautta kuten näyttökomponenteissa. Arvioija voi käyttää mitä tahansa ulkopuolisia komponentteja esimerkiksi ulkopuolista tietokannanhallintajärjestelmää. Kriitikko -kehys kokoaa yhteen näyttökomponentin tuottaman vastausnäytön ja arvioijan tuottaman palautteen. Se huolehtii tarvittaessa myös vastausyrityksen kirjauksesta ja annetun vastauksen tallennuksesta. Kehys myös kontrolloi uusintayritysten määrää. Arvioijia on toistaiseksi toteutettu yksi (SimpleAnalyser). Tämä vertaa annettua vastausta suoraan tehtävän parametritietoina annettuihin vaihtoehtoihin ja palauttaa numeerisena arviona kuhunkin vastausvaihtoehtoon liitetyn oikeellisuusprosentin. Sanallisena arviona palautetaan vastausvaihtoehtoon liitetty palauteteksti. SQL-arvioijan toteutus on myös aloitettu. Suurin osa SQL-arvioijan koodista saadaan vanhasta SQL-Trainer järjestelmästä. SQL-arvioija tulee toimimaan esimerkkinä monipuolisesta ulkopuolisia komponentteja hyödyntävästä arvioijasta. Keväällä 2004 aloittanut ohjelmistotuotantoprojekti tuottaa myös arvioijat niille yleiskäyttöisille tehtävätyypeille, joille se tuottaa näyttökomponentit. Kriitikko on vuorovaikutteinen yhden tehtävän vastauksen kerrallaan käsittelevä komponentti. Jos eassaria käytettäisiin tenttiterraariosovelluksena, tarvittaisiin kaikki opiskelijan vastaukset käsittelevä kehys. Tällaista ei vielä ole tarjolla. Tehtävien tuottaminen Tehtävien tuottamisvälineiden suunnittelu on alkuvaiheessa. Toistaiseksi käytetyt testitehtävät on tuotettu viemällä parametritiedot tietokantaan suoraan SQL:llä. Yhtenä mahdollisuutena on toteuttaa jokaiselle tehtävätyypille oma ulkoinen tuottajakomponentti, joka käynnistetään yksinkertaisen tuottajakehyksen välityksellä. Ratkaisu olisi toimiva, mutta vaatii soveltajalta liian paljon ohjelmointia. Tietokantaratkaisussa on varauduttu metatietoja hyödyntäviin tuottajiin. Geneerinen tuottaja tutkisi kannan metatiedoista mitä tehtäväparametreja tarvitaan ja laatisi määrittelylomakkeen näiden tietojen pohjalta. Geneeriseen tuottajaan pitää kuitenkin varautua liittämään ulkoinen parametriarvoja generoiva komponentti. Esimerkiksi SQL tehtäviä laadittaessa 5
osa arviointiparametrien arvoista pitäisi tuottaa suorittamalla mallikysely ja tutkimalla suorituksen tuloksena saatavaa vastausta ja vastaukseen liittyvää metatietoa. Opiskelijahallinta Opiskelijahallintaan liittyviä osia ei ole vielä toteutettu. Tältä osin toteutus on kuitenkin suoraviivaista. 6