T Ohjelmistojen määrittely- ja suunnittelumenetelmät Harjoitustyöraportti TNT - Tarkistetaan Ne Tentit Analyysimalli

Samankaltaiset tiedostot
T Ohjelmistojen määrittely- ja suunnittelumenetelmät Harjoitustyöraportti TNT - Tarkistetaan Ne Tentit Käyttötapaukset

T Ohjelmistojen määrittely- ja suunnittelumenetelmät Harjoitustyöraportti TNT - Tarkistetaan Ne Tentit Arkkitehtuuri- ja suunnittelumalli

T Ohjelmistojen määrittely- ja suunnittelumenetelmät Harjoitustyöraportti TNT - Tarkistetaan Ne Tentit Analyysimalli

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton

TUNI EXAM Sähköinen tentti. Opettajan pikaopas

Vaatimusmääritelystä UML:n avulla

Ohjelmistotekniikan menetelmät, koe

Moodle Kysymyspankki / Tenttiaktiviteetti / Arviointi. Jukka Kurttila

Kompassi-digikokeen suoritusten arviointi ja tulosten julkaisu

Ohjelmistojen mallintaminen, kurssikoe esimerkkivastauksia

Lomalista-sovelluksen määrittely

käyttötapaukset mod. testaus

Kypsyysnäytteen laatiminen ja arvioiminen Examissa

Ohje 1 (12) Maarit Hynninen-Ojala MOODLE PIKAOHJE. Kirjautuminen Moodleen ja työtilan valitseminen

Kompassi Suoritusten tarkistaminen ja tulosten julkaisu

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat

Kypsyysnäytteen laatiminen ja arvioiminen Examissa

Ajankohtaista tietoa LähiTapiolan verkkopalvelun pääkäyttäjille

Automaattinen arviointi ja pika-arviointi EXAM-tenteissä. Marjut Anderson

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

T harjoitustyö, kevät 2012

ILMOITTAUTUMINEN OPINNOILLE

Ohjelmoinnin jatkokurssi, kurssikoe

EXAM opiskelijan ohjeet

Opettajan ohje 1/2. Tentin luominen. Tenttiakvaarion tukisivut: 1. Aloitus

Sähköpostitilin käyttöönotto

ILMOITTAUTUMINEN OPINNOILLE

StudentaPlus - opiskelijaliittymä

UML:n yleiskatsaus. UML:n osat:

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

Tarjousten vertailu ja hankintapäätös

Ohjelmistotekniikan menetelmät, käyttötapauksiin perustuva vaatimusmäärittely

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:

EXAM Kypsyysnäytteen toteuttaminen ja arvioiminen

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

EXAM Kypsyysnäytteen laatiminen ja arviointi

GroupDesk Toiminnallinen määrittely

Pauliina Munter/Suvi Junes Tampereen yliopisto / Tietohallinto Valitse muokkaustila päälle kurssialueen etusivun oikean yläkulman painikkeesta.

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

<e.g. must, essential, conditional>

AJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML

T SEPA - päiväkirja: Design Patterns. ETL työkalu

Ohjelmistojen mallintaminen, kesä 2010

Moodle-oppimisympäristö

SATAKUNNAN AMMATTIKORKEAKOULU

TenttiWilho 2.0 UUSINTA- JA KOROTUSTENTTIJÄRJESTELMÄ OPISKELIJAN OHJE

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

Henkilökohtaisen tentin laatiminen ja arviointi

Testaussuunnitelma Labra

15. Ohjelmoinnin tekniikkaa 15.1

ejuttu ohjeet kuinka sitä käytetään.

Vaatimusdokumentti Labra

Opiskelijan WinhaWILLE-ohjeet (Wille)

Henkilökohtaisen tentin laatiminen ja arviointi

Kurssin käytännön järjestelyt. Tuotantotalous 1 Joel Kauppi

Yhteistoimintakaavio (Esimerkki)

Kompassi-digikokeen arvostelu ja tulosten julkaisu - opettaja

Lyhyt oppimäärä sihteerin toimista Korppi-järjestelmässä

Opettajan ohje kypsyysnäytteen toteuttamiseen ja arvioimiseen sähköisenä tenttinä

Ohjelmistojen mallintaminen, kesä 2009

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

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

T harjoitustehtävät, syksy 2011

FuturaPlan. Järjestelmävaatimukset

Kotkaliikkuu.fi. Ohjeita seuroile ja yhteisöille palvelun käytöstä

Ohjeet psykoterapeuteille

Käyttötapauksen nimi Lukija: pääsivu Osallistujat Lukija Tuloehdot Käyttäjä on avannut sivuston pääsivun Kuvaus Ruudulle tulostuvat kirjoittajat ja

Tentin asetukset. Tentin lisääminen. Tentin asetukset

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

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Ristiinopiskelun kehittäminen -hanke

Punomo Blogit BLOGIN LUOMINEN WORDPRESS-ALUSTALLA. Kirjaudu -palveluun osoitteessa tunnuksellasi.

SilvaToiminta Versio 1.0. SilvaToiminta. Pikaohje Versio Oy Silvadata Ab Pikaohje 1

