arvostelija Turvallisuuskriittisissä, sulautetuissa järjestelmissä esiintyvien ohjelmistovaatimusten virheanalyysi Jarkko-Juhana Sievi

Samankaltaiset tiedostot
arvostelija OSDA ja UDDI palveluhakemistoina.

Selainpelien pelimoottorit

Ohjelmistojen suunnittelu

OpenUP ohjelmistokehitysprosessi

Työn laji Arbetets art Level Aika Datum Month and year Sivumäärä Sidoantal Number of pages

Standardi IEC Ohjelmisto

Pro gradu -tutkielma Meteorologia SUOMESSA ESIINTYVIEN LÄMPÖTILAN ÄÄRIARVOJEN MALLINTAMINEN YKSIDIMENSIOISILLA ILMAKEHÄMALLEILLA. Karoliina Ljungberg

Arkkitehtuurinen reflektio

Tietojärjestelmän osat

Ohjelmistojen mallinnus, s2008 HY/TKTL, 28/10/2008. Harri Laine 1. Ohjelmisto

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

Ohjelmistojen virheistä

Ohjelmistojen mallintaminen, Johdatus ohjelmistotuotantoon

Ohjelmistojen mallinnus (OMa) - Johdatus ohjelmistotuotantoon Harri Laine 1

Aika/Datum Month and year Kesäkuu 2012

Kehittää ohjelmointitehtävien ratkaisemisessa tarvittavia metakognitioita!

Luonnontieteiden popularisointi ja sen ideologia

Katsaus korruption vaikutuksesta Venäjän alueelliseen talouskasvuun ja suoriin ulkomaisiin investointeihin

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Vaatimusten ja konfiguraation hallinta avoimessa ohjelmistokehityksessä

Testaussuunnitelma PULSU. Syksy 2008 Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Testausraportti. Orava. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

TARKASTUSMENETTELYT JA NIIDEN APUVÄLINETUKI

! #! %! & #!!!!! ()) +

Hajautettujen työvoiden hallinta

Testaaminen ohjelmiston kehitysprosessin aikana

2. Ohjelmistotuotantoprosessi

Prosessimalli. 2. Ohjelmistotuotantoprosessi. Prosessimallin vaihejako. Prosessimallien perustehtävät. Ohjelmiston suunnittelu. Vaatimusmäärittely

Oppimateriaalin kokoaminen ja paketointi

Maailman muutosta tallentamassa Marko Vuokolan The Seventh Wave -valokuvasarja avauksena taidevalokuvan aikaan

Lyhyt yhteenveto ohjelmistovaatimuksista standardissa ISO

Useaa tietolähdettä käyttävä klusterointi

Asuntojen neliöhinnan vaihtelu Helsingissä ( )

Ohjelmistojen mallintaminen, Johdatus ohjelmistotuotantoon

Ohjelmiston testaus ja laatu. Testaustasot

S11-09 Control System for an. Autonomous Household Robot Platform

Palvelutasosopimukset ja niiden asema IT-ulkoistuksissa

Testaussuunnitelma. Koskelo. Helsinki Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

17/20: Keittokirja IV

Laskennallinen yhteiskuntatiede

T Tietojenkäsittelyopin ohjelmatyö. Testiraportti, vaihe T1. Tietokonegrafiikka-algoritmien visualisointi. Testiraportti, vaihe T1

Käyttötapausanalyysi ja testaus tsoft

Johnson, A Theoretician's Guide to the Experimental Analysis of Algorithms.

Ohjelmistojen laadun parantaminen refaktoroinnilla Simo Mäkinen Tietojenkäsittelytieteen laitos Helsingin yliopisto

Seminaari: HL7 versio 2

KONTTI - Teolliset komponenttiohjelmistot Tekesin ETX-ohjelma

Toimilohkojen turvallisuus tulevaisuudessa

ITK130 Ohjelmistojen luonne

Tiedekunta/Osasto Fakultet/Sektion Faculty Valtiotieteellinen tiedekunta

Johdantoluento. Ohjelmien ylläpito

Teollisuusautomaation standardit. Osio 3:

Koht dialogia? Organisaation toimintaympäristön teemojen hallinta dynaamisessa julkisuudessa tarkastelussa toiminta sosiaalisessa mediassa

