Ylläpitodokumentti Tiput-ryhmä 21.12.2006 581260 Ohjelmistotuotantoprojekti Grönholm Peter Hautamäki Marja Koski Marja-Ilona Lavi Rakel Piela Riitta, projektipäällikkö Helsingin yliopisto Tietojenkäsittelytieteen laitos
Versiohistoria Versio Päiväys Sisällön muutokset 0.1 09.12.2006 Ensimmäinen luonnos 1.0 17.12.2006 Ensimmäinen versio 1.0 21.12.2006 Ensimmäisen version täydennys Kotisivut http://www.cs.helsinki.fi/group/tiput/
Sisältö 1 Johdanto... 1 2 Asennusohje... 1 3 Käynnistysohje... 1 4 Koodin ylläpito... 2 4.1 Kuntaliitokset... 2 4.2 Kuntatietojen muokkaus... 3 4.3 Pesätietojen haku... 3 4.4 Tarkastuslomake... 4 4.5 Raportit... 5 4.6 Aputaulut... 6 4.7 Pesän lisääminen... 6 4.8 Pesätarkastajien ylläpito... 6 4.9 Aloitus-sivu... 6 4.10 Reviirin lisääminen... 6 4.11 Moduulien kokoaminen yhteen... 7 5 Testaus... 7 6 Tietokanta... 7
1 Johdanto Tämä dokumentti käsittelee asioita, joita mahdolliset Tiputprojektin jatkoryhmät tai asiakkaan edestajat tarvitsevat muokatakseen järjestelmää. Tätä dokumenttia ei ole tarkoitettu luettavaksi yksinään, vaan yhdessä suunnitteludokumentin ja ohjelmakoodin kanssa. Joiltain osin on muutoksia tapahtunut vielä suunnitteluvaiheen jäädytyksen jälkeen. Kuvaukset niistä löytyvät moduuleittain koodin ylläpito -kappaleessa. Samoin kaikki toteutumattomat vaatimukset ja suunnitelman osat on kuvattu dokumentissa moduuleittain. 2 Asennusohje Järjestelmän ohjelmistoympäristön tulee olla suunnitteludokumentissa määritellyn mukainen (Luku 4.1). Lisäksi www- ja tietokantapalvelimen tulee olla toiminnassa, millä tässä tarkoitetaan niiden valmiutta palvella asiakasta. 3 Käynnistysohje Järjestelmää ei tarvitse erikseen käynnistää. Ylläpitäjä huolehtii, että www- ja tietokantapalvelin ovat toiminnassa, ja että järjestelmää pystytään käyttämään web-selaimella. Stunnel-ohjelmiston tulee olla myös käynnistettynä kuuntelemaan portteja sovelluksen ja tietokannan palvelinten välillä. Järjestelmä on toimintakyvytön, jos tietokantapalvelimeen ei saada yhteyttä. Järjestelmän käyttö aloitetaan kutsumalla järjestelmän etusivua, index.html, webselaimella. 1
4 Koodin ylläpito Ohjelmaa on projektin aikana käsitelty ns. moduuleittain, mikä tarkoittaa, että jokainen html-sivu muodostaa itsenäisen toiminnallisen kokonaisuuden. Lisäksi jokaisella moduulilla on ollut projektin ajan vastuuhenkilö, joka on pyrkinyt vastaamaan moduulin toiminnallisuuden selvittämisestä, kuvauksesta ja toteutuksesta. Joidenkin moduulien vastuuhenkilö on kuitenkin vaihtunut määrittelyn ja toteutuksen aikana (katso suunnitteludokumentti). Ohjelman jatkotyöstämiseen ja ylläpitoon liittyvät seikat kuvataan myös moduulitasolla. Myös mahdollisten palvelimella tapahtuvien php- ja oracle -päivitysten vaikutukset on myöhemmin otettava huomioon ja mahdollisiin koodiin tehtäviin muutoksiin varauduttava. 4.1 Kuntaliitokset Kuntaliitoksen tekeminen toteutuu, kuten suunnitteludokumentissa on määritelty: käyttäjä valitsee kuntaliitokseen tiputusvalikoista kaksi kuntaa, syöttää kunnan uuden nimen ja uuden tunnuksen sekä kunta-tietoihin liittyvät muut pakolliset kuntapohjaiset aluetiedot. Kaikki kentät ovat pakollisia kenttiä, koska yhteys muihin aluetasoihin on oltava tallennettuna tietokannassa. Mikäli kuntaliitos on jo olemassa, antaa tietokanta virheilmoituksen. Toteutuksessa on koordinaatteina käytetty astekoordinaatteja, mutta asiakas olisikin halunnut pisteet tallennettaviksi yhtenäiskoordinaatteina. Muutosta ei ehditty enää kuitenkaan toteuttaa. Samoin kaikki syötteiden oikeellisuustarkastukset jäivät ajan puutteen vuoksi puuttumaan. Ohjelma menee virhetilaan, jos syötteinä annetaan tietokannan kenttiin sopimattomia syötteitä. Myöskään kenttien tyhjennys-toimintoa ei ehditty täysin toteuttaa. 2
4.2 Kuntatietojen muokkaus 4.3 Pesätietojen haku Kuntatietojen muokkaaminen kirjattiin suunnitteludokumenttiin tapahtuvaksi siten, että käyttäjä valitsee pudotusvalikosta muokattavan kunnan nimen ja painaa hae- nappia ja näytölle ilmestyy muokattavan kunnan tiedot mikäli se löytyy tietokannasta. Tämän jälkeen käyttäjä voi muuttaa muokattavan kunnan tietoja ja tallentaa tiedot. Kenttien tyhjennys ei toimi, mikä myös testaustilanteessa on kirjattu. Muokkaamistilanteessa kenttien tyhjennys asettaa tiedot lähtötilanteeseen. Moduulia testattiin myös lopullisen käyttäjän kannalta ja oleellinen kriittinen huomio käyttäjän kannalta oli että "näyttö elää" ja esimerkkinä tästä on vanhan läänin tunnuksen edessä on ensin pikku-ö ja haun jälkeen sen on muuttunut isoksi M:ksi. Lisätarkistuksena voidaan vielä tehdä kuntien listaus, jolloin voi tarkistaa mitä tietoja tietokantaan on tallennettu, tätä ei kirjattu suunnitteludokumenttiin, mutta on sopiva työkalu tehdä lisätestausta. Pesätietojen haku on toteutettu suunnitteludokumentin mukaisesti; erilaisia hakumahdollisuuksia, joilla pesiä voidaan hakea on 10 kpl. Hakukriteerit täyttävä tulosjoukko listautuu hakulomakkeen alareunaan, johon tulostuu myös linkki kyseisen pesän olosuhde- ja tarkastustietoihin. Euref-koordinaatiston avulla tapahtuvaa hakua ei toteutettu, koska koordinaatteja ei tietokannassa vielä ole. Toteutumatta jäi myös astekoordinaattihaku, koska koodaaja ei osannut koodata hakualgoritmia, joka olisi vaatinut muunnoksen metreistä astekoordinaateiksi eikä tietokannassa ollut tarjolla kaikkia tarvittavia astekoordinaattikenttiä. 3
4.4 Tarkastuslomake Toteuttamatta jäi myös kenttien tyhjennystoiminto sekä vain yhden hakuehdon mahdollinen aktivoiminen kerrallaan. Toteutuksessa useamman hakuehdon ollessa valittuna ohjelma toteuttaa ne kaikki. Myös asiakkaan toiveiden mukainen kaikkien tietojen tulostaminen näytölle, jättämällä hakuehdot kokonaan täyttämättä, toimii täysin päinvastoin; se rajaa kaikki tapaukset hakujoukon ulkopuolelle. Asiakkaan toivoma ja suunnitteludokumentissakin ollut uusi tarkastus -linkki puuttuu myös lopullisesta toteutuksesta. Linkki tarkastustietoihin pesän id:n kautta tuo automaattisesti tyhjän tarkastuslomakeosion ja vuosivalikosta valitsemalla päästään vasta tarkastelemaan pesa- ja olosuhdetietoja. Kaikki syötteisiin kohdistuvat tarkastukset jäivät ajan puutteen vuoksi myös toteuttamatta. SQL-lauseet on toteutettu pääasiassa sisäliitoksina oletuksena, että viite-eheys tietokannassa taulujen välillä on olemassa. Tietokannan tila oli kuitenkin melko arveluttava, joten on mahdollista, että liitokset joihinkin tauluihin rajaavat tulosjoukkoa virheellisesti; esim. jos pesä löytyy, mutta sille ei ole olemassa reviiri-taulussa reviiriä. Testauksessa ei ole testattu kaikkia kyselyitä ja niiden mahdollista toteuttamista ulkoliitoksina. Tarkastuslomakkeen avautuessa näkyviin ei avaudu suunnitteludokumentin mukaisesti pesän viimeiset tarkastustiedot, vaan perus- ja olosuhdetietojen lisäksi, tyhjä tarkastuslomake. Tarkastusvuodet-valikosta päästään tarkastelemaan pesään eri vuosina kohdistuneita tarkastuksia. Näytöllä näkyvät olosuhdetiedot ovat aina viimeiset pesään kohdistuneet olosuhdetiedot. Suunnittelussa ei otettu huomioon olosuhdetietojen eri vuosien selaamista, koska olosuhde-taulussa ei toteutusvaiheen alkaessa ollut historiatietoja, vain yksi tietue pesää kohden. Lisädatan ilmestyessä asiantuntija (Lokki) oli jo ehtinyt 4
lentää etelään, eikä uutta toteutusta enää voitu edes suunnitella. Olosuhde-taulun päivämääristä poimitut vuodet eivät ole yhdistettävissä tarkastus-taulun päivämäärien vuosiin, joten olosuhde-taulun tietojen tarkasteleminen vaatisi lisänappuloita käyttöliittymään. Puuttuvan datan vuoksi perustietojen mittaustapa- ja tarkkuusvalikot on myös jätetty toteuttamatta. Samoin olosuhdetietojen puulajivalikko (näkyy lomakkeella kovakoodattuna, ei kannasta kuten muut valikot). Tarkastustiedoissa oli myös data kovin vajavaista, eikä sielläkään kaikkiin valikoihin saatu arvoja aputauluista, koska niitä ei ollut olemassa. Tarkastaja-taulusta puuttui myös kokonaan data, joten tarkastajatietoja ei myöskään ole mahdollista näyttää. Koodaaja ei myöskään löytänyt Näytteet-alaotsikon kenttiin liittyviä muuttujia tietokannasta ja kuten yllämainittu; asiantuntijaa ei ollut enää mahdollista tavoittaa. Suunnitteludokumentissa kuvattu tietojen muokkaus ja tallennus jäi lomakkeelta kokonaan toteuttamatta. Koodaaja ei osannut arvioida oikein lomakkeen hakutoimintojen koodaukseen kuluvaa aikaa. Olosuhdetietojen tallennuksessa tulisi kuitenkin ottaa seuraavat seikat huomioon: miten tulkitaan, että tarkastustietojen tallennuksen yhteydessä myös olosuhdetiedoille luodaan uusi tietue ja olosuhde id ja koska on tarkoitus vain päivittää vanhoja tietoja. Tarkastuslomaketta ei ole virallisesti testattu aikataulun venymisen takia. Koodaaja on pyrkinyt kuitenkin itse testaamaan moduulia kaikin tavoin. 4.5 Raportit Raportit osiota ei ole toteutettu suunnitteludokumentin mukaisesti; moduulia on kuitenkin aloitettu viemällä sinne pesänhaku-moduulin hakutoiminnot. Lisäksi raportteihin kuuluva tyhjän maastolomakkeen tulostava pdf-tiedosto on toteutettu. Sen toteutukseen on käytetty FPDF nimistä freeware-ohjelmaa, josta on 5
käytetty sen CELL-funktion sisältävää versiota (kts. esim. http://www.fpdf.de/funktionsreferenz/cell/). Ohjelma asennetaan samalle palvelimelle muun ohjelman kanssa. Ohjelmaa käytettäessä on aina muistettava määritellä FONT -hakemiston polku pdf.php4 - tiedostoon. 4.6 Aputaulut 4.7 Pesän lisääminen 4.8 Pesätarkastajien ylläpito 4.9 Aloitus-sivu 4.10 Reviirin lisääminen Aputaulujen ylläpito -moduulin koodaus aloitettiin, mutta suunnitteludokumentissa ollut toiminnallisuus jäi toteuttamatta. Pesän lisäämistä ei toteutettu. Pesätarkastajien haku ei toimi suunnitellulla tavalla. Hakupainikkeen painallus tuo näytölle tulosjoukon, kun tarkastajan id on syötetty id-kenttään. Tulosjoukko ei kuitenkaan ole hakuehdon mukainen. Muiden kenttien avulla suoritettu haku ei tuo näytölle mitään. Aloitus-sivua ei toteutettu suunnitellulla tavalla. Salasanojen ja käyttäjätunnusten hallintaa ei toteutettu aiotulla php:n valmisfunktiolla. Aloitus-sivun kautta voidaan kuitenkin hallita hakusivulle kirjautumisia niin, että ilman validia salasanaa hakutoimintoja ei voida käyttää. Reviirin lisäystä ei toteutettu. 6
4.11 Moduulien kokoaminen yhteen 5 Testaus Moduulit on koottu yhteen ja ohjelman eri osien välillä voi navigoida yhden käyttöliittymän avulla. Php:n Session-funktion avulla on pyritty hallinnoimaan tietokannan salasanojen ja sisään kirjautumisen salasanojen siirtymistä lomakkeelta toiselle. Kiireisen aikataulun takia kaikkea ei kuitenkaan saatu viimeisteltyä ja osien kokoaminen yhteen vei mm. tarkastuslomakkeesta eri vuosien tarkastustietojen tarkastelu mahdollisuuden (löytyy kuitenkin myös erillisenä toimivana versiona). Ohjelman kaikki ns. melkein valmiit osat vaativat lisätestausta, koska niiden kehittelyä on jatkettu vielä testausten jälkeen. 6 Tietokanta Lintu-tietokanta, jonka päälle ohjelmisto on rakennettu, kärsii melkoisista historian painolasteista ja vaatisi toimiakseen kunnolla täydellisen uudelleen mallintamisen ja tietojen tarkistamisen. Erityisesti vuosi-, olosuhde- ja tarkastus-taulut tulisi muuttaa ns. vuosi-tauluiksi, joissa vuosi-kenttä toimisi osana avainta. Tällä hetkellä taulujen yhdistelyyn käytetään päivämääristä poimittuja vuosia, joille harvoin löytyy vastinparia toisesta taulusta. Samoin kuntatietojen hallintaan tarkoitettu kunta-taulu ei vastaa nykynormeja aluetiedon hallintatauluna. Sovelluksien rakentamista voi tietysti helpottaa rakentamalla erityyppisiä näkymiä (materialisoituja ja perinteisiä) taulu-tason päälle. Tietokannassa tapahtuvien muutosten seuraukset korjattaisiin näkymätasolla, eikä ohjelmakoodiin tarvitsisi puuttua. Jos tietokantaa kuitenkin muutetaan, eikä näkymä tasoa ole, täytyy muutokset tehdä myös koodiin sekä huomioida SQL-lauseiden toimivuus. 7
8