JYVÄSKYLÄN SEUDUN. 1. Sisältö * * Tähdellä merkityt kohdat ovat pakollisia. Sivun oikeassa yläkulmasta löytyy Lisää oma tapahtumasi.

2. Olio-ohjelmoinnin perusteita 2.1

GolfBox -käyttöohjeet Sarfvikin jäsenille. Versio 3.0

Miten hyväksyn SoleOPSissa opiskelijat omalle opintojakson toteutukselle?

Ohjelmistojen suunnittelu

15. Ohjelmoinnin tekniikkaa 15.1

Uuden TwinSpacen yleiskatsaus

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä

Suvi Junes/Pauliina Munter Tietohallinto/Opetusteknologiapalvelut 2014

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. FT Ari Viinikainen

Ohjelmistotekniikan menetelmät, kesä 2008

Webforum. Version 14.4 uudet ominaisuudet. Viimeisin päivitys:

Työpalvelupaikat. Xwiki Admin 2016/07/06 16:35

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op

Napsauta Kurssin viikkonäkymä- näkymässä oikeassa yläreunassa sijaitsevaa Muokkaustila päälle -painiketta.

Kompassi-digikokeen julkaisu opettaja

Toinen harjoitustyö. ASCII-grafiikkaa

Kurssijärjestelyt. CS-1180 Verkkojulkaisemisen perusteet (5 op) Hanna Hämäläinen Informaatioverkostot / Mediatekniikan laitos

Muusta kuin vesisioista

HELIA 1 (14) Outi Virkki Käyttöliittymät ja ohjlmiston suunnittelu

elearning Salpaus Elsa-tutuksi

Suoritusten kirjaaminen WinOodissa: Opintoneuvojan ohje

Ohjelmoinnin perusteet Y Python

Määrittelyvaihe. Projektinhallinta

Transkriptio:

T-76.611 Ohjelmistojen määrittely- ja suunnittelumenetelmät Harjoitustyöraportti TNT - Tarkistetaan Ne Tentit Analyysimalli Lasse Lindqvist Lasse Lopperi llindqvi@cc.hut.fi lmlopper@cc.hut.fi Andrey Rusanovich arusanov@cc.hut.fi

1 Johdanto Analyysimallissa hahmotetaan ongelmakentän käsitteitä luokkakaaviossa, jossa luokat kuvaavat todellisia reaalimaailman olioita. Mallin tarkoituksena on selventää ja havainnollistaa ongelmakenttää sekä antaa viitettä itse toteutuksessa tarvittavista entiteettiluokista. Analyysimallissa luokiin sijoitetaan niiden sisältämää tietoa vastaavat muuttujat, joiden tyyppimääritteitä ei kuitenkaan tarvitse välttämättä tarkasti kuvata. Luokkien välisiä suhteita kuvataan erilaisilla assosiaatioilla, joihin liittyy myös kerrannaisuudet. 2 Sanasto Alle on koottu termejä, jotka voivat olla luonnollisen kielen epätäydellisyydestä johtuen moniselitteisiä tai epäselviä. Näille termeille on annettu tässä yhteydessä seuraavat merkitykset: Kurssi Kurssikerta Kurssivastaava Kurssihenkilö Tentti Tenttisuoritus Vuodesta toiseen säilyvä kokonaisuus, joka sisältää mm. sisällön kuvauksen. Kurssin instanssi. Instanssi on kerran järjestettävä kurssin toteutus, sisältäen henkilökunnan, tilat ja opiskelijat. Kurssista vastaava henkilö. Toimii usein luennoitsijana. Kurssin henkilökunnan jäsen: esim. assistentti tai kurssivastaava. Kokonaisuus, johon kuuluvat tenttitilaisuus, sekä tenttipaperin malli sisältäen tehtävät. Yksittäisen opiskelijan vastaukset. Koostuu tehtäväsuorituksista. 3 Analyysitason luokat Analyysitason luokkia löydettiin ongelmakuvauksesta pääosin tutkimalla siinä esiintyviä substanttiivejä. Lisäksi hieman käytännön toteutusta lähempänä olevia luokkia nousi esiin ongelmakuvauksesta johdetuista käyttötapauskuvauksista ja niiden toimijoista. Kurssi on kuvaus kurssista. Kurssi voisi olla esimerkiksi Tietokanta-algoritmit. Kurssi sisältää siis koodin, nimen, siihen liittyvän opintoviikkomäärän ja sisällön kuvauksen. Kukaan opiskelija ei ole kurssilla vaan siihen liittyvällä kurssikerralla. Kurssikerta on ikään kuin kurssin instanssi. Kurssikerta voisi olla esimerkiksi Olio-ohjelmointi kevät 2004. Kurssikertaan liittyy henkilöitä erilaisissa rooleissa, kuten opiskelijana tai kurssihenkilönä. Kurssikertaan liittyy myös tenttejä, jotka on koostettu sillä suoritettavaksi. Tentti on kokonaisuus, joka sisältää niin itse tenttipaperiin liittyvät kysymykset kuin myös tentti- ja valitustilaisuudet. Lisäksi tentti sisältää arvosanarajat. Arvosanarajat sisältävät arvosanat ja niihin vaadittava minimipisteet.