Projektityö

Energiankulutusseuranta Kulutustietojen kerääminen, analysointi ja hyödyntäminen Laatijat: Antti Mäkinen, TAMK

Agenda. Johdanto Ominaispiirteitä Kokonaisjärjestelmän määrittely Eri alojen edustajien roolit Sulautetut järjestelmät ja sulautettu ohjelmointi

Tutkimusmenetelmien lyhyt oppimäärä

Hallintomallit Suomen valtionhallinnon tietohallintostrategioissa

Tarvitseeko informaatioteknologia matematiikkaa?

Tutkittu totuus globaalista ohjelmistokehityksestä

Malliperustainen ohjelmistokehitys (Model-Driven Engineering, MDE)

pitkittäisaineistoissa

UCOT-Sovellusprojekti. Testausraportti

Seminaariaiheet. Tietoturvaseminaari, kevät 03 Lea Viljanen, Timo Karvi

$$$ Raha ratkaisee. $$$ Raha ratkaisee. Ohjelmistotuote. Ohjelmistotekniikan määritelmä

2. päivä. Etätehtävien purku Poikkeamat. Poikkeamat Auditoinnin raportointi Hyvän auditoijan ominaisuudet Harjoituksia

30 Opetussuunnitelma OSAAMISEN ARVIOINTI ARVIOINNIN KOHTEET JA AMMATTITAITOVAATIMUKSET OSAAMISEN HANKKIMINEN. järjestelmätyöt: työskentely

Pro gradu -tutkielmien arvostelu maantieteessä

etunimi, sukunimi ja opiskelijanumero ja näillä

Laadunvarmistustekniikat

Ilkeät ongelmat moniammatillista johtamista monikulttuurisessa ympäristössä. Lape Pippuri, Verkostojohtamisen seminaari

Specifying user requirements for corporate intranet with user centered design methods. Espoo Tekijä: Henri Ström Valvoja: TkT Kalevi Kilkki

Virheraportoijien virhemäärien jakaumat virhetietokannassa

Testausraportti. Oppimistavoitteiden hallintajärjestelmä harri

Computing Curricula raportin vertailu kolmeen suomalaiseen koulutusohjelmaan

Testaus teoriassa ja käytännössä. Jukka Paakki Helsingin yliopisto Tietojenkäsittelytieteen laitos

Turvallisuuden ja toimintavarmuuden hallinta tieliikenteen kuljetusyrityksissä. Anne Silla ja Juha Luoma VTT

Solidity älysopimus ohjelmointi. Sopimus suuntautunut ohjelmointi

Testaussuunnitelma. Pizzeria - Pitseria HAAGA-HELIA ammattikorkeakoulu Tietojenkäsittelyn koulutusohjelma. WebPizza

Liikkuva-sovellusprojekti

Siltatiedon tarkkuustason määrittäminen Taitorakennerekisterissä. Maria Vinter

IEC sisältö ja rakenne

1. Johdanto. Ohjelmistotuotannon ongelmia

Convergence of messaging

Tutkittua tietoa. Tutkittua tietoa 1

T Testiraportti - järjestelmätestaus

Ohjelmistoarkkitehtuuriin vaikuttavia tekijöitä. Kari Suihkonen

Periaatteet standardien SFS-EN ISO/IEC 17025:2005 ja SFS-EN ISO 15189:2007 mukaisen näytteenottotoiminnan arvioimiseksi

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

Määrittely- ja suunnittelumenetelmät

Projektisuunnitelma. Projektin tavoitteet

Vaatimusmäärittely Ohjelma-ajanvälitys komponentti

Turvallisen tekniikan pääseminaarin lisäksi järjestetään torstaina 7.6 työpajapäivä, jossa keskitytään kolmeen aihealueeseen.

Projektisuunnitelma. Radio-ohjattavan pienoismallin mekatroniikan ja ohjelmiston kehitys

Software engineering


Trust Gamer Kit PCI TRUST GAMER KIT PCI. Pika-asennusohje. Versio 1.0

Ohjelmistotuotanto s

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

TOIMINNALLINEN MÄÄRITTELY MS

Transkriptio:

