Suunnitteludokumentti



Samankaltaiset tiedostot
Vaatimusmäärittelydokumentti

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

Ryhmäpalaverit. Lintulaskenta-ryhmä. 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.

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

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

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

Lohtu-projekti. Testaussuunnitelma

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

Ylläpitodokumentti Mooan

Action Request System

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

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

Projektityö: Mobiiliajopäiväkirja. Mikko Suomalainen

Ylläpitodokumentti. Ohjelmistotuotantoprojektin tietojärjestelmä OhtuTie

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

Graafinen käyttöliittymä lintujen rengastusjärjestelmään

Ylläpito-ohje. Matematiikan oppifoorumi. Carl Johansson Jukka Kariola Outi Marttila Helena Venäläinen Sampsa Virtanen. Ohjaaja.

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

Projektinhallintaa paikkatiedon avulla

Asiointipalvelun ohje

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

INTINU13A6 Java sovellukset

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

SUOMEN KUNTALIITTO RY

Loppuraportti. Matematiikan oppifoorumi. Carl Johansson Jukka Kariola Outi Marttila Helena Venäläinen Sampsa Virtanen. Ohjaaja.

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

opiskelun suunnittelujärjestelmä, kurki ja ilmo käyttävät kaikki samaa tietokantaa, ja uusi järjestelmä tulee osaksi tätä.

Käyttöohje. Versiohistoria: versio Mari Kommenttien perusteella korjattu versio

VAATIMUSMÄÄRITTELY. Polku Versio 1.2. Projektiryhmä

1 JOHDANTO UUDEN ILMOITUKSEN LUOMINEN VALMIIN ILMOITUKSEN MUOKKAAMINEN YLEISTEKSTIEN KÄYTTÖ JA LUOMINEN...4

Selaimen kautta käytettävällä PaikkaOpin kartta-alustalla PaikkaOppi Mobiililla

Sinkka Projekti Sivu 1 (6) Projektin tiedostokuvaus dokumentti

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

Suvi Junes/Pauliina Munter Tietohallinto/Opetusteknologiapalvelut 2014

WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa

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

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

Convergence of messaging

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Webforum. Version 15.1 uudet ominaisuudet. Päivitetty:

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

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

1 www-sivujen teko opetuksessa

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

Raporttiarkiston (RATKI) käyttöohjeet Ohjeet

Lomalista-sovelluksen määrittely

ADMIN. Käyttöopas 08Q4

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

AC Hannes Statistics Tool. Ilkka Hakkarainen

Visma Fivaldi -käsikirja Tehtävienhallinta- ohje käyttäjälle

Ylläpitodokumentti. Oppimistavoitteiden hallintajärjestelmä harri

Graafinen käyttöliittymä lintujen rengastusjärjestelmään

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A Kandidaatintyö ja seminaari

KIURU Tietotekniikan sovellusprojekti

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

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

24h Admin V / 24h_Admin_v100.pdf 1/9

Testaussuunnitelma. PUSU-ryhmä. Helsinki Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

RATKI 1.0 Käyttäjän ohje

RATKI 1.0 Talousraportin käyttäjän ohje

Graafinen käyttöliittymä lintujen rengastusjärjestelmään

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1. MafiaTools

Paperiton näyttösuunnitelma

Tietokantaraportointivälineen valintaopas

Tekninen suunnitelma - StatbeatMOBILE

LoCCaM Riistakamerasovellus. Dimag Ky dimag.fi

Matematiikan oppifoorumi Projektisuunnitelma

OHJE 1 (14) Peruskoulun ensimmäiselle luokalle ilmoittautuminen Wilmassa

opiskelijan ohje - kirjautuminen

Rauno Levan & Kimmo Salonen (toim.) GarbageX ohjelman käyttöohje

EMVHost Online SUBJECT: EMVHOST ONLINE CLIENT - AUTOMAATTISIIRROT COMPANY: EMVHost Online Client sovelluksen käyttöohje AUTHOR: DATE:

OPI-Maksut - Käyttötapaukset

Informaatiotekniikan kehitysyksikkö

ARVI-järjestelmän ohje arvioinnin syöttäjälle

Nspire CAS - koulutus Ohjelmiston käytön alkeet Pekka Vienonen

Opinnäytteen tallennus Theseus-verkkokirjastoon

SISÄLLYS KIRJAUTUMINEN... 2 YLEISESITTELY... 2 JÄSENHALLINTAAN LIITTYVIÄ RAPORTTEJA... 3 RAPORTTI MAKSAMATTOMISTA JÄSENISTÄ... 4 RAPORTIT...