Tenttisuoritukset liittyvät tiettyyn tenttiin ja niitä syntyy, kun opiskelijoita ilmoittautuu tenttiin. Myöhemmin niihin täydennetään vastaus, saavutettu pistemäärä ja arvosana sekä tiedot mahdollisesta ilmoittautumisesta valitustilaisuuteen. Tehtävä liittyy tiettyyn kurssiin ja se sisältää tehtävänannon sekä arvosteluohjeet. Tehtäviä voi olla erilaisia, kuten monivalinta- tai tekstitehtäviä. Arvosteluohjeet sisältävät tehtävän mallivastauksen sekä pisteytysohjeet. Tilaisuus on tapahtuma, jolla on aika ja paikka. Tilaisuuksia tässä ympäristössä ovat tenttitilaisuus ja valitustilaisuus. Henkilö on järjestelmän käyttäjä, josta tallennetaan jotain henkilötietoja. Henkilö voi olla myös opiskelija, jolloin hänellä on opiskelijanumero ja hän voi suorittaa tenttejä. 4 Analyysimallit Tässä esitettävä analyysimalli on jaettu helpommin käsiteltäviin ja käsitettäviin osakokonaisuuksiin. Kuva 1 Kurssi ja kurssikerta

Kuva 2 Tenttisuoritus Kuva 3 Henkilö ja roolit

Kuva 4 Tentti ja tehtävät

T-76.611 Ohjelmistojen määrittely- ja suunnittelumenetelmät Harjoitustyöraportti TNT - Tarkistetaan Ne Tentit Käyttötapaukset Lasse Lindqvist Lasse Lopperi llindqvi@cc.hut.fi lmlopper@cc.hut.fi Andrey Rusanovich arusanov@cc.hut.fi

1. Johdanto Toimijat ovat erilaisia järjestelmän käyttäjien rooleja. Käyttötapauksissa kuvataan näiden roolien interaktiota järjestelmän käyttäjärajapinnan kanssa. Nämä interaktiot, eli käyttötapaukset on kerätty ryhmässä pohdiskelemalla ongelmakuvauksen perusteella. Kuvauksen ulkopuolisia käyttötapauksia ei yritetty soveltaa sen enempää kuin sen perusteella keksittyjen tapausten järkevä suorittaminen vaati. 2. Toimijat Järjestelmälle löydettiin seuraavia toimijoita: kurssivastaava, kurssihenkilö, opiskelija, ylläpitäjä ja käyttäjä. Kurssivastaava liittyy kurssiin tietyllä aikavälillä ja kurssiin saa yhtä aikaa liittyä vain yksi kurssivastaava. Kurssihenkilöt ovat kurssihenkilökunnan jäseniä. Näihin kuuluvat assistentit ja kurssivastaava. Opiskelijat käyttävät järjestelmää tentteihin ilmoittautumiseen, valitustilaisuuteen ilmoittautumiseen ja verkkotenttien suorittamiseen. Ylläpitäjää tarvitaan lisäämään järjestelmään uusia kursseja ja kurssikertoja. Tämän lisäksi ylläpitäjällä on vastuu hallinnoida käyttäjätunnuksia ja - oikeuksia. Käyttäjä sitoo alleen kaikki edelliset. Huomata kannattaa myös että sama henkilö voi toimia eri toimijana eri tilanteissa. Tämä tarkoittaa siis esimerkiksi sitä, että erään kurssin assistentti voi olla eri kurssilla opiskelijana. 3. Käyttötapaukset 3.1. Käyttötapaus: Kirjaudu sisään Toimija: Kuka tahansa PERUSTAPAUS 1. Käyttäjä tunnistautuu järjestelmälle 2. Järjestelmä tunnistaa käyttäjän ja laskee sisään järjestelmään. Käyttötapaus päättyy. 2a. Järjestelmä ei tunnista käyttäjää, palataan tunnistautumisen alkuun. Käyttötapaus päättyy. 3.2. Käyttötapaus: Luo kurssi Toimija: Ylläpitäjä Esiehdot: On kirjauduttu sisään PERUSTAPAUS 1. Käyttäjä valitsee haluavansa luoda kurssin 2. Järjestelmä menee tilaan, jossa tietojen syöttö on mahdollista 3. Käyttäjä asettaa kurssikoodin ja kurssivastaavan. 4. Käyttäjä valitsee tietojen tallennuksen. 5. Järjestelmä ilmoittaa tallennuksen onnistumisesta. Käyttötapaus päättyy. 3-4a. Käyttäjä peruuttaa toiminnon. 1. Järjestelmä poistuu muokkaustilasta. Käyttötapaus päättyy. 5a. Järjestelmä ilmoittaa tallennuksen epäonnistumisesta. Käyttötapaus päättyy.