hyväksymispäivä arvosana arvostelija Turvallisuuskriittisissä, sulautetuissa järjestelmissä esiintyvien ohjelmistovaatimusten virheanalyysi Jarkko-Juhana Sievi Helsinki 6.4.2005 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET Tiedekunta/Osasto Matemaattis-luonnontieteellinen tdk Tekijä Författare Jarkko-Juhana Sievi Laitos Institution Tietojenkäsittelytieteen laitos Työn nimi Arbetets titel Turvallisuuskriittisissä, sulautetuissa järjestelmissä esiintyvien ohjelmistovaatimusten virheanalyysi Oppiaine Läroämne Tietojenkäsittelytiede Työn laji Arbetets art Tietoturva: Luottamus ja varmuus -seminaari Tiivistelmä Referat Aika Datum 6.4.2005 Sivumäärä Sidoantal 11 sivua Avainsanat Nyckelord Turvallisuuskriittinen, ohjelmistovirhe, sulautettu järjestelmä, virheanalyysi Säilytyspaikka Förvaringställe Muita tietoja Övriga uppgifter

Sisällysluettelo 1 Johdanto... 1 2 Määritelmät ja luokittelun perusteet... 2 3 Ohjelmistovirheiden luokittelu... 3 3.1 Havaittujen virheiden tarkastelu... 5 3.2 Vertailu aikaisempiin tutkimuksiin... 10 4 Yhteenveto... 10 Lähteet... 11

1 Johdanto Sulautetut järjestelmät ovat järjestelmiä, joissa ohjelmisto ja laitteisto muodostavat erottamattoman kokonaisuuden. Esimerkiksi mikroaaltouunit, robotin ohjaimet, hissien ohjausjärjestelmät, matkapuhelimet ja puhelinvaihteet sisältävät yhden tai useampia sulautetun järjestelmän. Turvallisuuskriittisellä järjestelmällä tarkoitetaan järjestelmää, jossa ohjelmiston vikatoiminto voi johtaa vaaratilanteeseen tai laitteiston rikkoutumiseen. Esimerkiksi ydinvoimaloiden automaatiojärjestelmät sekä autojen ja lentokoneiden tietokoneet ovat turvallisuuskriittisiä järjestelmiä. Tässä seminaariaineessa esitellään Robyn Lutzin artikkeli [Lut93], jossa analysoidaan turvallisuuskriittisissä, sulautetuissa järjestelmissä esiintyviä turvallisuuteen liittyviä ohjelmistovikoja. Artikkelissa on tutkittu Voyager- ja Galileo-avaruusluotainten ohjelmistojen virheitä, joita havaittiin integrointi- ja järjestelmätesteissä kaikkiaan 387. Vaatimusmäärittelyn ongelmat todettiin perimmäiseksi syyksi turvallisuuteen vaikuttavissa ohjelmistovirheissä. Avaruusluotaimen ohjelmisto on turvallisuuskriittistä, koska se valvoo ja ohjaa komponentteja, jotka saattavat aiheuttaa järjestelmän käyttäytymiseen vaarallisesti. Avaruusluotaimissa sulautettu ohjelmisto on jakaantuneena useaan eri lentotietokoneeseen. Avaruusluotaimien ohjelmiston toiminta on vuorovaikutuksessa järjestelmän eri osien välisessä tiedonsiirrossa sekä tosiaikaisessa reagoinnissa järjestelmän ja ympäristön tapahtumiin. Voyagerin ohjelmisto koostuu kaikkiaan n. 18 000 lähdekoodirivistä, Galileon yli 22 000 lähdekoodirivistä. Robyn Lutzin tutkimuksen tavoitteena on integrointi- ja järjestelmätestauksen aikana havaittujen, turvallisuuteen liittyvien ohjelmistovirheiden havaitseminen ja vähentäminen. Tutkimuksessa on vertailtu turvallisuuteen liittyvien ja eiturvallisuuteen liittyvien ohjelmistovirheiden syntymekanismeja. Tutkimuksen johtopäätöksenä on, että ongelmat toiminnallisten vaatimusten ja 1

