T-76.4115 Ohjelmistokehitysprojekti I Tekninen Määrittely Versio Päiväys Muokkaaja Kuvaus 0.9 30.11.2005 Tuukka Laakso Kommentoitava versio 1.0 4.12.2005 Tuukka Laakso Palautettava versio 2.0 Tuukka Laakso I2 Palautettava versio
1 Johdanto...3 2 Arkkitehtuuri...4 3 Ilmoitinlaitesimulaattori...5 4 Valpas...6 4.1 Core...6 4.2 Tetraconnection...6 4.3 Webui...7 5 Analysaattori...8 2
1 Johdanto Tämän dokumentin tarkoitus on toimia ryhmän Neptune kurssin T-76.4115 Ohjelmistoprojekti I ulkoisena teknisenä spesifikaationa projektissa Valpas. Projekti on alkanut syksyllä 2005 ja jatkuu keväälle 2006. Projekti käsittää kolme iteraatiota (PP, I1, I2). Projektin tarkoituksena on tuottaa prototyyppi hälyttimien tarkkailuun Tetra-verkon yli. Dokumentissa käydään lyhyesti läpi järjestelmän eri osien toiminta 3
2 Arkkitehtuuri T-76.4110 Ohjelmistoprojekti I Projekti voidaan jakaa kolmeen erilliseen osaan, jotka ovat: ilmoitinlaitesimulaattori, Valpas ja lokien analysointityökalu. Näiden osien välistä kommunikaatiota ja riippuvuuksia on kuvattu kuvassa 1. Seuraavissa kappaleissa kuvataan tarkemmin näiden osien toimintaa. Kuva 1 Arkkitehtuuri 4
3 Ilmoitinlaitesimulaattori Ilmoitinlaitesimulaattori on Linuxissa toimiva Java-ohjelma, joka on sarjaportin välityksellä AT-rajapintaa käyttämällä yhteydessä Nokian TETRA-puhelimeen. Puhelin välittää kaikki saamansa viestit simulaattorille. Ilmoitinlaitesimulaattori pystyy simuloimaan paloilmoitinlaitteen toimintaa kahdessa eri tilassa, joko passiivisesti generoimatta laitevikoja tai generoimalla laitevikoja. Toimintatila valitaan simulaattoria käynnistettäessä. Simuloidessaan paloilmoitinlaitetta simulaattori seuraa saapuvia viestejä. Linjakyselyyn simulaattori ei reagoi muuten, kuin että kirjaa lokitiedostoon saaneensa viestin. Erilaiset testiviestit simulaattori kirjaa lokiin ja vastaa niihin seuraavasti: Testaa hälytys Simulaattori vastaa yleensä luomalla hälytysviestin. Simulaattori lähettää hälytysviestin puhelimella EPA:lle ja kirjaa lokiin luodun hälytyksen. Jos simulaattorin käynnistysvaiheessa on valittu, että simulaattori voi generoida laitevikoja, niin satunnaisesti simulaattori simuloi vikatilannetta, eikä lähetä vastaukseksi mitään viestiä. Simulaattori kirjaa luodun vikatilanteen lokiin. Testaa anturit Simulaattori vastaa yleensä luomalla anturihälytysviestin. Simulaattori lähettää anturihälytysviestin puhelimella EPA:lle ja kirjaa lokiin luodun hälytyksen. Jos simulaattorin käynnistysvaiheessa on valittu, että simulaattori voi generoida laitevikoja, niin satunnaisesti simulaattori simuloi vikatilannetta, eikä lähetä vastaukseksi mitään viestiä. Simulaattori kirjaa luodun vikatilanteen lokiin. Testaa hyvinvointi Simulaattori vastaa yleensä luomalla anturihälytysviestin. Simulaattori lähettää anturihälytysviestin puhelimella EPA:lle ja kirjaa lokiin luodun hälytyksen. Jos simulaattorin käynnistysvaiheessa on valittu, että simulaattori voi generoida laitevikoja, niin satunnaisesti simulaattori simuloi vikatilannetta, joita tässä tapauksessa on kaksi erilaista. Simulaattori joko lähettää viestin ei toleranssissa puhelimella EPA:lle tai ei lähetä mitään viestiä vastaukseksi. Molemmissa tapauksissa Simulaattori kirjaa luodun vikatilanteen lokiin. Simulaattori voi luoda myös satunnaisesti hälytyksiä, jos vikatilanteiden generointi on asetettu päälle. Tällöin simulaattori lähettää hälytysviestin puhelimella EPA:lle ja kirjaa lokiin luodun hälytyksen. Lisäksi simulaattoria voi käsin ohjastaa luomaan jonkun edellä mainituista vioista tai hälytyksen. Myös nämä kirjataan lokiin. Simulaattori myös säännöllisin väliajoin testaa yhteyttään puhelimeen, jotta voidaan selvittää, onko puhelimen AT-rajapinta kaatunut. Jos simulaattori ei saa puhelimeen yhteyttä, se kirjaa tapahtuman lokiin ja jää yrittämään yhteyttä puhelimeen. Näiden toimintojen avulla voidaan lokien analysointityökalulla selvittää, soveltuuko VIRVE palonilmoitinlaitteiden yms. valvontaan. 5
4 Valpas T-76.4110 Ohjelmistoprojekti I 4.1 Core Valppaan toimintalogiikka sijaitsee ydin eli core-paketissa ja se tarjoaa hallintarajapinnat mm. konsolikäyttöliittymälle. Ytimen vastuulla on laitteiden tarkistusten skedulointi, laitteiden statuksen tarkistaminen sekä tapahtumien lokitus. Lisäksi ydin tarjoaa rajapinnan viestilokittajalle sekä myös muidenkin laitteiden statuksia kuuntelevien komponenttien toteuttamiseen. Valpasta ohjataan käyttäen tarkoitusta varten toteutettua komentorivikäyttöliittymää. Käyttöliittymä on RMI:n kautta yhteydessä valppaan hallintarajapintoihin ja sitä ajetaan Valppaasta erillisessä JVM:ssä. Käyttöliittymä tarjoaa joukon yksinkertaisia komentoja, joilla Valpasta voidaan hallita. Ilmaisinlaitteille Valpas suorittaa testejä lähettäen niille testausviestejä, joihin laitteet vastaavat omaa statustaan kuvaavalla vastausviestillä (ks. kappale 3). Testejä suoritetaan laitekohtaisesti määritetyn aikavälein sekä laitekohtaisen maksimivastausviiveen mukaan. Lisäksi laitteille suoritetaan linjatarkastuksia, joilla selvitetään onko valvottavan laitteen TETRA-verkkoon yhteydessä oleva puhelin tms. elossa. Sekä statustesteille että linjatesteille voidaan määrittää maksimivastausviiveet. Statustestillä tämä on laitekohtainen ja linjatarkastuksella kaikille laitteille sama. Näin ollen kaikilla yhden laitteen statustesteillä on sama maksimivastausviive. Laitetyyppejä voidaan valvoa joko automaattisesti tai manuaalisesti. Automaattiselle valvonnalle voidaan määrittää joukko testityyppejä, joita suoritetaan määritetyin aikavälein. Tyypit jakautuvat linjatestiin ja statustesteihin. Statustestejä ovat hälytystesti, vikatesti ja sensoritesti. Linjatesti suoritetaan implisiittisesti joka laitteelle, statustestit jos näin on määritetty. Aikavälit määritellään asettamalla laitteelle linjantestausaikaväli ja statustesteille luku, joka määrittää kuinka monta linjatestiä suoritetaan jokaisen statustestin välissä. Eri tyyppisiä statustestejä suoritetaan vuorotellen, mutta ydin tarjoaa helpon laajennettavuuden myös monimutkaisemmille järjestyksille. Laitteiden automaattinen valvonta on toteutettu käyttäen Quartzia, joka on avoimen lähdekoodin skedulointikomponentti. Quartzin toiminta perustuu pääasiassa kolmen komponentin varaan. Skeduleri (Scheduler) vuorottaa liipaisimia (Trigger), jotka laukaisevat töitä (Job) suoritettavaksi. Skeduleria ja liipaisimia ei ole persistoitu tehokkuussyistä, joten niiden tila ei säily, jos järjestelmään tulee häiriöitä. Jokainen työ skeduloidaan uudestaan Valppaan käynnistyksen yhteydessä. Laitteiden tiedot pidetään erillisessä tietokannan taulussa, jota aksessoidaan käyttäen Hibernatea. 4.2 Tetraconnection Tetraconnection-paketti tarjoaa Valppaalle viestien lähetys- ja vastaanottopalveluita. Tetraconnection muodostaa yhteyden EPAn Web Services rajapintaan ja tarjoaa metodeita viestien lähettämiselle ja vastaanottamiselle. Pakkaus huolehtii itse istunnon ylläpitämisestä lähettämällä tarvittaessa uudelleenkirjautumisviestejä, jos istunto on vanhenemassa tai luo kokonaan uuden istunnon, jos istunto on jostain syystä katkennut, esimerkiksi EPAn kaaduttua. 6
Tetraconnection-pakettia käytetään Valppaan ytimestä, eli core-paketista. Tetraconnection tarjoaa tälle pakkaukselle yksinkertaistetun julkisivuluokan, jonka kautta toiminnallisuuksiin pääsee käsiksi. Vaikkakin tetraconnection ei sinällään ota kantaa lähetettyjen ja vastaanotettujen viestien sisältöön, siellä kuitenkin pidetään huoli, että EPAlle menevät viestit ovat eheitä siten, että kaikki tarvittavat kentät ovat niissä täytettyinä. Jos EPAlle lähetettävässä viestinipussa koitetaan lähettää väärin muodostettuja viestejä, nämä lähetetään takaisin corelle ja vain kriteerit täyttävät viestit lähetetään EPAlle. Vastaanotettujen viestien suhteen ollaan avoimempia. Vaikka kaikki kentät eivät olisikaan täydennettyjä, viestit välitetään kuitenkin corelle asti. Viestien välityksessä noudatetaan siis käytäntöä "be strict on what you send and generous on what you receive". 4.3 Webui Valppaan käyttöliittymänä on www-käyttöliittymä. Käyttöliittymän kautta voidaan lisätä, muokata ja poistaa laitteita valvonnasta sekä tarkastella niiden toimintakuntoa ja suorittaa laitteille myös manuaalisia testejä. WWW-käyttöliittymän valinta Valppaan pääkäyttöliittymäksi oli luonnollinen ratkaisu, koska näin esimerkiksi demoaminen käy kätevämmin. WWW-käyttöliittymä on tehty JavaServer Pages (JSP) teknologiaa apuna käyttäen. Sivuissa on käytetty lisäksi JavaServer Pages Standard Tag Library (JSTL):ä, jonka avulla JSP-sivuihin on saatu upotettua tarvittava määrä logiikkaa, tarvitsematta käyttää suoraan Java koodia, mikä osaltaan nostaa käyttöliittymän ylläpidettävyyttä. Lisäksi käyttöliittymän erillisten komponenttien rakentamisessa käytimme apunamme Struts-tilesiä. Spring Framework toi suuren avun käyttöliittymän kehitykseen. Sen tarjoama Web MVC - paketti tuo hyödyllisen Model-View-Controller implementaation, jonka avulla saadaan siisti ja selkeä erottelu businesslogiikkakoodin ja web formien välille. Lisäksi teknologia tarjoaa muitakin näppäriä ominaisuuksia, kuten validoinnin, jonka avulla voidaan varmistaa formissa syötetyn datan oikeellisuus ja käsitellä mahdolliset virheet jo siellä ja näin varmistua, että businessobjekteille menevä tieto on validia. Kontrollerit mahdollistivat sen, että itse JSP-sivuihin ei tarvinnut käyttää niin paljon logiikkaa. 7
5 Analysaattori T-76.4110 Ohjelmistoprojekti I Analysaattori on Java-ohjelma, joka tarkastelee Valppaan ja simulaattorien lokitiedostoja. Ohjelma laskee lokeihin merkittyjä vikatilanteita ja niiden toipumisaikoja. Lasketut statistiikat esitetään käyttäjälle graafisesti ja numeerisena datana. Analysaattorin ikkuna on jaettu kolmeen osaan: Ylin laatikko kertoo ladattujen lokitiedostojen määrät ja puuttuuko tiedostoja.. Keskimmäiseen tulee graafinen esitys lokeihin merkittyjen linjavikojen määristä ja toipumisajoista pylväsdiagrammina. Oletuksena kukin pylväs kuvaa 30 minuutin mittaista jaksoa. Ylempi diagrammi näyttää jakson aikana havaittujen linjavikojen määrän suhteessa kaikkien jakson aikana lähetettyjen viestien määrään. Alempi taas kertoo kuinka toipumisajat linjavioista ovat jakautuneet eri aikaväleille. Viimeinen, punainen, palkki tässä diagrammissa tarkoittaa, että lokeissa on havaittu vika, josta ei lokien kattamassa aikavälissä toivuta. Alin laatikko sisältää numeerisen yhteenvedon lokeihin merkityistä viesteistä. Numeerinen yhteenveto sisältää kaikkien lähetettyjen ja vastaanotettujen viestien määrän sekä Valppaan että simulaattorien lokitiedostoista, Valppaan kirjaamien vikojen määrän, Valppaan kirjaamien linjavirheiden määrän yhteensä ja eroteltuna sekä simulaattorien at-rajapintavikojen ja simulaattorien luomien vikojen määrän. Lisäksi näytetään kolme eri prosenttia. Ensimmäisenä on onnistumisprosentti, joka on lähetettyjen viestien ja linjavikojen suhde. Toisena on vastaanottoprosentti, joka on lähetettyjen ja vastaanotettujen viestien suhde ja viimeisenä on todellinen vikaprosentti, joka on Valppaan kirjaamien vikojen, joista on vähennetty simulaattorien luomat viat, ja lähetettyjen viestien suhde. Lokit ladataan analysaattoriin valitsemalla Tiedosto->Avaa. Myös puuttuvia tiedostoja saa ladattua käyttämällä Tiedosto->Avaa komentoa. Tällöin aukeaa uusi ikkuna, josta voi tarkistaa jo ladatut tiedostot, poistaa niitä tai lisätä uusia. Jos joku tiedosto on jo ladattuna, ei sitä ladata uudestaan. Tästä johtuen jos tiedostoa on päivitetty lataamisen jälkeen, täytyy kyseinen tiedosto poistaa ja hyväksyä muutokset, jolloin analysaattori poistaa poistetut ja lisää uudet tiedostot. Tämän jälkeen valitsemalla Tiedosto->Avaa aukeaa tiedostojen valintaikkuna, johon voi nyt lisätä aikaisemmin poistetun tiedoston uudestaan. Tämän jälkeen täytyy painaa hyväksy nappia, että muutos tallennetaan. Kun kaikki tarvittavat lokit on ladattu, ne saa analysoitua valitsemalla Suorita->Analysoi. 8