NTG CMS. Julkaisujärjestelm. rjestelmä

Testausraportti. Oppimistavoitteiden hallintajärjestelmä harri

Graafinen käyttöliittymä lintujen rengastusjärjestelmään. Vaatimusdokumentti

1. Uuden Ilmon käytön eroavaisuudet vanhasta Ilmosta lyhyesti

Opintokohteiden muokkaus

Hintatiedotus ja tietojen välitys. Loppuraportti

ehops Henkilökohtainen opintosuunnitelma

Hallintaliittymän käyttöohje

Opas administraattori-tason käyttäjille. MANAGERIX -ohjelman esittely... 2 Kirjautuminen... 2

NÄYTÖT JA TYÖSSÄOPPIMINEN -pikaohje

Kylätietojen täyttöohje. Sisällys

Graafinen käyttöliittymä lintujen rengastusjärjestelmään

Internet-pohjainen ryhmätyöympäristö

VAATIMUSMÄÄRITTELY. Polku Versio 1.1. Projektiryhmä

VIS Online 2.0 version uudistukset

Kela Kanta-palvelut Terveydenhuollon todistusten välitys Toiminnalliset prosessit

Kuva: Ilpo Okkonen

Tik Tietojenkäsittelyopin ohjelmatyö Tietotekniikan osasto Teknillinen korkeakoulu KÄYTTÖOHJE. LiKe Liiketoiminnan kehityksen tukiprojekti

HELIA 1 (11) Outi Virkki Tiedonhallinta

ohjeita kirjautumiseen ja käyttöön

Kennelliiton Omakoira-jäsenpalvelu Ohje kennelpiireille, pätevyyksien ylläpito

Transkriptio:

1 Suunnitteludokumentti Lintulaskenta-ryhmä Helsinki 3.11.2011 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

2 Yleistä Kurssi 581260 Ohjelmistotuotantoprojekti (9.0op) Projektiryhmä Jarkko Nyman (projektisihteeri) Aleksi Aalto Anna Hirvonen Kari Konola Riku Rytkönen Jukka Pajunen Asiakas: Heikki Lokki Asiantuntijat: Aleksi Lehikoinen ja Esko Piirainen HY:n luonnontieteellinen keskusmuseo sekä Mikko Pelkonen tktl Kotisivu: http://www.cs.helsinki.fi/courses/581260/2011/s/a/1

3 Sisällys 1. Johdanto... 4 1.2 Dokumentin rakenne... 4 1.3 Sanasto... 5 2. Yleiskuva järjestelmästä... 6 2.1 Toteutus- ja toimintaympäristö... 6 3. Arkkitehtuurikuvaus... 6 3.1 Korkean tason arkkitehtuurikuvaus... 8 3.2 Toimintajakoarkkitehtuuri... 10 3.3 Käyttöliittymätaso (www-arkkitehtuuri)... 11 4. Pääkomponentit... 13 4.1 Pulautin... 13 4.1.2 PulauttimenAjaja (PulauttimenAjajaV3) ja HavainnointiKokonaisuus... 13 4.1.3 Itse pulautin (PulautinV3)... 13 4.2 Validointi... 14 4.2.1 TipuAPIValidointi... 14 4.2.2 Tietokantavalidointi... 14 4.2.3 LokaaliValidointi... 14 4.3 Käyttöliittymä... 15 4.3.2 Lisäys... 15 4.3.1 Haku/Muokkaus... 17 4.4 Tietokanta... 17 5. Hylätyt ratkaisuvaihtoehdot sekä puutteet että jatkokehitysideat... 19 6. Lähteet... 22

