Tik-76.115 Vaatimusmäärittely

TCP/IP-proxy pankin ja asiakkaan välillä


Versio Pvm Muutokset Tarkastaja
0.9 05.10.1999 Ensimmäinen versio, perusmäärittelyt JR
1.0 13.10.1999 Tarkennusta asiakkaan kanssa käytyjen keskusteluiden perusteella MV
1.1 2.11.1999 Tarkennuksia toiminnallisen suunnittelun pohjalta JR
2.0 13.3.2000 Tarkennuksia, lopullinen versio MV

Sisällys

1. Johdanto

1.1 Taustaa
1.2 Tuote
1.3 Käytetyt termit ja lähteet

2. Yleiskuvaus

2.1 Ohjelman yleiset toiminnalliset vaatimukset
2.2 Ohjelman toimintaympäristö
2.3 Käyttöliittymät

3. Toiminnot

3.1 Välttämättömät toiminnot
3.2 Tarpeelliset toiminnot
3.3 Lisäominaisuudet

4. Ulkoiset liittymät

4.1 Tietoliikenne
4.2 Asetustiedostot
4.3 Avainten tallentaminen

5. Muut ominaisuudet

5.1 Turvallisuus
5.2 Luotettavuus
5.3 Suorituskyky
5.4 Ylläpidettävyys
5.5 Siirrettävyys

6. Laatusuunnitelma

6.1 Tuottaa asiakkaan toiveet täyttävä ohjelmisto
6.2 Aikataulussa pysyminen
6.3 Asiakkaan ja kurssin henkilökunnan pitäminen ajan tasalla
6.4 Projektin selkeä ja kattava dokumentointi
6.5 Ohjelman modulaarisuus, koodin uudelleenkäytettävyys
6.6 Ohjelman kattava dokumentointi
6.7 Ohjelman selkeä dokumentointi




1. Johdanto

1.1 Taustaa

Osuuspankin asiakkailla on käytössä erilaisia ohjelmia sähköisen maksuliikenteen hoitoon. KULTALINKKI on Osuuspankin ilmaiseksi asiakkailleen jakama pienyrityksen reskontranhallintaohjelma, joka on yhteydessä pankin OPNET-järjestelmään. Ohjelmiston rajoituksena on riittävän tietoturvan puuttuminen ja pankilla on tarve salata pankin ja pankin asiakkaan välinen tietoliikenne.

1.2 Tuote

Toteutamme ohjelmiston, jonka avulla voidaan salata internetin kautta kulkeva pankin ja pankin asiakkaan välinen tietoliikenne. Tuote salaa tietoliikenneyhteyden käyttämällä tunnettuja vahvoja asymmetrisiä ja symmetrisiä salakirjoitusmenetelmiä. Tuote jakaantuu kahteen ohjelmaan, jotka toimivat pankin ja pankin asiakkaan sisäisissä verkoissa. Tästä eteenpäin pankin verkossa toimivaa ohjelmaa kutsutaan pankin proxyksi ja pankin asiakkaan verkossa toimivaa ohjelmaa asiakkaan proxyksi.

Tietoliikenne salataan ohjaamalla pankin asiakkaan ja pankin välinen TCP/IP-liikenne kulkemaan asiakkaan proxyn ja pankin proxyn välisen turvallisen salakirjoitetun yhteyden läpi. Asiakkaan toiveena on lisäksi liikenteen kiistämättömyys, ts. pankki voi osoittaa liikenteen (tapahtumien) tulleen asiakkaan valtuuttamalta taholta. Vastaavasti pankin asiakas voi varmistua, että salattua proxy-käytävää pitkin saapuneet tiedot ovat pankin lähettämiä.

On huomattava, että ohjelmiston tarkoituksena on vain luoda turvallinen yhteyskäytävä pankin ja pankin asiakkaan verkkojen välille. Pankin ja pankin asiakkaan tehtäväksi jää organisaation sisäisen verkon turvallisuuden varmistaminen esimerkiksi palomuurilla, jonka läpi proxyt liikennöivät.

1.3 Käytetyt termit ja lähteet

Projektin dokumenteissä kuten suunnitelmissa, määritelmissä, raporteissa jne. käytetty terminologia on koostettu erilliseen listaan lyhyine selityksineen.

Teksteissä esiintyvät viittaukset ja käytetty lähdemateriaali on listattu erillisessä lähdeluettelossa.




2. Yleiskuvaus

2.1 Ohjelman yleiset toiminnalliset vaatimukset