3.3. Käyttötapaus: Muokkaa kurssia Toimija: Ylläpitäjä, Kurssivastaava Esiehdot: On kirjauduttu sisään PERUSTAPAUS 1. Käyttäjä valitsee haluavansa muokata tietyn kurssin tietoja 2. Järjestelmä menee tilaan, jossa tietojen muokkaus on mahdollista 3. Käyttäjä muokkaa haluamiaan tietoja. 4. Käyttäjä valitsee tietojen tallennuksen. 5. Järjestelmä ilmoittaa tallennuksen onnistumisesta. Käyttötapaus päättyy. 3-4a. Käyttäjä peruuttaa toiminnon. 1. Järjestelmä poistuu muokkaustilasta. Käyttötapaus päättyy. 5a. Järjestelmä ilmoittaa tallennuksen epäonnistumisesta. Käyttötapaus päättyy. 3.4. Käyttötapaus: Luo tai muokkaa kurssikertaa Toimija: Ylläpitäjä, Kurssivastaava Esiehdot: On kirjauduttu sisään PERUSTAPAUS 1. Käyttäjä valitsee haluavansa lisätä tietyn kurssin kurssikerran 2. Järjestelmä menee tilaan, jossa tietojen syöttäminen on mahdollista 3. Käyttäjä syöttää lukukauden 4. Käyttäjä lisää kurssihenkilöstön kurssille 5. Käyttäjä valitsee tietojen tallennuksen. 6. Järjestelmä ilmoittaa tallennuksen onnistumisesta. Käyttötapaus päättyy. 1a. Kurssikerta on jo olemassa. 1. Järjestelmä hakee kurssikerran tiedot. Siirrytään kohtaan 2. 3-5a. Käyttäjä peruuttaa toiminnon. 1. Järjestelmä poistuu muokkaustilasta. Käyttötapaus päättyy. 6a. Järjestelmä ilmoittaa tallennuksen epäonnistumisesta. Käyttötapaus päättyy. 3.5. Käyttötapaus: Luo tai muokkaa tehtävää Toimija: Kurssivastaava, Professori Esiehdot: On kirjauduttu sisään PERUSTAPAUS 1. Käyttäjä valitsee haluavansa lisätä tietyn kurssin tehtävän 2. Järjestelmä menee tilaan, jossa tietojen syöttäminen on mahdollista 3. Käyttäjä muokkaa tehtäväosaa ja/tai mallivastausta. 4. Käyttäjä valitsee tietojen tallennuksen. 5. Järjestelmä ilmoittaa tallennuksen onnistumisesta. Käyttötapaus päättyy. 1a. Tehtävä on jo olemassa. 1. Järjestelmä hakee tehtävän tiedot. Siirrytään kohtaan 2. 3-4a. Käyttäjä peruuttaa toiminnon. 1. Järjestelmä poistuu muokkaustilasta. Käyttötapaus päättyy.

5a. Järjestelmä ilmoittaa tallennuksen epäonnistumisesta. Käyttötapaus päättyy. 3.6. Käyttötapaus: Luo tentti Toimija: Kurssivastaava Esiehdot: On kirjauduttu sisään PERUSTAPAUS 1. Käyttäjä valitsee haluavansa lisätä tietyn kurssikerran tentin 2. Järjestelmä menee tilaan, jossa lisääminen on mahdollista 3. Käyttäjä syöttää tentin päivämäärän, ilmoittautumisajan ja tenttitilan. 4. Käyttäjä valitsee tietojen tallennuksen. 5. Järjestelmä ilmoittaa tallennuksen onnistumisesta. Käyttötapaus päättyy. 1a. Tentti on jo olemassa. 1. Järjestelmä hakee tehtävän tiedot. Siirrytään kohtaan 2. 3a. Jotkut tiedot voidaan jättää tyhjiksi. 3-4a. Käyttäjä peruuttaa toiminnon. 1. Järjestelmä poistuu muokkaustilasta. Käyttötapaus päättyy. 5a. Järjestelmä ilmoittaa tallennuksen epäonnistumisesta. Käyttötapaus päättyy. 3.7. Käyttötapaus: Ilmoittaudu tenttiin Toimija: Opiskelija Esiehdot: On kirjauduttu sisään PERUSTAPAUS 1. Käyttäjä valitsee haluavansa ilmoittautua tiettyyn tenttiin. 2. Järjestelmä kirjaa ilmoittautumisen. Käyttötapaus päättyy. 2a. Ilmoittautuminen ei ole mahdollista. 1. Järjestelmä ilmoittaa syyn. Käyttötapaus päättyy. 3.8. Käyttötapaus: Lisää tenttiin tehtävät Toimija: Kurssivastaava Esiehdot: On kirjauduttu sisään PERUSTAPAUS 1. Käyttäjä valitsee haluavansa lisätä vastaamaansa kurssin kurssikertaan liittyvään tenttiin tehtävät. 2. Käyttäjä valitsee tehtävän kurssin tehtävistä ja lisää sen tentin tehtäviin. 3. Järjestelmä näyttää tähän mennessä koostetun tentin. Käyttäjä toistaa kohdat 2 ja 3 haluamansa määrän kertoja. 4. Käyttäjä valitsee tietojen tallennuksen. 5. Järjestelmä ilmoittaa tallennuksen onnistumisesta. Käyttötapaus päättyy. 5a. Järjestelmä ilmoittaa tallennuksen epäonnistumisesta. Käyttötapaus päättyy. 3.9. Käyttötapaus: Suorita tentti Toimija: Opiskelija Esiehdot: On kirjauduttu sisään. Opiskelija on ilmoittautunut kyseiseen tenttiin.