4 1. Johdanto Ohjelmistotuotantoprojekti on Helsingin yliopiston Tietojenkäsittelytieteen laitoksen kurssi 581260. Ohjelmistotuotantoprojekti ajankohta: 05.09-16.12.2011. Kurssi on tietojenkäsittelytieteen aineopintoihin sisältyvä pakollinen opintojakso. Kurssin ohjelmistotuotantoprojekti (9op) yhteydessä suoritetaan työelämään orientoituminen (1op). Lainattu: http://www.cs.helsinki.fi/courses/581260/2011/s/a/1 Lintulaskenta-ryhmän tavoitteena on kehittää tietokanta käyttöliittymineen maalintujen pistelaskentatutkimusten. Lisäksi suunnitellaan ja toteutetaan web-lomake, jolla laskijat lähettävät tietoja keskusmuseoon ja museovirkailija admin-käyttöliittymästä hyväksyy lähetetyt tiedot tietokantaan talletettaviksi. Ohjelmisto tulee osaksi lintuvaara Lintuvaara-portaalia (Lintuvaara, ks. https://rengastus.helsinki.fi.). Projektiryhmään kuuluvat Jarkko Nyman, Aleksi Aalto, Anna Hirvonen, Jukka Pajunen, Riku Rytkönen, sekä Kari Konola. Ohjaajana toimii Arto Vihavainen. Projektin asiakas on tietojenkäsittelytieteen laitoksen puolesta Heikki Lokki. Asiantuntijoina toimivat: Aleksi Lehikoinen ja Esko Piirainen HY:n luonnontieteellinen keskusmuseo, sekä Mikko Pelkonen tktl. Projektin tuloksena syntyvä ohjelmisto julkaistaan GNU GPL v2 lisenssin alla. (Lisää tietoa lisenssistä osoitteessa http://www.gnu.org/licenses/gpl-2.0.html). Ohjelmiston käyttöoikeudet luovutetaan asiakkaalle erillisien sopimuspapereiden nojalla.. 1.2 Dokumentin rakenne Tämän dokumentin päätarkoituksena on kuvailla ohjelman teknistä toteutusta.. Dokumentti tarkoituksena on myös sitoa vaatimusmäärittelyssä annetut ohjelman vaatimukset osaksi teknistä toteutusta. Dokumentissa ei ole kuvailtu Esko Piiraisen toteuttamia lintuuvaara, sekä TipuAPI komponentteja.

5 1.3 Sanasto Apache Tomcat Web-palvelinohjelmisto, joka toteuttaa Javan Servlet-rajapinnan. JavaScript Web-selaimen oliopohjainen komentosarjakieli. JSP JavaServer Pages on Javan Servlet-rajapintaa hyödyntävä tekniikka, joka mahdollistaa web-sivujen dynaamisen generoinnin selainohjelmille. JSP käyttää omaa merkkausmenetelmäänsä, joka mahdollistaa Java-koodin upottamisen HTML:n sekaan. Kirjekyyhky Helsingin yliopiston luonnontieteellisen tiedekunnan museon tarjoama websovellus. Tarjoaa valmiin keskitetyn lomakepalvelun Lintuvaara - museon tarjoama käyttäjien keskitetty tunnistuspalvelu. Lintuvaara sisältää useita pistelaskentaan liittyviä palveluita. Servlet on ohjelmamoduuli. Suoritettava Java-luokka, joka toteuttaa rajapinnan javax.- servlet. Servlet ajetaanweb-palvelimella se myös vastaanottaa ja vastaa Web-clientien palvelupyyntöihin. TipuAPI Asiakkaan tarjoama palvelu, jonka avulla pystytään hakemaan tarpeellista tieto muun muassa validointia varten. TKTL: Helsingin yliopiston tietojenkäsittelytieteen laitos. XML: extensible Markup Language on metakieli, jonka avulla kuvataan tiedon rakennetta. XML on väline, jonka voidaan esittää tiedon hierarkia sekä kapseloida data.