rajapintavaatimusten tunnistamisessa ja ymmärtämisessä ovat turvallisuuteen liittyvien virheiden keskeisiä syitä. 2 Määritelmät ja luokittelun perusteet Ohjelmistovirhe määritellään poikkeamaksi ohjelmiston ulkoisesti havaittavan, mitatun tai lasketun toiminnon tai arvon ja oikean, määritetyn tai teoreettisesti oikean toiminnon tai arvon välillä. Ohjelmistovirheen vakavuusasteesta riippuen se luokitellaan vähäpätöiseksi, merkittäväksi tai katastrofaaliseksi ohjelmistovirheeksi. Merkittäviksi tai katastrofaalisiksi luokitellut ohjelmisto katsotaan turvallisuuteen vaikuttaviksi virheiksi. Robyn Lutzin ohjelmistovirheiden luokittelun perustana käytettiin Nakajon ja Kumen kehittämää luokittelujärjestelmää [NaK91], jota oli laajennettu toimimaan monimutkaisten, turvallisuuskriittisten sulautettujen ohjelmistojen kanssa, avaruusluotaimien ohjelmistot mukaan lukien. Luokittelussa on huomioitu dokumentoidut ohjelmisto, ohjelmistoryhmien tekemät ja ohjelmistoprosessin. Luokittelujärjestelmän perustana on vikapuuanalyysi, jossa tavoitteena on löytää valittuihin järjestelmävikoihin vaikuttavat syyt ja vikayhdistelmät, ihmisen toiminto huomioonottaen. Vikapuuanalyysin periaatteena on, että järjestelmäviasta lähtien etsitään sen toteutumisen mahdollistavia tekijöitä. Tekijät ja niiden välinen kytkentä esitetään graafisesti ns. vikapuun avulla. Ohjelmistovirheiden analysointimenetelmän eri vaiheet: 1. Havaintopisteiden määrittely virheen ja sen aiheuttamaan syyn välille. 2. Havaintotulosten kerääminen käyttämällä vikapuuanalyysiä jokaisen virheen analysointiin. 3. Jokaisen havaintopisteen virheiden luokittelu. 2

4. Kahden havaintopisteen välisten suhteiden tunnistaminen käyttämällä ristiinindeksointi-taulua. 5. Keskeisimpien syy-seuraus-suhteiden luominen käyttämällä apuna ristiinindeksointi-tauluja. Keskeisimmät kohdat Nakajon ja Kumen [NaK91] luokittelumenetelmässä ovat havaintopisteiden valitseminen ja havaintotulosten luokitteleminen. Havaintotuloksista pyritään löytämään ja eristämään ne syyt, jotka aiheuttavat turvallisuuteen liittyvät ohjelmisto. Virhesyiden luokittelulla pyritään löytämään vastatoimenpiteet, joiden avulla turvallisuuteen liittyvät voidaan havaita ja estää turvallisuuskriittisissä, sulautetuissa järjestelmissä. 3 Ohjelmistovirheiden luokittelu Ohjelmisto jaetaan kolmeen pääluokkaan: dokumentoidut ohjelmisto, ohjelmistoryhmien tekemät ja ohjelmistoprosessiin liittyvät (kuva 1). Kuva 1. Ohjelmistovirheiden pääluokat. 3

Yksityiskohtaisemmin luokitellaan seuraavasti: Dokumentoidut ohjelmisto a. Ohjelmiston sisäiset (esim. ohjelmointikielen syntaksi, ohjelmointikielen semantiikka) b. Rajapinta (esim. vuorovaikutus muiden järjestelmän komponenttien välillä kuten tiedon ja ohjaustietojen siirto) c. Toiminnalliset (esim. puuttuvat operaatiot, väärät ehtolauseet, järjestelmän vikakäyttäytyminen) Ohjelmistoryhmien tekemät a. Ohjelmointi- tai editointi b1. Ohjelmistoryhmän sisäiset kommunikointiongelmat b2. Ohjelmistoryhmien keskinäiset kommunikointiongelmat c1. Virheet vaatimusten tunnistamisessa c2. Virheet vaatimusten toteuttamisessa Ohjelmistoprosessiin liittyvät a. Puutteelliset ohjelmakoodin tarkastus- ja testausmenetelmät b1. Puutteelliset rajapintamäärittelyt sekä puutteellinen kommunikointi laitteistosuunnittelijoiden ja/tai ohjelmistokehittäjien välillä b2. Puutteelliset rajapintamäärittelyt sekä puutteellinen kommunikointi laitteisto- ja ohjelmistokehittäjien välillä c1. Järjestelmän vaatimukset, joita ei havaittu tai ymmärretty sekä puutteellinen dokumentointi c2. Järjestelmän vaatimukset, joita ei havaittu tai ymmärretty sekä puutteellinen suunnittelu 4