PERUSTAPAUS 1. Käyttäjä valitsee haluavansa suorittaa tentin. 2. Järjestelmä näyttää tentin tehtävät ja mahdollistaa vastausten antamisen. 3. Käyttäjä vastaa haluamiinsa tehtäviin. 4. Käyttäjä valitsee tietojen tallennuksen. 5. Järjestelmä ilmoittaa tallennuksen onnistumisesta. Käyttötapaus päättyy. 5a. Järjestelmä ilmoittaa tallennuksen epäonnistumisesta. 1. Järjestelmä ehdottaa erityistoimenpiteitä. Käyttötapaus päättyy. 3.10. Käyttötapaus: Pisteytä tehtäviä Toimija: Kurssivastaava, assistentti Esiehdot: On kirjauduttu sisään. Käyttäjä kuuluu tenttiin liittyvän kurssikerran henkilökuntaan. Pisteytystä ei ole lukittu. PERUSTAPAUS 1. Käyttäjä valitsee haluavansa pisteyttää tehtäviä. 2. Käyttäjä valitsee pisteytettävät tehtäväsuoritukset 3. Järjestelmä tulostaa suorituksen ja mahdollisen mallivastauksen. 4. Käyttäjä valitsee pistearvon ja kirjoittaa mahdollisen kommentin. 5. Käyttäjä tallentaa pisteytyksen. 6. Järjestelmä kirjaa pisteytyksen ja ilmoittaa tallennuksen onnistumisesta. Jos tehtäviä jäljellä, siirrytään kohtaan 3 7. Käyttäjä valitsee pisteyttämisen lopettamisen. Käyttötapaus päättyy. *a. Milloin tahansa: 1. Käyttäjä valitsee pisteyttämisen lopettamisen. Käyttötapaus päättyy. 6a. Järjestelmä ilmoittaa tallennuksen epäonnistumisesta. 1. Palataan kohtaan 3 näyttäen tallentamattomat tiedot. 3.11. Käyttötapaus: Hyväksy arvostelu Toimija: Kurssivastaava Esiehdot: On kirjauduttu sisään. Käyttäjä on tenttiin liittyvän kurssin vastaava. Kaikki tenttiin liittyvät suoritukset on pisteytetty. PERUSTAPAUS 1. Käyttäjä valitsee haluavansa hyväksyä tietyn tentin arvostelun. 2. Järjestelmä antaa mahdollisuuden valita ja tarkastella yksittäisiä tenttisuorituksia pisteytyksineen. 3. Käyttäjä tarkastaa haluamansa tenttisuoritukset. 4. Käyttäjä lukitsee pisteytyksen. 5. Järjestelmä tulostaa tilastotietoa pisteytyksestä ja antaa mahdollisuuden säätää arvosanarajat. 6. Käyttäjä säätää halutessaan arvosanarajoja. 7. Käyttäjä hyväksyy ja lukitsee tentin arvostelun kokonaisuudessaan. 8. Käyttäjä lopettaa arvostelun hyväksynnän. Käyttötapaus päättyy. *a. Milloin tahansa:

1. Käyttäjä valitsee hyväksynnän lopettamisen. Käyttötapaus päättyy. 2a. Pisteytys on jo lukittu. Siirrytään suoraan kohtaan 5. 4a. Järjestelmä ilmoittaa lukitsemisen epäonnistumisesta. Käyttötapaus päättyy. 7a. Järjestelmä ilmoittaa lukitsemisen epäonnistumisesta. Käyttötapaus päättyy. 8a. Käyttäjä valitsee haluavansa julkaista arvostelun. 1. Julkaise tulokset 3.12. Käyttötapaus: Julkaise tulokset Toimija: Kurssivastaava, assistentti Esiehdot: On kirjauduttu sisään. Käyttäjä kuuluu tenttiin liittyvän kurssikerran henkilökuntaan. Arvostelu on hyväksytty. PERUSTAPAUS 1. Käyttäjä valitsee haluavansa julkaista tietyn tentin arvostelun. 2. Järjestelmä antaa mahdollisuuden valita julkaisutavan. 3. Käyttäjä valitsee julkaisutavan ja julkaisee tulokset. 4. Järjestelmä ilmoittaa julkaisun onnistumisesta. Käyttötapaus päättyy. *a. Milloin tahansa: 1. Käyttäjä valitsee julkaisun lopettamisen. Käyttötapaus päättyy. 4a. Järjestelmä ilmoittaa julkaisun epäonnistumisesta. Käyttötapaus päättyy. 3.13. Käyttötapaus: Rekisteröidy valitustilaisuuteen Toimija: Opiskelija Esiehdot: On kirjauduttu sisään. Käyttäjä on suorittanut kyseisen tentin. Tentin tulokset ovat julkaistu. PERUSTAPAUS 1. Käyttäjä valitsee haluavansa ilmoittautua tietyn tentin valitustilaisuuteen. 2. Järjestelmä kirjaa ilmoittautumisen ja ilmoittaa sen onnistumisesta. Käyttötapaus päättyy. *a. Milloin tahansa: 1. Käyttäjä valitsee ilmoittautumisen lopettamisen. Käyttötapaus päättyy. 2a. Järjestelmä ilmoittaa ilmoittautumisen epäonnistumisesta. Käyttötapaus päättyy. Käyttötapaus: Aseta valitustilaisuus Toimija: Kurssivastaava Esiehdot: On kirjauduttu sisään. PERUSTAPAUS 1. Käyttäjä valitsee haluavansa asettaa tietyn tentin valitustilaisuuden. 2. Käyttäjä syöttää valitustilaisuuden tiedot, kuten päivämäärä ja paikka. 3. Järjestelmä ilmoittaa asetuksen onnistumisesta. Käyttötapaus päättyy. *a. Milloin tahansa: 1. Käyttäjä valitsee asetuksen lopettamisen. Käyttötapaus päättyy. 3a. Järjestelmä ilmoittaa asetuksen epäonnistumisesta. Käyttötapaus päättyy.