6 2. Yleiskuva järjestelmästä Admin-hallinnointikomponentista hallinnoidaan tietoja maalintujen pistelaskennoista. Rengastajat täyttävät web-pohjaisia lomakkeita, jotka admin omasta käyttöliittymästään muokkaa tai tallentaa sellaisenaan tietokantaan. Admin voi lähettää takaisin web-lomakkeen käyttäjälle, mikäli lomakkeessa on jotakin korjattavaa. Admin-hallinnointikomponentista voidaan myös hakea weblomakkeiden tietoja sen jälkeen kun ne on tallennettu tietokantaan. Järjestelmän käyttö tapahtuu Internet-selaimen avulla (esim. Internet Explorer tai Mozilla), jolloin asiakaskoneella ei tarvitse olla mitään erityisiä muita sovelluksia tai komponentteja asennettuna. 2.1 Toteutus- ja toimintaympäristö Ohjelmisto toteutetaan käyttäen Java-ohjelmointikielen versiota 1.6.0_26. Versionhallintana projektissa käytetään Google Codea (http://code.google.com). Kehitysympäristönä käytetään NetBeans 6.8. Projektiryhmä on käyttänyt Apache TomCat- palvelinohjelmistoa. Tietokannan kanssa käytössä on frameworkkina EclipseLink (JPA 2.0). Luonnontieteellisen keskusmuseon testitietokantapalvelimelle yhteyden saamiseksi käytämme Oraclen Database 10g Release 2 (10.2.0.4) JDBC -pakettia. 3. Arkkitehtuurikuvaus Järjestelmän arkkitehtuuri ei ole yksinkertainen asia, eikä sitä näin ollen voi esittää kattavasti esimerkiksi yhdessä kaaviossa. Kuitenkin arkkitehtuuri on järjestelmän suunnittelun, toteuttamisen, toimimisen ja ymmärtämisen kannalta keskeisessä asemassa. Tämän vuoksi järjestelmästä esitetään useita eri arkkitehtuurisia näkymiä (architectural views), joilla pyritään monipuolisesti kuvaamaan keskeisimmät ominaisuudet. Sovellus on pyritty kuvaamaan monesta eri näkymästä, jolloin järjestelmän monimutkaisuus pystyttäisiin jakamaan mielekkäisiin osiin. Arkkitehtuuriratkaisu koostuu alla olevan kuvan mukaisesta mallista. Mallinnus koostuu kahdesta varsinaisesta eri tasosta, näitä tasoja ovat käyttöliittymätaso (user interface), sekä tietokantataso (database). Rekisterit ja servletit muodostavat ikään välikerroksen, joka kommunikoi tietokantatason kanssa. Validointeja varten toteutetaan erillinen validointikirjasto, näiden avulla tarkistetaan tiedon oikeellisuutta. Jokaisesta tasosta on tehty erillinen komponentti kuvaus.

7 Kuva 1. Arkkitehtuurikuvaus Käyttöliittymätaso Käyttöliittymätaso ikään kuin eristetään muusta sovelluksesta, mutta kaikki tiedon esittämiseen liittyvät toiminnot toteutetaan asiakaskerroksen tasolla.. Käyttöliittymätaso vastaa sivujen tuottamisesta ja toimittamisesta asiakkaalle. Käyttäjälle tehdään käyttöliittymätason yleis-ilme muistuttamaan lintuvaaran muita palveluita. Servletit ja rekisterit Servletit ja rekisterit hoitavat kommunikoinnin käyttöliittymätason ja tietokantatason välillä. Käyttöliittymätasolta tapahtuvat toiminnot ohjautuvat selaimelta servleteille, jotka välittävät tiedon rekistereille ja rekisterit lopulta hoitavat kommunikoinnin tietokantatason kanssa. Servlettien ja käyttöliittymätason toimintaa on kuvattu tarkemmin kuvassa 3. Sovelluksen web-arkkitehtuuri.

8 Tietokantataso Taso koostuu tauluista, jotka kuvastavat aihealueen kokonaisuuksia ja taulujen välisiä yhteyksiä. Esimerkiksi taulu Reitti sisältää pistelaskentareitin tietoja kuten reittinumero ja pisteiden lukumäärä. Reittiä on kenties laskettu monena vuotena, tämä näkyy kannassa siten, että reitillä on suhde näihin havainnointitapahtumiin. Nämä kokonaisuudet on toteutettu Java-olioina, jotka on määritelty entiteeteiksi, jolloin ne voidaan tallettaa kantaan sellaisinaan. Entiteetit saavat talletuksen yhteydessä yksiselitteisen tunnisteen. 3.1 Korkean tason arkkitehtuurikuvaus Kuva 2. Korkean tason arkkitehtuurikuvaus

9 Komponentti Admin-hallinnointikomponentti Validointipalvelu Pulautin Lomake Erillistiedosto TipuAPI Lintuvaara Tietokanta Selvitys Käytetään lomakkeiden muokkaukseen, sekä hallinnoimiseen. Käyttöliittymästä tallennus tietokantaan. Voidaan suorittaa hakuja tietokantaan. Validointeja varten toteutetaan erillinen validointikirjasto,tämän avulla varmistutaan tiedon oikeellisuudesta. Validointia käytetään lomakkeissa, ennen kuin ne lähetetään adminille. Validointia käytetään myös lisäykseen ja muokkaukseen hakupalvelun yhteydessä Siirtää vanhan erillistiedoston tietokantaan. Pulautin sisältää joitakin validointeja, mutta suurin osa validoinneista hoidetaan validointikirjastolla datalle jonka pulautin on jo palauttanut. Lomake täytetään ja jätetään odottamaan adminin suorittamaa validointia. Admin lähettää lomakkeen takaisin korjattavaksi, mikäli virheitä ilmenee Sisältää vanhan datan, joka on luettava, muokattava järkevämpään muotoon, validoitava ja siirrettävä tietokantaan pulauttimen avulla Sisältää tietoa maalintujen pistelaskentalomakkeista. kuten mm. biotoopit, lajit, kunnat, koordinaatit. Pääpalvelu, joka kautta käyttäjä kirjautuu sisään tai admin käyttää sovellusta. Tietokantaan tallennetaan maalintujen pistelaskentalomakkeiden tietoja.

10 3.2 Toimintajakoarkkitehtuuri Toimintajakoarkkitehtuuri kuvaa järjestelmän ohjelmiston toimintaa korkealla abstraktiotasolla. Kuvan tarkoituksena on kuvailla mistä eri palasista ohjelmisto koostuu. Kuvassa esiintyvät laatikot voisivat toimia korkealla abstraktiotasolla moduulijakona ohjelmistossa. Kuva 2. Toimintajako-arkkitehtuuri Arkkitehtuurissa on eroteltu kahdenlaiset loppukäyttäjät semanttisesti eri tapauksikseen, koska heillä on eri käyttöliittymät palveluun. Käyttäjäryhmien erotus on kuvassa esitetty korostetusti, sillä ylläpitäjän ja loppukäyttäjän käyttöliittymien toiminnallisuudet eroavat toisistaan. Varsinainen ohjelmisto on kuvattu keskellä olevassa laatikossa. Järjestelyllä on pyritty esittämään mahdollisimman yksinkertainen kokonaiskuva järjestelmän toiminnoista ja niiden välisistä suhteista

11 Ulkoiset komponentit koostuvat sovelluksen käyttämistä ulkoisista palveluista. Nämä komponentit kommunikoivat servlettien ja rekistereiden kanssa. Servletit ja rekisterit hoitavat kommunikoinnin käyttöliittymätason, admin-käyttöliittymätason, ulkoisien komponenttien ja tietokantatason välillä. Kirjekyyhky ja TipuAPI on valmiita Esko Piiraisen ja aiemman Helsingin yliopiston ohjelmistotuotantoprojektin toteuttamia palveluita. toteuttamia sovelluksia. 3.3 Käyttöliittymätaso (www-arkkitehtuuri) Sovelluksessa kaikki käyttäjälle tarjottavat palvelut toteutetaan www-selaimen avulla, joten wwwarkkitehtuuri ja käytettävyys on koko ohjelmiston sujuvan käytön kannalta keskeisessä osassa. Tarkoituksena on toteuttaa järjestelmä, joka pystyy käsittelemään käyttäjän www-lomakkeille antamat tiedot ja lähettämään tiedot eteenpäin admille, joka hyväksyy tiedot ja kirjaa ne kantaan. Kuva 3. Sovelluksen web-arkkitehtuuri

12 Sovelluksen www-arkkitehtuuri havainnollistetaan kuvassa 3. 1. Käyttäjä kirjaa syötteen, joka lähetetään eteenpäin. Tekniikka on toteutettu JSP:llä. Syöte voi olla esimerkiksi täytetty web-lomake, joka lähetetään adminille tarkistettavaksi. 2. Syötteen ottaa vastaan servlet, joka välittää tallennetut tiedot kontrolliluokalle. Lisäksi jokaisen sovelluksen pääkansiossa on web.xml niminen tiedosto, joka määrittää, miten sivupyynnöt ohjataan eri servleteille. 3. Kontrolliluokka ottaa syötteen vastaan, tarkistaa, miltä sivulta syöte on peräisin, ja tarkistaa syötteen oikeellisuuden. Tämän jälkeen kutsutaan tarvittaessa muita Java-luokkia, joilla käyttäjän antama syöte käsitellään ja tarvittava toiminnallisuus suoritetaan. Kontrolliluokka päättelee myös sen, mille sivulle käyttäjä seuraavaksi ohjataan. Tässä yhteydessä suoritetaan 4. Data sisältää kontrolliluokan asettamat tiedot, joita tarvitaan www-sivun muodostamiseen (esim. lomakkeen kenttien tiedot). 5. JSP-tekniikalla muodostetaan dynaamisesti www-sivu.

13 4. Pääkomponentit Tässä kappaleessa pyritään selventämään eri komponenttien tehtäviä. Komponentit on jaettu luokkiin, jotka esitellään tässä osassa 4.1 Pulautin 4.1.2 PulauttimenAjaja (PulauttimenAjajaV3) ja HavainnointiKokonaisuus Yleiskuvaus: PulauttimenAjaja on Pulautinta käyttävä apuluokka. Pulautin on vanhaa pistelaskentadataa perättäistiedostosta tietokantaan purkava ohjelma, joka käy pistelaskentadataa läpi reitti kerrallaan ja luo JPA-olioita perättäisdatan pohjalta. Se tallentaa olioviitteet HavainnointiKokonaisuus -luokan taulukoihin, joista tietoja myöhemmin haetaan tallennettavaksi kantaan. Havainnointikokonaisuusluokan alkuperäinen tarkoitus oli selkeyttää validointia ja kytkeä eri pistemäärillä omaavat reitit toisiinsa, mutta vaatimusten tarkentuessa sen rooli jäi lähinnä välikeluokaksi. 4.1.3 Itse pulautin (PulautinV3) Yleiskuvaus: Pulautin muokkaa vanhaa peräkkäisdatatiedostoa ja tuottaa siitä JPA-ilmentymiä mukaisesti esimerkiksi havainnoinnin vuosi on ilmoitettu indekseissä 1-4, joten nämä luetaan tiedotosta, muunnetaan yhdeksi luvuksi ja talletetaan havainnointitapahtuman muuttujaan vuosi. Pulautin hyödyntää luokkaa Havainnointikokonaisuus, joka kokoaa kaiken yhteen reittiin liittyvän tiedon yhteen paikkaan. Havainnointikokonaisuus toimii myös palautettavana yksikkönä pulauttimessa, eli yksi pulautus on yhden reitin kaikki havainnot. Haetaan pisteet.rtf ohjeiden mukaisesti eli esim. vuosi on ilmoitettu indeksissä 1-4, joten luetaan nämä indeksit muuttujaan vuosi. Tuottaa HavainnointiKokonaisuuksia eli reittejä joille on lisätty viitteet kaikkiin sen Havainnointitapahtumiin (ja pisteisiin jne.)

14 Pitää sisällään: HavainnointiTapahtumat Sekä luokat: HavainnointiPiste Pistevuosi Lajihavainto Parvihavainto Toiminto kokoaa reitin liittyen data yhteen paikkaan Hyödyt: Helpottaa pulauttimen toimintaa, helpottaa validointia 4.2 Validointi Yleiskuvaus: Validoinnissa erillinen Validointikirjasto. Validointikirjasto toteutetaan erillisenä komponenttina. Luokka: validointikirjasto. Tarkoituksena oli kirjoittaa mahdollisimman yleiskäyttöisiä validointeja, jotta niitä voitaisiin käyttää tarvittavissa paikoissa tarpeen mukaan. Joitakin tarpeellisia poikkeustapauksia lukuunottamatta validoinnit sijaitsevat omina kirjastoluokkinaan. 4.2.1 TipuAPIValidointi Yleiskuvaus: Museon palvelimella sijaitsevan ylläpidettävän tiedon vastaan validointia. Esimerkiksi Suomen kaikki kunnat, lintulajit. Tarkistaa esimerkiksi: onko käyttäjä syöttänyt kelvollisen kunnan nimen tai lintulajin nimen. 4.2.2 Tietokantavalidointi Yleiskuvaus: Tarkistaa datan yhteensopivuuden aikaisemman datan kanssa esim. Onko uuden laskennan päivämäärä. ja kellonaika kelvollinen aikaisempiin havaintokertoihin nähden. 4.2.3 LokaaliValidointi Yleiskuvaus: Suorittaa yksinkertaisia testejä, joilla kokeillaan esimerkiksi syötteen määränmittausta, loogisia rajoja kuten parven kokoa, syötekenttien sisältöä ja sisällön tyyppiä.

15 4.3 Käyttöliittymä Yleiskuvaus: Käyttöliittymän yleiskuvan antaa sivulla: 11. ja 12. esitelty käyttöliittymätason wwwarkkitehtuuri. Servlettien toimintaa käyttöliittymässä kuvaa sivulla 15. esitelty servlettien rakennekaavio. Kuva 4. Servlettien rakennekaavio 4.3.2 Lisäys UusiReittiServlet Alustaa uuden reitin, muun muassa laskee kannasta vanhareittinumeron. Ohjaa sivulle uusireitti.jsp, jossa varsinainen lomake on uuden reitin lisäystä varten. Lomake (reitti.jsp) kutsuu servlettiä ReittiServlet, joka tallettaa reitin tietokantaan.

16 ReittiServlet ohjaa yhteenvetosivulle reitin_yhteenveto.jsp. Uuden havainnointitapahtuman lisäys. TapahtumanHakuServlet Hakee tietokannasta attribuutilla vanhareittinumero reitin, johon uusi havainnointitapahtuma liittyy. Alustaa lomakkeen. Eli tallentaa istuntoon kunnat ja havainnoijat, haetun reitin, uuden tapahtuman ja siihen liittyvät pistevuodet, ja muuta tilatietoa. Ohjaa sivulle havainnointitapahtuma.jsp, jossa on varsinainen lomake uuden tapahtuman lisäystä varten. Lomake (tapahtuma.jsp) kutsuu HavainnointiServlettiä, joka tallentaa uuden havainnointitapahtuman kantaan. Jos validointi ei mene läpi, HavainnointiServlet pyytää LomakkeenValidoijalta virheviestit ja ohjaa käyttäjän takaisin lomakkeen jsp sivulle, jossa virheviestit näytetään. Validoinnin mentäessä läpi havainnointitapahtuma tallennetaan tietokantaan ja käyttäjä ohjataan yhteenvetosivulle (tapahtuman_yhteenveto.jsp). pisteet.jsp - sisältää valikon muokattavan pisteen (Pistevuosi.java) valintaa varten. Lähettää parametreja servletille PisteetServlet, mikä valinta halutaan suorittaa (seuraava/ edellinen piste, tai suoraan annetaan pisteen järjestysnumero). piste.jsp - sisältää lomakkeet pisteen perustietoja varten (biotooppikoodit ja lisätietoa pisteestä), kutsuu servlettiä PisteenPerustiedot muuttuneiden tietojen talletusta varten. Lisäksi piste.jsp sisältää lomakkeen havainnointipisteen lisäystä/muokkausta varten, joka kutsuu servlettia HavainnointipisteServlet edellä mainittujen operaatioiden mahdollistamiseksi. lajihavainto.jsp - sisältää lomakkeen, jolla voi lisätä/muokata pistevuoteen lajihavaintoja, kutsuu servlettiä LajihavaintoServlet

17 parvihavainto.jsp - sisältää lomakkeen, jolla voi lisätä/muokata pistevuoteen parvihavaintoja, kutsuu servlettiä ParvihavaintoServlet pisteidentiedot.jsp - sisältää yhteenvedon pistevuosista ja kutsuu servlettiä PisteetServlet linkin kautta, jos halutaan suoraan valita muokattava piste Edellä mainitut lomakkeet yhdistetään samalle sivulle (muutos.jsp). Haku haluttuun havainnointitapahtumaan tapahtuu TapahtumanHakuServletin kautta (parametrina havainnointiid siis Havainnointitapahtuman primary key), joka ohjaa sivulle muutos.jsp. 4.3.1 Haku/Muokkaus Yleiskuvaus: Haku reitti- ja HavainnointiTapahtuma-luokasta. Ehtojen käyttö tapahtuu unioneiden välityksellä. Yksi haku voi sisältää molempien luokkien ehtoja. Ehtojen perusteella palauttaa linkkejä HavainnointiTapahtumiin välitys eteenpäin muutoslomakkeelle HTTP:n yli parametreinä. Sivu, jolla haetaan servlet, joka suorittaa haun sivu jolla annetaan linkit löydettyihin sivu, jolla näytetään yksittäinen lomake Muokkauksessa kaikki toimii lähes samoin kuin lisäyksissä. Uusien tapahtumien/reittien sijasta istuntoon tallennetaan haetut oliot. Muut luokat joita käytetään: SyotteenTarkastaja.java - tarkistaa, että syöte on numero. TipuAPIForInterface - hakee TipuAPIsta kunnat ja havainnoijat lomakkeita varten. 4.4 Tietokanta Yleiskuvaus: Tietokantaan talletetaan tietoa ja tarjotaan palvelut sen ylläpitämiseksi. Kanta koostuu entiteeteistä, entiteettien attribuuteista ja entiteettien välisistä suhteista.

18 Entiteetit: Reitti Reitti on se matka jolla yksi laskenta tehdään, reitillä on monta pistettä, joilla havaintoja tehdään Havainnointitapahtuma Havainnointitapahtuma on yhden vuoden laskenta yhdelle reitille, sillä on monta pistevuotta, eli tietyn pisteen tietyn vuoden laskentaa. Havainnointipiste Pisteitä joilla havaintoja tehdään. Havainnointipiste sisältää tiedon vain pisteitten koordinaateista (tätä dataa ei ole tarjolla vanhoille laskennoille). Pistevuosi Pistevuosi on Havainnointipisteen vuosittainen laskenta. Jos reittiä on laskettu kahtena vuotena, on havainnointipisteitä reitillä 20, mutta pistevuosia 40, eli yksi kokoelma per vuosi. Lajihavainto Lajihavainto on jollakin pisteellä (pistevuotena) tehty yksittäisestä lintulajista tehty sekä parihavainto tietyn säteen sisä- että ulkopuolelta. Parvihavainto Parvihavainto on havainto suuresta parvesta yksittäistä lintulajia. Parvihavainto liittyy aina johonkin pisteeseen (pistevuoteen). Tietokantaa muokataan rekisterien kautta. Rekisterit tarjoavat lisäyksen, muokkauksen ja haun. Poistoa ei ole toteutettu sen vähäisen tarpeen takia. Poisto on mahdollinen suoraan kantaa SQLkielellä muokaten. Ohjelmassa kantaan tallennus tapahtuu ReittiRekisterillä tallettamalla reitti, jolloin kaikki reittiin liittyvä tallentuu sen mukana. Hakuun käytetään HavainnointitapahtumaRekisteriä, sillä haetut yksiköt ovat havainnointitapahtumia, karkeasti siis mallinnuksia yhdestä lintulaskentalomakkeesta. Jokaiselle entiteetille on olemassa rekisterinsä, mutta niitä ei käytetä kuin manuaaliseen testaukseen (testimain).

19 Kuva 5. Tietokantakaavio 5. Hylätyt ratkaisuvaihtoehdot sekä puutteet että jatkokehitysideat Puutteisiin on kuvattu ne ominaisuudet, jotka on jäänyt toteuttamatta niin ajanpuutteen kuin teknisen osaamisen vuoksi (ks. vaatimusmäärittelydokumentti).

20 Puutteet: -Kirjekyyhky -xml-lomake. -ei lomakkeitten hakua käyttöliittymään. -Raportit -raporttien teko Matlabiin tai Exceliin. -Pisteet -valinta kartalta (koordinaatit). -validointi ettei pisteille tule päällekkäisyyttä (saman sekä eri reitin). -pisteitten koordinaatit väärää muotoa ("metrin tarkkuudella 6+6 lukua", nyt itäkoordinaatti 3 lukua + pohjoiskoordinaatti 3 lukua). -pisteet voivat kuulua moneen eri reittiin mutta eivat koskaan samana vuonna: ei tukea. -pisteitten siirtäminen toiselle reitille ja muut suhteitten muutokset ("Kaikki havainnot pystyttävä siirtämään reitiltä toiselle.") Sessionhallinta -lintuvaaran kautta kirjautumista ei ole -sessioita ei ole toteutettu -tietoturvaongelma, ohjelmaa ei voi käyttää ennen tätä (esim. TipuAPIn rengastajalista kaikille näkyvissä) -Lomakkeen säätiedot -tällä hetkellä ei huomioida lainkaan -halutaan 3-asteinen taulukko "haittasiko sää havainnointia? 1 ei lainkaan 2 hieman 3 paljon" -Admin käyttöliittymä -poisto ei ole mahdollinen käyttöliittymästä käsin vaan se on hoidettava suoraan kantaa SQL:llä muuttaen.

21 -Validoinnit -laskenta-ajan heittely tulisi verrata reitin laskentapäivien keskiarvoon, nyt verrataan vain ensimmäiseen. (Itseasiassa määritelty laskentaohjeissa että verrataan ensimmäiseen, palaverissa tultiin kuitenkin tulokseen että kannattaa verrata keskiarvoon) Ajax validoinnit (eli dynaaminen validointi) on toteutettu mutta ne eivät toimi -Validoinnit kaikenkaikkiaan kesken, joten nyt kantaan voi lisätä vääränmuotoista dataa. Esimerkiksi biotoopiksi voi asettaa mitä vain. -Biotooppien tekstimuoto pitäisi hakea TipuAPI:sta Lomakkeiden validointi -Reitin lomakkeella ei ole validointia (koordinaattien validointi). -Havainnointitapahtuman lomakkeen validointi ei ole valmis (koordinaattien validointi, laskennan ajankohdan aloituksen tarkistus jne.)

22 6. Lähteet [1] Vaatimusdokumentti. Lainattu:5.12.2011 Saatavilla: http://www.cs.helsinki._/group/boa/docs/vaatimusdokumentti.pdf [2] Kurssin kuvaus. Lainattu 15.11.2011 Saatavilla http://www.cs.helsinki.fi/courses/581260/2011/s/a/1