Järjestelmä koostuu proxy-ohjelmasta, joka voidaan konfiguroida kahdella tavalla: asiakkaan proxy pankin asiakkaalle ja pankin proxy pankille. Ohjelmien versiot tulevat olemaan suurimmaksi osaksi identtiset; pankin proxy on kuitenkin enemmän palvelin-tyyppinen kuin asiakkaan proxy. Seuraavassa kuvataan yleisellä tasolla ohjelmistolta halutut ominaisuudet.

Havainnollistava kuva pankin ja asiakkaan proxyistä Pankin asiakkaan ja pankin välinen TCP/IP-yhteys salataan ohjaamalla pankin asiakkaan maksuliikenneohjelman TCP/IP-liikenne pankin asiakkaan (suojatussa) verkossa olevaan asiakkaan proxyyn. Asiakkaan proxy muodostaa salatun yhteyden (mahdollisesti turvattoman) verkon läpi pankin proxyyn, joka on pankin (suojatussa) verkossa. Pankin proxy ottaa edelleen yhteyden pankin maksuliikennepalveluun (kts. oheinen kuva). Muodostetun turvallisen TCP/IP yhteyden läpi asiakkaan on mahdollista välittää maksuliikenneohjelmiston avulla toimeksiantoja pankkiin ja saada tietoja pankista.

Proxy-käytävän yli kulkeva liikenne allekirjoitetaan lähettävän osapuolen salaisella avaimella, jolloin vastaanottava proxy voi tarkistaa saapuneen sanoman tulleen todellakin yhteyden alussa tunnistetulta lähettäjältä.

2.2 Ohjelman toimintaympäristö

Proxy-ohjelmat toimivat itsenäisesti käyttöjärjestelmien puitteissa. Kurssin puitteissa toteutettavan demo-ohjelman toteutusympäristö on Linux. Ohjelmiston kääntäminen myös muihin ympäristöihin (kuten Win95/98/NT) on mahdollista kohtuullisella vaivalla, koska ohjelmisto toteutetaan helposti siirrettäviksi ja vältetään käyttöjärjestelmäriippuvien rajapintojen käyttöä.

2.3 Käyttöliittymä

Ohjelmiston käyttöliittymä on komentorivipohjainen. Avain- ja lokitiedostot ovat tekstimuotoisia, käyttöliittymä komentorivipohjainen.




3. Toiminnot

Seuraavassa on listattu ohjelmiston toiminnot priorisoituna asiakkaan tarpeen mukaisesti.

3.1 Välttämättömät toiminnot

Välttämättömiksi toiminnoiksi on luokiteltu toiminnot, jotka ovat välttämättömiä ohjelman turvallisen toiminnan kannalta tai projekti ei ole täyttänyt asiakkaan sille asetettamia vaatimuksia.

Välttämättömiksi toiminnoiksi on luokiteltu seuraavat toiminnot

3.2 Tarpeelliset toiminnot

Tarpeellisia toimintoja ovat toiminnot, jotka eivät ole välttämättömiä ohjelman toiminnan kannalta, mutta ovat kuitenkin oleellisia ohjelman tehokkaan käytön kannalta.

Tarpeellisiksi toiminnoiksi on katsottu

3.3 Lisäominaisuudet

Lisäominaisuuksiksi on laskettu ne toiminnot, joiden toteuttaminen on rajattu projektin ulkopuolelle. Ne otetaan kuitenkin huomioon projektin aikana siten, että ne olisi tarvittaessa helposti lisättävissä tuotteeseen.






4. Ulkoiset liittymät

Seuraavassa on dokumentoitu ohjelman tärkeimmät riippuvuudet eri rajapinnoista ja käyttöjärjestelmän palveluista.

4.1. Tietoliikenne

Proxy-ohjelmat kommunikoivat asiakkaan maksuliikenneohjelmiston ja pankin maksuliikennepalvelun kanssa TCP/IP-protokollan välityksellä. Proxyjen väliseen liikenteeseen käytetään myös TCP/IP-protokollaa, jonka välittämänä salattu liikenne kulkee proxystä toiseen.

4.2. Asetustiedostot

Proxya käynnistettäessä tarvitaan tieto kuunneltavista TCP-porteista ja sekä tieto mihin porttiin tuleva yhteydenotto ohjataan eteenpäin pankin järjestelmässä. Demo-ohjelmassa tiedot annetaan komentoriviltä.

4.3. Avainten tallentaminen