3.1 Havaittujen virheiden tarkastelu Voyager- ja Galileo-avaruusluotaimien ohjelmistoista löydettiin järjestelmä- ja integrointitestauksen aikana kaikkiaan 387 virhettä. Voyagerin ohjelmiston 87 ja Galileon ohjelmiston 122 ohjelmistovirhettä luokiteltiin turvallisuuteen vaikuttaviksi virheiksi. Kaikista havaituista ohjelmistovirheistä turvallisuuteen vaikuttavia ohjelmistovirheitä havaittiin 56 % Voyagerin ja 48 % Galileon ohjelmistoissa. [Lut93] Avaruusluotaimien ohjelmisto on luokiteltu dokumentoitujen ohjelmistovirheiden mukaisesti (taulukko 1). Taulukossa on luokiteltuna virheiden prosentuaaliset esiintymisosuudet ja virheiden lukumäärät. Taulukko 1. Dokumentoidut ohjelmisto pääluokittain. [Lut92] Dokumentoidut ohjelmisto Ohjelmiston sisäiset Kaikki havaitut Voyager (134) Galileo (253) Turvallisuuteen vaikuttavat Voyager Galileo (75) * (122) 1 % (1) 3 % (7) 0 % (0) 2 % (3) Rajapinta 34 % (46) 18 % (47) 36 % (27) 19 % (23) Toiminnalliset 65 % (87) 79 % (199) 64 % (48) 79 % (96) Muutamia ohjelmiston sisäisiä virheitä, kuten ohjelmistomoduulin ohjelmointivirheitä, havaittiin integrointi- ja järjestelmätestauksen aikana. Suurin osa ohjelmointivirheistä oli kuitenkin havaittu ja korjattu ennen järjestelmätestausta. * Voyagerin ohjelmistovirheiden lukumäärät eroavat Lutzin artikkeleissa. 5

Ohjelman toiminnalliset ovat kaikkein yleisimpiä dokumentoiduista ohjelmistovirheistä. Toiminnallisia virheitä ovat, jotka eivät toteuta järjestelmän toiminnallisia vaatimuksia, esim. järjestelmä toimii väärin tai järjestelmä ei toimi kaikilla syötteillä tai ehdoilla oikein. Turvallisuuteen vaikuttavien toiminnallisten virheiden suhde kaikkiin toiminnallisiin virheisiin on samanlainen. Toiminnallisista virheistä yleisimpiä ovat ohjelmiston käyttäytymis, joita esiintyy molempien avaruusluotaimien ohjelmistoissa noin puolet kaikista toiminnallisista virheistä (taulukko 2). Ohjelmistojen ehdolliset ovat pääsääntöisesti turvallisuuteen vaikuttavia virheitä. Ehdollisia virheitä ovat miltei säännöllisesti virheelliset arvot ehtolausekkeissa tai ehtolausekkeiden arvoissa. Virheellisiin ehtolausekkeiden arvoihin (esim. viiveajat) liittyy usein väärän virhetoipumismenetelmän käynnistäminen tai oikean palautteen käynnistämisen epäonnistuminen. Taulukko 2. Ohjelmistojen toiminnalliset luokittain. [Lut92] Kaikki havaitut Turvallisuuteen vaikuttavat Toiminnalliset Voyager (87) Galileo (199) Voyager (48) Galileo (96) Käyttö 22 % (19) 43 % (85) 19 % (9) 44 % (42) Ehdolliset 26 % (23) 10 % (21) 31 % (15) 18 % (17) Käyttäytymis 52 % (45) 47 % (93) 50 % (24) 38 % (37) Ohjelmistoryhmien keskinäiset kommunikointiongelmat ovat yleisin syy rajapintavirheisiin (taulukko 3). Avaruusluotaimen ohjelmistoa kehittää usea ohjelmistoryhmä yhteistyössä ja ohjelmiston kehitystyö vie aikaa vuosia. Järjestelmän osajärjestelmien yhteensovittaminen ja eri osajärjestelmien vaatimusten tunnistaminen ja toteuttaminen on vaikeaa. 6

