15.8.2007/MS Sovellusohjelmistoja koskevien vaatimusten tiivistelmä standardista SFS-EN 13849-1: Koneturvallisuus. Turvallisuuteen liittyvät ohjausjärjestelmän osat. Osa 1: Yleiset suunnitteluperiaatteet. Tässä tiivistelmässä standardi tarkoittaa standardia SFS-EN 13849-1. - - - - - - 6. Ohjelmiston turvallisuusvaatimukset Kun turvallisuus on yhä enemmän yhdistetty monimutkaisen järjestelmän eri toimintoihin, ei perinteisellä tavalla enää voida tarkistaa, onko riittävä turvallisuus saatu aikaan. Esimerkiksi satojen tuhansien ohjelmarivien tarkistus tai elektronisten laitteiden kattavakaan testaus ei anna takeita siitä, että järjestelmä toimisi turvallisesti poikkeustilanteissa. Toisaalta hyvin pienilläkin ohjelmistojen täydennyksillä voidaan usein moninkertaistaa halutun toiminnon luotettavuutta. Ohjelmiston osalta hallitaan rajoitettujen käskykantojen ohjelmointikielet ja niiden käyttö, mutta ongelmana ovat vapaan käskykannan kielet ja sulautetut ohjelmistot. Uusimpiin standardeihin, esimerkiksi uusittavana olevassa perusstandardissa IEC 61508 uusimisessa, on tulossa mukaan sulautettuja ohjelmistoja koskevia aikaisempaa tarkempia vaatimuksia. 6.1 Perusvaatimukset 6.1.1 Toiminnallisen turvallisuuden suunnitelma Tavoitteena on, että ohjelmisto on selkeä ja yksikäsitteinen eli se on - ymmärrettävää (loogiset kuvaukset, algoritmit) - testattavaa - jäljitettävää - ylläpidettävää. Toiminnallisen turvallisuuden suunnitelmassa on määriteltävä ohjelmiston kehittämisen strategia ja siihen kuuluu - todentamiset (täyttyvätkö eri kehitysvaiheiden erittelyjen vaatimukset) - testaukset (ottaen huomioon vikasietoisuuden ominaisuudet ja sisäisen rakenteen testattavuuden) - kelpuutus (täyttääkö koko järjestelmä turvallisuuserittelyn vaatimukset) - muutokset ja ylläpito. Lähtökohtana on virheiden välttäminen ohjelmiston on koko turvallisuuselinkaren aikana ( puolustuksellinen ohjelmointi ).
Sulautetut ohjelmistot tehdään rajoittamattoman muuntelun ohjelmointikielellä (Full Variable Language, FVL) ja tällöin nojaudutaan standardiin IEC 61508-3. Turvallisuuteen liittyvän sovellusohjelmiston (Safety Related Application Software, SRASW) suunnittelumenetelmät ja ohjelmointikielet on valittava siten, että turvallisuuteen liittyville ohjaustoiminnoille saadaan vaadittava turvallisuuden eheyden taso (SIL). Sovellusohjelmointi perustuu rajoitetun muuntelun ohjelmointikieleen (Limited Variable Language, LVL). EN 13849-1 Ohjelmistovaatimukset Ohjelmistovaatimusten asettaminen Ohjelmistokehitys Sovellusohjelmiston Application languages kielet: e.g. Ladder, tikapuumalli, toimintalohko Function Block Diagram Ohjelmiston käyttö Turvallisuuteen liittyvä sovellus Perusohjelmiston System languages kielet: e.g. Assembler, Assembler, C/ C+ +, C/C++,Java hajautettu ohjelmisto, perusohjelmisto, käyttöjärjestelmä Laitteet BG IA BG IA
6.1.2 Sulautetun ohjelmiston kehitys Standardissa esitetään sulautetulle ohjelmistolle perusvaatimukset kaikille vaadittaville suoritustasoille sekä lisävaatimukset korkeammille vaadittaville suoritustasoille. Perusvaatimukset koskevat vaadittavilla suoritustasoilla PL r a, b, c, d ja e: - ohjelmiston turvallisuuselinkaaren toimenpiteitä (todentaminen, kelpuutus, ks. V-malli, kohta xx) - erittelyä ja dokumentointia - rakenteista suunnittelua (moduulit) - systemaattisten vikaantumisen hallintaa (ks. tämän kirjoituksen kohta xx) - satunnaisten laitevikaantumisten hallintaa nohjelmiston avulla - toiminnallisia testauksia (esimerkiksi musta laatikko testaus) - muutosten hallintaa. Lisävaatimukset koskevat edellisen lisäksi vaadittavilla suoritustasoilla PL r c ja d: - hallintajärjestelmiä (esimerkiksi standardien IEC 61508 ja IEC 9001 mukaisesti) - dokumentointia ohjelmiston koko turvallisuuselinkaaren aikana - konfiguraation hallintaa - turvallisuusvaatimusten ja suunnittelun rakenteista erittelyä - soveltuvien ohjelmointikielien käyttöä - käytännössä varmoiksi osoittautuneiden tietokoneavusteisten työkalujen käyttöä - modulaarista ja rakenteista ohjelmointia: - turvallisuuteen liittymättömän ohjelmiston erottaminen - rajoitetut moduulien koot ja niiden täydellisesti määritetyt rajapinnat - suunnittelu- ja koodausstandardien käyttö - koodauksen todentamista - laajennettua toiminnallista testausta (esimerkiksi harmaalaatikko testaus, suorituskyvyn testaus tai simulointi) - muutosten jälkeistä vaikutusanalyysiä.
Turvatoimintojen erittely Ohjemiston turvallisuuden erittely Kelpuutus Kelpuutettu ohjelmisto Systeemisuunnittelu Yhdistämisen testaus Moduulien suunnittelu Moduulien testaus Tulos Todentaminen Koodaus ISO 13849-1:2006 120107 matti.sundquist Turvallisuuteen liittyvän sulautetun ohjelmiston, joka on tarkoitettu vaadittavalla suoritustasolla PL r e oleville ohjausjärjestelmän osille, on oltava standardin IEC 61508-3:1998 kohdan 7 mukainen vastaten turvallisuuden eheyden tasoa SIL 3. Standardin liitteessä J esitetään tarkempia ohjeita toimenpiteistä sulautetun ohjelmiston turvallisuuselinkaareen liittyvistä toimenpiteistä. 6.1.3 Sovellusohjelmiston suunnittelu ja kehitys Standardissa esitettävä yksinkertaistettu ohjelmistokehityksen elinkaarimalli sopii myös sovellusohjelmiston kehittämiseen. Käytettäessä modulaariseen lähestymistapaan soveltuvia rajoitetun käskykannan ohjelmointikieliä voidaan saavuttaa kaikki suoritustasot PL a...e. Käytettäessä rajoittamattoman käskykannan kieliä on täytettävä kaikki edellä esitettävät sulautettuja ohjelmistoja koskevat vaatimukset, jolloin voidaan saavuttaa kaikki suoritustasot PL a...e. Perusvaatimukset ovat lähes samat kuin edellä esitetään sulautetuille ohjelmistoille. Lisävaatimukset kohdennetaan kasvavan vaatimustason mukaisesti suoritustasoille PL r c, d ja e. Seuraavassa esitetään vaatimuksia ja ohjeita sovellusohjelmistolle ja sen kehittämiselle
a) Turvallisuuteen liittyvän ohjelmiston dokumentaatio on katselmoitava (ks. myös standardin liite J) ja siinä on oltava kuvaukset 1) turvatoiminnoista ja niille vaadituista suoritustasoista ja toimintatavoista 2) suorituskykykriteereistä (esimerkiksi reaktioajat) 3) laitteiston rakenteesta siihen kuuluvine ulkoisine signaaliliitäntöineen 4) ulkoisten vikaantumisten tunnistamisesta ja hallinnasta. b) Työkalujen, kirjastojen ja kielten valinta: olisi käytettävä 1) käytännössä varmoiksi osoittautuneita ja soveltuvia työkaluja 2) olisi käytettävä toimilohkojen kelpuutettuja kirjastoja tai kelpuutettuja sovelluskohtaisia toimilohkokirjastoja 3) olisi käytettävä rajoitetun käskykannan ohjelmointikielten alajoukkoja (esimerkiksi standardin IEC 61311-3 mukaiset hyväksytyt kielten alajoukot). Erityisen suositeltavaa on graafisten kielten (esim. toimilohkokaavio, tikapuukaavio) käyttö. c) Ohjelmiston suunnitteluun on kuuluttava 1) puolimuodollisia menetelmiä data- ja ohjelmanvuon kuvaamiseen (esimerkiksi tilakaavio tai ohjelman vuokaavio) 2) modulaarinen ja rakenteinen ohjelmointi, joka toteutetaan ensisijaisesti toimilohkoilla, jotka ovat peräisin kelpuutetuista turvallisuuteen liittyvistä toimilohkokirjastoista 3) rajoituksia toimilohkojen koodin koolle 4) koodin suoritus sellaisen toimilohkossa, jolla olisi oltava vain yksi tulokohta ja yksi lähtökohta 5) kolmivaiheinen rakennemalli Tulot => Prosessointi => Lähdöt (ks. standardin liite J) 6) turvallisuuteen liittyvän lähdön asettaminen vain yhteen kohtaan ohjelmassa 7) ulkoisen vikaantumisen paljastamistekniikoiden ja suojaavaan ohjelmoinnin tekniikoiden käyttö tulo-, prosessointi- ja lähtölohkoille siten, että niillä saadaan aikaan koneen turvalliseen tila. d) Jos turvallisuuteen liittyvä ja liittymätön sovellusohjelmisto yhdistetään yhteen komponenttiin 1) turvallisuuteen liittyvä ja liittymätön sovellusohjelmisto on koodattava eri toimilohkoihin hyvin määritettyjen datayhteyksien avulla 2) turvallisuuteen liittyvän ja liittymättömän datan välillä ei saa olla mitään loogista yhdistelmää, joka voisi johtaa turvallisuuteen liittyvien signaalien eheyden heikentymiseen (esimerkiksi yhdistämällä turvallisuuteen liittyviä ja liittymättömiä signaaleja loogisella TAI operaattorilla). e) Ohjelmiston toteutus ja koodaus 1) koodin on oltava luettavaa, ymmärrettävää ja testattavaa ja siksi olisi käytettävä symbolisia muuttujia 2) on käytettävä perusteltuja tai hyväksyttäviä koodaussääntöjä (ks. standardin liite J) 3) olisi käytettävä datan eheyden ja mielekkyyden tarkistuksia (esim. vaihteluvälien tarkistukset) 4) koodaus olisi testattava simuloinnilla 5) suoritustasoilla PL d ja e todentaminen olisi tehtävä ohjaus- ja datavuon analyysillä
f) Testaus 1) kelpuutukseen soveltuva menetelmä on toiminnallisen käyttäytymisen ja suorituskyvyn kriteerien mustalaatikko -testaus (esim. ajoitustoiminnot) 2) suoritustasoille PL d ja e suositellaan testaustapausten suorittamista raja-arvojen analyysillä 3) suositellaan testaussuunnitelman tekemistä ja siihen olisi kuuluttava testaustapaukset ja niihin kuuluvat johtopäätökset sekä tarvittavat työkalut 4) tulojen ja lähtöjen testauksilla on varmistettava, että turvallisuuteen liittyviä signaaleja käytetään oikein turvallisuuteen liittyvässä sovellusohjelmistossa. g) Dokumentointi 1) kaikki elinkaareen ja muutoksiin kuuluvat toimenpiteet on dokumentoitava 2) dokumentaation on oltava loppuun saatettua, saatavilla olevaa, luettavaa ja ymmärrettävää 3) lähdetekstissä olevassa koodin dokumentaatiossa on oltava moduulien otsakkeet, joissa on tietoa juridisesta henkilöstä, toiminnalliset kuvaukset sekä tulojen ja lähtöjen kuvaukset, version tunnus ja käytettyjen kirjastotoimilohkojen version tunnus sekä riittävästi verkon tai lauseiden kommentteja sekä esittelyrivejä h) Todentaminen Katselmointi, tarkastus, läpikäynti tai muut sopivat toimenpiteet. i) Konfiguraation hallinta On erittäin suositeltavaa, että luodaan proseduureja ja datan varmuuskopioita tunnistamaan ja arkistoimaan määrättyyn turvallisuuteen liittyvän sovellusohjelmiston versioon liittyviä dokumentteja, ohjelmistomoduuleja, todentamisen tai kelpuutuksen tuloksia sekä työkalun konfiguraatioita. j) Muutokset Turvallisuuteen liittyvään sovellusohjelmistoon tehtyjen muutosten jälkeen on tehtävä vaikutusanalyysi erittelyn mukaisuuden varmistamiseksi. Muutosten jälkeen on tehtävä asiaankuuluvat elinkaarimalliin kuuluvat toimenpiteet Käyttöoikeuksia muutosten tekemiseen on valvottava ja muutoshistoria on dokumentoitava.