3.14. Ylläpidä käyttäjätilejä ja käyttöoikeuksia Ylläpidon käyttötapaukset ohitetaan vain maininnalla. Päädyimme tähän, koska emme halunneet turhaan kasvattaa työmäärää järjestelmän päätoimintoihin liittymättömillä lisäosilla. 4. Käyttötapauskaaviot Käyttötapauskaavioissa kuvataan visuaalisesti toimijoiden ja käyttötapausten keskinäiset suhteet. Kuva 1 Käyttäjien suhteet

Kuva 2 Opiskelija Kuva 3 Ylläpitäjä

Kuva 4 Kurssihenkilökunta

T-76.611 Ohjelmistojen määrittely- ja suunnittelumenetelmät Harjoitustyöraportti TNT - Tarkistetaan Ne Tentit Arkkitehtuuri- ja suunnittelumalli Lasse Lindqvist Lasse Lopperi llindqvi@cc.hut.fi lmlopper@cc.hut.fi Andrey Rusanovich arusanov@cc.hut.fi

1 Johdanto Arkkitehtuurilla pyritään määrittämään suuren mittaluokan suunnittelulinjaukset ja järjestämään koko järjestelmän loogisiin, yhtenäisiin osakokonaisuuksiin - alijärjestelmiin. Järkevällä arkkitehtuurilla saavutetaan muun muassa ylläpidettävyyttä, modulaarisuutta, sitkeyttä (robustness) ja uudelleenkäytettävyyttä alijärjestelmien ollessa mahdollisimman vähän ja/tai yksisuuntaisesti toisistaan riippuvia. Arkkitehtuuri lienee myös paras väline kommunikoimaan järjestelmää esimerkiksi projektin uusille työntekijöille. Suunnittelu tarkentaa arkkitehtuurin kuvausta ja tarjoaa toteutusehdotuksen, jolla käyttötapaukset voidaan realisoida. Analyysin kertoessa mitä, suunnittelu kertoo siis miten. Käytännössä suunnitteluun kuuluu luokkakaaviot, jotka perustetaan enemmän tai vähemmän analyysimallista poimittuihin luokkiin. Näiden lisäksi tarvitaan avuksi muita luokkia, jotka eivät useinkaan vastaa mitään tosielämän oliota. Näitä saadaan usein kiinni viestiyhteyskaavioista, joissa kuvataan olioiden välistä kommunikaatiota eri käyttötapauksissa. Suunnittelussa kaikkiin luokkiin lisätään lisäksi operaatiot ja näkyvyydet, joilla määrätään niiden käyttäytyminen. 2 Arkkitehtuuri 2.1 Järjestelmän arkkitehtuuri Järjestelmämme voidaan jakaa perinteisen mallin mukaan kolmeen päällekkäiseen kerrokseen, josta ylin käsittelee käyttäjärajapinnat, keskimmäinen business-logiikan ja alin persistenssin. Tehtävänannon mukaisesti jätämme käyttäjärajapinnan ja persistenssin pitkältä huomioimatta ja keskitymme business-logiikkaan. 2.2 Horizontal layering Business-logiikka on jaettu sekin kolmeen alijärjestelmään, jotka voidaan nähdä olevan loogisesti rinnakkain käyttäjärajapinnan alla, niin että käyttäjärajapinnalla on näkyvyys kaikkiin näihin järjestelmiin. Alijärjestelmät ovat Kurssit, Tentit ja Henkilöt, joilla kaikilla on nimensä mukainen pääpainopiste. Alijärjestelmät voidaan myös järjestää niin, että ylempi riippuu aina vain alemmista. Tällöin Kurssit on ylin, Tentit sen alla ja Henkilöt alimmaisena. Useimmat luokat oli helppo sijoittaa keksittyihin alijärjestelmiin, mutta toiset, kuten Tehtävä (Tentit -järjestelmään Kurssit -järjestelmän sijaan) ja Rooli (Kurssit -järjestelmään Henkilöt -järjestelmän sijaan) olivat hieman epäselvempiä. Saavutimme kuitenkin lopulta mielestämme tarkoituksenmukaisen alijärjestelmäjaon joka pitää kytkeytymisen alhaisena ja yhtenäisyyden korkeana, ja jolla vältetään pakkausten väliset kehäriippuvuudet. Myös käyttöliittymätaso on jaettu kahteen erilliseen osakokonaisuuteen, toinen järjestelmän käyttäjiä ja toinen ylläpitoa varten. Nämä ovat selvästikin eri toimintoryhmät eivätkä missään vaiheessa mene päällekkäin, ja siksi pidimme näiden erottamista eri osajärjestelmiksi järkevänä. 2.3 Sijoittelu Järjestelmä voidaan sijoittaa eri koneille fyysisesti kolmitasomallia myötäillen. Tällöin solmuiksi muodostuvat tietokantapalvelin, http-palvelin ja http-asiakas. Käyttäjä- ja