Taulukko 3. Rajapintavirheitä aiheuttavat ohjelmistoryhmien tekemät. [Lut92] Ohjelmistoryhmien tekemät Ryhmän sisäiset kommunikointi-ongelmat Ohjelmistoryhmien keskinäiset kommunikointiongelmat Väärinymmärretyt ohjelmiston rajapintamäärittelyt Kaikki rajapinta Turvallisuuteen vaikuttavat Voyager Galileo Voyager Galileo (46) (47) (27) (23) 7 % (3) 28 % (13) 7 % (2) 22 % (5) 50 % (23) 42 % (20) 67 % (18) 48 % (11) 43 % (20) 30 % (14) 26 % (7) 30 % (7) Toiminnallisia virheitä aiheuttavat eniten ongelmat järjestelmän vaatimusten tunnistamisessa (taulukko 4). Näitä havaittiin 62 % Voyagerin ohjelmistossa ja 79 % Galileon ohjelmistossa. Tähän vaikuttaa avaruusluotaimen ohjelmiston monimukaisuus, laajuus ja järjestelmän käyttäytymisen ennakoimisen vaikeus. Yleisesti järjestelmän vaatimusten tunnistaminen ja vaatimusten toteuttaminen ohjelmistoon ovat keskeisiä virhesyitä avaruusluotaimien ohjelmistoissa. 7

Taulukko 4. Toiminnallisia virheitä aiheuttavat ohjelmistoryhmien tekemät. [Lut92] Toiminnalliset Turvallisuuteen vaikuttavat toiminnalliset Ohjelmistoryhmien tekemät Voyager (87) Galileo (199) Voyager (48) Galileo (96) Vaatimusten tunnistaminen Toiminta 9 % (8) 24 % (49) 8 % (4) 34 % (33) Virheet ehdoissa 17 % (15) 8 % (16) 25 % (12) 16 % (15) Käyttäytymis 21 % (18) 30 % (59) 29 % (14) 29 % (28) Yhteensä 47 % (41) 62 % (124) 62 % (30) 79 % (76) Vaatimusten toteuttaminen Toiminta 13 % (11) 18 % (36) 11 % (5) 9 % (9) Virheet ehdoissa 9 % (8) 3 % (5) 6 % (3) 2 % (2) Käyttäytymis 31 % (27) 17 % (34) 21 % (10) 9 % (9) Yhteensä 53 % (46) 38 % (75) 38 % (18) 21 % (20) Ohjelmistoprosessiin liittyvistä virheistä, jotka aiheuttavat rajapintavirheitä, yleisimpiä ovat rajapintojen tunnistamisongelmat (taulukko 5). Tässä ongelman aikaansaa se, että järjestelmän rajapintamäärittelyn kommunikointi ohjelmistoryhmien välillä on puutteellista. 8

Taulukko 5. Rajapintavirheitä aiheuttavat ohjelmistoprosessiin liittyvät. [Lut92] Rajapinta Turvallisuuteen vaikuttavat rajapinta Ohjelmistoprosessiin liittyvät Voyager (46) Galileo (47) Voyager (27) Galileo (23) Rajapintoja ei ymmärretty 70 % (33) 85 % (40) 56 % (15) 87 % (20) tai tunnistettu oi- kein Laitteisto toimii väärin 30 % (14) 15 % (7) 44 % (12) 13% (3) Järjestelmän vaatimusten tunnistaminen on merkittävin syy ohjelmistoprosessiin liittyen, joka aiheuttaa järjestelmän toiminnallisia virheitä (taulukko 6). Puutteelliset, ei-havaitut vaatimukset ovat syynä noin puoleen kaikista turvallisuuteen liittyvistä toiminnallisista virheistä, jotka liittyvät järjestelmän vaatimusten tunnistamiseen. Taulukko 6. Toiminnallisia virheitä aiheuttavat ohjelmistoprosessiin liittyvät. [Lut92] Ohjelmistoprosessiin liittyvät Vaatimuksia ei tunnistettu oikein Vaatimuksia ei ymmärretty oikein Toiminnalliset Turvallisuuteen vaikuttavat toiminnalliset Voyager Galileo Voyager Galileo (87) (199) (48) (96) 37 % (32) 53 % (105) 44 % (21) 60 % (58) 63 % (55) 47 % (94) 56 % (27) 40 % (38) 9