Yhteyttä muodostettaessa yhteyttä ottavan proxyn tulee ennalta tietää vastapään proxyn julkinen avain, jotta yhteys voidaan muodostaa turvallisesti. Ohjelma ei saa kadottaa julkisia avaimia jos se esimerkiksi joudutaan käynnistämään uudelleen. Tämän vuoksi julkiset avaimet tallennetaan ns. avainrenkaaseen, joka on tekstitiedosto. Avainrenkaan toteutus on hyvin vaatimaton kurssin puitteissa toteutettavassa demo-ohjelmistossa, mutta dokumentaatiossa esitetään kehittyneempiä ratkaisuja jatkokehitystä silmällä pitäen.




5. Muut ominaisuudet

5.1 Turvallisuus

Yhteyden salaus ja autentikointi toteutetaan tunnettuilla vahvoilla salausmenetelmillä (esim. RSA asymmetriseen salakirjoitukseen, 3DES symmetriseen salakirjoitukseen ja SHA-koosteiden tuottamiseen). Tarkoituksena on käyttää yleisesti tunnettuja ja hyväksi havaittuja menetelmiä, jotta myös ohjelmistolla on edellytykset nauttia yleistä luottamusta.

5.2 Luotettavuus

Ohjelmisto toipuu tietoliikenneyhteyden virhetilanteista. Asetustiedostojen puutteellisuudesta tai muista virhetilanteista toivutaan mahdollisuuksien mukaan.

5.3 Suorituskyky

Ohjelmisto kykenee välittämään useampia yhteyksiä samanaikaisesti ilman että yhteydet häiritsevät toisiaan muussa mielessä kuin koneen kuormituksen kasvamisena.

5.4 Ylläpidettävyys

Demo-ohjelma luovutetaan havainnollistamaan toiminnallisuutta, mutta projektiryhmä ei sitoudu jatkokehittämään tuotetta.

5.5 Siirrettävyys

Ei toteuteta kurssin puitteissa.




6. Laatusuunnitelma

Ryhmä ja asiakas ovat yhteistyössä laatineet laatukriteerit, joiden avulla voidaan projektin aikana sekä lopuksi arvioida projektin onnistumista. Laatukriteerit on listattu tärkeysjärjestyksessä. Eri kriteerien merkityksessä painaa eniten asiakkaan näkökulma, ja tärkeintä on päästä pyrittyyn tavotteeseen.

6.1 Tuottaa asiakkaan toiveet täyttävä toimiva ohjelmisto

Toimenpiteet tavoitteen saavuttamiseksi

Tavoitteeseen pyritään ensisijaisesti tiiviillä yhteistyöllä ryhmän ja asiakkaan välillä. Erityisesti projektin määrittely- ja suunnitteluvaiheissa asiakkaan tarpeen ja projektin tavoitteiden tarkka kartoittaminen on tärkeää. Ryhmän täytyy perehtyä aiheeseen huolellisesti (mm. maksuliikenneohjelmien yhteyskäytäntöjen selvittäminen), jotta vältytään yllätyksiltä projektin loppuvaiheessa.

Tuotteen toimivuudesta pidetään huolta projektin aikana

Onnistumisen arviointi

Tärkein yksittäinen mittari asiakastyytyväisyydelle projektin aikana on asiakkaan eri projektin vaiheille antama arvostelu. Projektin päättyessä asiakastyytyväisyyden mittarina toimivat mahdollinen jatkoprojekti ja ohjelmiston käyttöönotto.

6.2 Aikataulussa pysyminen

Toimenpiteet tavoitteen saavuttamiseksi

Jokaisessa projektin vaiheessa (erityisesti protot) arvioidaan seuraavaan vaiheeseen kuluva aika. Projektin uudessa vaiheessa opitaan edellisen vaiheen aikataulun arvioinnissa mahdollisesti tehdyistä virheistä ja ennen kaikkea pyritään olemassaolevien tuntilistojen ja työkirjanpidon avulla selvittämään mihin arvioitu aika kului, tai jäikö sitä yli ja miksi.

Onnistumisen arviointi

Verrataan aikaisemmin tehtyä arviota todellisiin lukuihin. Kurssin aikarajojen saavuttaminen.

6.3 Asiakkaan (ja kurssin henkilökunnan) pitäminen ajantasalla projektin etenemisestä

Toimenpiteet tavoitteen saavuttamiseksi

