Specification and testing of distributed software with executable state machines

Abstract

Hajautettu järjestelmä koostuu useasta itsenäisesti toimivasta tietokonesovelluksesta, mikä tekee niiden määrittelystä ja testaamisesta haastavaa. Eräs haasteita tuottava osa on sovellusten välisen rajapinnan käyttö. XML-viesteillä kommunikoivassa järjestelmässä käytetyt viestit voidaan määritellä esimerkiksi XSD-skeemalla, mutta sillä ei voida määritellä sitä, miten viestejä tulee käyttää. Rajapinnan käytön määrittely on usein ihmisiä varten tehty, jolloin se voi olla puutteellinen ja suurpiirteinen. Tämän takia osaa sen toiminnoista ei välttämättä voida edes toteuttaa. Vaikka ne olisikin mahdollista toteuttaa, eri sovellusten kehittäjät voivat tulkita niiden käytön eri tavalla. Sovelluksia testatessakaan ei välttämättä ole varmuutta siitä toimiiko järjestelmä oikein, jos määritelmä antaa varaa tulkinnalle. Virhetilanteissa havaittu oire voi näkyä muussa kuin virheellisesti toimivassa sovelluksessa, joten virheen paikantaminen on myös työlästä. Tässä diplomityössä rajapintojen käyttö esitetään tilakoneina, joissa tilat kuvaavat kommunikaation sen hetkisen tilan ja tilasiirtymät kuvaavat mitä viestejä ja millä ehdoilla sovellukset saavat lähettää kussakin tilassa. Nämä tilakoneet määritellään koneluettavalla scxml-merkkauskielellä. Niiden lukemista sekä suorittamista varten toteutetaan tietokonesovellus, jonka tehtävä on valvoa sovellusten välistä viestiliikennettä ja todentaa sitä määritelmää vasten sekä raportoida virhetilanteista. Kommunikaatioprotokollan määrittely suoritettavilla tilakoneilla osoittautui toimivaksi ratkaisuksi järjestelmän kehityksen ja testauksen tukena. Järjestelmää testatessa se auttoi huomaamaan varmemmin ja paikantamaan nopeammin virheitä. Sillä havaittiin jopa virheitä, jotka eivät aiheuttaneet oireita järjestelmässä. Määrittely tilakoneilla pakottaa määrittelemään kaikki erikoistapauksetkin protokollan käytössä, jolloin rajapinnasta tulee huolellisemmin tehty. Kun järjestelmän voi tarkastaa suoraan määrittelyä vasten, ei määrittely myöskään ole irrallinen toteutuksesta, vaan molempien kehittäminen yhdessä on luontevaa

    Similar works