3.2 Vertailu aikaisempiin tutkimuksiin Aikaisemmat tutkimukset käsittelivät verrattain yksinkertaisia, ei-sulautettuja järjestelmiä. Näissä tutkimuksissa ohjelmistovirheitä ei eroteltu turvallisuuteen ja ei-turvallisuuteen vaikuttaviksi. Aikaisemmissa tutkimuksissa oletettiin myös, että vaatimusmäärittely on oikein. Monissa laajoissa, monimutkaisissa järjestelmissä, kuten avaruusluotaimissa, järjestelmän vaatimukset ovat riippuvaisia ohjelmiston käyttäytymisestä ja suoritusympäristöstä. Vaatimusmäärittelyä joudutaan tarkentamaan koko ohjelmistokehityksen ajan sekä vielä testausvaiheessa, koska järjestelmän käyttäytymisen ennakointi on vaikeaa. 4 Yhteenveto Turvallisuuteen liittyvät ohjelmisto syntyvät eri tavoin kuin eiturvallisuuteen liittyvät ohjelmisto. Järjestelmän turvallisuuteen monimutkaisissa, sulautetuissa järjestelmissä voidaan vaikuttaa keskittymällä erityisesti turvallisuuteen liittyvien virheiden syntymekanismeihin. Laajoissa, sulautetuissa ohjelmistojärjestelmissä, kuten avaruusluotaimien ohjelmistoissa järjestelmän vaatimukset muuttuvat koko ohjelmistokehityksen ajan ja jopa järjestelmätestauksen aikana. Tämä johtuu pääosin järjestelmän ennakoimattomasta toiminnasta, dynaamisista muutoksista järjestelmän käyttöympäristössä sekä monimutkaisista, ohjelmiston keskinäisten komponenttien ja laitteiston sekä ohjelmiston välisistä vuorovaikutuksista. Vaatimusmäärittelyllä on siten keskeinen osuus kehitettäessä turvallisuuskriittisiä, sulautettuja järjestelmiä. Ohjelmiston rajapintasuunnittelu on myös tärkeässä osassa turvallisuuskriittisen järjestelmän suunnittelussa. Ohjelmiston komponenttien väliset vuorovaikutukset voivat olla monimutkaisia ja vaikeasti ennakoitavia. Ohjelmiston kehitystyössä ohjelmistoryhmien väliseen kommunikointiin on kiinnitettävä erityistä huomiota. 10

Artikkeli oli selkeä ja keskittyi tärkeään aihealueeseen. Virheiden luokittelujärjestelmä vaikuttaa järkevältä ja oikealta. Virheiden lajittelu eri luokkiin ei välttämättä ole yksikäsitteistä. Artikkelissa olisi voinut enemmän korostaa tätä seikkaa. Artikkelin tulokset ja johtopäätökset vaikuttavat järkeviltä. Artikkelissa olisi kiinnostanut tietää tarkemmin ohjelmistovirheiden yksityiskohdat sekä minkälaisia mahdollisia virhe- ja vaaratilanteita näistä virheistä olisi voinut syntyä? Mahdollisesti edellä mainitut asiat ovat salassapidettäviä tietoja. Lisäksi kaipasin konkreettisia esimerkkejä vikapuun ja ristiinindeksointitaulun käytöstä avaruusluotaimien ohjelmistovirheiden analysoinnissa. Lähteet Lut92 Lutz, R. R, Analyzing Software Requirements Errors in Safety-Critical, Embedded Systems. Technical Raport 92-27, elokuu 1992. Lut93 Lutz, R. R, Analyzing Software Requirements Errors in Safety-Critical, Embedded Systems. Proceedings of the IEEE International Symposium on Requirements Engineering. IEEE Computer Society Press, tammikuu 1993, sivut 126-133. NaK91 Nakajo, T.ja Kume, H., A Case History Analysis of Software Error Cause-Effect Relationships. IEEE Transactions on Software Engineering, 17, 17 (1991), nro 17, sivut 830-838. 11