Projektin WWW-sivujen reaaliaikainen päivittäminen. Tiivis yhteydenpito myös puhelimitse ja sähköpostitse asiakkaaseen. Riittävän usein perusteelliset palaverit.

Onnistumisen arviointi

Asiakkaalta ja kurssilta saatu palaute.

6.4 Projektin kattava ja selkeä dokumentointi

Dokumentaatio on osa asiakkaan tuotteesta, joten sitä koskee samat vaatimukset kuin itse ohjelmistoa.

Toimenpiteet tavoitteen saavuttamiseksi

Dokumentteja kirjoitetaan pitkällä aikajänteellä ja materiaalin tulee olla valmis ajoissa ennen palautuspäivämääriä. Kaiken materiaalin lukee vähintään kaksi ryhmän jäsentä läpi ja, erityisesti tuotemääritelmien osalta, myös asiakas käy materiaalin läpi.

Onnistumisen arviointi

Eri dokumentteja kirjoitetaan eri lukijoille. Laatu on hoidettu hyvin, jos lukijat ymmärtävät keskeisen sisällön ja jos dokumentin sisältö kattaa dokumentoitavan aiheen. Onnistuneita dokumentteja ei tarvitse muutella ajan myötä yhtä paljon kuin puutteellisia tai virheellisiä.

6.5 Ohjelman modulaarisuus, koodin uudelleenkäytettävyys

Mahdollista jatkoprojektia varten ohjelman koodin on oltava helposti muutettavissa ja uusia ominaisuuksia tulee olla mahdollista lisätä.

Ideaalitilanteessa ohjelmiston suunnitteluvaiheessa kyetään luomaan ohjelman selkeä jaottelu riippumattomiin osiin, jotka voidaan toteuttaa ja testata erikseen; ohjelmistotuotanto on kuitenkin valitettavan usein iteratiivinen prosessi ja on varauduttava, sekä aikataulussa että henkisesti, että matkassa voi olla mutkia.

Toimenpiteet tavoitteen saavuttamiseksi

Tavoitteeseen pyritään

Onnistumisen arviointi

Ryhmä arvioi itse ja antaa toisilleen palautetta tehdyn koodin laadusta. Tuotettu koodi ei saa olla myöskään "musta laatikko" asiakkaalle vaan oleellisia osia tullaan esittelemään mm. pankin tekniselle osastolle.

Jo vaatimusmäärittelyvaiheessa voidaan eritellä seuraavat riippumattomat abstraktit ohjelman osat, joita voidaan käyttää sellaisenaan myös projektin ulkopuolella, ja joiden toteutukset tulee piilottaa ohjelman muilta osilta mahdollisimman tehokkaasti.

Projektin jokaisessa vaiheessa voidaan tarkastella eri ohjelman osien keskinäistä riippumattomuutta ja tehdyn koodin laatua; edellämainittu abstraktien osien lista tulee todennäköisesti tarkentumaan projektin edetessä. Konkreettisina laatumittareina voidaan käyttää ohjemiston hierarkisuutta ja koodin määrää.

6.6 Ohjelman kattava dokumentointi

Toimenpiteet tavoitteen saavuttamiseksi

Luokat, rajapinnat ja luokan sisäiset toiminnot dokumentoidaan käyttämällä automaattista dokumentointityökalua, joka luo lähdekoodin kommenttien avulla HTML-dokumentin ohjelman lähdekoodista.

Onnistumisen arviointi

"Autodoc"-työkalun käyttö takaa dokumentaation kattavuuden, mikäli sitä käytetään kaikkien lähdekooditiedostojen dokumentointiin.

6.7 Ohjelman selkeä dokumentointi

Toimenpiteet tavoitteen saavuttamiseksi

Koodaaja/tarkastaja -malli. Koodaaja luovuttaa mielestään toimivan, dokumentoidun lähdekoodin pätkän tarkastajalle, jonka tehtävänä on tutustua siihen. Ohjelman tarkastajan on ymmärrettävä mitä ohjelmanpätkä (ainakin periaatteellisesti) tekee lukemalla lähdekooditiedosto läpi -- mikäli tässä ei onnistuta, on dokumentoinnissa vikaa. Menetelmän hyötynä saavutetaan lisäksi

Onnistumisen arviointi Koodaaja/tarkastaja -malli. Tarkastaja kommentoi objektiivisesti koodaajan tekemää koodia ja tekee tarvittavat korjausehdotukset ja selvityspyynnöt. Asiakkaan edustaja (esim. pankin tekninen osasto) tutustuu dokumentointiin.