ylläpitorajapinnat sijoitetaan http-palvelimelle. Sovelluslogiikka voidaan sijoittaa samaan solmuun http-palvelimen kanssa, joka tällöin käyttäisi sitä suoraan. Tämä tilanne kuvataan kuvan 2 sijoituskaaviossa. Tämä ei suinkaan ole ainoa sallittu vaihtoehto, vaan vaihtoehtoisesti sovelluslogiikka voidaan erottaa http-palvelimesta omaksi solmukseen, tai toisaalta koko järjestelmä asiakasta lukuun ottamatta voidaan sijoittaa samaan solmuun. Jaettaessa järjestelmä kolmeen solmuun palvelinpäässä koneet ovat yhdistetty esim. yksityisellä lähiverkolla. Yksi palvelintietokone toimii tietokantapalvelimena ja kuormasta riippuen yhdestä muutamaan palvelinta toimii WWW-palvelimina palvelinrypäässä. Käyttöliittymät ovat selainkäyttöisiä. Asiakaspääksi käy mikä tahansa tietokone, jolla on pääsy Internetiin ja johon on asennettu WWW-selain. 2.4 Arkkitehtuurikaaviot Kuva 1 Järjestelmän arkkitehtuuri Kuva 2 Kolmijakoinen sijoittelu

3 Suunnittelu 3.1 Realisoidut käyttötapaukset Suunnittelutason mallissa ja viestiyhteyskaavioissa toteutettaviksi käyttötapauksiksi valittiin tenttiin ilmoittautuminen, tehtävien pisteytys ja arvostelun hyväksyminen. Näiden ajateltiin olevan järjestelmän kannalta olennaisimpia toimintoja ja tulevan tiheimmin käytetyiksi. Edellä mainittujen lisäksi piirrettiin kaavio kirjautumisesta järjestelmää, koska se on esiehtona kaikille muille operaatioille. Kuva 3 Kirjaudu sisään

Kuva 4 Ilmoittaudu tenttiin

Kuva 5 Pisteytä tehtäviä

Kuva 6 Hyväksy arvostelu

3.2 Domain-mallin kehitys suunnittelumalliksi Jokaiseen pakkaukseen lisättiin julkisivuluokka XxxController, joka edelleen käyttää alijärjestelmän sisäisiä rajapintoja ja samalla agregoi siihen pakkaukseen kuuluvat oliot (kurssi / tentti / henkilö). Operaatioita luokkiin lisättiin pääosin tiedon välittämiseksi ja turhan kytkeytymisen välttämiseksi. Luokkien attribuuttien näkyvyydet muutettiin private:ksi ja tarvittaessa pääsy niihin luokan ulkopuolelta tapahtuu getter- ja setter-metodien kautta. Yksinkertaisuuden vuoksi monet suunnittelumallit on jätetty pakkauskohtaisista luokkakaavioista pois, mutta näiden käyttöä selitetään omassa kappaleessa. Business-logiikka alijärjestelmän sisällä ei käytetä rajapintoja vaan luokat kommunikoivat suoraan keskenään. Tämä johtuu siitä, että järjestelmän domain-malli on kohtuu staattinen eikä siihen ole odotettavissa merkittäviä muutoksia järjestelmän elinkaaren aikana. Tällöin myös business-logiikan toteutus pysyy samana. Käyttöliittymien ja erityisesti persistenssialijärjestelmän toteutuksien sen sijaan mukautuvan ajan myötä uusiin tekniikoihin, ja eristäviä rajapintoja tarvitaankin näiden ja business-logiikan väliin. Nämä on kuitenkin jätetty pois tästä osittaisesta suunnittelumallista. 3.3 Osittainen suunnittelumalli Ohessa ovat pakkauskohtaiset luokkakaaviot, joissa esitetään oleellisimmat luokat. Kaaviot pyrittiin pitämään kompakteina ja helppolukuisina, ja tästä syystä suunnittelumalleja ja apuluokkia on jätetty pois. Esimerkiksi kurssi-, tentti- ja henkilöinstanssien aggregaatio todennäköisesti toteutetaan HashMap tyyppisellä ratkaisulla, mitä ei kuitenkaan ole merkitty kaavioihin vaan XxxControllerista on suora aggragaatiosuhde vastaavaan luokkaan. Sama koskee myös muita vastaavia ratkaisuja joihin tässä dokumentissa ei oteta kantaa. Tämän sijasta keskitytään sovelluksen business-logiikan kannalta oleellisiin osiin. Kuva 7 Henkilöt -alijärjestelmä

Kuva 8 Kurssit -alijärjestelmä

Kuva 9 Tentit -alijärjestelmä 3.4 Suunnittelussa käytetyt (tai harkitut) suunnittelumallit Facade Kuten edellä oli jo mainittu, XxxController luokat toimivat julkisivuina pakkauksilleen tarjoten yksinkertaisen rajapinnan yleisimmille pakkaukseen kohdistuville toiminnoille, esimerkiksi kurssin ja siihen liittyvien tenttien/tehtävien haulle. Singleton + Factory Method XxxControllerit ovat luonteeltaan ainokaiset, sillä pakkauksen Controller aggregoi muiden pakkaukseen kuuluvien luokkien kaikkia ilmentymiä. Ainokainen on toteutettu private static attribuuttina, jolloin suorat viittaukset siihen luokan ulkopuolelta ovat kielletyt. Sen sijaan pääsy siihen tapahtuu getinstance() -metodin kautta, joka palauttaa viittauksen olemassa olevaan ainokaiseen tai luo ja alustaa sen jos kyseessä on

ensimmäinen metodin kutsu (vaihtoehtoisesti luonti ja alustus voidaan yhdistää järjestelmän käynnistykseen). Composite Kuva 10 Singeton + Factory method Kuten tiedetään tehtävä voi olla yksittäinen esseekysymys, tai koostua useammasta pienemmästä kysymyksestä, ja teoriassa mikään ei estä alijakoa seuraavillekin tasolle. Tämä tosiasia voidaan mallintaa suunnittelutason mallissamme rekursiokoosteena: abstraktista tehtäväluokasta periytyy muutama eri tehtävävaihtoehto ja lisäksi tehtäväkooste. Strategy Kuva 11 Tehtävä rekursiokooste Tehtävä(nanto) voidaan haluta näyttää ja käyttää erilaisissa muodoissa. Tällaisia voisi olla esimerkiksi http-sivu selainkäyttöliittymää varten, postscript/pdf tulostusta varten tai txt/doc lisämuokkausta varten. Tästä syystä on hyödyllistä tallentaa tehtävät geneeriseen muotoon (esim. xml) ja käyttää instanssia, joka toteuttaa konkreettisen toimintamallirajapinnan tehtävän muokkaamiseen haluttuun tiedostomuotoon.

Prototype Kuva 12 Tulostusstrategia Voidaan olettaa, että useat tentit ja/tai tehtävät sisältävät paljon samaa. Vähintäänkin kurssikoodi ja nimi toistuvat pitkälti samanlaisina. Lisäksi tehtävien määrä ja pisteet ovat nekin usein samat. Näin ollen uusien tenttien luontia voidaan helpottaa käyttämällä valmiita tenttipohjia. Nämä pohjat voidaan toteuttaa Tentti-luokan prototyyppiilmentyminä. Pohja voidaan alustaa vain kertaalleen ja kutsua tarvittaessa sen clone() - metodia sen sijaan, että joka kerta luotaisiin uusi alustamaton ilmentymä ja asetettaisiin samat muutokset sen setter-metodeita käyttäen. Tässäkin voidaan käyttää singleton ja factory method -suunnittelumalleja määrittelemällä esimerkiksi staattinen gettemplate(string key) -metodi, joka palauttaa avainta vastaavan templaten staattisesta Hashtable:sta. Template Method Vaatimuksissa oli maininta automaattisesti tarkistettavista tehtävistä, ja vaikka tätä toiminnallisuutta ei edellytetä vielä järjestelmän ensimmäiseltä versiolta, päätimme ottaa sen huomioon suunnittelussa. Tehtävä-kantaluokkaan voidaan määritellä pisteytä() - metodi, joka korvataan esim. Not Supported poikkeuksen heittävällä toteutuksella käsin tarkastettavien tehtävien tapauksessa. Automaattisesti tarkistettavat tehtävän aliluokat sen sijaan suorittavat tehtävän pisteytyksen ja palauttavat tuloksen.

Bridge Kuten edellä olikin mainittu järjestelmämme business-logiikan ei odoteta vaativaan muutoksia, ja tästä syystä luokkien välissä ei käytetä rajapintoja. Käyttöliittymä ja persistenssitoteutukset voivat sen sijaan muuttua. Näiden alijärjestelmien ja businesslogiikan välille tarvitaankin rajapinnat, jotta business-logiikka olisi riippumaton näiden toteutuksista, eikä vaatisi näin muutoksia koodiin alijärjestelmien muuttuessa. Observer Observer-mallia harkittiin muun muassa Tenttisuoritus- ja Tehtäväsuoritus -luokkien välille, jotta tentin kokonaispistemäärä päivittyisi tehtäviä arvosteltaessa. Käytölle ei kuitenkaan ollut tarpeeksi edellytyksiä, sillä Tenttisuoritus-olio tietää muutenkin kaikista tehtäväsuorituksistaan ja voi johtaa kokonaispistemäärän aina tarvittaessa. Lisäksi pistemäärälle on tarvetta vain arvostelun lukitus/hyväksymisvaiheessa. Sen sijaan, jos tietoa voitaisiin haluta mielivaltaisella hetkellä ja useita kertoja ennen arvostelun lukitusta, olisi ehkä kannattavaa pyytää suorituksia laskemaan pistemääränsä vain tehtäväpisteiden muuttuessa ja palauttaa tämä valmiiksi laskettu arvo vastauksena kyselyihin.